【发布时间】:2016-08-01 20:59:44
【问题描述】:
这两个代码都可以编译,但只有第二个代码可以满足我的要求。 第一个代码:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main()
{
int TriNumber = 0;
int n;
for(n = 5; n <= 50; n += 5)
TriNumber = ((n + 1) * n) / 2;
printf("The trianglular number of %d is %d\n", n, TriNumber);
}
哪些输出:
55的三角形数是1275
下面的程序做我想做的事:它为 5 到 50 之间的每五个整数打印一个三角数。
#include <stdio.h>
#include <cs50.h>
#include <math.h>
int main()
{
int TriNumber = 0;
int n;
for(n = 5; n <= 50; n += 5)
printf("The trianglular number of %d is %d\n", n, TriNumber = (((n + 1) * n) / 2));
}
这给出了我想要的输出:
5的三角形数是15
10的三角形数是55
15的三角形数是120
20的三角形数是210
25的三角形数是325
30的三角形数是465
35的三角形数是630
40的三角形数是820
45的三角形数是1035
50的三角形数是1275
我不明白为什么将TriNumber = ((n + 1) * n) / 2; 放在第一个代码中的单独行和第二个代码中的printf 函数中会产生如此不同的结果。
【问题讨论】:
-
第一个sn-p计算
TriNumber十次,然后打印一次。printf不在循环中。 -
for是循环的开始。只要满足循环条件,就会重复下一个语句。您的第一个示例,打印发生在 循环完成之后。你的第二个例子,打印是循环的一部分。 -
检查您的课程笔记。在
for循环语句之后直接执行的唯一语句是 ... -
在完成第一个代码中的 for 循环之前,您不会打印任何内容。同样,“n”变量最后一次递增到 55。