一【题目难度】
- 乙级
二【题目编号】
- 1009 说反话 (20 分)
三【题目描述】
- 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
四【题目示例】
-
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。 -
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。 -
输入样例:
Hello World Here I Come -
输出样例:
Come I Here World Hello
五【解题思路】
- 首先先将字符数组接收,然后设置二维数组,目的是将这句话以空格分割成一个个小单词,注意要用 g e t s gets gets接收输入,不能使用 s c a n f scanf scanf,因为 s c a n f scanf scanf遇到空格就停止了,所以只能扫描到第一个单词,然后就用 f o r for for循环以空格将这个句子分割,注意每个单词的最后一个位置要加上$ \0 $,表明到了最后,最后倒序输出即可,还要注意除了最后一个单词剩下的单词都要加上空格
六【最终得分】
- 20分
七【代码实现】
#include <stdio.h>
#include <string.h>
int main()
{
char str[81];
gets(str);
int len = strlen(str),row = 0,col = 0;
char temp[81][81];
for(int i = 0;i<len;i++)
{
if(str[i] != ' ')
{
temp[row][col++] = str[i];
}
else
{
temp[row][col] = '\0';
row++;
col = 0;
}
}
for(int i = row;i>=0;i--)
{
printf("%s",temp[i]);
if(i > 0)
{
printf(" ");
}
}
return 0;
}