编写十进制数到二进制、八进制、十六进制间的转换程序。要求:键盘输入一个十进制的数,输出其对应的二进制、八进制、十六进制数。小数部分可以只输出8位以内
http://download.csdn.net/detail/u010642013/5351898
http://blog.csdn.net/jhcconan614/article/details/53376163
如果问题解决,请及时采纳。
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#define MAXSIZE 50
//把N转化为K进制
void toK(float N0, int K){
//计算符号
int sign;
if (N0 > 0)
sign = 1;
else
sign = -1;
float N = N0*sign;
//计算整数部分
int NN = floor(N);
int NNList[MAXSIZE];
int NNsize = 0;
while (true){
if (NN == 0)
break;
int re = NN%K;
NN = NN/K;
NNList[NNsize] = re;
NNsize++;
}
//计算小数部分
float FF = N - floor(N);
int FFList[MAXSIZE];
int FFsize = 0;
while (true){
if (FF == 0 || FFsize == 8)
break;
float multi = FF*K;
int integer_part = floor(multi);//取整数部分
FF = multi - integer_part;
FFList[FFsize] = integer_part;
FFsize++;
}
//输出结果
//符号部分
if (sign > 0)
printf("");
else
printf("-1");
//整数部分
for (int i = NNsize - 1; i >= 0; i--){
int n = NNList[i];
if (n<10)
printf("%d", n);
else
printf("%c", n - 10 + 'a');
}
//小数部分
if (FFsize > 0){
printf(".");
for (int i = 0; i < FFsize; i++){
int n = FFList[i];
if (n<10)
printf("%d", n);
else
printf("%c", n - 10 + 'a');
}
}
printf("\n");
}
int main(){
float N;
scanf("%f", &N);
toK(N, 2);
toK(N, 8);
toK(N, 16);
system("pause");
}