这个程序似乎不接受while循环的每次迭代时的输入,理想情况下它应该。但是当我用%d替换scanf()函数的%c参数时(即整数输入而不是char输入)它似乎只是工作绝对精细,while循环的每次迭代都接受哪个输入。为什么我会看到这种差异?
int main()
{
char grade;
int i=0;
while(i<10){
printf("Enter ur grade\n");
scanf("%c", &grade);
switch(grade){
case 'A' : printf("U R THE BEST\n");
break;
case 'B' : printf("U R VERY GOOD DUDE...\n");
break;
case 'C' : printf("U R GOOD DUDE...\n");
break;
case 'D' : printf("U R Not good DUDE...\n");
break;
case 'E' : printf("U R WORST DUDE...\n");
break;
default : printf("U r AWESOME...\n");
break;
}
i++;
}
答案 0 :(得分:-1)
在%c
的{{1}}之前添加空格。这样做是为了在扫描角色之前从scanf
删除所有空白。输入一个字符后,stdin
不会使用scanf
(输入密钥)字符,而是在再次调用\n
时将其保留在缓冲区中。
另一件事:您忘记在代码中添加一个scanf
。
答案 1 :(得分:-1)
试试这个:在%c
之前放一个空格,因为它也存储了\n
。
scanf(" %c", &grade);