c - 三角数

标签 c numbers geometry

你好,我正在尝试编写一个程序,为我提供从 5 到 50 的每 5 个数字的三角数。它必须在表格中设置。我让表格开始工作,每 5 个数字从 5 到 50。但是,三角形数字也出现了!我认为我的程序没有循环。

另外,我的书上说我必须使用公式 triangularNumber = n(n+1)/2 但我一直收到错误。

这是我程序的下半部分(星星是我类(class)需要的横幅,但我向你保证上半部分的一切都是正确的)

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) 进行乘法运算,您需要使用 * 运算符,如上所示。

关于c - 三角数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923066/

相关文章:

c++ - 在 VS 的控制台中显示 C 代码的输出

c - 当我使用 int array[10] = {0}; 初始化时,数组存储在哪里?

Python随机模块: How can I generate a random number which includes certain digits?

java - java.awt.geom适合做离散计算吗?

opencv - 从基本矩阵中查找单应矩阵

algorithm - 带方向的最近邻算法(左/右/上/下)

c - 切换 vs if ... else if ... else

c - 如何初始化结构体中的数组

c++ - 计算第 n 个加泰罗尼亚数

generics - 限制可包装使用的模板