#include <stdio.h> #include <stdlib.h> #define N 40 int Max(long id[],int score[],int n); int main() { int score[N],n=0,max; long id[N]; do{ printf("Input student’s ID and score:"); scanf("%ld%d",&id[n],&score[n]); n++; }while(id>0&&score>0); printf("Total students are %d\n",n); a=Max(id,score,n); printf("The highest is:%ld, %d\n",id[max],score[max]); return 0; } int Max(int id[],int score[],int n) { int i,max,a=0; max=score[0]; for(i=0;i<n;i++) { if(score[i]>max) {max=score[i]; a=i;} } return a; }
时间: 2024-01-20 09:02:39 浏览: 60
这段代码是一个 C 语言程序,它的功能是读入学生的学号和成绩,然后输出最高分数对应的学号和成绩。在程序中,使用了一个循环读入学号和成绩,直到输入的学号或成绩为负数为止。然后调用了一个 Max 函数来找到最高分数的学生的位置,并输出该学生的学号和成绩。
在代码中,有几个问题需要注意:
1. 在主函数中,定义了一个变量 a,但是该变量没有被赋初值。应该将其改为 max。
2. 在主函数中,调用了 Max 函数时,传递的参数类型不正确。应该将 id 数组的类型改为 long。
3. 在循环读入学号和成绩时,应该使用逻辑运算符 && 而不是 >。
4. 在输出最高分数对应的学号和成绩时,应该使用 max 变量而不是 a 变量。
修正后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 40
int Max(long id[], int score[], int n);
int main() {
int score[N], n = 0, max;
long id[N];
do {
printf("Input student’s ID and score:");
scanf("%ld%d", &id[n], &score[n]);
n++;
} while (id[n - 1] > 0 && score[n - 1] > 0);
printf("Total students are %d\n", n - 1);
max = Max(id, score, n - 1);
printf("The highest is:%ld, %d\n", id[max], score[max]);
return 0;
}
int Max(long id[], int score[], int n) {
int i, max, a = 0;
max = score[0];
for (i = 0; i < n; i++) {
if (score[i] > max) {
max = score[i];
a = i;
}
}
return a;
}
```
阅读全文