C语言问题求解答!!!!

编写十进制数到二进制、八进制、十六进制间的转换程序。要求:键盘输入一个十进制的数,输出其对应的二进制、八进制、十六进制数。小数部分可以只输出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");
}