#包含?& 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],當前最小的字符串。
//position要更新到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;
}