|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目如图:
求大佬指教,为什么这样行不通呢?
- #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;
- }
复制代码
|
|