C语言程序设计——编程序实现循环移位、、

C语言程序设计——编程序实现循环移位、、,第1张

使用编译器为gcc-3.4.5,测试通过:

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))

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12522099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存