1282 - C语言12.4
时间限制 : 1 秒
内存限制 : 32 MB
编写一个函数,对一个32位的二进制数取出它左边数的奇数位(即从左边起的第1、3、5、…、31位),即取出的这些位保留原值,其余位为0。
请务必注意本题中的整数是32位无符号整数,输入和输出时可以使用%u进行处理。
题目输入
一个32位无符号整数。
题目输出
取出左数奇数位的函数返回结果。
请注意行尾输出换行。
输入/输出样例
输入格式
63
输出格式
42
C语言解答
#include <stdio.h> int main(){ int i; unsigned int n,tmp; while (scanf("%u",&n)==1) { tmp=1; i=15; while (i--) { n&=~tmp; tmp<<=2; } printf("%u\n",n); } return 0; }
C++解答
#include <stdio.h> int main() { unsigned int odd(unsigned int); unsigned int a; scanf("%u", &a); printf("%u\n", odd(a)); return 0; } unsigned int odd(unsigned int a) { int i; unsigned int result = 0; for (i = 1;i <= 32;i += 2) result = result | (a & (1 << (32 - i))); return result; }