int main(){
long num
int direction,movenum,i=0,save[100]
int left(int move_num){
int m,n,quicksave[move_num]
for(m=i-move_num,n=0m<=im++,n++){
quicksave[n]=save[m]
}
for(m=im>=move_numm--){
save[m]=save[m-move_num]
}
for(m=0m<move_numm++){
save[m]=quicksave[m]
}
return 0
}
int right(int move_num){
int m,n,quicksave[move_num]
for(m=0,n=0m<move_numm++,n++){
quicksave[n]=save[m]
}
for(m=0m<=i-move_numm++){
save[m]=save[m+move_num]
}
for(m=i,n=move_numm>i-move_num-1m--,n--){
save[m]=quicksave[n]
}
return 0
}
scanf("%ld",&num)
while(num){
save[i]=num%10
num/=10
i++
}
printf("左移(0)或右移(1),移动位数:\n")
scanf("%d%d\n",&direction,&movenum)
if(direction) right(movenum)
else left(movenum)
i--
while(i!=-1){
printf("%d",save[i])
i--
}
}
#include <stdio.h>#include <缓芦math.h>
unsigned fun(unsigned num, int n)
{
if(n > 0)
{
//sizeof(unsigned)*8计算变量所占位数,如int型占32位
return (num >> (sizeof(unsigned)*8 - n)) | (num << n) //先高位移动,再低位移动后,两者按位或,相当把低位溢出的又添加到了高位,实现了循环的效果
}
else
{
扰举带 return (num << (sizeof(unsigned)*8 - abs(n))) | (num >>答轮 abs(n))
}
}
void main(void)
{
printf("%u\n", fun(2, -34))
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)