Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51351
  • 博文数量: 10
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-30 10:39
文章分类

全部博文(10)

文章存档

2007年(10)

我的朋友

分类: C/C++

2007-04-30 13:03:35

#include
#include
#include

main()
{
 clock_t start, end;
 double duration;
 start = clock();//记录此时的时间,单位为微秒
 int  ival, n = 0;
 char bin[32];
 scanf("%d", &ival);
 while(ival >0) {
  bin[n++] = ival & 0x01; 
  ival >>= 1;
 }
 for(n--; n >= 0; n--)
  printf("%d", bin[n]);
 printf("\n");
 end = clock();
 duration = (double)(end-start)/CLOCKS_PER_SEC;
 printf("%lf\n",duration);
 return 0;
}
 
 
程序里添加了时间变量用以比较两个程序的效率差异,bin[n++] = ival & 0x01;可能只有这条要解释一下, 因为当时我也没明白过来。0x01在内存里面是00000001  这个和ival按位与计算把最后一位保存。
他的精简版:
#include
int main()
{ int a,i;
 i=sizeof(int)*8;
 for(scanf("%d",&a);i>0;i--,printf("%d",a>>i&1)); //强
 printf("\n");
}
 下一个:
 
#include
#include
#include
main()
{
 clock_t start, end;
 double duration;
 start = clock();
    int  ival, n = 0;
    char bin[64];
    scanf("%d", &ival);
    while(ival>0)
 {
        bin[n++] = ival % 2;
        ival /= 2;
 
 
    }
    for(n--; n>=0; n--)
        printf("%d", bin[n]);
    printf("\n");
  end = clock();
 duration = (double)(end-start)/CLOCKS_PER_SEC;
 printf("%lf\n",duration);
 return 0;
}
这个大家应该都会明白了,只是一些细节要小心了。
 
阅读(2235) | 评论(0) | 转发(0) |
0

上一篇:大一时的第一个acm程序

下一篇:本blog声明

给主人留下些什么吧!~~