将输入的一个字符串逆序输出。例如,输入abcde,则输出edcba。
用普通函数和递归函数实现。
普通函数源程序:
#include<stdio.h>
#include<string.h>
int main( ) /*该函数调用后返回的结果为int型,如果没有返回值,此时返回值类型为void*/
{
int i;
char str[100]; /*数组在定义时必须指明长度,以便C编译程序根据此处信息确定出数组分配存储空间的大小*/
gets(str); /*从键盘输入一个字符串给字符数组,形式为gets(字符数组名)*/
for(i=0;str[i];i++) /*找到字符串结束标志并停止循环,此时i指向字符串的结束标志‘\0’ */
for(i--;i>0;i--) /*逆序输出*/
printf("%c",str[i]);
return 0; /*函数的返回值,为整型*/
}
用递归函数实现逆序功能:
#include<stdio.h>
void reverse(char *s) /*传地址方式传递数据,数组名作为实参传递时,形参数组可不指明长度*/
{
if (*s) /*取指针s对应的元素,遇到字符串结束标志时结束递归调用*/
{
reverse(s + 1); /*递归调用reverse函数,字符串首地址前移一个字符*/
putchar(*s); /*输出指针s所指向的字符*/
}
}
void main()
{
char a[256];
gets(a); /*从键盘输入一个字符串给字符数组,形式为gets(字符数组名)*/
reverse(a); /*a代表数组的首地址,也代表数组第一个元素的首地址*/
printf("\n");
}
例如:键盘输入字符串“Hello”到数组a时,调用递归函数reverse(a)的求解过程如下图所示: