捐款题
#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; 中的分号应该去掉,否则会导致循环无法正常工作。应该修改为:
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;
}
这样修改后的代码应当能够实现预期的功能。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} 这个代码无法达到目的是因为存在几个问题:
1. 在循环中,使用i = i++;这个语句是错误的。 i++表示先使用i的值,然后再将i的值加1。所以这里应该使用i++或者i = i + 1来实现i的自增。
2. 在if(total >= SUM);break;这个语句中,分号;的位置错误。分号应该放在if语句的末尾,而不是在条件判断的后面。因此,应该修改为if(total >= SUM) break; 。
以下是修改后的代码:
#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++;
if(total >= SUM) break;
}
aver = total / i;
printf("num=%d\naver=%10.2f\n", i, aver);
return 0;
}
这样修改后的代码应该能够正常运行并达到预期的目的。
页:
[1]