#包含?& ltstring.h & gt
使用?名稱空間?std
int?主()
{
夏爾。* t【5】;?//存儲在5個字符串中的地址指針
夏爾。* p;//記錄字符串地址的指針。
int?I、j、min
cout?& lt& lt?請輸入五個字符串?& lt& lt?endl
for(I = 0;?我& lt5;?i++)
{
t【I】?=?新的?char【20】;?//為字符串存儲申請空間。
cin嗎?& gt& gt?t【I】;?//輸入字符串
}
/*?心想:
?*?1.從當前字符串開始,與所有後續字符串進行比較,並查找最小的字符串(即按字母順序)
?*?應該是第壹個)字符串是第壹個字符串,則最小的字符串與
?*?當前字符串換位;
?*?2.從下壹個字符串繼續前面的操作,直到只剩下壹個字符串。
?*?(只剩下壹個字符串沒有什麽可比較的,所以下面的循環I是從0到0。
?*?4。)
?*/
for(I = 0;?我& lt4;?i++)
{
敏?=?我;?//假設第I個字符串是其余字符串中的第壹個字符串
?//位置最小。
為了什麽?(j = I+1;?j & lt5;?j++)//與當前字符串後第4個字符串的i+1進行比較。
如果?(strcmp(t【min,?t【j】)& gt;0)//如果t【j】小於目前找到的最小字符串,比如
敏?=?j;//Ming較小的字符串應該是t【j】,當前最小的字符串。
//位置應該更新為j,所以記錄j到min的位置,然後繼續。
//繼續看,?直到妳跳出循環
/*?跳出循環後,min是當前最小字符串的位置,那麽t【min】和t【I】交換位置?*/
/*?請註意,地址存儲在t【I】和t【min】中。只是交換地址嗎?*/
p=?t【I】;//將t【I】字符串的第壹個地址記錄到P指針。
t【I】?=?t【min】;//將t【min】字符串的第壹個地址賦給t【I】,t【I】中的原地址將被覆蓋。
t【min?=?p;?//將原始t【I】字符串的第壹個地址分配給t【min】
}
cout?& lt& lt?endl
for(I = 0;?我& lt5;?i++)//輸出字符串
cout?& lt& lt?t【I】?& lt& lt?endl
for(I = 0;?我& lt5;?i++)//可用空間
刪除?t【I】;
回歸?0;
}