找出错误并改正 #include<stdio.h> void f(int n){ char result; int k=0; k=(n>=93)+(n>=85)+(n>=80)+(n>=75)+(n>=70)+(n>=65)+(n>=60); switch(k){ case 0:printf("F");break; case 1:printf("D");break; case 2:printf("C");break; case 3:printf("C+");break; case 4:printf("B");break; case 5:printf("B+");break; case 6:printf("A");break; case 7:printf("A+");break; } } int main(){ int N; printf("Name_f Name_l stu_id score retake GPA rank\n"); for(N=0; N<100; N++){ char lname,fname; int n,m,f1,f2; scanf("%c %c", &lname, &fname); scanf("%d %d",&n,&m); f1=n/100000000; if(n<202000000000 || n>202300000000) continue; if(f1==2022) f2=0; else f2=1; printf("%c %c %d %d %d",lname,fname,n,m,f2); f(n); } return 0; }
时间: 2023-12-09 11:02:49 浏览: 68
这段代码没有明显的错误,但可以进行一些改进:
1. 在输入字符时,应该在%c前加上一个空格,以避免吸收之前输入的回车符。
2. 在函数f中,变量result并没有被使用,可以删除。
3. 在函数f中,可以将switch语句中的case合并,如将case 3和case 4合并为一个case,避免重复的代码。
改进后的代码如下:
```
#include<stdio.h>
void f(int n) {
int k = 0;
k = (n >= 93) + (n >= 85) + (n >= 80) + (n >= 75) + (n >= 70) + (n >= 65) + (n >= 60);
switch(k) {
case 0: printf("F"); break;
case 1: printf("D"); break;
case 2: printf("C"); break;
case 3:
case 4: printf("B"); break;
case 5:
case 6: printf("A"); break;
case 7: printf("A+"); break;
}
}
int main() {
int N;
printf("Name_f Name_l stu_id score retake GPA rank\n");
for(N = 0; N < 100; N++) {
char lname, fname;
int n, m, f1, f2;
scanf(" %c %c", &lname, &fname);
scanf("%d %d", &n, &m);
f1 = n / 100000000;
if(n < 202000000000 || n > 202300000000) continue;
if(f1 == 2022) f2 = 0;
else f2 = 1;
printf("%c %c %d %d %d", lname, fname, n, m, f2);
f(n);
}
return 0;
}
```
阅读全文