练习4-12 运用printd函数的设计思想编写一个递归版本的itoa函数,即通过递归调用把整数转换成字符串
来源:互联网 发布:智慧医疗 物联网 知乎 编辑:程序博客网 时间:2024/06/08 06:46
不能处理最小负数,’\0’直接覆盖即可。
#include <stdio.h>void itoa(int n,char s[]);main(){ int n=-123; char s[5]; itoa(n,s); printf("s:%s",s);}int si=0;void itoa(int n,char s[]){ if(n<0){ s[si++]='-'; n=-n; } if(n/10) itoa(n/10,s); s[si++]=n%10+'0'; s[si]='\0';}
if语句测试
#include <stdio.h>#include <limits.h>main(){ if(-1) printf("a\n"); else printf("b\n"); printf("intmin:%d",INT_MIN);}
输出a,if不是0(为正负数)则为真,否则为假。
答案可以处理最小负数,字符数组下标用静态自动变量,且在最里层赋值。实际上答案存在bug,abs(n)%10应改为abs(n%10)。
#include <stdio.h>void itoa(int n,char s[]);main(){ int n=-2147483648; printf("s:%d\n",abs(n)); char s[11]; itoa(n,s); printf("s:%s",s);}#include <math.h>void itoa(int n,char s[]){ static int i; if(n/10) itoa(n/10,s); else{ i=0; if(n<0) s[i++]='-'; } s[i++]=abs(n)%10+'0'; s[i]='\0';}
n赋值一行编译出现警告:
warning: this decimal constant is unsigned only in ISO C90
运行输出:
s:-2147483648s:-214748364(
0 0
- 练习4-12 运用printd函数的设计思想编写一个递归版本的itoa函数,即通过递归调用把整数转换成字符串
- 练习 4-12 运用 printd 函数的设计思想编写一个递归版本的 itoa 函数,即通过递归 调用把整数转换为字符串
- printd函数的编写(递归)
- 练习4-13 编写一个递归版本的reverse(s)函数,以将字符串s倒置
- 练习 4-13 编写一个递归版本的 reverse(s)函数,以将字符串 s 倒置
- itoa()函数将整数转换为字符串的一个例子
- go语言练习 : 编写一个非递归版本的comma函数,使用bytes.Buffer代替字符串链接操作。
- 通过递归调用把整数转换成字符
- C语言通过函数实现 itoa()的功能 将整数转换成字符串 并实现进制转换
- 编写itoa函数,该函数为itoi函数的逆函数。将一个整数转化为字符串的形式。
- 编写一个递归调用函数,输出vector对象的内容
- itoa函数的运用
- 请编写一个 C 函数,该函数将给定的一个整数转换成字符串
- 把一个字符串通过递归转换成相应数字
- 用递归的思想写编写一个函数reverse_string(char * string)实现字符串反向输出和反向排列
- 编写函数,用递归法将一个n位整数转换为n个相应的字符
- 用递归的方法将一个整数n转化为字符串(不是调用函数,直接输出)
- 函数的递归调用
- 二叉树遍历的所有递归和迭代实现
- LeetCode 353. Design Snake Game(设计贪吃蛇游戏)
- LeetCode 356. Line Reflection(线反射)
- Paint House
- Object-C 面向对象的三大特征之一 封装
- 练习4-12 运用printd函数的设计思想编写一个递归版本的itoa函数,即通过递归调用把整数转换成字符串
- Object-C 面向对象的三大特征之一 继承
- PHP中PHP_INT_SIZE和PHP_INT_MAX常量
- JDK、JRE、JVM之间的关系
- Object-C 面向对象的三大特征之一 多态
- Palindrome Linked List - JS
- Remove Linked List Elements - JS
- How to write Chinese report using R Markdown
- testtes