题目:

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

 题目分析:

     对于这个问题,根据进制之间的转换特点,将十进制的整数n转换为其他进制,可以利用模除的方式将其转换,但是其中有一个问题:16进制数中表示0123456789abcdef,所以可以将16进制的转换另外解决。解决方式通过建立一个指针变量,通过指针进行解引用,同时建立一个数组用来存放转换后的数,然后进行数组元素的逆置。

#define _CRT_SECURE_NO_WARNINGS 1#include 
#include 
#include 
 void exchange( char arr[] )     //将数组中元素逆置{     int left = 0;     int right = strlen(arr)-1;    //strlen函数可以计算数组的大小     char tmp = 0;     while( left < right )     //借助变量交换数组元素     {         tmp = arr[left];         arr[left] = arr[right];         arr[right] = tmp;         left++;         right--;     }} void itob(char arr[],int num,int b)    //将整数n转换其他进制{      int i=0;      while(num)      {         if(b<10)        //转换为10以下进制         {             arr[i]=num%b+'0';             num /= b;          }         else if(b == 16)     //转换为16进制         {             char *p = "0123456789abcdef";    //定义一个指针变量             arr[i] = p[ num % 16 ];   //相当于解引用*(p+(num%16))             num /= b;         }         else         {             break;         }              i++;      }    arr[i + 1] = '\0';     //添加字符串结束标志    exchange( arr );} int main (){     char s[10]={0};     int num=0;     scanf("%d",&num);     itob(s,num,2);     printf("%s",s);     system("pause");return 0;}