A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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’了转换十六进制就没有错误,否则出错,求前辈指导,谢谢!!

1 个回复

倒序浏览
感觉直接把RNum直接改成char型的可能就没那么多的纠结了,至于你的问题我也没看懂。。第一感觉他是将0~9转换成字符型的0~9.可以最后输出的却又是整型的输出,所以感到很纠结。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马