gpt4 book ai didi

c - 分号 - 这个练习是如何搞乱的

转载 作者:行者123 更新时间:2023-11-30 15:34:19 30 4
gpt4 key购买 nike

我知道我不应该在循环后放置分号。但我正在学习,不小心插入了一个。我想确切地知道我的错误到底发生了什么。所以下次发生类似的事情时,我就知道错误的根源。

在下面的代码中,在这部分代码中:

triangularNumber = 0;
for ( n = 1; n <= number; ++n )
;

我不小心在 for 循环后面插入了一个分号。当我执行整个代码时,它会提示用户插入一个数字来计算 TriangleNumber。但使用分号时结果是错误的。例如,当我插入 10 时,答案应该是 55,但是由于分号错误,它提供给我的是 56。我想了解为什么是 56。

完整代码如下:

#include <stdio.h>

int main(void)
{
int n, number, triangularNumber, counter;

for(counter = 1; counter <=5; counter++)
{
printf("What Triangular Number do you want?");
scanf("%i", &number);

triangularNumber = 0;
for ( n = 1; n <= number; ++n )
**;**

triangularNumber += n;

printf("Triangular number %i is %i\n\n", number, triangularNumber);
}
return 0;
}

最佳答案

其他答案都很好,但要回答你为什么会得到你所得到的特定数字(当你输入 10 时是 11,而不是 56)的问题,这是因为:

for ( n = 1; n <= number; ++n )
;

除了循环之外什么都不做,直到nnumber正好多1,所以当number等于10时,n 将等于 11

然后,这个:

triangularNumber += n;

只需将triangleNumber设置为11,因为在循环之前将其设置为0,所以当它位于循环之外时,它会这样做有了分号,triangleNumber += n; 基本上等同于 triangleNumber = n;

顺便说一句,如果您在 for 循环中定义了 n,而不是在 main() 的开头,就像这样 (您可能需要使用 -std=c99 或类似方法将编译器置于 C99 模式:

for ( int n = 1; n <= number; ++n )
;

triangularNumber += n;

然后你会立即发现错误,因为程序无法编译,因为当你到达 triangleNumber += n; 外部循环时, n 将不再在范围内。这就是为什么将变量的范围限制为所需的最少代码量通常是一个好主意的一个很好的原因。

关于c - 分号 - 这个练习是如何搞乱的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23353822/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com