c语言编程求1+(1+2)+(1+2+3)+(1+2+3+...+n )的值

c语言编程求1+(1+2)+(1+2+3)+(1+2+3+...+n
)的值,n是自己输入的,请问怎么写啊,想很久想不出来

一重循环即可,供参考:

#include <stdio.h>
int main() 
{
    int n, i, sum = 0, tmp = 0;
    printf("Enter a integer: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        tmp += i;
        sum += tmp;
    }
    printf("1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n) = %d\n", sum);
    return 0;
}

有用请采纳,点击右侧采纳即可:


#include <stdio.h>

int main() {
    int n, i, j, sum = 0;
    printf("Enter a positive integer: ");
    scanf("%d", &n);
    for (i = 1; i <= n; i++) {
        int temp = 0;
        for (j = 1; j <= i; j++) {
            temp += j;
        }
        sum += temp;
    }
    printf("The sum is: %d\n", sum);
    return 0;
}

上面代码实现了你所提出的计算需求。首先定义了一个循环变量 i,从 1 到 n,分别计算每一项的和。然后在内部再定义一个循环变量 j,从 1 到 i,计算每一项的和,并累加到 temp 变量中。最后再将 temp 累加到总和 sum 上。


#include <stdio.h>

int main(void) {
    int n, i, j, sum = 0;
    printf("Enter a value for n: ");
    scanf("%d", &n);

    for (i = 1; i <= n; i++) {
        int tmp = 0;
        for (j = 1; j <= i; j++) {
            tmp += j;
        }
        sum += tmp;
    }

    printf("The sum of 1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n) is %d\n", sum);

    return 0;
}

用递归解决

嗯……好像没有说n的范围啊,保险起见,我这里用long long,防止溢出。

// 确认不会溢出就用注释的语句

#include <stdio.h>

int main()
{
    int n = 0;
    scanf("%d", &n);
    long long sum = 0; // int sum = 0;
    for (int i = 1; i <= n; ++i)
    {
        long long s = 0; // int s = 0;
        for (int j = 1; j <= i; ++j)
        {
            s += j;
        }
        sum += s;
    }
    printf("%lld", sum); // printf("%d", sum);
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^