1009 說(shuō)反話 (20 分)
??給定一句英語(yǔ)矢否,要求你編寫程序,將句中所有單詞的順序顛倒輸出脑溢。
輸入格式:
??測(cè)試輸入包含一個(gè)測(cè)試用例僵朗,在一行內(nèi)給出總長(zhǎng)度不超過(guò) 80 的字符串。字符串由若干單詞和若干空格組成屑彻,其中單詞是由英文字母(大小寫有區(qū)分)組成的字符串验庙,單詞之間用 1 個(gè)空格分開(kāi),輸入保證句子末尾沒(méi)有多余的空格酱酬。
輸出格式:
??每個(gè)測(cè)試用例的輸出占一行,輸出倒序后的句子云矫。
輸入樣例:
Hello World Here I Come
輸出樣例:
Come I Here World Hello
我的代碼(使用遞歸)
#include<stdio.h>
int main(){
char str[90][90];
int num=0;
while(scanf("%s",str[num])!=EOF) num++;
for(int i=num-1;i>=0;i--){
printf("%s",str[i]);
if(i>0) printf(" ");
}
printf("\n");
return 0;
}
心得:
??剛開(kāi)始我用的是退格轉(zhuǎn)義字符 '\b' 膳沽,是為了消除掉最后一個(gè)的空格字符,但是在我經(jīng)過(guò)測(cè)試用例的時(shí)候發(fā)現(xiàn)PTA十分的嚴(yán)格让禀,也不會(huì)將 '\b' 消除前面的字符挑社,而是其當(dāng)作其他額外的字符。所以只能在循環(huán)語(yǔ)句中巡揍,再次判斷是否為最后一個(gè)單詞進(jìn)行輸出空格痛阻。
注意:while(scanf("%s",str[num])!=EOF)進(jìn)行輸入讀取的時(shí)候要輸入ctrl+z,不然程序不知道停止腮敌。
附上轉(zhuǎn)移表:
轉(zhuǎn)義字符 | 意義 | ASCII碼值(十進(jìn)制) |
---|---|---|
\a | 響鈴(BEL) | 007 |
\b | 退格(BS) 阱当,將當(dāng)前位置移到前一列 | 008 |
\f | 換頁(yè)(FF)俏扩,將當(dāng)前位置移到下頁(yè)開(kāi)頭 | 012 |
\n | 換行(LF) ,將當(dāng)前位置移到下一行開(kāi)頭 | 010 |
\r | 回車(CR) 弊添,將當(dāng)前位置移到本行開(kāi)頭 | 013 |
\t | 水平制表(HT) | 009 |
\v | 垂直制表(VT) | 011 |
' | 單引號(hào) | 039 |
" | 雙引號(hào) | 034 |
|反斜杠 | 092 |