係統粉 > 電腦問答 > 其他問答

已解決幫幫我看一個C的問題。

提問者:love赤堤桃子  |  瀏覽次  |  提問時間:2017-02-08  |  回答數量:3

牋牋編程實現輸入一個8位的二進製數,將其轉換為十進製數輸出。將二進製轉換為十進製,隻要將二進製數的每一位乘以該位的權然後相加。例如:000011012 = 0(27) + 0(26) + 0(25) + 0(24) + 1(23) + 1(22) + 0(21) + 1(20)= 1310 要求定義一個求x的n次方的函數power。(注:不能調用係統函數,而是自己實現)。在主函數中輸入二進製數(如:000011012),調用自定義的power函數實現轉換,並輸出結果。幫幫忙

已有3條答案
天天無限吧務組

天天無限吧務組

回答數:68  |  被采納數:106

二進製轉10進製不需要power#include "string.h"#include "stdio.h"void main(){ char str[]="10101110"; int value=0; int len=strlen(str); for(int i=len-1;i>=0;i--) { value|=((str[i]-&#39;0&#39;)<<(len-1-i)); } printf("%d",value);}複製代碼要power也可以int power(int n){return 1<<n;}void main(){char str[]="10101110";int value=0;int len=strlen(str);for(int i=len-1;i>=0;i--){if(str[i]-&#39;0&#39;){ value+=power(len-1-i);}}printf("%d",value);}複製代碼
2017-02-08 09:21:42
讚 6
槿年nnnn

槿年nnnn

回答數:207  |  被采納數:16

55 (1) 還有其他更簡單的麼。。看不懂上麵的程序。。指針沒學到
2017-02-08 14:32:19
讚 20
櫻yig

櫻yig

回答數:154  |  被采納數:95

2的N次方也就是1<<N,str[ i]-&#39;0&#39;可以把字符轉成int類型的0或1,所以0(27) + 0(26) + 0(25) + 0(24) + 1(23) + 1(22) + 0(21) + 1(20)=0+0+0+0+1<<23+1<<22+0+1<<20
2017-02-08 12:15:43
讚 15
相關問答
最新其他問答
解決方法