用C语言写一个递归将一个整数n转换成字符串。例如输入345,输出字符串“345”。 n的位数不确定,可以是任意位数的整数。
时间: 2023-06-12 20:03:50 浏览: 125
C语言中利用递归的方式得到n!
5星 · 资源好评率100%
可以使用递归实现将一个整数n转换成字符串的功能,具体实现如下:
```c
#include <stdio.h>
// 递归函数,将整数n转换成字符串str
void int2str(int n, char str[])
{
if (n < 0) {
// 如果n是负数,先将负号存入str中
str[0] = '-';
// 调用递归函数处理-n的绝对值
int2str(-n, &str[1]);
} else if (n >= 10) {
// 如果n大于等于10,先递归处理n/10,得到高位的字符串
int2str(n / 10, str);
// 再将n%10的字符添加到字符串末尾
str[strlen(str)] = n % 10 + '0';
} else {
// 如果n小于10,直接将n转换成字符存入str中
str[0] = n + '0';
str[1] = '\0'; // 字符串末尾添加'\0'
}
}
int main()
{
int n = 345;
char str[20];
int2str(n, str);
printf("%d -> %s\n", n, str);
n = -123;
int2str(n, str);
printf("%d -> %s\n", n, str);
return 0;
}
```
运行结果为:
```
345 -> 345
-123 -> -123
```
该程序先判断n的符号,如果是负数,则先将负号存入str中,然后调用递归函数int2str(-n, &str[1])处理-n的绝对值,得到一个不带符号的字符串,再将负号和字符串拼接起来。
如果n是正数且大于等于10,则先递归处理n/10,得到高位的字符串,再将n%10的字符添加到字符串末尾。
如果n是个位数,则直接将n转换成字符存入str中。
阅读全文