字符串转置输出
1. 原文
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
1.0.1. 输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子。
输入样例:
输出样例:
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; }
|