c语言:采用递归方法实现将输入的字符串按反序输出

如题所述

以下是使用递归方法实现将输入字符串按反序输出的 C 语言程序:

```c
#include <stdio.h>

// 递归函数,将字符串 str 按反序输出
void printReverse(char *str) {
if (*str == '\0') { // 判断是否到达字符串结尾
return;
} else {
printReverse(str + 1); // 递归调用,输出下一个字符
printf("%c", *str); // 输出当前字符
}
}

int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);

printf("反序输出字符串:");
printReverse(str);
printf("\n");
return 0;
}
```

在上述代码中,我们首先定义了一个递归函数 `printReverse`,该函数接受一个指向字符串的指针作为参数。在函数内部,我们首先判断当前指针所指向的字符是否为字符串结尾,如果是,则直接返回;否则,我们递归调用该函数,并传入指向下一个字符的指针,以实现按反序输出字符串。最后,我们输出当前字符。

在 `main()` 函数中,我们首先使用 `scanf()` 函数获取用户输入的字符串,并将其保存到字符数组 `str` 中。然后,我们调用 `printReverse()` 函数,并传入指向字符串开头的指针,以开始递归输出过程。最后,我们在输出结束后添加换行符,以使输出更加美观。

需要注意的是,在实际应用中,递归函数可能会导致栈溢出等问题,因此需要控制递归深度,以确保程序的健壮性和安全性。另外,也可以使用其他方法(如循环)来实现字符串反转的算法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-03-11
C语言采用递归方法实现将输入的字符串按反序输出的一个可能的代码如下:
#include <stdio.h>// 定义一个函数,用递归的方式反向打印字符串void reverseString(char *str) { if (*str == '\0') // 递归终止条件,如果遇到空字符,返回
return; else { // 否则,先递归调用自身,传入下一个字符的地址
reverseString(str + 1); printf("%c", *str); // 然后打印当前字符
}
}int main() { char s[100]; // 定义一个字符数组,存储输入的字符串
printf("Enter a string: "); scanf("%s", s); // 从标准输入读取一个字符串
printf("Reversed string: ");
reverseString(s); // 调用反向打印函数
printf("\n"); return 0;
}
第2个回答  推荐于2016-10-11
#include<stdio.h>
void f()
{
char ch;
if((ch = getchar())!='\n') f();
if(ch!='\n') printf("%c", ch);
}
void main()
{
f();
}本回答被提问者采纳
第3个回答  2011-06-17
先写第一个
#include "stdio.h"
main()
{

int n,m;
int sum=0;
printf("input a number:\n");
scanf("%d",&n);
while(n/10!=0)
{
m=n%10;
sum=sum+m;
n=n/10;
}
sum=sum+n;
printf("sum is:%d",sum);
getch();
}
相似回答