链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=151
For each list of words, output a line with each word reversed without changing the order of the words.
This problem contains multiple test cases!
The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.
The output format consists of N output blocks. There is a blank line between output blocks.
Input
You will be given a number of test cases. The first line contains a positive integer indicating the number of cases to follow. Each case is given on a line containing a list of words separated by one space, and each word contains only uppercase and lowercase letters.
Output
For each test case, print the output on one line.
Sample Input
1
3
I am happy today
To be or not to be
I want to win the practice contest
Sample Output
I ma yppah yadot
oT eb ro ton ot eb
I tnaw ot niw eht ecitcarp tsetnoc
#include <iostream> #include <string> #include <cstdio> #include <algorithm> using namespace std; string s, t; int n, cas, flag = 0; char ss[1000]; int main() { cin >> cas; while(cas--) { scanf("%d", &n); getchar(); while(n--) { cin.getline(ss, 1000); s = ss; flag = 0; t.clear(); for(int i=0; i<s.size(); i++) { if(s[i] != ' ' && i <= s.size()-1) { t += s[i]; }else { reverse(t.begin(), t.end()); if(flag) cout << " "; cout << t; flag = 1; t.clear(); } } reverse(t.begin(), t.end()); cout << " " << t << endl; } if(cas) cout << endl; } return 0; }
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <cstdlib> #include <algorithm> //使用reverse需要的头文件 #define MAXN 10010 #define RST(N)memset(N, 0, sizeof(N)) using namespace std; int main() { freopen("data_in.txt", "r", stdin); //文件输入输出流重定向 freopen("data_out.txt", "w", stdout); string str; while(getline(cin, str)) { //每次读入一行文本 int len = str.length(); int flag = 0; string s; s.clear(); //使用前记得清空 for(int i=len-1; i>=0; i--) { if(str[i]!=' ') { s += str[i]; }else { if(s.empty()) continue; //判断字符串是否为空,去掉单词之间多余的空格 reverse(s.begin(), s.end()); //反转 if(flag) cout << " " << s; //控制输出格式 else cout << s; flag = 1; s.clear(); //每次清空容器 } } reverse(s.begin(), s.end()); //第一个单词放在最后输出 cout << " " << s << endl; } fclose(stdin); fclose(stdout); return 0; }