编写两个函数lrmove、rrmove分别实现左、右循环移位。函数的原型为:
int lrmove(int value, int n)
int rrmove(int value, int n)
其中value为循环移位的数,n为位移的次数。左(右)循环移位是指从左(右)边移出的数位移入到右(左)边空出的数位上。
#include <stdio.h>
int main()
{
int irmove(int value,int n);
int rrmove(int value,int n);
int value,n;
printf("输入数字和移位数:");
scanf("%d%d",&value,&n);
if(value==0)
printf("左移后:0\n右移后:0");
else
printf("左移后:%d\n右移后:%d",irmove(value,n),rrmove(value,n));
return 0;
}
int irmove(int value,int n)
{
int i=1,number=1,num;
num=value;
while(num!=0)
{
num=num/10;
number=number*10;
}
number=number/10;
while(i<=n)
{
value=(value%10)*number+value/10;
i++;
}
return value;
}
int rrmove(int value,int n)
{
int i=1,number=1,num;
num=value;
while(num!=0)
{
num=num/10;
number=number*10;
}
number=number/10;
while(i<=n)
{
value=(value%number)*10+value/number;
i++;
}
return value;
}