翻转字符串

使用递归:方法很巧妙!

#include <stdio.h>

/* 使用递归来翻转字符串 */
void reverseSentence()
{
    char c;
    scanf("%c", &c);
 
    if( c != '\n')	// 按下的不是回车键
    {
		/*
		不会马上输出,必须等下一个 reverseSentence 函数执行完之后才打印,
		相当于缓冲起来,最后再一次性释放,比如,输入:nma,
		执行的顺序是:reverseSentence1()--缓冲打印n--reverseSentence2()--缓冲打印m
		--reverseSentence3()--缓冲打印a--reverseSentence4()--按回车键,不满足if条件,
		下面没代码了,reverseSentence4()函数执行完,会逆向执行缓冲,即:打印a--打印m
		--打印n,最后打印出来就是:amn
		*/
        reverseSentence();	// 递归调用
        printf("%c",c);		
    }
}

int main(void)
{
	printf("输入一个字符串: ");
    reverseSentence();

	return 0;
}

 运行:

 

posted @ 2018-02-27 13:37  半生戎马,共话桑麻、  阅读(213)  评论(0)    收藏  举报
levels of contents