之前的还是不对
时间: 2024-02-26 07:58:22 浏览: 21
抱歉,我看错了,之前的纠错不完全正确。对于这段代码,问题在于第25行和第27行的 printf 语句:
```
printf("个数:");
printf("%d\n", &n);
printf("所在下标是:");
```
第25行和第27行的 printf 语句都有问题。第25行的 printf 语句中,应该输出 n 的值,而不是 n 的地址,所以应该将 `%d` 改成 `%p`。第27行的 printf 语句中,应该在输出完下标后加上一个换行符 `\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;
}
}
return max;
}
int main() {
int NUM, 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("最大值:");
printf("%d\n", fun(a, pos, NUM, &n));
printf("个数:");
printf("%d\n", n);
printf("所在下标是:");
for (i = 0; i < n; i++) {
printf("%d ", pos[i]);
}
printf("\n");
return 0;
}
```