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 |
|