我看不出为什么While循环只是速度消失并跳过scanf的char? 它甚至不会要求我的输入,只是循环就像没有明天一样。
#include <stdio.h>
int main()
{
int number;
int multiply, ans;
char choice;
printf("-------------------------------------");
printf("\n MULTIPLICATION TABLE ");
printf("\n-------------------------------------");
do
{
printf("\nEnter an integer number:");
scanf("%d", &number);
printf("\nMultiplication of %d is :-\n", number);
printf("\n");
for(multiply=1; multiply<11; multiply++){
ans = number * multiply;
printf(" %d", ans);
}
printf("\n");
printf("\nWould you like to continue? [Y] for Yes,[N] for no : ");
scanf("%c", &choice);
printf("\n");
}
while(choice='Y');
printf("Thank You");
return 0;
}
答案 0 :(得分:3)
scanf()
没有按照你的想法做到(换行符,缓冲等)。最好使用fgetc()
:
choice = fgetc(stdin);
出于同样的原因,你需要摆脱
的尾随换行符scanf("%d", &number");
离开标准输入缓冲区。要解决此问题,请插入
fgetc(stdin);
之后的scanf()
。
另外,C不是Pascal。等待比较运算符 - 以及您正在寻找的条件是
while (choice == 'Y')
单个等式标记表示分配。
答案 1 :(得分:2)
我认为您需要使用==
运算符进行while
条件检查中的比较:
while(choice=='Y');
目前您正在使用=
运算符,该运算符将Y
分配给choice
变量。
答案 2 :(得分:2)
自从我用这种语言编程以来已经很长时间了,但是一眼就看出来了:
while(choice='Y');
而不是:
while(choice=='Y');
==比较,=设置等于。所以while循环实际上并没有检查你想要设置的条件。