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

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

主要思路:运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用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
站地网
别听世俗的耳语,去看自己喜欢的风景!

相关推荐

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

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

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

C++首度超越C语言,荣登TIOBE编程语言排行榜亚军宝座
2024年6月,全球编程语言社区迎来了一个历史性时刻。根据TIOBE编程社区指数的最新数据,C++语言在受欢迎程度上首次超越了C语言,以10.03%的占比位居排行榜第二,而C语言则以9...
2024-06-11 新闻资讯
85

C#实现十进制数转换为十六进制的几种方式
在C#中,十进制和十六进制转换非常简单,本文给大家介绍了C#实现十进制数转换为十六进制的几种方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可...
2024-04-19 编程技术
53

几款适合C语言编程软件归总
C语言编程软件适于编写系统软件,是学习编程的同学们的必备软件。c语言一种应用非常广泛的编程语言,不仅仅是在软件开发上,而且各类科研都会用到c语言。今天小编给大家汇总下...
2023-11-03 新闻资讯
52