①
main()
{int i,j,n;
long s,sum;
scanf("%d",&n);
for(i=1,sum=0;i<=n;i++)
{for(j=1,s=0;j<=i;j++)
s+=j;
sum+=s;
}
printf("sum=%ld\n",sum);
}
②
main()
{int i,n;
long s,sum;
scanf("%d",&n);
for(i=1,s=0,sum=0;i<=n;i++)
{s+=i;
sum+=s;
}
printf("sum=%ld\n",sum);
}
这两个程序都是求数列n(n+1)/2的前n项和的
两个都不怎么样。求数列的和有公式的,一步就能算出来要循环那么多次,效率浪费。
相比之下第一个浪费更严重,已经求过的数不直接用,一遍一遍的循环去求值
第二个吧,只用了一个for循环,程序运行快些,复杂度低