#include <stdio.h>
int main()
{
int i,j,sum;
char ch;
printf("请输入两个数:\n");
scanf("%d%d",&i,&j);
while(1)
{
sum = i + j;
printf("和是:%d",sum);
printf("是否继续?Y/N\n");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
printf("请输入两个数:\n");
scanf("%d%d",&i,&j);
}
else
{
printf("谢谢使用!");
break;
}
}
}
请问这里的scanf有什么问题吗?还是我的程序写的错了,错在哪里呢?谢谢
我试了可是,不是算不出来是
在scanf("%c",&ch);前加上getchar();
因为你输入了两个数字后还按了一下回车,这个回车也是字符,也就是"\n"
所以下一个scanf其实没有读到你的y或者n,而是把"\n"给读了进去,所以判断是结束程序
用上了getchar();就可以先读取一个字符,也就是把"\n"给读了,这样就不会影响你的输入
当然如果你把getchar();换成fflush(stdin);也可以,这是把之前的数据流清空,同样可以把"\n"也就是回车的影响消除。
我试了getchar()是可以的,但是就是不知道为什么“ch”用scanf不能读呢?
追答可以读啊,
那是因为你的上一次的输入的确认键还在缓存啊,再次读得时候就读得是确认键。
你也可以把ch=getchar();换成scanf("%c",&ch);