Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Each test case contains a single line with several words. There will be at most 1000 characters in a line.
#include<stdio.h> #include<string.h> int main() { int i,n,len,j,k,t; char s1[1005],s2[100]; scanf("%d",&n); getchar(); while(n--) { gets(s1); len=strlen(s1); for(i=0,j=0,t=0;i<len;i++) { if(s1[i]!=' ') s2[j++]=s1[i]; /*保存单词*/ else { if(t>0) printf(" "); /*控制格式*/ for(k=j-1;k>=0;k--) printf("%c",s2[k]); /*反转输出*/ j=0; t++; } if(i==len-1) /*反转最后一个单词,这里要特别注意*/ { printf(" "); for(k=j-1;k>=0;k--) printf("%c",s2[k]); } } printf("\n"); } return 0; }
#include<stdio.h> #include<stack> using namespace std; int main() { int n; char ch; scanf("%d",&n); getchar(); /*吸收回车符*/ while(n--) { stack<char> s; /*定义栈*/ while(true) { ch=getchar(); /*压栈时,一次压入一个字符*/ if(ch==' '||ch=='\n'||ch==EOF) { while(!s.empty()) { printf("%c",s.top()); s.pop(); /*清除栈顶元素*/ } if(ch=='\n'||ch==EOF) break; /*绝对不能少,控制输出结束*/ printf(" "); } else s.push(ch); } printf("\n"); } return 0; }