21:最長最短單詞
總時間限制:1000ms 記憶體限制:65536kb
描述輸入1行句子(不多於200個單詞,每個單詞長度不超過100),
只包含字母、空格和逗號。單詞由至少乙個連續的字母構成,
空格和逗號都是單詞間的間隔。
試輸出第1個最長的單詞和第1個最短單詞。
輸入一行句子。
輸出兩行輸出:
第1行,第乙個最長的單詞。
第2行,第乙個最短的單詞。
樣例輸入
i am studying programming language c in peking university
樣例輸出
programmingi提示
如果所有單詞長度相同,那麼第乙個單詞既是最長單詞也是最短單詞。
分析:這個題目思路是這樣:先用gets函式輸入整行字串a,然後掃瞄a串分割出各個單詞,依次比較新分割的單詞的長度是否比已經發現的單詞中最長、最短單詞還要長或短,若是有需要在更新一經發現的最長、最短單詞並更新最長、最短單詞的長度。
這裡關鍵是掃瞄、分割單詞。由於空格和逗號都是單詞的分隔符號,所以可以把他們兩種符號一起處理。掃瞄分割的過程需要用標誌性變數f。f=0表示當前遇到的分隔符(空格或逗號)是新單詞之前的分隔符; f=1表示當前遇到的分隔符前面有乙個剛剛掃瞄形成的單詞,也就是已經掃瞄分割出乙個單詞,需要對該單詞做處理(求長度newlen,用newlen和max、min比較)。注意:在處理完乙個單詞後需要把f重新設為0.
還要注意:輸入的串的開頭、結尾可能有分隔符,也可能沒有分隔符。所以末尾單詞不一定被拿來跟max和min作比較。需要在迴圈後單獨處理。
**如下:
1 #include2 #include3int main(int argc, char *ar**)424
if(newlennewlen; strcpy(mint,b); }
25 f=0
;26 j=0;27
}28}29
else
3035 i++;36}
3738
//處理末尾單詞
39 b[j]='\0'
;40 newlen=strlen(b);
41if(newlen>max)
42if(newlennewlen; strcpy(mint,b); }
4344 printf("
%s\n%s\n
",maxt,mint);
45return0;
46 }
輸入案例:
,,,,,,,,,,,,,,,,,,,,,, i am studying programming,,,,,, languagefff c in peking universityddddddd
輸出案例:
universitydddddddi
最長最短單詞
描述 輸入1行句子 不多於200個單詞,每個單詞長度不超過100 只包含字母 空格和逗號。單詞由至少乙個連續的字母構成,空格和逗號都是單詞間的間隔。試輸出第1個最長的單詞和第1個最短單詞。輸入一行句子。輸出兩行輸出 第1行,第乙個最長的單詞。第2行,第乙個最短的單詞。樣例輸入 i am studyi...
最長最短單詞
輸入1行句子 不多於200個單詞,每個單詞長度不超過100 只包含字母 空格和逗號。單詞由至少乙個連續的字母構成,空格和逗號都是單詞間的間隔。試輸出第1個最長的單詞和第1個最短單詞。一行句子。第1行,第乙個最長的單詞。第2行,第乙個最短的單詞。i am studying programming la...
1143 最長最短單詞
輸入1行句子 不多於200個單詞,每個單詞長度不超過100 只包含字母 空格和逗號。單詞由至少乙個連續的字母構成,空格和逗號都是單詞間的間隔。試輸出第1個最長的單詞和第1個最短單詞。一行句子。第1行,第乙個最長的單詞。第2行,第乙個最短的單詞。i am studying programming la...