C语言巩固自用篇(三)

       对一种十进制转十六进制的方案的代码方案进行了改进,是巩固对十六进制ACII码的认识和应用,以下内容尚有一定的缺陷,比如对于负数的16进制数并未进行编写。

// ————————————————
// 版权声明:本文为CSDN博主「freedom1013」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
// 原文链接:https://blog.csdn.net/freedom1013/article/details/1319413

/*
**DESCRIPTION:convert deciaml to hex
**Author:liy
**DATE:8-12-2006
*/

/*
**Author:xwj
**本人在原来的函数基础上加以改进,使其输出更符合人的习惯,更改部分内容使其逻辑更为合理
**date:2023/9/17
*/

#include <stdio.h>
#include <math.h>

void dec2hex(int );

int main(){
     int num;

    printf("Input a decimal number:");
    scanf("%d",&num);

    if(num<0) puts("error"); 
        else dec2hex(num);
        system("pause");
        
}
/*
**data: dec //10进制数
**function:10进制转16进制
**examples: dec2hex(num); num为使用者自行定义的键入数字,
*/
void dec2hex(int dec){
    int n, i,j;
    int len = 0;
    char str[20];
    int temp_dec = dec;

    if(temp_dec >=16){

            while(temp_dec != 0){
                temp_dec /= 16;
                len++;
            }
            i = len - 1;

            while(dec != 0){
                n = dec % 16;
                dec /= 16;
                if(n < 10){
                    str[i--] = n + '0';
                }
                else{
                    str[i--] = (n - 10) + 'a';
                }
            }  

        printf("The number HEX is :");
        fputs("0x",stdout);
        puts(str);
    }
    else if (temp_dec==0)
    {
        puts("The number HEX is : 0");
    }

    else
    {
            while(temp_dec != 0){
                temp_dec /= 16;
                len++;
            }
            i = len - 1;

            while(dec != 0){
                n = dec % 16;
                dec /= 16;
                if(n < 10){
                    str[i--] = n + '0';
                }
                else{
                    str[i--] = (n - 10) + 'a';
                }
            }  

        printf("The number HEX is :");
        fputs("0x0",stdout);
        puts(str);

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值