使用递归反转字符串的C程序示例如下:
#include <stdio.h>
#include <string.h>
void reverse(char* str);
int main()
{
char str[100];
printf("Enter a string: ");
gets(str);
reverse(str);
printf("Reversed string: %s\n", str);
return 0;
}
void reverse(char* str)
{
if(*str == '\0') // base case (when only the null character is left)
{
return;
}
else
{
reverse(str+1); // recurse on the rest of the string
char temp = *str;
int len = strlen(str);
for(int i=1; i<len; i++)
{
*(str+i-1) = *(str+i); // shift all characters one position to the right
}
*(str+len-1) = temp; // place the first character at the end
}
}
此程序使用递归来反转字符串。
1. 程序输入字符串并输出其反转后的结果
程序从用户输入读取一个字符串(使用内置函数 gets()),然后调用 reverse() 函数,将该字符串整体传入 reverse() 函数,最后输出反转后的结果。
代码示例:
Enter a string: Hello, world!
Reversed string: !dlrow ,olleH
2. 程序输出多个字符串的反转结果
可以通过在 main() 函数中循环输入多个字符串,并且多次调用 reverse() 函数来反转这些字符串,最后一次输出反转后的结果。
代码示例:
int main()
{
char str[100];
int count;
printf("Enter the number of strings to reverse: ");
scanf("%d", &count);
getchar(); // to flush the newline character from the input buffer
for(int i=0; i<count; i++)
{
printf("Enter string #%d: ", i+1);
gets(str);
reverse(str);
printf("Reversed string #%d: %s\n", i+1, str);
}
return 0;
}
程序中,先从用户输入读取字符串数量 count。然后,使用 for 循环读取 count 个字符串,对每个字符串调用 reverse() 函数,输出其反转结果。
代码运行示例:
Enter the number of strings to reverse: 3
Enter string #1: Hello, world!
Reversed string #1: !dlrow ,olleH
Enter string #2: Programming in C is fun!
Reversed string #2: !nuf si C ni gnimmargorP
Enter string #3: This is an example
Reversed string #3: elpmaxe na si sihT