|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C语言 14课后作业,读取输入内容中的数字
原答案,如下两种情况都不能正常统计因为如果上一行输入的内容如下
7.8bb6
78b
我自己写了,如下的代码,但还是有问题,无法退出内循环。
具体的问题是,
当用户直接输入一个 回车,或者任何非数字结尾的字符串时,
getchar()函数读完最后一个字符,scanf函数就直接去读回车,而这里似乎,我的理解是,scanf直接面对回车,会把回车读掉并且忽略掉,继续等待用户输入。
这里就导致无法退出循环
比如用户输入q,然后回车
getchar读完q后,scanf面对回车就会一直等待
怎么改,才能正确退出循环,即解决我上面的问题
- #include <stdio.h>
- int main()
- {
- float num=0,sum=0;
- char ch;
- int status=0,flag=0;
- do
- {
- printf("请输入字符:");
- flag=0;
- do
- {
- status=scanf("%f",&num); //这里有问题
- sum=sum+num;
- if (status==1)
- {
- flag=1;
- }
- }
- while((ch=getchar())!='\n');
- }
- while(ch=='\n' && flag);
-
- printf("计算结果是:%.2f",sum);
- return 0;
- }
复制代码
|
|