我目前正在解决一个问题,它非常烦人。这是一个循环,我知道如何做,但试图理解-为什么-第二种情况不起作用。
第一部分很好。
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中?为什么你不能像我对result做的那样设置任何变量来取代trianglenumber的位置,并得到相同的结果呢?非常感谢。只是想弄清楚这一点。我想这是很基本的,但我看不出来。
发布于 2017-01-13 17:24:45
在第二种情况下,trianglenumber + n; 不会递增 trianglenumber。因此,在循环的每次迭代中,您只是将n的值放入result中。
最后,打印trianglenumber,它仍然是第一个赋值0。这证明了你得到的输出是正确的。
也就是说,%I不是标准的转换说明符,您应该使用%i。使用无效的转换说明符将调用undefined behavior。
发布于 2017-01-13 17:32:26
我有一个解决方案,有很多错误:
#include <stdio.h>
int main (){
int n;
int trianglenumber=0;
for(n = 1; n<=200; n++)
trianglenumber += n;
printf("%i", trianglenumber);
return 0;
}只使用不带结果的三种语言的数字,还有%I不存在,正确地放入"",并且三种语言的数字从不递增,它只是0
发布于 2017-01-13 19:04:54
您正在打印"trianglenumber“,它根本没有递增。因为"trianglenumber“在你初始化时是零,所以输出是零。
首先,我们将"trianglenumber“变量创建为整数类型。第二个"trianglenumber=0“,因为如果你不初始化它,它可能会得到一些无用的值,你不能得到想要的输出。
写入trianglenumber = trianglenumber + n;因为在每次迭代中trianglenumber的值都会递增。
例如:
在第一次迭代中。
trianglenumber = trianglenumber + n;
三角列数=0+1=1
在第二次迭代中,n=2,并且三角网数从第一次迭代变为1。
trianglenumber = trianglenumber + n;
三角列数=1+2=3
在每次迭代中都是类似的。
https://stackoverflow.com/questions/41631172
复制相似问题