您的位置:首页 > 其它

简单是王道《二、用组件化重构系统的思考》

2008-09-23 11:00 148 查看
代码如下:

#include<stdio.h>
#include<stdlib.h>

int main()
{
int num, count, i, a[32];
count = 0; i = 0;
scanf("%d", &num);
while (num)
{
a[i] = num % 2;
num = num / 2;
count++;
i++;
}
printf("count=%d\n", count);/*输出位数的总数*/
for (i -= 1; i >= 0; i--)
{
printf("%d", a[i]);
}
printf("\n奇数位为:");
for (i = 0; i<count; i += 2)/*数组从a[0]开始的,故i<count*/
{
printf("%d ", a[i]);
}
printf("\n偶数位为:");
for (i = 1; i <= count; i += 2)
{
printf("%d ", a[i]);
}
system("pause");
return 0;
}
上述方法只适合正数。
对此方法进行改进,通过移位法可以依次输出二进制序列。
代码如下:
#include<stdio.h>
#include<stdlib.h>

int main()
{
int num,i,j,m,a[16],b[16];
scanf("%d",&num);
m=sizeof(a)/sizeof(a[0]);
for(i=0,j=0;j<32;i++,j+=2)
{
a[m-1-i]=(num>>j)&1;/*num向右移动j位,数组a被倒序输入,数组a为偶数位*/
}
printf("奇数位为:");
for(i=0;i<m;i++)
{
printf("%d ",a[i]);
}
for(i=0,j=1;j<32;i++,j+=2)
{
b[m-1-i]=(num>>j)&1;/*num向右移动j位,数组b被倒序输入,数组b为奇数位*/
}
printf("\n偶数位为:");
for(i=0;i<m;i++)
{
printf("%d ",b[i]);
}
printf("\n二进制序列为:");
for(i=0;i<m;i++)
{
printf("%d%d",b[i],a[i]);
}
system("pause");
return 0;
}
本文出自 “Scen” 博客,请务必保留此出处http://10741357.blog.51cto.com/10731357/1701379
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: