1009 说反话 (20 分)

六月ゝ 毕业季﹏ 提交于 2020-03-30 04:01:10

题目:

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

输入格式:

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

输出格式:

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

输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

  刚开始没想用指针,感觉还挺麻烦,后来参考了别人的写法,感觉还是指针利落。

思路:

  • 设立一个指针,当找到空格时,截取单词,而后输出空格后面的单词,当找到第一个单词时即p == s[0]直接输出原句首单词。

代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 int main()
 5 {
 6 
 7     int k;
 8     char s[81];
 9     char *p;
10     gets(s);
11     k = strlen(s);
12     p = s + k;
13     while (1)
14     {
15         if (p == s)    //输出原句的第一个单词 
16         {
17             printf("%s\n", p);
18             break;
19         }
20         if (*p == ' ')
21         {
22             *p = '\0';    //截取单词 
23             printf("%s ", p+1);
24         }
25         p--;
26     }
27 
28     return 0;
29 }

总结:

    利用指针反向输出会简单很多,有时利用指针,问题会被简化很多。

    我太菜了要多学学啊!!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!