我正在尝试编写一个C程序,它可以读取学生的分数,直到用户输入文件末尾(EOF),并确定他们的成绩是A、B、C、D还是E。我在计算A、B、C、D和E的总和时遇到了麻烦。总和总是0(零)。
这就是我尝试过的
#include<stdio.h>
int main()
{
int num_stu, score, counter, total,grade;
int aCount = 0, bCount=0, cCount=0,
dCount=0, eCount=0;
total = 0;
counter = 1;
printf("Enter how many number of students: ");
scanf("%d",&num_stu);
while (counter <=num_stu){
printf("Enter student score: ");
scanf("%d",&score);
if(score>=80)
printf("Student's grade is A\n");
else
if(score>=70)
printf("Student's grade is B\n");
else
if(score>=60)
printf("Student's grade is C\n");
else
if(score>=50)
printf("Student's grade is D\n");
else
printf("Student's grade is E\n");
counter=counter+1;
}
while ((grade=getchar()) !=EOF) {
switch (grade){
case 'A':case'a':
++aCount;
break;
case'B': case'b':
++bCount;
break;
case'C': case'c':
+cCount;
break;
case'D':case'd':
++dCount;
break;
case'E':case'e':
++eCount;
break;
case'\n': case' ':
break;
default:
printf("Incorrect letter grade entered.");
printf("Enter a new grade.\n");
break;
}
}
printf("\n Totals for each letter grade are: \n");
printf("A: %d\n",aCount);
printf("B: %d\n",bCount);
printf("C: %d\n",cCount);
printf("D: %d\n",dCount);
printf("E: %d\n",eCount);
return 0; }我是不是做错了什么?提前感谢!
发布于 2021-10-16 05:50:26
每次按enter键时,都需要删除'\n'。因此,为了消除这些问题,将一个getchar()放在while循环之前,将一个get char放在while循环中。
#include<stdio.h>
int main()
{
int num_stu, score, counter, total,grade;
int aCount = 0, bCount=0, cCount=0,
dCount=0, eCount=0;
total = 0;
counter = 1;
printf("Enter how many number of students: ");
scanf("%d",&num_stu);
while (counter <=num_stu){
printf("Enter student score: ");
scanf("%d",&score);
if(score>=80)
printf("Student's grade is A\n");
else
if(score>=70)
printf("Student's grade is B\n");
else
if(score>=60)
printf("Student's grade is C\n");
else
if(score>=50)
printf("Student's grade is D\n");
else
printf("Student's grade is E\n");
counter=counter+1;
}
getchar();
while ((grade=getchar()) !=EOF) {
getchar();
switch (grade){
case 'A':case'a':
++aCount;
break;
case'B': case'b':
++bCount;
break;
case'C': case'c':
+cCount;
break;
case'D':case'd':
++dCount;
break;
case'E':case'e':
++eCount;
break;
case'\n': case' ':
break;
default:
printf("Incorrect letter grade entered.");
printf("Enter a new grade.\n");
break;
}
}
printf("\nTotals for each letter grade are: \n");
printf("A: %d\n",aCount);
printf("B: %d\n",bCount);
printf("C: %d\n",cCount);
printf("D: %d\n",dCount);
printf("E: %d\n",eCount);
return 0;
} https://stackoverflow.com/questions/69592950
复制相似问题