天天看点

P122第20题

#include<stdio.h>

 void trans(int n,int base)

 {

  int a[10],i=0,k;

  if(base==2)

  {

  while (n != 0)

  { 

  a[i]= n%2;

     n=n/2;

  i++;

  }

  k=i;

  for(i=k-1;i>=0;i--)

   printf("%d",a[i]);

 }

  if(base==8)

  {

  while (n != 0)

  { 

  a[i]= n%8;

     n=n/8;

  i++;

  }

  k=i;

  for(i=k-1;i>=0;i--)

   printf("%d",a[i]);

  }

  if(base==16)

  {

  while (n != 0)

  { 

  a[i]= n%16;

     n=n/16;

  i++;

  }

  k=i;

  for(i=k-1;i>=0;i--)

  {

   if(a[i]>=0&&a[i]<=9)

       printf("%d",a[i]);

  if(a[i]>=10&&a[i]<=15)

   {

   switch(a[i])

   {

   case 10: printf("A");break;

   case 11: printf("B");break;

   case 12: printf("C");break;

   case 13: printf("D");break;

   case 14: printf("E");break;

   case 15: printf("F");break;

   }

   }

  }

  }

 }

int main()

 {

  int i,j;

  while(1)

  {

  printf("请输入一个数字:");

  scanf("%d", &i);

  printf("需要转换成哪种进制数(2? 8? 16?)");

  scanf("%d",&j);

  printf("转化为%d进制为:",j);

  trans(i,j);

  printf("\n");

  }

  return 0;

 }

P122第20题