s1e16课后作业,关于for循环
请各位大佬帮忙看看为什么我的程序运行出来是28年后,标准答案是27年,它不是应该会在第27年跳出循环吗?#include<stdio.h>
#include<math.h>
int main()
{
float x, h;
int year;
for(year=1;x>=h;year++)
{
x=10000;
h=10000;
x= x + 1000 * year;
h= h*pow(1.05,year);
}
printf("%d年后,黑夜的投资额超过小甲鱼!\n",year);
printf("小甲鱼的投资额是:%.2f\n",x);
printf("黑夜的投资额是:%.2f\n",h);
return 0;
}
盲猜year++多加了一次
另外你变量不初始化直接用呀 你的x在循环里面定义,for循环时不会报错? 我这才八年
https://static01.imgkr.com/temp/1229f5906e604a14ab5ea2b1c2f4ab1c.jpg
#include <math.h>
#include <stdio.h>
int main()
{
float x, h;
int year;
x=10000;
h=10000;
for(year=1;x>=h;year++)
{
x= x + 1000 * year;
h= h*pow(1.05,year);
printf("%.2f,%.2f\n", x,h);
}
printf("%d年后,黑夜的投资额超过小甲鱼!\n",year);
printf("小甲鱼的投资额是:%.2f\n",x);
printf("黑夜的投资额是:%.2f\n",h);
return 0;
} 万千只cnm 发表于 2021-8-9 16:51
盲猜year++多加了一次
另外你变量不初始化直接用呀
我尝试过加入printf函数想看看变化,结果还是蒙的,最后27就完了赛,还是有28,程序执行后表现是这样的:
31000.00 27859.62 21
32000.00 29252.61 22
33000.00 30715.24 23
34000.00 32251.00 24
35000.00 33863.55 25
36000.00 35556.73 26
37000.00 37334.56 27
28年后,黑夜的投资额超过小甲鱼!
小甲鱼的投资额是:37000.00
黑夜的投资额是:37334.56
我变量初始化是因为之前全是3年,后来想着可能是因为pow函数和年数的原因,所以干脆全在循环中初始化了 大马强 发表于 2021-8-9 17:33
你的x在循环里面定义,for循环时不会报错?
不会 大马强 发表于 2021-8-9 17:36
我这才八年
可能是因为pow函数和年数的原因 幻影yr 发表于 2021-8-9 18:43
可能是因为pow函数和年数的原因
你数据设置的是多少,不给全我也很难进行测试 幻影yr 发表于 2021-8-9 18:42
我尝试过加入printf函数想看看变化,结果还是蒙的,最后27就完了赛,还是有28,程序执行后表现是这样的: ...
代码没问题,你的year初始值为1,小甲鱼为0,你们虽然都是循环27,你当然是28 你的year初始设为1了,改为for ( year=0 ;x>=h;year++) 即可
“x = x + 1000 * year;”这句有问题,
改成“x = 10000 + 1000 * year”
或者是“x = x+ 1000” 或“x += 1000” 大马强 发表于 2021-8-9 19:07
你数据设置的是多少,不给全我也很难进行测试
数据我给了呀,上面的那个就是完整的代码 大马强 发表于 2021-8-9 19:45
代码没问题,你的year初始值为1,小甲鱼为0,你们虽然都是循环27,你当然是28
我尝试过的,但还是28 WOIA 发表于 2021-8-9 19:49
你的year初始设为1了,改为for ( year=0 ;x>=h;year++) 即可
我尝试过,但还是28 番杰 发表于 2021-8-10 14:32
“x = x + 1000 * year;”这句有问题,
改成“x = 10000 + 1000 * year”
或者是“x = x+ 1000” 或“x + ...
我改成“x=1000+100*year”还是28年
改成“x = x+ 1000” 或“x += 1000”则变成了3年 幻影yr 发表于 2021-8-11 10:54
我改成“x=1000+100*year”还是28年
改成“x = x+ 1000” 或“x += 1000”则变成了3年
我感觉我们做的是两份题{:10_277:}
https://static01.imgkr.com/temp/3774d6679e7f4a7faa394b00fca4645c.jpg #include<stdio.h>
#include<math.h>
int main()
{
float x=10000, h=10000;
int year;
for(year=1;x>=h;year++)
{
x= x + 1000;
h= h+h*0.05;
}
printf("%d年后,黑夜的投资额超过小甲鱼!\n",year);
printf("小甲鱼的投资额是:%.2f\n",x);
printf("黑夜的投资额是:%.2f\n",h);
return 0;
}
楼主的不对 幻影yr 发表于 2021-8-9 18:42
我尝试过加入printf函数想看看变化,结果还是蒙的,最后27就完了赛,还是有28,程序执行后表现是这样的: ...
你这个打印出来最后一次是 37000.00 37334.56 27 ,
最后years不是等于27了吗?这不是对了嘛
你出来28是因为你最后一次循环结束后,for循环里的years++;使years变成了28,
再次进行判断,不满足x>=h;跳出来循环
此时打印出来的years就是28 大马强 发表于 2021-8-9 17:36
我这才八年
你这个是因为跟楼主不一样,楼主每次循环x.h都会重新赋值,你的写在了for外面所以x的值变化特别大 番杰 发表于 2021-8-11 17:34
你这个是因为跟楼主不一样,楼主每次循环x.h都会重新赋值,你的写在了for外面所以x的值变化特别大
我这个拿他给的用的{:10_256:}
页:
[1]
2