首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C编程,循环难点

C编程,循环难点
EN

Stack Overflow用户
提问于 2017-01-13 17:23:03
回答 3查看 74关注 0票数 0

我目前正在解决一个问题,它非常烦人。这是一个循环,我知道如何做,但试图理解-为什么-第二种情况不起作用。

第一部分很好。

代码语言:javascript
复制
int n;
int trianglenumber;
trianglenumber = 0;
for (n = 1; n <= 200; n++)
    trianglenumber = trianglenumber + n;
printf("%I,", trianglenumber");

输出为20100

代码语言:javascript
复制
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的位置,并得到相同的结果呢?非常感谢。只是想弄清楚这一点。我想这是很基本的,但我看不出来。

EN

回答 3

Stack Overflow用户

发布于 2017-01-13 17:24:45

在第二种情况下,trianglenumber + n; 不会递增 trianglenumber。因此,在循环的每次迭代中,您只是将n的值放入result中。

最后,打印trianglenumber,它仍然是第一个赋值0。这证明了你得到的输出是正确的。

也就是说,%I不是标准的转换说明符,您应该使用%i。使用无效的转换说明符将调用undefined behavior

票数 2
EN

Stack Overflow用户

发布于 2017-01-13 17:32:26

我有一个解决方案,有很多错误:

代码语言:javascript
复制
#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

票数 0
EN

Stack Overflow用户

发布于 2017-01-13 19:04:54

  1. 程序响应的结果是0,这是我不明白的。

您正在打印"trianglenumber“,它根本没有递增。因为"trianglenumber“在你初始化时是零,所以输出是零。

  1. 为什么需要使用两次trianglenumber,然后将其添加到N?

首先,我们将"trianglenumber“变量创建为整数类型。第二个"trianglenumber=0“,因为如果你不初始化它,它可能会得到一些无用的值,你不能得到想要的输出。

写入trianglenumber = trianglenumber + n;因为在每次迭代中trianglenumber的值都会递增。

例如:

在第一次迭代中。

trianglenumber = trianglenumber + n;

三角列数=0+1=1

在第二次迭代中,n=2,并且三角网数从第一次迭代变为1。

trianglenumber = trianglenumber + n;

三角列数=1+2=3

在每次迭代中都是类似的。

  1. 我认为以上两个答案都回答了你的第三个问题。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41631172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档