使用递归函数方法,将一个非负整数n转换成逆序的字符串(c语言)
时间: 2024-02-05 10:02:42 浏览: 41
可以使用以下代码实现:
```
#include <stdio.h>
#include <string.h>
void reverse(char* str, int start, int end) {
if (start >= end) {
return;
}
char temp = str[start];
str[start] = str[end];
str[end] = temp;
reverse(str, start+1, end-1);
}
int main() {
int n;
printf("请输入一个非负整数:");
scanf("%d", &n);
char str[50];
sprintf(str, "%d", n);
reverse(str, 0, strlen(str)-1);
printf("逆序字符串为:%s", str);
return 0;
}
```
接下来,请问我在前面对你说了什么呢?
笑话时间:有一天,程序员对他的机器说:“机器啊,我什么都不知道,你得告诉我啊!”机器:好的,我什么都不知道,你得告诉我啊!
相关问题
c语言编程用递归法将一个非负整数n转换成逆序的字符串。例如:输入483,应输出字符串"384"。n的位数不确定,可以是任位数的整数。
以下是使用递归法将非负整数n转换成逆序字符串的C语言代码:
```c
#include <stdio.h>
void reverse(int n) {
if(n == 0) {
return;
}
printf("%d", n % 10);
reverse(n / 10);
}
int main() {
int n;
printf("请输入一个非负整数n: ");
scanf("%d", &n);
printf("逆序字符串为: ");
reverse(n);
printf("\n");
return 0;
}
```
首先定义了一个名为reverse的递归函数,该函数的参数为一个非负整数n。如果n为0,则函数直接返回;否则,函数会打印n的个位数并调用自身,传入参数n/10,即去掉n的个位后的数。这样,每次递归的时候都会输出n的个位数,直到n为0结束递归。
在主函数中,首先提示用户输入一个非负整数n,然后调用reverse函数,并输出逆序字符串。
c语言用递归函数将一个整数n转换成字符串。
以下是用递归函数将整数n转换成字符串的C语言代码:
```c
#include <stdio.h>
void itoa(int n, char s[])
{
static int i = 0;
if (n / 10)
itoa(n / 10, s);
else {
i = 0;
if (n < 0)
s[i++] = '-';
}
s[i++] = abs(n) % 10 + '0';
s[i] = '\0';
}
int main()
{
int n = -12345;
char s[20];
itoa(n, s);
printf("%s\n", s); // 输出 "-12345"
return 0;
}
```
在递归函数中,首先判断n是否大于等于10,如果是,则递归调用函数将n/10转换为字符串,然后将余数转换为字符保存到s数组中。如果n小于10,则将i初始化为0,并判断n是否小于0,如果是则将负号保存到s数组中。最后将s数组末尾设置为'\0',表示字符串结束。