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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: