1009. 说反话 (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。
输出格式:每个测试用例的输出占一行,输出倒序后的句子。
输入样例:Hello World Here I Come输出样例:
Come I Here World Hello
自己的版本,vc运行正常,通不过pat
1 #include "stdio.h" 2 #include"string.h" 3 int main(int argc, char const *argv[]) 4 { 5 char a[82]; 6 int count=1,j,i,length,c[82]={0}; 7 gets(a); 8 length=strlen(a); 9 10 for(i=0;i<length;i++) 11 { 12 if(a[i]==' ') 13 c[count++]=i; 14 } 15 c[count]=length-1; 16 if(count==1){ 17 printf("%s",a); 18 } 19 else{ 20 for(i=c[count-1]+1; i<=length;i++) //第一次 21 { 22 23 printf("%c", a[i]); 24 } 25 for(j=count-1;j>1;j--) 26 27 for(i=c[j-1]+1;i<c[j]+1;i++) 28 printf("%c", a[i]); 29 30 for(i=0;i<=c[1]-1;i++) 31 printf("%c", a[i]); 32 } 33 34 return 0; 35 }
参考版本
#include "stdio.h" #include"string.h" char out(char *str); int main(int argc, char const *argv[]) { char a[81]; gets(a); out(a); return 0; } char out(char *str) { char *p=strchr(str,32); if(p==NULL)//只有一个元素 printf("%s",str ); else { out(p+1); *p='