读书人

怎么计算程序执行时间和指针间怎么交

发布时间: 2012-02-10 21:27:41 作者: rapoo

如何计算程序执行时间,和指针间如何交换地址.
1.计算程序时间:
自己写个不过只能计算秒,我想一个能计算毫秒的因该怎么写:
#include <stdio.h>
#include <time.h>
int main(void)
{
char ch;
double time1,time2;
time1=time(NULL);
printf( "请大与1秒后按键要不会返回0\n ");
system( "PAUSE ");
time2=time(NULL);
printf( "程序执行时间为%f秒 ",(time2-time1));
system( "PAUSE ");
return 0;
}
2.排序算法,用指针内存地址直接交换不是把值交换更快吗,但我写出来出错;
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i,j,num,k;
int *ptr;
int *ptr2;
printf( "=============随机数组排序==================\n ");
printf( "请输入你要排序多少个数: ");
scanf( "%d ",&num);
ptr=(int*)malloc(sizeof(int)*num);
if (ptr ==NULL)
{
printf( "内存空间不足,无法分配\n ");
exit(0);
}
for(i=0;i <num;i++)
{
scanf( "%d ",(ptr+i)); //输入值存入数组中
}
printf( "排序前顺序\n ");
for (i=0;i <num;i++)
{
printf( "数组值为:%d\n ",*(ptr+i));//显示存入数组的值
}
for(i=0;i <num-1;i++)
{
for(j=0;j <(num-i);j++)
{//冒泡,每次从最下面下开始上冒
if(*(ptr+j)> *(ptr+j+1))
{
/* k=*(ptr+j); //写值交换,程序没问题
*(ptr+j)=*(ptr+j+1);
*(ptr+j+1)=k;
*/
ptr2=(ptr+j); //内存地址交换就出错了。
(ptr+j)=(ptr+j+1);
(ptr+j+1)=ptr2;
}
}
}
printf( "排序后的顺序\n ");
for (i=0;i <num;i++)
{
printf( "数组值为:%d\n ",*(ptr+i));//显示存入数组的值
}
free(ptr);//释放动态分配内存
system( "PAUSE ");
return 0;
}
希望谁能帮我解答写,谢谢。

[解决办法]
第一个可以用GetTickCount返回毫秒级的时间
[解决办法]
计算时间可以用clock

#include <cstdlib>
#include <cstdio>
#include <time.h>

int main()
{
clock_t start = clock();
system( "PAUSE ");
printf( "Time elapsed: %f\n ", ((double)clock() - start) / CLOCKS_PER_SEC);
}
[解决办法]
DWORD time1 = GetTickCount();
---
your code here
---


DWORD time2 = GetTickCount();

cout < < (time2 - time1) < < endl

读书人网 >C语言

热点推荐