获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列

比较挫的代码:

#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;

}

猜你喜欢

转载自blog.csdn.net/liuwenjuan_cherry/article/details/79784134