您的位置:首页 > 其它

错误的程序之阶乘之和测试程序的快慢程度(加一个计时器)<time.h>和clock()函数

2014-10-07 12:00 567 查看
#include <stdio.h>
int main(){
int i,j,n;
int  s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
int factorial=1.0;
for(j=1;j<=i;j++){
factorial*=j;
}
s+=factorial;
}
printf("%d\n",s%1000000);
return 0;
}


1当n为100时输出的是一个负值说明乘法溢出了

2当n为10^6时速度很慢

3使用<time.h>和clock()函数可以在程序调用它之前获得整个程序的运行时间,这个时间除以常数CLOCKS_PER_SEC得到的值

#include <stdio.h>
#include <time.h>
int main(){
const int MOD=1000000;
int i,j,n;
int  s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
int factorial=1.0;
for(j=1;j<=i;j++){
factorial*=j;
}
s+=factorial;
printf("%d\n",s);
}
s=s%MOD;
printf("%d\n",s);
printf("Time used=%.2lf\n",(double)clock()/CLOCKS_PER_SEC);
return 0;
}


注意:1上面的程序使用了常量定义,增加了程序的可读性,而且当题目该为求后5位的时候也方便修改

2输入20时候所用时间远远大于0是因为它把键盘输入的时间也计算在内(在程序启动之后所用的时间)

3为了避免时间影响测试结果我们使用一种称为管道的小技巧:在WINDOWS命令行下执行echo 20 | abs,操作系统会自动帮你把20输入,其中abs就是你的程序名

而Linux中则需要输入echo | /abs(具体abs旁边的不是/)(应为打不出来所以用了这个),因为在默认情况下当前目录不在可执行文件的搜索路线中

4很多程序的运行时间与规模n都存在着近似的简单关系。可以通过计是函数来发现或者验证这一规律
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐