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

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

主要思路:运用一个数组,通过数字每次取任意进制模,存在数组中, 再通过倒取数组中的数值,来实现进制转换,如果遇到十六进制,利用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语言运算符优先级顺序表详解(从高到低)
在C语言中,运算符优先级决定了表达式中运算的执行顺序。理解优先级规则是编写正确代码的基础,尤其在处理复杂表达式时,优先级错误可能导致逻辑混乱或隐蔽的Bug。本文ZHANID...
2025-06-12 编程技术
306

C语言字符串操作函数使用方法及示例代码详解
在C语言中,字符串以字符数组形式存在,以\0(空字符)结尾。标准库<string.h>提供了丰富的字符串操作函数,掌握这些函数是C语言编程的基础。本文ZHANID工具网将详细讲解常用...
2025-06-12 编程技术
266

C语言实现猜拳游戏实例代码详解(人机对战)
本文ZHANID工具网将通过一个完整的猜拳游戏项目,详细讲解C语言核心语法在实际开发中的应用。游戏包含玩家VS电脑对战、胜负判断、循环匹配等功能,适合C语言初学者学习基础逻...
2025-06-04 编程技术
255

C语言中%d、%f、%p、%c、%s、%的作用及区别详解
在C语言中,格式说明符是printf、scanf等输入输出函数的核心组成部分,它们决定了数据如何被解析和呈现。本文ZHANID工具网将详细解析常见格式说明符的作用、使用场景及注意事...
2025-04-28 编程技术
676

C语言中实现小写字母转大写字母的方法详解
在C语言编程中,经常需要对字符进行大小写转换。特别是在处理文本数据时,将小写字母转换为大写字母是一个常见的需求。本文将详细介绍如何在C语言中实现小写字母到大写字母的...
2025-04-25 编程技术
373

C语言编译器哪个好:8款常用的C语言编辑器对比测评
C语言以其高效、灵活和接近硬件的特性,成为众多开发者心中的经典。然而,要想在C语言的编程道路上顺畅前行,一款合适的编译器或集成开发环境(IDE)是必不可少的工具。本文ZHA...
2025-01-08 编程技术
2092