Lou*_*uis -1 c math for-loop cs50
这两个代码都编译,但只有第二个代码执行我想要的.第一个代码:
#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);
}
Run Code Online (Sandbox Code Playgroud)
哪个输出:
三细胞数为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));
}
Run Code Online (Sandbox Code Playgroud)
这给了我想要的输出:
的5 trianglular数为15
的10的trianglular数为55
的15的trianglular数目是120
20的trianglular数为210
的25 trianglular数为325
的30的trianglular数为465
的35 trianglular数为630
的三角数40是820
三角数45是1035
三角数50是1275
我不明白为什么TriNumber = ((n + 1) * n) / 2;在第一个代码中放置自己的行并且在printf第二个代码中的函数内部会有这样不同的结果.
for没有花括号的循环(或任何其他控制结构)仅在一个语句上操作.因此,第一个片段将循环TriNumber计算,但只printf在循环完成后调用.这相当于写作
for(n = 5; n <= 50; n += 5) {
TriNumber = ((n + 1) * n) / 2;
}
printf("The trianglular number of %d is %d\n", n, TriNumber);
Run Code Online (Sandbox Code Playgroud)
为了让它按照您的预期工作,您可以在两个语句周围自己添加花括号:
for(n = 5; n <= 50; n += 5) {
TriNumber = ((n + 1) * n) / 2;
printf("The trianglular number of %d is %d\n", n, TriNumber);
}
Run Code Online (Sandbox Code Playgroud)