#include<stdio.h>

#define N 64


int move(int a,int n){

int b[N];

int i;

if(n<0) n+=32;

for(i=0;a!=0 && i<N;i++){

 b[i]=a%2;

 a/=2;

}

int len=32;

for(;i<32;i++){

b[i]=0;

}

for(i=0;i<n;i++){

b[len+i]=b[i];

}

for(i=n;i<len;i++){

b[i-n]=b[i];

}

for(i=len;i<len+n;i++){

b[i-n]=b[i];

}

int result=0,c;

int j;

for(i=0;i<len;i++){

for(j=0;j<i;j++){

b[i]*=2;

}

result+=b[i];

}

return result;

int main()

{

int a=128,n=-3;

scanf("%d %d",&a,&n);

printf("%u\n",move(a,n));

return 0;

}


此题跟http://www.dotcpp.com/oj/problem1773.html,问题 1773: C语言程序设计教程(第三版)课后习题12.2相似,只需引入当n<0时,领n=n+32即可(向左n即为向右32-n位)

 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区