编写一个函数itob(),将整数n转换为以b进制的数,保存到s中
2015-11-04 22:54
711 查看
编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数,保存到s中。
对于转换的进制b,如果小于10,可通过n模b再加上'0',即为最后一位数,将其保存在数组str[]中,通过n/b依次得到其他数字。如果为十六位进制,需要再定义一个数组p,p为"0123456789ABCDEF",再将n模b的值保存在数组str[]中,通过n/b依次得到其他数字。最后逆置整个数组就可以得到转换后的数。
代码如下:
对于转换的进制b,如果小于10,可通过n模b再加上'0',即为最后一位数,将其保存在数组str[]中,通过n/b依次得到其他数字。如果为十六位进制,需要再定义一个数组p,p为"0123456789ABCDEF",再将n模b的值保存在数组str[]中,通过n/b依次得到其他数字。最后逆置整个数组就可以得到转换后的数。
代码如下:
#include<stdio.h> #include<stdlib.h> void reverse(char str[],int len)//逆序整个字符数组 { int left=0; int right=len-1; while(left<right) { char temp=str[left]; str[left]=str[right]; str[right]=temp; left++; right--; } } void itob(int num, char str[],int b) { int i=0; while(num) { if(b<10)//b进制 { str[i]=num%b+'0';//数字逆序存入字符数组中 num/=b; } else if(b==16) { char *p="0123456789ABCDEF"; str[i]=p[num%b];//p[num%b]等价于*(p+(num%b)) //上面两个语句可写为str[i]="0123456789ABCDE"[num%b]; num/=b; } else break; i++; } str[i]='\0'; reverse(str,i); } int main() { char str[32]; int num,b; printf("请输入正数和转化的进制>\n"); scanf("%d%d",&num,&b); itob(num,str,b); printf("%s\n",str); system("pause"); return 0; }
相关文章推荐
- html 设置浏览器默认文档模式
- mongodb linux 64位下载
- _INTSIZEOF(n)解析
- 2015.11.2~5训练总结
- 美联社收入来源及产品服务
- 怎样处理InterruptedException
- MyEclipse6.5中SVN插件安装
- Chapter 14 Exercises & Problems
- eclipse一直卡住,出现 “android sdk content loader 0%” 卡住的错误分析及解决方法
- leetcode-50 Pow(x, n) 剑指Offer题11 数值的整数次方
- 在数据库中使用CLOB存储
- Oracle Create DBLink
- C语言分割字符串函数strtok
- Bootstrap导航栏实例讲解
- Linux权限管理详解
- poj 1009
- Spring的Hessian,Burlap,HttpInvoker远程调用
- STM32的中断与事件
- 统计学
- NSFileHandle随笔