//實現無符號循環右移;#include <stdio.h>unsigned int rotate_right(unsigned int x,int num);int main(void){unsigned int x;unsigned int num;char string[40];printf("輸入操作數和右移次數:");while(scanf("%d%d",&x,&num)==2){printf("\n數 %u 右移 %u 位的結果是: ",x,num);x=rotate_right(x,num);itoa(x,string,2);printf("%s\n",string);printf("輸入操作數和右移次數:");}return 0;}unsigned int rotate_right(unsigned int x,int num){ int i;for(i=0;i<num;i++){if((x&1)==1){x=x>>1;x=x|(1<<31);}else{x=x>>1;x=x&(~(1<<31));}}return x;}
2 回答

largeQ
TA貢獻2039條經驗 獲得超8個贊
#include <string>
#include <iostream>
using namespace std;
string foo(int n)
{
string str;
for(unsigned i=0; i<32; ++i)
{
str.insert(str.begin(),'0'+(n&1));
n >>= 1;
}
return str;
}
void main(void)
{
cout<<foo(567)<<endl;
}

LEATH
TA貢獻1936條經驗 獲得超7個贊
1.在這里,return 0;的作用僅僅是表示mian()函數運行結束。作用是不執行后面的的system("pause"); 語句.
2.函數itoa求出的只是該二進制數對應的“字符串”是char類型,不是int類型的數據。這里只是看個結果,所以,用字符串足已。
請看:
printf("%s\n","10101011");
printf("%d\n",10101011);
二者輸出結果完全一樣!
如果你想存在int類型數據中,簡單的很,前面再加atoi()函數即可。
請看:
int num = atoi( itoa(num, str, 2) );
printf("%d\n",num);
3.:%s是是輸出字符串的格式控制符,%c是輸出單個字符的格式控制符。
添加回答
舉報
0/150
提交
取消