进制转换器的c代码实现

本文分享了一段使用C语言编写的进制转换器代码,该代码运用了数据结构和递归,将各种进制转换为10进制再转换回目标进制。关键步骤在源代码中进行了详细标注,包括顺序表的初始化、插入和打印等操作。
摘要由CSDN通过智能技术生成

1.很久没有更新博客了 这次想要记录分享一下在这段学习过程中实现的进制转换器
c语言代码 里面运用到了一些数据结构和递归的相关知识 也算是一个简单的综合运用吧
2.核心思想是将一切进制转换为10进制 再由十进制转换为其他进制数据
3.思路和关键步骤的含义再源代码中标注的很详细 这里不再过述 代码如下:

Test.c

#include"SeqList.h"

void menu(){
	printf("*****************************\n");
	printf("******1.输入目标数字的位数***\n");
	printf("******2.输入目标数字*********\n");
	printf("******3.该目标数字的进制*****\n");
	printf("******4.输入需要转换的进制***\n");
	printf("******5.开始转换*************\n");
	printf("******6.转换其他数字*********\n");
	printf("******0.退出*****************\n");
	printf("===========================================\n");
	printf("\n");

}

int main(){
	int input = 0;//控制菜单选项
	int bits = 0; //目标数字的位数
	SeqList Num ; //存储目标数字
	int Num_10 = 0; //存放目标数字转化为的十进制数
	int System = 0; //目标数字的进制
	int SystemNum = 0; //目的进制
	SeqList AimNum; //存放目的数字
	int i = 0; //控制循环
	char tmp = '0'; //临时保存输入数字的每一位数字 使其入顺序表
	SeqListInit(&Num);
	SeqListInit(&AimNum);
	do{
		menu();
		scanf("%d", &input);
		switch (input)
		{
		case 1: //输入目标数字的位数
			printf("请输入目标数字位数吧:");
			scanf("%d", &bits);
			break;
		case 2:  //输入目标数字
			printf("请输入目标数字吧:");//尾插进顺序表 因为输入数字的习惯是从最高开始输入 
			for (i = 0; i < bits+1; i++){
				scanf("%c", &tmp);
				SeqListPushBack(&Num, tmp);
			}
			SeqListPrint(&Num);
			break;
		case 3:  //输入目标数字的进制
			printf("请输入目标数字的进制吧:");
			scanf("%d", &am
### 回答1: 我可以提供一个简单的c语言代码实现进制转换: #include <stdio.h> int main() { int num, rem, base, digits = 0; printf("Enter number and base: "); scanf("%d %d", &num, &base); int convert[100]; /* * Convert the number from base 'num' * to base 'base' */ while (num > 0) { rem = num % base; convert[digits++] = rem; num /= base; } // Printing result for (int i = digits - 1; i >= 0; i--) printf("%d", convert[i]); return 0; } ### 回答2: 进制转换是一种程序,可以将数值从一种进制转换为另一种进制。使用C语言编写一个简单的进制转换,可以实现从十进制到二进制、八进制或十六进制的转换。 首先,我们需要一个函数来实现十进制数转换为二进制、八进制或十六进制的功能。下面是一个示例函数: ```c #include <stdio.h> // 将十进制数转换为二进制 void decimalToBinary(int decimal) { int binary[32]; int i = 0; while (decimal > 0) { binary[i] = decimal % 2; decimal = decimal / 2; i++; } printf("二进制数为: "); for (int j = i - 1; j >= 0; j--) { printf("%d", binary[j]); } printf("\n"); } // 将十进制数转换为八进制 void decimalToOctal(int decimal) { int octal[100]; int i = 0; while (decimal > 0) { octal[i] = decimal % 8; decimal = decimal / 8; i++; } printf("八进制数为: "); for (int j = i - 1; j >= 0; j--) { printf("%d", octal[j]); } printf("\n"); } // 将十进制数转换为十六进制 void decimalToHexadecimal(int decimal) { char hexadecimal[100]; int i = 0; while (decimal > 0) { int remainder = decimal % 16; if (remainder < 10) { hexadecimal[i] = remainder + 48; } else { hexadecimal[i] = remainder + 55; } decimal = decimal / 16; i++; } printf("十六进制数为: "); for (int j = i - 1; j >= 0; j--) { printf("%c", hexadecimal[j]); } printf("\n"); } int main() { int decimal; printf("请输入一个十进制数: "); scanf("%d", &decimal); decimalToBinary(decimal); decimalToOctal(decimal); decimalToHexadecimal(decimal); return 0; } ``` 这段代码中,首先定义了三个不同进制的转换函数:`decimalToBinary()`、`decimalToOctal()`和`decimalToHexadecimal()`。然后在`main()`函数中,用户被要求输入一个十进制数。接下来,程序将调用这三个函数,并将转换后的结果打印出来。 你可以根据自己的需要来进行进制转换。这只是一个简单的示例程序,可以作为你编写进制转换的起点。 ### 回答3: 进制转换一个可以将一个数值从一种进制转换成另一种进制的工具。以下是用C语言编写一个简单的进制转换的示例代码: ```c #include <stdio.h> // 函数原型声明 void convertToDecimal(int number, int base); void convertFromDecimal(int number, int base); int main() { int number, base; // 输入待转换的数值和进制 printf("请输入一个整数:"); scanf("%d", &number); printf("请输入要转换的进制(2-16):"); scanf("%d", &base); // 判断转换方向并调用相应的函数 if (base == 10) { convertFromDecimal(number, 2); } else { convertToDecimal(number, base); } return 0; } // 将一个数值从十进制转换为其他进制 // 递归调用 void convertFromDecimal(int number, int base) { if (number > 0) { convertFromDecimal(number / base, base); int remainder = number % base; if (remainder < 10) { printf("%d", remainder); } else { printf("%c", 'A' + remainder - 10); } } } // 将一个数值从其他进制转换为十进制 void convertToDecimal(int number, int base) { int decimal = 0; int multiplier = 1; while (number > 0) { int digit = number % 10; decimal += digit * multiplier; multiplier *= base; number /= 10; } printf("%d\n", decimal); } ``` 这个进制转换可以将给定的整数从十进制转换为其他进制,或者从其他进制转换为十进制。用户需要输入要转换的整数和目标进制。对于从十进制转换为其他进制,使用`convertFromDecimal`函数进行递归转换并输出结果;对于从其他进制转换为十进制,使用`convertToDecimal`函数进行迭代转换并输出结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值