问题描述:给定一个M进制的数x,实现对x向任意的一个非M进制的数的转换。
流程图:
伪代码:
input M,x
x0<-0
for a<-0 to ...
if temp[a]=’\0’
break
for i<-a to 0
x0+=M^i
input N
for j<-0 to...
b=x0/N^j
if b>=N
output char ‘b%N’
else
output char ‘b’
break
代码:#include <iostream>
#include <cmath>
using namespace std;
int char_to_num(char ch);
char num_to_char(int num);
int main()
{
int M,N,x0=0,i,j,k=0,b,a=0,c;
char num[10],cc[20];
cin>>M>>num;
while(num[k]!='\0')
{
k++;
}
for(i=k-1;i>=0;i--)
{
x0+=(int)(pow(M,a))*char_to_num(num[i]);
a++;
}
cin>>N;
for(c=0;;c++)
{
b=x0/(int)(pow(N,c));
if(b<N)
break;
}
for(j=c;j>=0;j--)
{
b=x0/(int)(pow(N,j));
if(b>=N)
cout<<num_to_char(b%N);
else
{
cout<<num_to_char(b);
}
}
}
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);
}
标签:ch,return,int,char,num,打卡,x0 From: https://www.cnblogs.com/chukjbgg333/p/17372780.html