C语言编程,为什么程序的后一半不能运行了?求大神~~

#include<stdio.h>
main()
{
int a,b,c;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
if(a>b) c=a-b;
else c=b-a;
printf("两数之差的绝对值为:%d\n",c);
printf("是否再次进行计算?若是,请输入Y;若否,输入N\n");
char t;
t=getchar();
printf("%c\n",t);
}
要求:输入两个数,求它们的绝对值,并且询问是否需要继续进行运算。若是,则继续输入两个数求绝对值;若否,停止运算。

不是不能运行,实际上已经运行了,打印出来的就是 回车字符 因为getchar()函数也是从输入缓冲区取值的,你前面的scanf()函数结束时的回车键保留在了缓存区,被下面的getchar()直接取走了,一般我都在scanf()后面加一句 getchar(); 将这个回车值跳掉追问

谢谢啦~明白了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-03
楼上说得对,是因为输入函数scanf不会对结尾的回车进行处理,所以在t=getchar这句会直接从输入缓冲区读取“回车”,而不是要求再次输入,具体你可以搜下输入输出函数的详解。
还有你可以在t=getchar;前面加一句:fflush(stdin);这句是清空输入缓存区的意思,你可以试一下。(楼主要采纳啊,还差一个问题就升级了)追问

谢谢上楼…你们都答的太好了…开始没看见,不好意思了哈…

第2个回答  2013-12-03
您好!很高兴为您解答。

修改如下:

#include<stdio.h>
main()
{
int a,b,c;
char t;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
if(a>b) c=a-b;
else c=b-a;
printf("两数之差的绝对值为:%d\n",c);
printf("是否再次进行计算?若是,请输入Y;若否,输入N\n");
getchar();//加一个输入字符的语句,抵消按回车的影响
t=getchar();//输入N或Y
printf("%c\n",t);//其实原先也有输出,输出了回车
}
修改处已注释。

望采纳~如您还有不解,欢迎追问~本回答被提问者采纳
第3个回答  2013-12-05
因为你运行完一遍后(输入Y或N后)没有继续指向开头从新再开始一遍循环,用while或者goto就好了
第4个回答  2013-12-03

追问

谢谢!😁

相似回答