第十二天打卡

1.问题:给定一个M进制的数x,实现对x向任意的一个非M进制的数的转换。

2.思路:用一个字符数组将数存起,并通过函数将字符数组的元素实现字符与数字相互转换的过程,然后通过累加的方式将M进制的数转换成十进制数,然后通过十进制转换成目标进制。

3.程序流程图:

 

4.代码实现:

#include <stdio.h>

#define N 101

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 source1)
{
long decimal_num=0;
int length;
int i;
for(i=0;temp[i]!='\0';i++){
length=i;
}
for(i=0;i<length;i++){
decimal_num=(decimal_num*source1)+char_to_num(temp[i]);
}
return decimal_num;
}
int decimal_to_object(char temp[],long decimal_num1,int object1)
{
int i=0;
while(decimal_num1){
temp[i]=num_to_char(decimal_num1%object1);
decimal_num1=decimal_num1/object1;
i++;
}
temp[i]='\0';
return i;
}
void output(char temp[],int length1)
{
int i;
for(i=length1-1;i>=0;i--){
printf("%c",temp[i]);
}
printf("\n");
}
int main()
{
int source;
int object;
int length;
long decimal_num;
char temp[N];
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);
}
return 0;
}

posted @ 2023-04-27 02:05  £剑影メ随见彡  阅读(20)  评论(0)    收藏  举报