你好,我正试图写一个程序,给我的三角数字每5到50个数字。必须放在桌子上。我让桌子开始工作,每隔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;
}

最佳答案

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),需要使用上面所示的*运算符。

08-17 03:09