|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #define SUM 100000
- int main()
- {
- float amount, total = 0, aver;
- int i = 1;
- while(i <= 1000)
- {
- printf("input the amount:\n");
- scanf("%f", &amount);
- total = total + amount;
- i = i++;
- if(total >= SUM);break;
- }
- aver = total / i;
- printf("num=%d\naver=%10.2f\n", i, aver);
- return 0;
- }
复制代码
为什么这个代码达不到目的
这段代码的目的是让用户输入金额,直到输入的金额总和达到100000,然后输出输入的次数和平均每次输入的金额。
在代码中有一个错误和一个潜在的问题。
1. 首先, #include <stdio.h> 和 #define SUM 100000 这两行之间应该有换行符,否则可能会导致预处理错误。应该修改为:
- #include <stdio.h>
- #define SUM 100000
-
复制代码
2. 然后,在 while 循环内部, i = i++; 这行代码的作用不是递增 i 的值,而是将 i 赋值为当前的 i 值,因此循环条件无法得到满足。
应该将 i = i++; 修改为 i++;,或者直接使用 i += 1; 或 i = i + 1;。
另外,循环条件 if(total >= SUM);break; 中的分号应该去掉,否则会导致循环无法正常工作。应该修改为:
修正后的代码如下所示: - #include <stdio.h>
- #define SUM 100000
- int main() {
- float amount, total = 0, aver;
- int i = 0; // 初始化 i 为 0,因为在循环中会先执行 i++
-
- while (i < 1000) { // 修改循环条件,避免无限循环
- printf("input the amount:\n");
- scanf("%f", &amount);
- total = total + amount;
- i++; // 修改递增方式
- if (total >= SUM)
- break;
- }
- aver = total / i;
- printf("num=%d\naver=%10.2f\n", i, aver);
- return 0;
- }
复制代码
这样修改后的代码应当能够实现预期的功能。
球一个最佳答案谢谢啦!这对我非常重要!  
|
|