將任意十進制正小數分別轉換成2,3,4,5,6,7,8,9進制正小數,小數點後保留8位,並輸出。例如:若十進制小數爲0.795,則輸出:web
十進制正小數 0.795000 轉換成 2 進制數爲: 0.11001011 十進制正小數 0.795000 轉換成 3 進制數爲: 0.21011011 十進制正小數 0.795000 轉換成 4 進制數爲: 0.30232011 十進制正小數 0.795000 轉換成 5 進制數爲: 0.34414141 十進制正小數 0.795000 轉換成 6 進制數爲: 0.44341530 十進制正小數 0.795000 轉換成 7 進制數爲: 0.53645364 十進制正小數 0.795000 轉換成 8 進制數爲: 0.62702436 十進制正小數 0.795000 轉換成 9 進制數爲: 0.71348853
如下代碼提供了這個功能。其中,dTestNo表示待轉的十進制小數。iBase表示進制數。請填寫缺失的部分。svg
把填空的答案(僅填空處的答案,不包括題面)存入考生文件夾下對應題號的「解答.txt」中便可。code
#include<stdio.h> void fun(double dTestNo, int iBase) { int iT[8]; int iNo; printf("十進制正小數 %f 轉換成 %d 進制數爲: ",dTestNo, iBase); for(iNo=0;iNo<8;iNo++) { dTestNo *= iBase; iT[iNo] =(int)dTestNo; if(dTestNo>=1.0) dTestNo -= iT[iNo]; } printf("0."); for(iNo=0; iNo<8; iNo++) printf("%d", iT[iNo]); printf("\n"); } int main () { double dTestNo= 0.795; int iBase; for(iBase=2;iBase<=9;iBase++) fun(dTestNo,iBase); printf("\n"); }
小數進制的轉換思路:把小數乘以進制數取整,循環此過程直到小數部分爲零,小數點後保留幾位就循環幾回。xml
//把小數強制轉換成整數,須要考慮double的範圍! double a; int b; b=(int)a;