蓝桥杯-基础训练-十进制数转十六进制数(C语言版)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41221623/article/details/79605093

思路:先将输入的十进制数除以16得到商和余数,再将得到的商继续除以16得到商和余数,以此类推直到商为0为止,然后将所得余数顺序存入一个数组,再将这个数组倒序通过switch语句依次转成十六进制数存入一个字符串数组,最后顺序输出即可。

代码如下:

#include <stdio.h>
#include <stdlib.h>

/*
 * 十进制数转换成十六进制数
 * 作者:踏歌行
 * 日期:2018-3-18
**/

int main()
{
    int n;                  //输入的十进制数
    int i;
    int index = 0;          //记录输入的十进制数的长度
    int len = 0;            //记录十六进制数组的长度
    int remainder[200];     //存储余数
    char sixteen[200];      //存储转换后的十六进制数
    scanf("%d",&n);
    if(n == 0)
    {
        remainder[0] = 0;
        index++;
    }
    else
    {
        for(i = 0; n > 0; i++)
        {
            remainder[i] = n % 16;
            n /= 16;
            index++;
        }
    }
    for(i = index - 1; i >= 0; i--)
    {
        switch(remainder[i])
        {
            case 0:
                sixteen[len++] = '0';
            break;
            case 1:
                sixteen[len++] = '1';
                break;
            case 2:
                sixteen[len++] = '2';
                break;
            case 3:
                sixteen[len++] = '3';
                break;
            case 4:
                sixteen[len++] = '4';
                break;
            case 5:
                sixteen[len++] = '5';
                break;
            case 6:
                sixteen[len++] = '6';
                break;
            case 7:
                sixteen[len++] = '7';
                break;
            case 8:
                sixteen[len++] = '8';
                break;
            case 9:
                sixteen[len++] = '9';
                break;
            case 10:
                sixteen[len++] = 'A';
                break;
            case 11:
                sixteen[len++] = 'B';
                break;
            case 12:
                sixteen[len++] = 'C';
                break;
            case 13:
                sixteen[len++] = 'D';
                break;
            case 14:
                sixteen[len++] = 'E';
                break;
            case 15:
                sixteen[len++] = 'F';
                break;
        }
    }
    for(i = 0; i < len; i++)
    {
        printf("%c",sixteen[i]);
    }
    printf("\n");
    return 0;
}




猜你喜欢

转载自blog.csdn.net/qq_41221623/article/details/79605093
今日推荐