最長最短單詞

2021-09-21 16:52:01 字數 1492 閱讀 1385

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 #include

3int 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

輸出案例:

universityddddddd

i

最長最短單詞

描述 輸入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...