#include <stdio.h> int fun(int *s,int *pos,int m,int *n){ int max=s[0]; int i,j; for (i=1;i<m;i++){ if(s[i]>max){ max=s[i]; } } *n=0; j=0; for (i=0;i<m;i++){ if(s[i]==max){ n++ ; pos[j++]=i; } } return max; } int main(){ int NUM,m,n,i; int a[10]; int pos[10]; printf("请输入数组元素个数:"); scanf("%d", &NUM); printf("请输入数组元素:"); for(i=0;i<NUM;i++){ scanf("%d", &a[i]); } printf("最大值:"); printf("%d\n", fun(a,pos,NUM,&n)); printf("个数:"); printf("%d\n", &n); printf("所在下标是:"); for(i=0;i<n;i++){ printf("%d\n", pos[i]); return 0; } }
时间: 2023-12-03 08:02:14 浏览: 37
这段代码中,输出最大值出现的次数和函数fun返回的n是同一个变量,应该直接输出n的值,而不是输出其地址。另外,在输出时缺少了换行符,需要添加换行符来使输出更加清晰。同时,在输出最大值出现的下标时,应该输出空格来使其更加易读。
下面是修改后的代码:
```
#include <stdio.h>
int fun(int *s, int *pos, int m, int *n) {
int max = s[0];
int i, j;
for (i = 1; i < m; i++) {
if (s[i] > max) {
max = s[i];
}
}
*n = 0;
j = 0;
for (i = 0; i < m; i++) {
if (s[i] == max) {
(*n)++;
pos[j] = i;
j++;
}
}
return max;
}
int main() {
int NUM, m, n = 0, i;
int a[10];
int pos[10];
printf("请输入数组元素个数:");
scanf("%d", &NUM);
printf("请输入数组元素:");
for (i = 0; i < NUM; i++) {
scanf("%d", &a[i]);
}
printf("最大值:%d\n", fun(a, pos, NUM, &n));
printf("个数:%d\n", n);
printf("所在下标是:");
for (i = 0; i < n; i++) {
printf("%d ", pos[i]);
}
printf("\n");
return 0;
}
```
修改后的代码已经可以正确输出最大值、最大值出现的次数和最大值的下标。
阅读全文