#include <stdio.h> int findmax(int *x,int *num,int n); int main() { int a[10],num,max,n; for(n=0;n<10;n++) scanf("%d",&a[n]); max=findmax(a,&num,n); printf("最大值%d共有%d个",max,num); return 0; } int findmax(int *x,int *num,int n) { int i,j,temp; for(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { temp=*(x+i); if(*(x+i)<*(x+j)) { *(x+i)=*(x+j); *(x+j)=temp; } } } for(i=0;i<n;i++) { if(*(x+i)==*(x+n-1)) { *(num)++;} } return *(x+n-1); }哪里有问题
时间: 2024-03-25 09:41:23 浏览: 55
在调用函数 `findmax` 时,`n` 的值还没有被初始化。应该在输入数组 `a` 的时候获取它的长度并且传递给函数。所以需要将 `n` 的声明提到输入数组的前面,并在输入数组后调用 `findmax` 函数。修改后的代码如下:
```c
#include <stdio.h>
int findmax(int *x, int *num, int n);
int main() {
int a[10], num = 0, max, n;
for (n = 0; n < 10; n++) {
scanf("%d", &a[n]);
}
max = findmax(a, &num, n);
printf("最大值%d共有%d个", max, num);
return 0;
}
int findmax(int *x, int *num, int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
temp = *(x + i);
if (*(x + i) < *(x + j)) {
*(x + i) = *(x + j);
*(x + j) = temp;
}
}
}
for (i = 0; i < n; i++) {
if (*(x + i) == *(x + n - 1)) {
*(num)++;
}
}
return *(x + n - 1);
}
```
阅读全文