C语言:计算s=1+1+2+1+2+3+.....1+2+3+...+n

#include<stdio.h>
main()
{
int i,n,s,t;
printf("Input n:\n");
scanf("%d",&n);
for(t=1,s=0,i=1;t<=n;t++)
for(;i<=t;i++)
s=s+i;
printf("s=%d\n",s);
}
这样的两重循环不知为何不对
正确答案是这样的:
#include<stdio.h>
main()
{
int i,n,s,t;
printf("Input n:\n");
scanf("%d",&n);
for(s=0,i=1,t=0;i<=n;i++)
s+=t+=i;
printf("s=%d\n",s);
}
求解

第1个回答  2013-02-06
每次从到for(t=1,s=0,i=1;t<=n;t++)时,i的值不会重新赋1。i还是内层循环后最后的那个值。应该改成:
for(t=1,s=0;t<=n;t++)
for(i=1;i<=t;i++)本回答被提问者采纳
第2个回答  2013-02-06
你应该把双重循环改成
for(t=1,s=0;t<=n;t++)
for(i=1;i<=t;i++)
s=s+i;
不然 第二次循环 i不是从1开始计算的 for语句的第一条语句 只在第一次运行时 执行
第3个回答  2019-01-26
每次从到for(t=1,s=0,i=1;t<=n;t++)时,i的值不会重新赋1。i还是内层循环后最后的那个值。应该改成:
for(t=1,s=0;t<=n;t++)
for(i=1;i<=t;i++)
第4个回答  2018-03-14
#include <stdio.h>

main()
{
int i,n,s,t;
printf("Input n:\n");
scanf("%d",&n);
for(t=1,s=0;t<=n;t++)
for(i=1;i<=t;i++)   //i=1 内层循环 每次从1 开始
s=s+i;
printf("s=%d\n",s);
}
Input n:
3
s=10
Press any key to continue

第5个回答  2013-02-06
第二个for循环结束之后要把i重置为1 不然就变成了 1 + 2 + 3 + ... + n了。。
相似回答
大家正在搜