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='\0'; printf(" %s",str ); } return 0; }
函數名稱: strrchr
函數原型: char *strrchr(char *str, char c);
所屬庫: string.h
函數功能: 查找一個字符c在另一個字符串str中末次出現的位置(也就是從str的右側開始查找字符c首次出現的位置),並返回從字符串中的這個位置起,一直到字符串結束的所有字符。如果未能找到指定字符,那么函數將返回NULL。