题目
本题是谭浩强《C程序设计课后习题》题7.17。
题目:
用递归法将一个整数n转换成字符串
例:输入183,输出字符串“483”。n的位数不确定,可以是任意位数的整数。
以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步。——来自考研路上的lwj
一、解题思路
思路:
按题目给出思路:
1.首先写出主函数,先输入一个数字,然后经过函数转换后,完成其功能。
2.定义函数部分:题目要求采用递归调用,递归的精华是要有退出的条件,不能一直调用形成死循环。
void Switch(int val) {
if ((val / 10)!=0)
Switch(val / 10);
printf("%c", val % 10 + ‘0’);
}
3.当if里的条件快满足时,已经进行到最后一位数,也就是数字的第一位,然后会执行下面的printf语句进行输出第一位的字符型,后面的位数也是依次输入。
4,注意:当我们输出时,题意为输出字符型,如果不+这个字符型的0,输出会出现乱码,因为整形输出为字符型要经过转换,另外经过测试,减去字符0是没有用的,在(val / 10)前加上(char)强制类型转换也达不到效果。
二、代码部分
1.引入库
代码如下(示例):
#include<stdio.h>
2.函数部分
代码如下(示例):
void Switch(int val) {
if ((val / 10)!=0)
Switch(val / 10);
printf("%c", val % 10 + '0');
}
2.主函数部分
代码如下(示例):
int main() {
int num;
printf("请输入一个整数:>");
scanf("%d", &num);
printf("转换后的字符串为:");
Switch(num);
printf("\n");
return 0;
}
三、执行结果
输出:
请输入一个整数:>123
转换后的字符串为:123