比较挫的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 1;
int j = 0;
int num = 0;
int arr[32] = { 0 };
int count = 0;
scanf("%d", &num);
while(num)
{
arr[i]= num % 2;
num =num / 2;
i++;
count++;
}
printf("该整数的二进制序列为:\n");
for(i = 31; i >= 0; i--)
{
printf("%d", arr[i]);
}
printf("\n");
if(count % 2 == 0)
{
printf("该整数的偶数二进制序列为:\n");
for(i = count; i >= 2; i = i - 2)
{
printf("%d", arr[i]);
}
printf("\n");
printf("该整数的奇数二进制序列为:\n");
for(i = count - 1; i >= 1; i = i - 2)
{
printf("%d", arr[i]);
}
}
else
{
printf("该整数的偶数二进制序列为:\n");
for(i = count - 1; i >= 2; i = i - 2)
{
printf("%d", arr[i]);
}
printf("\n");
printf("该整数的奇数二进制序列为:\n");
for(i = count; i >= 1; i = i - 2)
{
printf("%d", arr[i]);
}
}
system("pause");
return 0;
}
优化过后的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i = 0;
int num = 0;
int count = 0;
scanf("%d", &num);
for(i = 31; i >= 1; i -= 2)
{
printf("%d ", (num>>i)&1);
}
printf("\n");
for(i=30;i>=0; i-=2)
{
printf("%d ", (num>>i)&1);
}
printf("\n");
system("pause");
return0;
}
本文对比了两种C语言程序实现方法,一种是通过数组存储并打印整数的二进制表示及其奇偶序列,另一种则利用位运算优化了打印过程,直接输出二进制的奇数位和偶数位序列。
550

被折叠的 条评论
为什么被折叠?



