2014-02-21 52 views
1

你好,我正在编写一个程序,它给了我每五个数字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; 
} 
+0

为什么'triangularNumber = n;'在循环中? –

+0

'triangularNumber = n *(n + 1)/ 2;'你错过了'*'。此外,你需要在循环内移动该行... – ssm

回答

0

您需要实际计算值。更改此行printf (" %i %i\n", n, triangularNumber);printf (" %i %i\n", n, n * (n+1)/2);

+0

@dvnrrs是的,我没有忘记。现在更新它,谢谢。 – user376507

-1

triangularNumber应该是一个函数,而不是一个变量。尝试这个。

int triangularNumber (int n) 
{ 
    return n * (n + 1)/2; 
} 
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)乘法,您需要使用*操作如上所示。