打卡4

问题描述:给定一个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);

}

 

posted @ 2023-05-04 22:41  umiQa  阅读(9)  评论(0编辑  收藏  举报