我刚学会了C编程。现在,我正在尝试执行循环 使用 goto 控制语句,但我刚遇到问题 使用变量 char 。
#include <stdio.h>
char score;
int main(){
loop:
printf("Please Input Your Score : ");
scanf("%c", &score);
switch(score){
case 'A' :
printf("Nilai Anda Baik");
break;
default :
printf("Nilai Anda Salah");
goto loop;
}
return 0;
}
问题是,如果我输入错误的分数,例如&#39; B&#39;,它将打印&#34; Nilai Anda Salah&#34;然后再次自动打印&#34;请输入您的分数:Nilai Anda Salah&#34;一度。之后再次打印&#34;请输入您的分数:&#34;然后我可以再次输入分数。
我不知道为什么它会跳过 scanf 命令。
答案 0 :(得分:1)
使用以下格式说明符
scanf(" %c", &score);
^^^
跳过输入字符之间的换行符。
同样根据C标准函数main,不带参数应声明为
int main( void )
考虑到使用goto
语句是个坏主意。此外,无需将变量score
声明为全局变量。
程序可以按以下方式查看
#include <stdio.h>
int main(void)
{
char score = 'A';
do
{
printf( "Please Input Your Score : " );
scanf( " %c", &score );
switch( score )
{
case 'A' :
puts( "Nilai Anda Baik" );
break;
default :
puts( "Nilai Anda Salah" );
break;
}
} while ( score != 'A' );
return 0;
}