C语言编程从1累加到100然后求他们的平均值

C语言编程从1累加到100然后求他们的平均值,求这个程序编写

int start=1,end=100;//定义开始和结束的数值(这里是1-100)
printf("%lf",((end-start+1)%2==0)?((end+start)*(end-start+1)/2/(double)(end-start+1)):(((end+start)*(end-start)/2+(end-start)/2)+(end%2?1:2))/(double)(end-start+1));

这个算法比较另类;优点是运算速度快.相比较其他人的算法,运算100个数相加平均数,效率是他们用循环相加的80倍左右.也就是假设用循环相加的算法需要100毫秒完成.上面的代码只需要1毫秒多点;
并且运算的范围越大;效率相比越明显,因为他不管多少个数,运算时间都一样;缺点是难以理解;
上面代码这么长,是考虑2-100或者1-99这种数的个数不是成对的情况;
如果可以保证数的个数是成对的只需要
int start=1,end=100;
printf("%lf",(((end+start)*(end-start+1)/2/(double)(end-start+1)));
这个效率是循环相加运算速度的100倍左右;
再变态一下....
如果只算1-100这个固定的累加平均数...
只需要
printf("%d",(1+100)*100/2/100);
简化下就是......
printf(%d,50);//口算就出来了
好吧 我已经很邪恶了;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-30
平均数可能出现小数,不能用int,用精度高的double
#include <stdlib.h>
void main()
{
double sum=0;
double avg=0;
......
}
第2个回答  2013-06-30
#include <stdlib.h>
void main()
{
int sum=0;
int avg=0;
for(i=1;i<101;i++)
{sum=sum+i; }
avg=sum/100;
printf("%d",s);
}
第3个回答  2013-06-30
恩 如下: 亲记得给分哦#include stdio
main()
int i,s;
avr v;
for(i=1;i<=100;i++)
s=s+i;
v=s;
printf…………
相似回答