编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。


 编写一个函数itob(int num,char s[], int n),将整数num转换为以n进制的数。保存到s中。

在本题中,二进制、八进制及十进制算法思路一样,采取模除的方式,输出各个位置的数,接着采用逆序输出。在十六进制中"0123456789abcdef"[num%16],求出各位的数字。

#include<stdio.h>
void reverse(int len,char arr[]) //逆置
{
 int left =0;
 int right =len -1;
 while(left < right)
 {
  char temp = arr[left];  
  arr[left] = arr[right];
  arr[right] = temp;
  right --;
  left ++;   
 }
}
void itob(int num,char s[], int n)  //以n进制形式输出
{
 int i=0;
 while(num)  
 {
  if(n<10)
  { 
   s[i]=num% n+'0';   
   num /= n ; //模除
   i++;
  }
  else if(n==16)
  {
   s[i]="0123456789abcdef"[num%16];
   num/=16;
   i++;
  } 
  else
  {
   break; 
  }
 }
 s[i]='\0';
 reverse(i , s);
}
int main()
{
 char s[32];
 int n=0;
 int num;
 scanf("%d",&n);
 printf("num=");
 scanf("%d",&num);
 itob(num,s, n);   
 printf("%s\n",s);
 return 0;
}

wKiom1ZdynnjqYYxAAAvaRD8298335.png

wKiom1Zdyq6yvP-vAAAu3gTY94o766.png

wKiom1Zdyq_DenkxAABDCnzpsfI622.png


你可能感兴趣的:(整数num转换为以n进制的数)