B1009 说反话 (20分)

字符串转置输出

1. 原文

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

1.0.1. 输入格式:

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

输出格式:

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

输入样例:

1
Hello World Here I Come 

输出样例:

1
Come I Here World Hello

2. 解析思路

接收字符串的输入,存入字符串数组中,当遇到空格时就是换到下一个字符串元素的信号

3. AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<stdio.h>
char str[110][110];
char ch[110];
int main(){
//输入
gets(ch);
int r,h;
r=h=0;
//转为字符串数组
for(int i=0; ch[i]!='\0';i++){
if (ch[i]!=' ')
{
str[r][h++]=ch[i];
}else{
str[r][h]='\0';
r++;
h=0;
}
}
//输出
for (int i = r; i >= 0 ; i--)
{
printf("%s", str[i]);
if (i>0)
{
printf(" ");
}else{
printf("\n");
}
}

return 0;
}

warning: this program uses gets(), which is unsafe.
该程序必须在c语言环境下运行

4. 使用string,cin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<string>
using namespace std;
string ans[110];
int main(){
string str;
getline(cin,str);
int cnt=0;
for (int i = 0; i < str.size(); ++i)
{
if (str[i]!=' ')
{
ans[cnt]+=str[i];
}else{
cnt++;
}
}
for (int i = cnt; i >=0 ; i--)
{
cout<< ans[i];
if (i>0)
{
cout<<" ";
}else{
cout<<endl;
}
}

return 0;
}
本文结束  感谢您的阅读
  • 本文作者: Wang Ting
  • 本文链接: /zh-CN/2019/09/06/B1009/
  • 发布时间: 2019-09-06 21:07
  • 更新时间: 2021-10-29 14:14
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!