改正#define CLASSES 3 #define GRADES 30 #include <stdio.h> #include <stdlib.h> #include <ctype.h> void enter_grades(int a[][GRADES]); void disp_grades(int g[][GRADES]); int get_grade(); int main() { int a[CLASSES][GRADES]; char ch; for (;;) { do { printf("(E)nter grades\n"); printf("(R)eport grades\n"); printf("(Q)uit\n"); ch = toupper(getchar()); } while (ch != 'E' && ch != 'R' && ch != 'Q'); switch (ch) { case 'E': enter_grades(a); break; case 'R': disp_grades(a); break; case 'Q': exit(0); } } return 0; } void enter_grades(int a[][GRADES]) { int t, i; for (t = 0; t < CLASSES; t++) { printf("class #%d:\n", t + 1); for (i = 0; i < GRADES; i++) { a[t][i] = get_grade(); } } } int get_grade(int i) { char s[80]; printf("enter grade for student #%d:\n", i + 1); fgets(s, sizeof(s), stdin); return atoi(s); } void disp_grades(int g[][GRADES]) { int t, i; for (t = 0; t < CLASSES; ++t) { printf("class #%d:\n", t + 1); for (i = 0; i < GRADES; ++i) { printf("grade for student #%d is %d\n", i + 1, g[t][i]); } } }
时间: 2024-02-14 22:07:54 浏览: 83
好的,我看到您修改了代码,但是 `get_grade()` 函数的参数没有被使用,编译器仍然会报错。
为了解决这个问题,您可以将 `get_grade()` 函数的参数 `i` 删除,因为在 `enter_grades()` 函数中已经通过循环的索引变量 `i` 来表示当前输入的学生序号了。
下面是修改后的代码:
```c
#define CLASSES 3
#define GRADES 30
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void enter_grades(int a[][GRADES]);
void disp_grades(int g[][GRADES]);
int get_grade();
int main() {
int a[CLASSES][GRADES];
char ch;
for (;;) {
do {
printf("(E)nter grades\n");
printf("(R)eport grades\n");
printf("(Q)uit\n");
ch = toupper(getchar());
} while (ch != 'E' && ch != 'R' && ch != 'Q');
switch (ch) {
case 'E':
enter_grades(a);
break;
case 'R':
disp_grades(a);
break;
case 'Q':
exit(0);
}
}
return 0;
}
void enter_grades(int a[][GRADES]) {
int t, i;
for (t = 0; t < CLASSES; t++) {
printf("class #%d:\n", t + 1);
for (i = 0; i < GRADES; i++) {
a[t][i] = get_grade();
}
}
}
int get_grade() {
char s[80];
fgets(s, sizeof(s), stdin);
return atoi(s);
}
void disp_grades(int g[][GRADES]) {
int t, i;
for (t = 0; t < CLASSES; ++t) {
printf("class #%d:\n", t + 1);
for (i = 0; i < GRADES; ++i) {
printf("grade for student #%d is %d\n", i + 1, g[t][i]);
}
}
}
```
这样就可以避免编译器报错了。
阅读全文