首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

计算程序输入时间为何总为0啊解决思路

2012-03-30 
计算程序输入时间为何总为0啊#includestdio.h#include stdlib.h#include time.hintmain(void){inti,

计算程序输入时间为何总为0啊
#include   <stdio.h>
#include <stdlib.h>
#include <time.h>
int   main(void)
{
    int   i,j,num,k;  
    int   *ptr;  
    clock_t   start   ,end;
    double   dtime[5];   //要加算几段程序就设置为几  
    printf( "=============随机数组排序==================\n ");  
    printf( "请输入你要排序多少个数: ");
    scanf( "%d ",&num);
    ptr=(int*)malloc(sizeof(int)*num);  
    if   (ptr   ==NULL)
    {
        printf( "内存空间不足,无法分配\n ");
        exit(0);    
    }
    srand((unsigned)time(NULL));  
    //子和rand()不要放在一个循环里面,要不返回值一样   不解   和人知道怎么回事来着。
    start=   clock();
    for(i=0;i <num;i++)
    {//记住这个排序从0开始,刚从num开始没取到0老输出错误  
        *(ptr+i)=rand()%num+1;  
    }
    end=   clock();
    dtime[0]=(double)end-start   ;
  //=============开始冒泡排序================
    start=   clock();//纪录时间  
    for(i=num-1;i> =0;i--)
    {//减去2是因为这用到了0所以减去1
        for(j=0;j <i;j++)
        {
            if(*(ptr+j)> *(ptr+j+1))
            {
              k=*(ptr+j);    
            *(ptr+j)=*(ptr+j+1);
            *(ptr+j+1)=k;  
              }                        
        }
    }  
    end=   clock();   //结束记时      
    dtime[1]=(double)end-start   ;
    printf( "====显示排列后的值============\n ");  
    start=   clock();//纪录时间  
    for   (i=0;i <num;i++)
    {
    printf( "数组值为:%d\n ",*(ptr+i));//显示存入数组的值  
    }
    end=   clock();   //结束记时      
    dtime[2]=(double)end-start   ;
    printf( "输入所费时间为%f\n ",dtime[0]   /   CLOCKS_PER_SEC);  
    printf( "排序所费时间为%f\n ",dtime[1]   /   CLOCKS_PER_SEC);  
    printf( "输出所费时间为%f\n ",dtime[2]   /   CLOCKS_PER_SEC);  
    //如何计算一段代码执行的时间啊  
    free(ptr);//释放动态分配内存  
    system( "PAUSE ");
    return   0;
}
输入来现实为0郁闷   我输入10000时明显卡了下但输入时间还是为0郁闷了。

有没更精确的计算时间啊。  
我这个输入1000纪录内全是0   哦

[解决办法]
产生随机数的时间是很短的,时间应该是没什么问题,毫秒级的精度够了
[解决办法]
GetTickCount行不行?

热点排行