1.练习项目:
编写一个函数,实现左右循环移位。函数名为move,调用方法为move(value, n)。其中value为需要循环位移的数,n为位移的位数。n<0表示为左移;n>0表示为右移。例如,n=4表示右移4位;n=-3表示左移3位。
请务必注意本题中的整数是32位无符号整数,输入和输出时可以使用%u进行处理。
2.选择题集
在Dotcpp编程中选择题集《谭浩强C语言课后习题》,选择题号1775并开始练习。
3.开始练习
(1)源码:
#include"stdio.h"
int main()
{
unsigned value,n;
unsigned move(unsigned,unsigned);
scanf("%u %u",&value,&n);
move(value,n);
return 0;
}
unsigned move(unsigned v,unsigned n)
{
unsigned a,b,c;
a=v>>n;
b=v<<(32-n);
c=a|b;
printf("%u",c);
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。
(3)练习心得:由于无符号类型转换,在输入负数n时会转换为(32-n),且循环右移n位=循环左移(32-n)位,故对于无符号整数,其总是能循环右移,无需if语句判断n的正负;注意每段代码末尾的分号是否存在,如不存在则需即使补充;输入法是否切换为英语模式;语法是否错误。