我用C编写了一个程序,其中一个城镇的人口每年增加10%,但变量pop
没有在for
循环中递增。
这是我的代码:
#include <stdio.h>
int main() { // B main
int pop = 100000, year, popatend;
printf("\nyear\t\t\tpopulation\n\n");
for (year = 1; year <= 10; year++) { // B loop
popatend = pop * (10 / 100);
pop = pop + popatend;
printf("%d\t\t\t %d\n", year, pop);
} // B loop
} // B main
这是输出:
year population
1 100000
2 100000
3 100000
4 100000
5 100000
6 100000
7 100000
8 100000
9 100000
10 100000
我在Eclipse中以ubuntu mate。
创建了这个程序答案 0 :(得分:4)
您有整数除法,10/100
将被截断为零。请改用10.0 / 100.0
(或普通0.1
)。
答案 1 :(得分:3)
10/100是整数除法,因此为0。
答案 2 :(得分:3)
进行整数除法时:
Uncaught TypeError: Cannot read property 'elements' of undefined
popatend=pop*(10/100);
的值为popatend
,因为0
将评估为(10/100)
。
因此,当您将其添加到0
时,pop
的值不会更改。
我相信可以通过将其更改为
来解决此问题pop
答案 3 :(得分:0)
当您执行10/100
时,您正在使用整数除法,因此它实际上是截断为0.1
而不是返回0
。因此,您要将popatend
设置为每个循环(popatend = pop * 0
)为零,并且每次都有效地向pop
添加零。
要解决此问题,您可以投射或更改pop
和popatend
的类型,也可以使用10f/100f
。
答案 4 :(得分:-2)
你有(year = 1; year <= 10; year++)
,这里year
从未作为计算的一个因素,这就是原因。