黑马程序员技术交流社区

标题: 求大神分析十进制任意转换(2-16)进制的程序 [打印本页]

作者: 飞翔的猪    时间: 2015-7-25 09:39
标题: 求大神分析十进制任意转换(2-16)进制的程序
#include<stdio.h>
#include<string.h>

int zifuchuan(char s[]);
int main()
{
        int num=0;
        int R=0;
        int RNum[100];
        printf("请出入一个十进制整数:\n");
        scanf("%d",&num);
        printf("请输入转换的进制要求(2-16之间):\n");
        scanf("%d",&R);
        int i=0,b;
        while(num)
        {
                b=num %R;
                        switch(b)
                        {
                                case 10:
                                        RNum[i++] = 'A';
                                        break;
                                case 11:
                                        RNum[i++] = 'B';
                                        break;
                                case 12:
                                        RNum[i++] = 'C';
                                        break;
                                case 13:
                                        RNum[i++] = 'D';
                                        break;
                                case 14:
                                        RNum[i++] = 'E';
                                        break;
                                case 15:
                                        RNum[i++] = 'F';
                                        break;
                                default:
                                    RNum[i++]= num%R+'0';
                                    break;
                        }
                        num=num/R;
         }
        while(i--)
        {
                 if (RNum[i] < 9) {
            printf("%d", RNum[i]);
        }else{
        printf("%c", RNum[i]);
        }
        }
        return 0;
}
其中 RNum[i++]= num%R+'0'; 为什么要加上‘0’,一直搞不明白,加上‘0’了转换十六进制就没有错误,否则出错,求前辈指导,谢谢!!
作者: 丁铭检    时间: 2015-7-25 10:00
感觉直接把RNum直接改成char型的可能就没那么多的纠结了,至于你的问题我也没看懂。。第一感觉他是将0~9转换成字符型的0~9.可以最后输出的却又是整型的输出,所以感到很纠结。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2