所以我正在尝试制作一个简单的计算器,让用户可以在不退出的情况下再次使用该程序。现在循环本身工作正常,但是当我使用printf()
时,它会再次重复它并跳过它:
Enter an operator: +
Do you want to continue?(Y/N): y
Enter an operator:
Do you want to continue?(Y/N):
以下是代码:
int main()
{
char o, ans = 'Y';
int num1, num2;
while(ans == 'Y' || ans == 'y')
{
printf("\nEnter an operator: ");
scanf("%c", &o);
printf("\nDo you want to continue?(Y/N): ");
scanf(" %c", &ans);
}
return 0;
}
答案 0 :(得分:0)
我不确定问题是什么,但你可能根本没有在秒scanf上读取字符。您应该检查scanf的返回值,因为它会告诉您已读取了多少参数。可以使用调试器完成调试,也可以在某些点打印变量。这是最好的学习方式;)
答案 1 :(得分:0)
当你按回车键时,你给你的程序提供了字符'\ n',第二次你的scanf必须读取'\ n'(换行符)。此外,当您只想读取单个字符以使用getchar()时,这是一个好主意。 尝试像这样修改你的代码
while(ans == 'Y' || ans == 'y')
{
printf("\nEnter an operator: ");
o = getchar();
getchar(); // because of '\n'
printf("\nDo you want to continue?(Y/N): ");
ans = getchar();
getchar(); // because of '\n'
}