基礎測試程式設計題:
程式設計實現將任意的十進位制整數轉換成任意r進製數(r在2-16之間)
/*
程式設計實現將任意的十進位制整數轉換成任意r進製數(r在2-16之間)
*/#include #include #define max 1000
int main();//字元表
char ans[max];
printf("請輸入需要轉化成的進製數:");
scanf("%d", &r);
printf("請輸入需要轉化的十進位制數:");
scanf("%d", &num);
while (num)
ans[count] = '\0';//為得到的答案串新增字串結束符,避免錯誤。
len = strlen(ans);
for (i = 0; i < len; i++)
printf("\n");
return 0;
}
要做這道題,我們首先應該明白進製轉換到底是怎麼乙個過程。這裡主要講的是將10進製的數轉化為其他進製的數。
將其他進製的數轉化為10進製十分簡單(數字系統決定的)。比如我要將6進製的(12345)數轉化為10進製,只需要根據定義,得5+4*6+3*6^2+2*6^3+1*6^4=1865.那反向的運算我們應該怎麼去做的。還是得從這個式子中尋找線索。
我們發現,對於n進製的(abcde),都有10進製為e+d*n+c*n^2+b*n^3+a*n^4,從這個式子來看,其除以n的餘數即位n進製中的個位數。商為d+c*n+b*n^2+a*n^3,再除以n,餘數是十位數,以此類推。
於是我就搞了上面這個演算法。其中ch是字元表,題目要求最多為16進製制,所以為16個,20進製的話就要加20個。while迴圈內部本身就是在做我上述描述的演算法,其他部分就都很好理解了。
進製轉換演算法
寫乙個函式char fun int value,int radix 輸入為乙個整數和乙個代表進製的整數,如71,7。71表示要轉化的數,7代表要轉化成7進製數。輸出乙個字串指標,字串為整數value轉化為radix進製後的數字序列。小於10進製數用0 9表示,10進製 35進製用a z表示。例如71...
進製轉換演算法
int num 745 需要轉換的數 string value num int temp 0 while value.length 0 system.out.println temp m 10演算法是比較簡單的,轉成字串之後,依次取出每個字元,乘以相對應的權重再求和即可。int num 485 需要...
進製轉換 演算法筆記
進製轉換步驟 將p進製轉換為q進製,需要分為兩步 int y 0,product 1 p進製x轉化為10進製的y while x 0 十進位制y轉化為q進製z int z 40 num 0 陣列z存放q的進製數y的每一位,num為位數 dowhile y 0 這樣陣列從高位z num 1 到低位nu...