求大佬指教《带你学C带你飞》14课课后题
题目如图:求大佬指教,为什么这样行不通呢?
#include<stdio.h>
int main()
{ float a = 0;
double i = 0;
printf("请输入合法数字:");
while(scanf("%f",&a))
{
while(getchar() != '\n'&&scanf("%f",&a))
{
i = i + a;
}
printf("请输入合法数字:");
}
printf("%.2f",i);
return 0;
}
是 while语句在此题行不通还是语句中有一些错误呢?(编译器没报错) 控制起来比效麻烦,参考代码:
#include<stdio.h>
int main()
{
double a = 0;
double sum = 0;
int r = 0, flag = 0, ch;
while(1)
{
printf("请输入合法数字:");
flag = 0;
while(1)
{
r = scanf("%lf",&a);
// 第1个输入非法退出
if(!r && !flag)
{
break;
}
flag = 1;
sum += a;
// 吃掉非法字符
while(ch = getchar())
{
if(!(ch>='0' && ch <= '9') && ch !='\n')
{
continue;
}
else
{
ungetc(ch, stdin);
break;
}
}
// 判断是否到字符串尾
if((ch = getchar()) != '\n')
{
ungetc(ch, stdin);
}
else
{
break;
}
}
if(!flag)
{
break;
}
}
printf("%.2f\n", sum);
return 0;
} ba21 发表于 2018-6-28 22:08
控制起来比效麻烦,参考代码:
感谢回答,昨天没有看到,抱歉 ba21 发表于 2018-6-28 22:08
控制起来比效麻烦,参考代码:
感谢回答,昨天没有看到,抱歉
页:
[1]