C编程,循环困难

时间:2017-01-13 09:23:03

标签: c loops

我目前正在处理一个问题而且非常讨厌。这是一个循环,我知道怎么做,但试图理解-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的位置并获得相同的答案?非常感激。试图解决这个问题。我觉得这很基本,但我没有看到它。

4 个答案:

答案 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)

  1. 程序以0的解决方案作出回应,我不明白。
  2. 您正在打印&#34; trianglenumber&#34;这根本没有增加。作为&#34; trianglenumber&#34;因为你正在使用,所以输出是零。

    1. 为什么需要使用trianglenumber两次,然后将其添加到N?
    2. 首先我们创建&#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

      同样在每次迭代中。

      1. 我认为从上述两个答案中你的第三个问题都得到了回答。