【发布时间】:2020-01-17 17:26:48
【问题描述】:
当没有while循环时,代码运行良好。因为 İt 没有起作用,嵌套 if 中的最后一个 else。声明者是“无效字符”。但如下所示,它不起作用。错误在哪里?我试图删除 while 循环。它跑了。但是,以这种方式,它不起作用。在我看来,这种情况是while循环的一个特定条件。
#include <stdio.h>
int main(void)
{
unsigned int aCount = 0;
unsigned int bCount = 0;
unsigned int cCount = 0;
unsigned int dCount = 0;
unsigned int fCount = 0;
puts("Enter the letter grades." );
puts("Enter the EOF character to end input." );
int grade; // one grade
// loop until user types end-of-file key sequence
while (( grade = getchar()) != EOF) { //while
if(grade == 'A'|| grade == 'a')
{
++aCount;
}
else if(grade == 'B' || grade == 'b')
{
++bCount;
}
else if(grade == 'C' || grade == 'c')
{
++cCount;
}
else if(grade =='D' || grade == 'd')
{
++dCount;
}
else if(grade == 'F' || grade =='f')
{
++fCount;
}
else
{
puts("invalid character");
}
}//while
// output summary of results
puts("\nTotals for each letter grade are:");
printf("A: %u\n", aCount);
printf("B: %u\n", bCount);
printf("C: %u\n", cCount);
printf("D: %u\n", dCount);
printf("F: %u\n", fCount);
return 0;
}
【问题讨论】:
-
是的。什么不起作用?
-
“它不起作用”到底是什么意思? 如何你知道它不起作用?程序的预期和实际输出是什么?
-
优化技巧 - 有一个
int count[5]数组,然后递增count[tolower(grade) - 'a']。 -
建议:使用
grade = tolower(grade),这样您只需比较一个字符而不是大小写。 -
@EugeneSh。你的意思是
count[6]。最后一个等级是 F,而不是 E。