码迷,mamicode.com
首页 > 其他好文 > 详细

将整数n转换为以b进制的数

时间:2015-10-30 02:11:34      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:整数n转换为其他进制、itob、模除、数组逆置

  题目:

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

 题目分析:

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


#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
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;
}


本文出自 “无心的执着” 博客,谢绝转载!

将整数n转换为以b进制的数

标签:整数n转换为其他进制、itob、模除、数组逆置

原文地址:http://10740590.blog.51cto.com/10730590/1707913

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!