问题:
给定一个N进制的数,将他转换为M进制的数。
设计方案:
所有的数都是由0~F组成,因此采用字符数组进行存储。同时定义两个函数进行字符和数值之间的转换。
源代码:
#include<stdio.h>
#define MAXCHAR 101
int char_to_num(char ch);
char num_to_decima(char temp[],int source);
int decimal_to_object(char temp[],long decimal_num,int object);
void output(char temp[],int length);
main()
{
int source,object,length,deciml_num;
char temp[MAXCHAR];
int flag=1;
while(flag)
{
printf("转换前:");
scanf("%s",temp);
printf("转换前数制:");
scanf("%d",&source);
printf("转换后:");
scanf("%d",&object);
printf("转换后的数:");
decimal_num=source_to_decimal(temp,source);
length=decimal_to_object(temp,decimal_num,object);
output(temp,length);
printf("继续输入1,否则输入0:\n");
scanf("%d",&flag);
}
}
int char_to_num(char ch)
{
if(ch>='0'&&ch<='9')
return ch-'0';
else
return ch-'A'+10;
}
char num_to_char(int num)
{
if(num>=0&&num<=9)
return (char)('0'+num-0);
else
return (char)('A'+num-10);
}
long source_to_decimal(char temp[],int source)
{
long decimal_num=0;
int length;
int i;
for(i=0;temp[i]!='\0';i++);
length=i;
for(i=0;i<=length-1;i++)
decimal_num=(decimal_num*source)+char_to_num(temp[i]);
return decimal_num;
}
int decimal_to_object(char temp[],long decimal_num,int object)
{
int i=0;
while(decimal_num)
{
temp[i]=num_to_char(decimal_num%object);
decimal_num=decimal_num/object;
i++
}
temp[i]='\0';
return i;
}
void output(char temp[],int length)
{
int i;
for(i=length-1;i>=0;i--)
printf("%c",temp[i]);
printf("\n");
}