字符串逆序输出

来源:互联网 发布:中山淘宝摄影培训班 编辑:程序博客网 时间:2024/06/05 05:41

字符串逆序输出

时间限制:3000 ms  |  内存限制:65535 KB
难度:0
描述
给定一行字符,逆序输出此行(空格.数字不输出)
输入
第一行是一个整数N(N<10)表示测试数据的组数)
每组测试数据占一行,每行数据中间有且只有一个空格(这样你可以把此行当成两个字符串读取)。
每行字符长度不超过40
并且保证输入的字符只有空格(1个),数字,小写字母三种
输出
对应每行测试数据,逆序输出(空格和数字不输出)
样例输入
3abc 123deabc 123abc d
样例输出
edcbacbadcba
来源
[521521]原创
上传者
ACM_赵铭浩


代码:

#include <iostream>#include <stdio.h> #include <string.h>#include <math.h>#include <vector>#include <queue>#include <stack>#include <map>#include <string>#include <algorithm>using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */int main(int argc, char** argv) {int n;scanf("%d",&n);getchar();while(n--){char input[41];gets(input);//cout<<input<<endl;int length=strlen(input);for(int i=length-1;i>=0;i--){if(input[i]>='a' && input[i]<='z'){printf("%c",input[i]);}}printf("\n");}return 0;}
优秀代码:

01.#include <stdio.h>
02.void revers()
03.{
04.char c;
05.if((c = getchar()) != '\n')
06.revers();
07.if(c != '\n'&&c>='a'&&c<='z')
08.putchar(c);
09.}
10. 
11.int main()
12.{
13.int a;
14.scanf("%d\n",&a);
15.while(a--)
16.{
17.revers();
18.printf("\n");
19.}
20.return 0;
21.}

代码对比分析:

我的代码是先把一行都读入字符数组中,然后再倒序遍历字符数组,根据限制条件进行输出。

优秀代码就比较奇怪,用了递归函数,每次只读一个字符,利用递归函数内部实现的栈暂时存储读入的字符,最后遇到换行符时,递归回上层进行依次输出,实现了倒序。好处是不用自己申请空间,但递归函数应该是比较费时的。

收获:

利用递归函数来实现数据的存储,可以。

原创粉丝点击