随笔 - 47, 文章 - 10, 评论 - 8, 引用 - 0
数据加载中……
找到了,用timeval结构可以,呵呵,count_1的效率大约是count_2的7倍。
Please Input A Number:1024

Start count_1:673480 count_1:50025019 End count_1:673780 Time used:300
Start count_2:673786 count_2:50025019 End count_2:675914 Time used:2128
re: 程序设计试题 编程之道 2006-04-05 16:49
#include
#include
long count_1(long n);
long count_2(long n);
int main(int argc,char *argv[])
{
long n,result_1=0,result_2=0;
while(1)
{
printf("\nPlease Input A Number:");
scanf("%ld",&n);
result_1=count_1(n);
result_2=count_2(n);
printf("\ncount_1:%ld\ncount_2:%ld\n",result_1,result_2);
}
}

long count_1(long n)
{
long i=1;
while(i)
{
if(n>=50025002)
{
n-=5;
i--;
}
else
{
n+=2005;
i++;
}
}
return n;
}

long count_2(long n)
{
long m,tmp;
if(n>=50025002)
m=n-5;
else
{
tmp=count_2(n+2005);
m=count_2(tmp);
}
return m;
}
re: 转换大小写C函数 编程之道 2006-04-04 11:01
大概明白了,写一下
a 0110 0001
A 0100 0001
只有第6位是不一样的,所以,如果想把小写转换成大写,只需要将第6位改成0,也就是-32。这样直接和
1101 1111
进行与操作,这样就保证了其他位不变,将第6位变成了0
同样,如果要将大写转换成小写,需要将第6为改为1。
直接和
0010 0000
进行或运算,就可以完成。
还有一个比较更简单的是直接和
0010 0000
进行异或运算,就ok了
re: 转换大小写C函数 编程之道 2006-04-04 10:31
为什么要和0xDF与?