進製轉換記錄,PAT B1022 D進製的A B

2021-10-20 15:14:51 字數 1004 閱讀 2175

迴圈處理:

其中的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 (≤2​30​​−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 或許別人都比我懂得...