Langzihao.


私信TA

用户名:Langzihao

访问量:15282

签 名:

等  级
排  名 800
经  验 3714
参赛次数 0
文章发表 20
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

#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 人评分

  评论区

  • «
  • »