CSDN博客

img crazyleeyang

M 进制数转换为N进制数

发表于2008/10/1 15:23:00  250人阅读

写的很粗糙,输入未进行验证,但是功能实现了,大家多多来检验下:

  1. #include<iostream>
  2. using namespace std;
  3. //m进制数转换为逆向字符串
  4. void ItoC(char*A ,int z,int &counter)
  5. {
  6.     int temp1,temp2;
  7.     counter=1;
  8.     temp1 = z%10;
  9.     temp2 = z/10;
  10.     A[0]=temp1+48;
  11.     while(temp2 != 0)
  12.     {
  13.         z=temp2;
  14.         temp1 = z%10;
  15.         temp2 = z/10;
  16.         A[counter++]=temp1+48;
  17.     }
  18. }
  19. //十进制数转换为n进制数
  20. void DtoN(char *A,int z,int n,int &counter)
  21. {
  22.     counter = 1;
  23.     A[0] = z%n+48;
  24.     z/=n;
  25.     while(z != 0)
  26.     {
  27.         A[counter++]=z%n+48;
  28.         z/=n;
  29.     }
  30. }
  31. int main()
  32. {
  33.     int i,m,n,z=0,x=1,counter1,counter2;
  34.     char A[10];
  35.     cout<<"This program will transform a m system number to a n system number!"<<endl;
  36.     cout<<"Please cin the M:";
  37.     cin>>m;
  38.     cout<<"Please cin the N:";
  39.     cin>>n;
  40.     cout<<"Then please cin the M system number:";
  41.     cin>>z;
  42.     ItoC(A,z,counter1);
  43.     //将M进制数转化为十进制数
  44.     //for(i=0;i<counter1;i++) cout<<A[i];
  45.     //cout<<endl;
  46.     z=0;
  47.     for(i=0;i<counter1;i++)
  48.     {
  49.         z+=x*(A[i]-48);
  50.         x*=m;
  51.     }
  52.     DtoN(A,z,n,counter2);
  53.     for(i=counter2-1;i>=0;i--)
  54.     {
  55.         cout<<A[i];
  56.     }
  57.     cout<<endl;
  58.     return 0;
  59. }
阅读全文
0 0

相关文章推荐

img
取 消
img