有没有大佬给我解释一下
本帖最后由 0unique0 于 2022-11-22 11:17 编辑#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main()
{
int aCount = 0,bCount = 0,cCount = 0,dCount = 0,eCount = 0;
char grade;
printf("请输入成绩通过# :\n");
grade = getchar();
while(grade != '#')
{
switch(grade)
{
case'A':
case'a': printf("90--100\n");
aCount++;
break;
case'B':
case'b': printf("80--90\n");
aCount++;
break;
case'C':
case'c': printf("70--80\n");
aCount++;
break;
case'D':
case'd': printf("60--70\n");
aCount++;
break;
case'E':
case'e': printf("<60\n");
aCount++;
break;
default: printf("错误!请再输入一次。\n");
}
grade = getchar();
}
printf("结果: A:%d, B:%d, C:%d, D:%d, E:%d\n",aCount,bCount,cCount,dCount,eCount);
return 0;
}
有没有大佬给我解释一下
特别是这个 switch 语句
还有为什么 grade = getchar(); 出现了两次;
本帖最后由 jackz007 于 2022-11-22 12:56 编辑
grade = getchar() ;// 一方面,grade 是循环变量,在开始循环前,需要进行初始化,以便可以跨过 while 的条件门槛,顺利进入循环,另一方面,也确实需要输入成绩信息。
while(grade != '#')
{
switch(grade)
{
. . . . . .
}
grade = getchar() ; // 一方面,grade 是循环变量,需要在每一次的循环中被改变,否则,就会成为死循环,另一方面,这个 getchar() 也是为了满足统计新的成绩需要。
你的代码存在错误,下面是修改过的代码:
#include <stdio.h>
int main(void)
{
int aCount = 0,bCount = 0,cCount = 0,dCount = 0,eCount = 0;
char grade;
printf("请输入成绩通过# :\n") ;
grade = getchar() ;
while(grade != '#')
{
switch(grade)
{
case'A':
case'a': printf("90--100\n");
aCount++;
break;
case'B':
case'b': printf("80--90\n") ;
bCount++ ;//【错误】:这里使用了 aCount
break;
case'C':
case'c': printf("70--80\n") ;
cCount++ ;//【错误】:这里使用了 aCount
break;
case'D':
case'd': printf("60--70\n") ;
dCount++ ;//【错误】:这里使用了 aCount
break ;
case'E':
case'e': printf("<60\n") ;
eCount++ ;//【错误】:这里使用了 aCount
break ;
default: printf("错误!请再输入一次。\n") ;
}
grade = getchar() ;
}
printf("结果: A:%d, B:%d, C:%d, D:%d, E:%d\n",aCount,bCount,cCount,dCount,eCount);
}
页:
[1]