zoj1151 zoj1295 Word Reversal 字符串的简单处理
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
http://blog.csdn.net/AC_0_summer/article/details/44747401
#include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; char s[500]; void _S() { int L=0; s[L++]=getchar(); while(s[L-1]!='\n'){ if(s[L-1]==' ') { for(int i=L-2;i>=0;i--) putchar(s[i]); printf(" "); L=0; } s[L++]=getchar(); } for(int i=L-2;i>=0;i--) putchar(s[i]); printf("\n"); return ; } int main() { int n,T; scanf("%d",&T); while(T--){ scanf("%d\n",&n);//过滤换行符 while(n--) _S(); if(T) printf("\n"); //此题容易因为此处PE } return 0; } zoj1295: #include<cstdio> #include<cstdlib> #include<iostream> using namespace std; void _S() { char s[71]; int num=0; char c=getchar(); while(true){ if(c=='\n'){ for(int i=num;i>=1;i--) cout<<s[i]; cout<<endl; return ; } s[++num]=c; c=getchar(); } } int main() { int n; scanf("%d\n",&n); while(n--) _S() return 0; }
为什么感觉题目没有解释很清楚,让那么多人PE。。。。。。。。。。。
当然本题处理方式有很多,也可以每一行输入后再处理。个人属于习惯单个字符输入的那种(此时要注意过滤换行符什么的)。