进制转换伪代码和代码
伪代码的实现
点击查看代码
#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;
}
此源代码来自百度知道,该代码运用了数组。我以此为思路,写出了输出数据的进制数可以自定义的代码,并且我根据自己的理解将变量名改成有实际意义的单词,添加了注释。
代码实现效果如图: