【发布时间】:2020-10-24 21:04:09
【问题描述】:
我需要使用递归反向打印任何给定的字符串。我尝试通过更改函数 stringReverse 的返回值类型和参数列表来更改函数原型和定义。这个标准输出没有为反向字符串打印任何东西,我不知道为什么。
#include <stdio.h>
#define SIZE 100
char stringReverse(void);
size_t i;
unsigned int pass;
int hold;
char a1[SIZE];
char a2[SIZE];
int main(void) {
for (i = 0; i < SIZE; ++i) {
a1[i] = 0;
}
printf("Enter a string: ");
scanf_s("%[^\n]99s", a1);
printf("%s%s\n\n", "string is:\n", a1);
stringReverse();
}
char stringReverse(void)
{
for (pass = 1; pass < SIZE; ++pass) {
if (a1[i] < a1[i + 1]) {
hold = a1[i];
a1[i] = a1[i + 1];
a1[i + 1] = hold;
}
}
printf("%s%s", "reverse is:\n", a2);
}
【问题讨论】:
-
你写的不是递归函数。此外,对于这项工作,递归将是一个巨大的过度杀伤力。您可以改为使用反向 for 循环或
strrev -
0-char 字符串的反转就是它本身; n-char 字符串的反转是 (n-1)-char 字符串的反转,从第 2 个字符开始,然后是第一个字符
-
我还在学习递归。似乎我试图使用迭代语句来解决问题。我会继续努力的。
标签: c recursion reverse c-strings function-definition