1

我正在尝试使用do-while.

#include<stdio.h>
#include<conio.h>
void main()
{
char another;
int num;
do
{
    printf("Enter a number");
    scanf("%d",&num);
    printf("Square of %d id %d",num,num*num);
    printf("Want to another another number y/n");
    scanf("%c",&another);
}while(another=='y');
}

现在,当我尝试执行该程序时,它运行良好。我输入一个数字,它显示它的正方形。然后我看到了Want to enter another number y/n。但是,只要我按下任何键(y 或 n),程序就会自行退出,然后我才能按下 enter 来提供输入。我尝试了很多次,但没有成功。

但是如果我要求用户输入 1 或 2(代替 y/n),程序运行良好。在这种情况下,它需要一个整数输入并且可以检查 while 块。如果another == 1,程序再次运行。

我的问题是为什么我不能检查while条件中的字符。

4

1 回答 1

1

它不起作用的原因是在scanfgets之后num,新行仍在缓冲区中,因此它将由scanf带有%c格式说明符的下一个处理。修复它的直接方法是使用:

scanf(" %c", &another);
//     ^space

请注意,您的原件scanf("%c:,&another);无法编译,但我认为这是一个错字。并且总是使用int main, 或者它是未定义的行为。

于 2013-10-22T06:34:39.047 回答