《算法笔记》PTA B1009

1009 说反话 (20 分)

  给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

  测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

  每个测试用例的输出占一行,输出倒序后的句子。

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

我的代码(使用递归)

#include<stdio.h>
int main(){
    char str[90][90];
    int num=0;
    while(scanf("%s",str[num])!=EOF) num++;
    for(int i=num-1;i>=0;i--){
        printf("%s",str[i]);
        if(i>0) printf(" ");
    }
    printf("\n");
    return 0;
} 

心得

  刚开始我用的是退格转义字符 '\b' ,是为了消除掉最后一个的空格字符,但是在我经过测试用例的时候发现PTA十分的严格,也不会将 '\b' 消除前面的字符,而是其当作其他额外的字符。所以只能在循环语句中,再次判断是否为最后一个单词进行输出空格。

注意:while(scanf("%s",str[num])!=EOF)进行输入读取的时候要输入ctrl+z,不然程序不知道停止。

附上转移表:

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) 009
\v 垂直制表(VT) 011
' 单引号 039
" 双引号 034
|反斜杠 092
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • dpkg 学习 安装mysql apt-get install mysql-server-5.6 apt-get ...
    sharonji阅读 454评论 0 0
  • Vim几句话介绍Vim是Unix系统上的文本编辑软件(你该不会不知道什么是文本编辑软件吧!),在windows上也...
    何必遠方阅读 3,228评论 0 3
  • 数组中重复的数字(一维数组) 问题:在一个长度为长度为n的数组里的所有数字都在0-n-1之间。找出任意一个重复的数...
    Drama_Du阅读 1,154评论 0 0
  • bash学习 参考 Linux bash总结(一) 基础部分(适合初学者学习和非初学者参考)Linux 入门公开课...
    cndaqiang阅读 788评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,607评论 28 53