clock()返回值为什么是零?

「已注销」
博客专家认证
2014-04-29 06:05:55
我在一个算法题目的时候,用到clock()函数,然后发现这个函数老师怪异的,然后自己写一个程序来测试,咋会这样呢?
#include <stdio.h>
#include <time.h>
int main()
{
for(int i=0;i<=10000;i++)
i++;
for(int j=0;j<=10000;j++)
j++;
printf("Time1= %lf\n",(double)clock()/CLOCKS_PER_SEC);

return 0;
}

这个for循环,输出的结果是:0.意思是,以秒钟的时间都不到,两个for循环就结束了,但是我看到,屏幕闪啊闪,至少3秒钟啊。
原算法的这个计时器也是怪怪的:
//例题:3-1
#include <stdio.h>
#include <string.h>
#include <time.h>
#define MAXN 1000+10
int a[MAXN];

int main(void)
{
int i,j,n,k,first;
FILE *fin,*fout;
fin=fopen("input.txt","r");
fout=fopen("output.txt","w");

while( fscanf(fin,"%d%d",&n,&k) == 2 )
{
first=1;
memset( a,0,sizeof(a) );
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
if(i %j == 0) a[i]=!a[i];

for(i = 1; i <= n; i++)
{
if(a[i])
{
if(first) first=0;
else fprintf(fout," ");
fprintf(fout,"%d",i);
}
}
fprintf(fout," Time= %lf\n",(double)clock()/CLOCKS_PER_SEC);
}

fclose(fin);
fclose(fout);

return 0;
}


输入:
2 1
2 2
3 1
4 1
4 2
4 3
4 4
7 3


输出:
1 2    Time= 0.002000
1 Time= 0.002000
1 2 3 Time= 0.002000
1 2 3 4 Time= 0.002000
1 3 Time= 0.002000
1 Time= 0.002000
1 4 Time= 0.002000
1 5 6 7 Time= 0.002000

这里每次用时都是相同的?
...全文
1381 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-05-05
  • 打赏
  • 举报
回复
引用 9 楼 sd530842780 的回复:
或者换一个单核500mhz的cpu,你那张囧脸啊能换换么
人家只是笑得比较灿烂点而已。
不要做咸鱼 2014-05-05
  • 打赏
  • 举报
回复
或者换一个单核500mhz的cpu,你那张囧脸啊能换换么
不要做咸鱼 2014-05-05
  • 打赏
  • 举报
回复
你中间sleep(100),再看看结果
FancyMouse 2014-05-01
  • 打赏
  • 举报
回复
引用 5 楼 zhang5476499 的回复:
引用 3 楼 FancyMouse 的回复:
[quote=引用 2 楼 zhang5476499 的回复:] [quote=引用 1 楼 FancyMouse 的回复:] clock计算的是cpu时间,io挂起等待的时间不算在里面的。
但是我的第一个代码没有输入输出,就只有两个for循环之后,就直接输出出程序的时间, 但是它输出0.
你那两个for能用掉多少时间?clock的精度普遍是毫秒级,你那两个for估计几个微秒就算完了。[/quote]但是第二个程序的输出:
1 2    Time= 0.002000
1    Time= 0.002000
1 2 3    Time= 0.002000
1 2 3 4    Time= 0.002000
1 3    Time= 0.002000
1    Time= 0.002000
1 4    Time= 0.002000
1 5 6 7    Time= 0.002000
每个Time的时间为什么相等?[/quote] 你去看clock的文档。你问的问题里面早就有说明。我不想把文档里每一句话重复一遍。
「已注销」 2014-04-30
  • 打赏
  • 举报
回复
引用 3 楼 FancyMouse 的回复:
引用 2 楼 zhang5476499 的回复:
[quote=引用 1 楼 FancyMouse 的回复:] clock计算的是cpu时间,io挂起等待的时间不算在里面的。
但是我的第一个代码没有输入输出,就只有两个for循环之后,就直接输出出程序的时间, 但是它输出0.
你那两个for能用掉多少时间?clock的精度普遍是毫秒级,你那两个for估计几个微秒就算完了。[/quote]但是第二个程序的输出:
1 2    Time= 0.002000
1    Time= 0.002000
1 2 3    Time= 0.002000
1 2 3 4    Time= 0.002000
1 3    Time= 0.002000
1    Time= 0.002000
1 4    Time= 0.002000
1 5 6 7    Time= 0.002000
每个Time的时间为什么相等?
csxiayan 2014-04-30
  • 打赏
  • 举报
回复
引用 2 楼 zhang5476499 的回复:
引用 1 楼 FancyMouse 的回复:
clock计算的是cpu时间,io挂起等待的时间不算在里面的。
但是我的第一个代码没有输入输出,就只有两个for循环之后,就直接输出出程序的时间, 但是它输出0.
换几个计算进去再试试就知道了
FancyMouse 2014-04-30
  • 打赏
  • 举报
回复
引用 2 楼 zhang5476499 的回复:
引用 1 楼 FancyMouse 的回复:
clock计算的是cpu时间,io挂起等待的时间不算在里面的。
但是我的第一个代码没有输入输出,就只有两个for循环之后,就直接输出出程序的时间, 但是它输出0.
你那两个for能用掉多少时间?clock的精度普遍是毫秒级,你那两个for估计几个微秒就算完了。
「已注销」 2014-04-29
  • 打赏
  • 举报
回复
引用 1 楼 FancyMouse 的回复:
clock计算的是cpu时间,io挂起等待的时间不算在里面的。
但是我的第一个代码没有输入输出,就只有两个for循环之后,就直接输出出程序的时间, 但是它输出0.
FancyMouse 2014-04-29
  • 打赏
  • 举报
回复
clock计算的是cpu时间,io挂起等待的时间不算在里面的。

70,027

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧