C语言实现十进制转任意进制的代码详解

ConFig. 2024-05-31 15:44:58编程技术
61

主要思路:运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用ASCII码值  数字字符和大写字母 相差55的特性来解决

 int main()
{
	int a[50];//把取模的值放到数组中1
	int i = 0;
	int num,k;
	printf("选择你要转换的进制\n");
	scanf("%d", &k);
	printf("请输入一个数字\n");
	scanf("%d", &num);//输入一个数字
	int prenum = num;
	if (num > 0)
	{
		while (num != 0)
		{
			a[i] = num % k;
			num = num / k;
			i++;
		}
		printf("%d的%d进制为", prenum, k);
		for (i -= 1; i >= 0; i--)//倒序输出数组中的数字
		{
			if (a[i] >= 0 && a[i] <= 9)//如果是正常数字 则输出
				printf("%d", a[i]);
			else//如果是大于9的则用字母ABCDEF来代替
			{
				printf("%c", a[i] + 55);
			}
		}
	}
	else
	{
		printf("%d的%d进制为0", prenum, k);
	}
	return 0;
}
int main()
{
    int i = 0;
    int m, k;
    int a[20];
	printf("请输入要转化的数字:");
	scanf("%d", &m);
	printf("请输入要转化的进制数:");
	scanf("%d", &k);
	if (m > 0)
	{
        for (i = 0; m != 0; i++)//每次取模都放在数组中
        {
            a[i] = m % k;
            m = m / k;
        }
        int j = 0;
        for (j = i - 1; j >= 0; j--)//倒着取数组中的数 
        {
            switch (a[j])//十六进制处理
            {
            case 10:
                printf("A");
                break;
            case 11:
                printf("B");
                break;
            case 12:
                printf("C");
                break;
            case 13:
                printf("D");
                break;
            case 14:
                printf("E");
                break;
            case 15:
                printf("F");
                break;
            default://小于十的数整除输出
                printf("%d", a[j]);
            }
        }
	}
	else
	{
        printf("0\n");
	}
    return 0;
}

拓展:

十进制转换为二进制

运行图:

 源代码:

#include <stdio.h>
/*10进制转换为2进制*/
void conversion(int a)
{
	int chu, yu;
	chu=a/2;
	yu=a%2;
	if(chu==0)
	{
		printf("%d",yu);
	}
    else
    {
    	conversion(chu);
    	printf("%d",yu);
	}
}
int main(void)
{
	int x;
	printf("请输入10进制数:");
	scanf("%d",&x);
	printf("转化后的2进制为:");
	conversion(x);
    return 0;
}

十进制转换为八进制

运行图:

源代码:

#include <stdio.h>
/*10进制转换为8进制*/
void conversion(int a)
{
	int chu, yu;
	chu=a/8;
	yu=a%8;
	if(chu==0)
	{
		printf("%d",yu);
	}
    else
    {
    	conversion(chu);
    	printf("%d",yu);
	}
}
int main(void)
{
	int x;
	printf("请输入10进制数:");
	scanf("%d",&x);
	printf("转化后的8进制为:");
	conversion(x);
    return 0;
}

十进制转换为十六进制

运行图:

源代码:

#include <stdio.h>
/*10进制转换为16进制*/
int sum(unsigned a,char buf[])
{
	int chu, yu;
	chu=a/16;
	yu=a%16;
	if(chu==0)
	{
		printf("%c",buf[yu]);
	}
    else
    {
    	sum(chu,buf);
    	printf("%c",buf[yu]);
	}
}
int main(void)
{
	int a;
	char buf[16]="0123456789ABCDEF";
	printf("请输入10进制数:");
	scanf("%d",&a);
	printf("转化后的16制数为:");
	sum(a,buf);
    return 0;
}

到此这篇关于C语言实现十进制转任意进制的代码详解的文章就介绍到这了,更多相关C语言十进制转任意进制内容请搜索站长工具网以前的文章或继续浏览下面的相关文章希望大家以后多多支持站长工具网!

C语言 十进制
THE END
站地网
别听世俗的耳语,去看自己喜欢的风景!

相关推荐

IP地址转换器:一款实用的IP地址转二进制、十进制及十六进制的在线工具
在网络技术日益发展的今天,IP地址作为网络通信的基础标识,其正确理解和转换对于网络管理员、程序员和网络安全专家至关重要。站长工具网提供的IP地址转换器是一款功能强大的...
2024-12-07 新闻资讯
105

C语言实现MD5加密的实例代码分享
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希算法,常用于数据校验和密码存储等场景。尽管MD5在安全性方面存在一些局限性,但在某些特定的应用场景中,它仍然是一个...
2024-11-20 编程技术
115

十六进制、十进制、八进制、二进制常用进制转换方法
无论是程序员、工程师还是计算机爱好者,掌握十六进制、十进制、八进制和二进制之间的转换方法都是必不可少的。本文将深入探讨这些常用进制的转换方法,帮助读者理解其原理并...
2024-11-18 电脑知识
129

C语言进阶:深度解析 while 循环语句的用法奥秘
在 C 语言中,while 循环语句是一种重要的循环结构,它允许程序员在满足特定条件时重复执行一段代码。深入理解 while 循环语句的工作原理和应用场景对于提高 C 语言编程能力至...
2024-09-29 编程技术
201

C语言实现字母大小写转换的方法及示例代码
在计算机编程中,字符处理是一个常见的任务。特别是在文本处理应用中,字母的大小写转换是非常基础且必要的功能。C语言作为一种广泛使用的编程语言,提供了多种方法来实现字母...
2024-08-30 编程技术
124

C语言求最大公约数的三种不同实现方法
最大公约数是指能够整除给定整数集合中所有整数的最大正整数。本文将介绍并展示如何使用C语言实现求解最大公约数的三种不同方法:辗转相除法、更相减损法以及穷举法。通过这些...
2024-08-06 编程技术
158