一、打印整数32位二进制的奇数位和偶数位二、代码#define_CRT_SECURE_NO_WARNINGS#includestdio.h// 打印整数32位二进制的奇数位和偶数位// 规则位编号从 低位(0) ~ 高位(31)// 偶数位0、2、4、6 ... 30 位// 奇数位1、3、5、7 ... 31 位//-------------------------------------------// 方法1双循环分别打印逻辑简单//-------------------------------------------voidprint1(intnum){inti0;// 打印偶数位0、2、4、6 ... 30printf(方法1-偶数位(0、2、4...30位)为);for(i0;i32;i2)// 每次2只遍历偶数位{// 取出第 i 位打印printf(%d ,(numi)1);}printf(\n);// 打印奇数位1、3、5、7 ... 31printf(方法1-奇数位(1、3、5...31位)为);for(i1;i32;i2)// 每次2只遍历奇数位{printf(%d ,(numi)1);}printf(\n);}//-------------------------------------------// 方法2单循环实现更高效写法//-------------------------------------------voidprint2(intnum){// 定义两个数组分别存储 偶数位、奇数位inteven[16]{0};// 偶数位共16位intodd[16]{0};// 奇数位共16位inti0;inte0,o0;// 数组下标// 只用 1 个循环遍历 32 位for(i0;i32;i){// 取出第 i 位的值0 或 1intbit(numi)1;// 判断当前位是偶数位还是奇数位if(i%20){even[e]bit;// 偶数位存入 even 数组}else{odd[o]bit;// 奇数位存入 odd 数组}}// 打印偶数位结果printf(方法2-偶数位(0、2、4...30位)为);for(i0;i16;i){printf(%d ,even[i]);}printf(\n);// 打印奇数位结果printf(方法2-奇数位(1、3、5...31位)为);for(i0;i16;i){printf(%d ,odd[i]);}printf(\n);}//-------------------------------------------// 主函数//-------------------------------------------intmain(){intnum;// 提示输入整数printf(请输入一个整数\n);scanf(%d,num);// 调用方法1双循环打印print1(num);printf(\n);// 调用方法2单循环打印print2(num);return0;}三、运行结果