蓝桥杯 n进制小数
n進制小數(shù)
將任意十進制正小數(shù)分別轉(zhuǎn)換成2,3,4,5,6,7,8,9進制正小數(shù),小數(shù)點后保留8位,并輸出。例如:若十進制小數(shù)為0.795,則輸出:
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?2?進制數(shù)為:?0.11001011
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?3?進制數(shù)為:?0.21011011
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?4?進制數(shù)為:?0.30232011
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?5?進制數(shù)為:?0.34414141
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?6?進制數(shù)為:?0.44341530
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?7?進制數(shù)為:?0.53645364
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?8?進制數(shù)為:?0.62702436
十進制正小數(shù)?0.795000?轉(zhuǎn)換成?9?進制數(shù)為:?0.71348853
以下代碼提供了這個功能。其中,dTestNo表示待轉(zhuǎn)的十進制小數(shù)。iBase表示進制數(shù)。請?zhí)顚懭笔У牟糠帧?/span>
void?fun(double?dTestNo,?int?iBase)
{
int?iT[8];
int?iNo;
?
printf("十進制正小數(shù)?%f?轉(zhuǎn)換成?%d?進制數(shù)為:?",dTestNo,?iBase);
?
for(iNo=0;iNo<8;iNo++)
{
dTestNo?*=?iBase;
iT[iNo]?=?________________;
if(___________________)?dTestNo?-=?iT[iNo];
}
?
printf("0.");
for(iNo=0;?iNo<8;?iNo++)?printf("%d",?iT[iNo]);
printf("\n");
}
?
void?main?(?)
{
double?dTestNo=?0.795;
int?iBase;
?
for(iBase=2;iBase<=9;iBase++)
fun(dTestNo,iBase);
printf("\n");
}
代碼:
#include<iostream> #include<cstring> #include<cmath> using namespace std; void fun(double dTestNo,int iBase) {int iT[8];int iNo;printf("十進制正小數(shù) %f 轉(zhuǎn)換成 %d 進制為:",dTestNo,iBase);for(iNo=0;iNo<8;iNo++){dTestNo *=iBase;iT[iNo]=floor(dTestNo); //cmath中的向下取整函數(shù)floor(),向上取整為ceil()if(iT[iNo]<iBase){dTestNo-=iT[iNo];}}printf("0.");for(iNo=0;iNo<8;iNo++){printf("%d",iT[iNo]);}printf("\n"); }void main() {double dTestNo=0.795;int iBase;for(iBase=2;iBase<=9;iBase++){fun(dTestNo,iBase);}printf("\n"); }
總結(jié)
                            
                        - 上一篇: STL_queue
 - 下一篇: 如何将二维数组作为函数的参数传递