进制转换伪代码和代码

进制转换伪代码和代码

伪代码的实现

点击查看代码
#include <stdio.h>

int main()
{
	int inputnum,base,quotient = 1,remainder; 
	printf("请输入一个数,并输入目标进制:");
	scanf("%d,%d",&inputnum,&base);
	while(quotient != 0)
	{
		quotient = inputnum / base;
		remainder = inputnum % base;
		printf("%d",remainder);
		inputnum = quotient;
	}
	return 0;
}

直接实现伪代码有如下缺点:
1.输出的数字必须从右往左看才是正确结果

2.若进制数大于十,输出结果会有歧义

1000的十六进制表示为3E8,而该算法直接将E直接写成了14

所以需要一个能将原始输出数据倒序输出,并且将大于10的余数显示为字母的代码

C语言代码的实现

点击查看代码
#include <stdio.h>

int main()
{
	int inputnum,outputnum;
	int base,quotient,remainder;
	char remaindernum[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};	//所有可能的商 
    int count = 0;	//count:15-18行执行的次数 
	int remainderarray[100];	//将15-18行输出的所有商组成一个数组 
	printf("请输入一个数字,再输入目标进制:");
	scanf("%d,%d",&inputnum,&base);
	
	while(inputnum >= 1)
	{
		quotient = inputnum / base;
		remainder = inputnum % base;
		remainderarray[count++] = remainder;	//将商写进数组 
		inputnum = quotient;
	}

	if(base == 16)
	printf("结果是0x"); 
	else
	printf("结果是"); 
	
	for (count--; count >= 0; count--) 
	{
		outputnum = remainderarray[count];
		printf("%c", remaindernum[outputnum]);
	}	//将商数组的数字依次倒序输出 
	
	return 0;
}
备注:

此源代码来自百度知道,该代码运用了数组。我以此为思路,写出了输出数据的进制数可以自定义的代码,并且我根据自己的理解将变量名改成有实际意义的单词,添加了注释。
代码实现效果如图:

posted @ 2022-10-04 22:13  烟火-人间  阅读(63)  评论(0编辑  收藏  举报