給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。
輸入格式:
測試輸入包含乙個測試用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文本母(大小寫有區分)組成的字串,單詞之間用若干個空格分開。
輸出格式:
每個測試用例的輸出佔一行,輸出倒序後的句子,並且保證單詞間只有1個空格。
輸入樣例:
hello world here i come
輸出樣例:
come i here world hello
分析:
輸入字串arr(包含所有空格),然後逆序判斷,
輸出單詞的條件有三種:
代表乙個單詞斷句
輸出當前和後邊的字母
輸出第乙個字母
#include#includeint main ()
len=i;
//printf("%d\n\n",len);
for(i=len-1;i>=0;i--)
if((i==0)&&arr[i+1]!=' '&&arr[i]!=' ')//a+a 第乙個a為頭
if((i==0)&&arr[i+1]==' '&&arr[i]!=' ')//a+0 第乙個a為頭
if(arr[i]!=' '&&arr[i+1]==' ')//a+空格
if(arr[i]!=' '&&arr[i+1]!=' ')//a+a
if((arr[i]==' '&&arr[i+1]==' ')||(arr[i]==' '&&arr[i+1]=='\0'))//空格+空格
} return 0;
}
在這裡發現空格和'\0'的對待是不同的,我用的getchar存的輸入字串到char型陣列,記錄字串長度等於所有字元個數(包括所有空格),,然後發現 程式自動把最後乙個空格當做'\0'作為結束符,判斷的時候『 』和『\0』待遇不同
輸入:i.love..you.... (len=15)
除錯時發現這個空格是在判斷i=14(倒數第二個空格)時輸出的,即在末尾 arr[14]=空格 而arr[15]='\0',
以至於做下面這個判斷時
if(arr[i]==' '&&arr[i+1]!=' '&&arr[i+1]!='\0')//空格+a
程式以為 ' '+'\0'也是空格+a的形式 ,cnt=0,直接輸出乙個空格
修改此條件 為下面這樣就可以了
if(arr[i]==' '&&arr[i+1]!=' '&&arr[i+1]!='\0')//空格+a
說反話 加強版
給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。測試輸入包含乙個測試用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文本母 大小寫有區分 組成的字串,單詞之間用若干個空格分開。每個測試用例的輸出佔一行,輸出倒序後的句子,並且保證單詞間只有1...
32 說反話 加強版
給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。測試輸入包含乙個測試用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文本母 大小寫有區分 組成的字串,單詞之間用若干個空格分開。每個測試用例的輸出佔一行,輸出倒序後的句子,並且保證單詞間只有1...
PTA 說反話 加強版
給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。測試輸入包含乙個測試用例,在一行內給出總長度不超過500 000的字串。字串由若干單詞和若干空格組成,其中單詞是由英文本母 大小寫有區分 組成的字串,單詞之間用若干個空格分開。每個測試用例的輸出佔一行,輸出倒序後的句子,並且保證單詞間只有1...