迴圈處理:
其中的x是為p進製的數字,如二進位制10001之類的,product我暫時理解為權重,y為最終十進位制結果;
while的每一輪取出x的最後一位數字乘上權重,然後加到y上,然後x自除10,product權重增加,這樣下一輪x%10又可以取到x當前的最後一位;
int y =
0,product =1;
while
(x !=0)
原來是除基取餘法,如將十進位制11轉換為二進位制
11/2 = 5…1
5/2=2…1
2/2 = 1…0
1/2 =0…1
最後的結構由餘數從下往上取,1011
**:
int z[40]
,num =0;
dowhile
(y!=0)
;
這樣二進位制的結果為z[num-1]到z[0],為什麼不用while的原因是因為如果傳入的y如果為0,結果自然也要列印出來0,但如果用while迴圈的條件為y!=0,這樣迴圈根本就進不去,所以首先要先進去一輪,這樣z[0]就為0了,符合要求。
輸入兩個非負 10 進製整數 a 和 b (≤230−1),輸出 a+b 的 d (1輸入在一行中依次給出 3 個整數 a、b 和 d。
輸出 a+b 的 d 進製數。
123 456 8
#include
using
namespace std;
intmain()
, num =0;
//問題是要將十進位制轉換為二進位制,需要用到除基取餘法
//除基取餘是要用do while來實行,還需要乙個陣列來儲存結果
dowhile
(i !=0)
;for
(int j = num -
1; j >=
0; j--
)return0;
}
PATB 1022。 d進製的a b
1022 d進製的a b 20 分 輸入兩個非負 10 進製整數 a 和 b 2 30 1 輸出 a b 的 d 1輸入格式 輸入在一行中依次給出 3 個整數 a b 和 d。輸出格式 輸出 a b 的 d 進製數。輸入樣例 123 456 8 輸出樣例 1103 分析 這個題進製轉換最後得數巨大,...
PAT B1022 D進製的A B
輸入兩個非負 10 進製整數 a 和 b 2 30 1 輸出 a b 的 d 1輸入在一行中依次給出 3 個整數 a b 和 d。輸出 a b 的 d 進製數。123 456 81103 includeint res 32 int main while sum 0 for int j i 1 j 0...
PAT B1022 D進製的A B (C語言)
有乙個測試點要31數字 careful int arr d max d進製數用數組裝 intget arr d void print d int i 讀入a和b,並計算d intget arr d 輸出d 長度截止到陣列下表i void print d int i intmain 或許別人都比我懂得...