我目前正在处理一个问题而且非常讨厌。这是一个循环,我知道怎么做,但试图理解-WHY-第二种情况不起作用。
第一部分没问题。
int n;
int trianglenumber;
trianglenumber = 0;
for (n = 1; n <= 200; n++)
trianglenumber = trianglenumber + n;
printf("%I,", trianglenumber");
输出为20100
int n;
int trianglenumber;
trianglenumber = 0;
int result = 0;
for (n = 1; n <= 200; n++)
result = trianglenumber + n;
printf("%I,", trianglenumber");
该程序以我不理解的0
解决方案作出回应。为什么需要使用trianglenumber
两次,然后将其添加到n
?为什么你不能像设置结果一样设置任何变量来获取trianglenumber
的位置并获得相同的答案?非常感激。试图解决这个问题。我觉得这很基本,但我没有看到它。
答案 0 :(得分:2)
在第二种情况下,trianglenumber + n;
不会增加 trianglenumber
。因此,在循环的每次迭代中,您只在n
中放置result
的值。
最后,您最终打印的trianglenumber
仍然是第一个指定的值,0。这证明了您得到的输出。
尽管如此,%I
不是标准的转换说明符,您应该使用%i
。使用无效的转换说明符会调用undefined behavior。
答案 1 :(得分:0)
我在第二段代码中注释掉了不包含trianglenumber
的行。这是结果:
// int n;
int trianglenumber;
trianglenumber = 0;
// int result = 0;
// for(n = 1; n<=200; n++)
result = trianglenumber + n;
printf("%I,", trianglenumber");
如您所见,trianglenumber
已初始化为0
且从未修改过。最后一行代码在程序执行 1 期间一直打印出0
的值。
1 这不完全正确,但是讨论的范围也可以。
答案 2 :(得分:0)
我有一个解决方案,有很多错误:
#include <stdio.h>
int main (){
int n;
int trianglenumber=0;
for(n = 1; n<=200; n++)
trianglenumber += n;
printf("%i", trianglenumber);
return 0;
}
只使用triangualrnumber结果,我也不存在,将""
更正,并且triangualnumber从不递增,只是0
答案 3 :(得分:0)
您正在打印&#34; trianglenumber&#34;这根本没有增加。作为&#34; trianglenumber&#34;因为你正在使用,所以输出是零。
首先我们创建&#34; trianglenumber&#34;变量作为整数的类型。第二个&#34; trianglenumber = 0&#34;因为如果你没有初始化它,它可能需要一些垃圾值,你不能获得所需的输出。
写trianglenumber = trianglenumber + n;因为在每次迭代中,trianglenumber的值都会增加。
例如 -
在第一次迭代中。
trianglenumber = trianglenumber + n;
trianglenumber = 0 + 1 = 1
在第二次迭代中,n = 2,并且trianglenumber从第一次迭代变为1。
trianglenumber = trianglenumber + n;
trianglenumber = 1 + 2 = 3
同样在每次迭代中。