[笔记]一道C语言面试题:实现 itoa() 函数
2011-09-08 00:14
507 查看
题目:输入整数n,如100,将其转为某进制再输出字符串
来源:某500强企业面试题目
思路:与这道题实现方式类似,注意正负号
Technorati 标签: C语言,面试题
来源:某500强企业面试题目
思路:与这道题实现方式类似,注意正负号
//---------------------------------------- // 实现 itoa() 函数 //---------------------------------------- char* myitoa(int n, char* str, int radix){ int a = n; int b = 0; int c = 1; char* p = str; if (0 == a){ // 如果是0,直接输出"0" strcpy(str, "0"); return str; } else if (a < 0){ // 如果是负数,记下负号 c = -1; a = -a; } while(a > 0){ // 反复取余 b = a % radix; a = a / radix; if (b < 10) *p = b + '0'; // 0-9 直接输出"0"-"9" else *p = b - 10 + 'A'; // > 10 输出"A"-... p++; } if (c < 0) *p++ = '-'; // 按需添加负号 *p = 0; // 字符串结尾 // 下面将字符串 str 逆序即可,也可调用系统函数 str = strrev(str); int len = strlen(str); // 取出长度 int i = 0; char ch = 0; for (i = 0; i < len / 2; i++){// 首尾交换,共计 len / 2 次 c = str[i]; str[i] = str[len - i - 1]; str[len - i - 1] = c; } return str; } //---------------------------------------- // 测试 itoa() //---------------------------------------- void Testmyitoa(void) { int n = 0, r = 2; char str[100]; // 下面输出为: itoa(11, 2) = 1011 n = 11; r = 2; myitoa(n, str, r); printf("itoa(%d, %d) = %s\n", n, r, str); // 下面输出为:itoa(-3000, 16) = -BB8 n = -3000; r = 16; myitoa(n, str, r); printf("itoa(%d, %d) = %s\n", n, r, str); }
Technorati 标签: C语言,面试题
相关文章推荐
- [笔记]一道C语言面试题:实现冒泡排序
- [笔记]一道C语言面试题:实现快速排序
- 【C语言】【笔试题】【面试题】实现一个函数,可以左旋字符串中的k个字符
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- 【C语言】【面试题】【笔试题】编写一个函数实现n^k,使用递归实现
- C语言atoi()和itoa()函数的实现
- [置顶] C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- 【转载】C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- [笔记]一道C语言面试题:写一个宏,将16位的整数转为Big Endian
- 百度面试题——用C语言实现函数void * memmove(void *dest,const void *src,size_t n)
- C语言通过函数实现 itoa()的功能 将整数转换成字符串 并实现进制转换
- 【面试题】C语言:模拟实现内存放置函数memset()
- (面试题)请用C语言实现在32位环境下,两个无符号长整数相加的函数,相加之和不能存储在64位变量中
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- 学习笔记——atoi函数的用法及用C语言实现atoi
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- 一道经典面试题,atoi函数的实现