您好我正在尝试编写一个程序,它给出了每5个数字5到50的三角形数字。它必须在表格中设置。我得到了工作台,每5个数字5到50个。然而,三角形数字也随之出现!我不认为我的程序是循环的。
另外,我的书说我必须使用公式triangularNumber = n(n + 1)/ 2但我一直收到错误。
以下是我的课程的下半部分(星星是我班级所需的横幅,但我保证上半部分的一切都是正确的)
int main() {
// [... snipped ... ]
printf("***********************************************************\n\n\n\n\n");
int n, triangularNumber;
triangularNumber = n (n + 1) / 2;
printf ("TABLE OF EVERY 5TH TRIANGULAR NUMBER\n\n");
printf (" n Sum from 1 to n\n");
printf ("--- ------------------\n");
for ( n = 5; n <= 50; n +=5 ) {
triangularNumber = n;
printf (" %i %i\n", n, triangularNumber );
}
return 0;
}
答案 0 :(得分:1)
第triangularNumber = n (n + 1) / 2
行位置错误;计算仅发生在该行上,此时n
未初始化。
您需要在循环内移动计算,以便每个n
发生一次:
for ( n = 5; n <= 50; n +=5 ) {
triangularNumber = n * (n + 1) / 2;
printf (" %i %i\n", n, triangularNumber );
}
如果您打算定义如何计算triangularNumber
,那么在C中执行此操作的方法是编写一个函数,例如:
int triangularNumber (int n) {
return n * (n + 1) / 2;
}
然后调用triangularNumber(n)
获取值。 (在这种情况下,公式很短,只在一个地方使用,因此几乎不需要编写函数。)
另请注意,在C语言中,您无法编写n(n + 1)
进行乘法运算,您需要使用*
运算符,如上所示。
答案 1 :(得分:0)
您需要实际计算该值。将此行printf (" %i %i\n", n, triangularNumber );
更改为printf (" %i %i\n", n, n * (n+1) / 2 );
答案 2 :(得分:-1)
triangularNumber应该是一个函数,而不是一个变量。试试这个。
int triangularNumber (int n)
{
return n * (n + 1) / 2;
}