位置1先和位置2比較,小的放在位置1。然後將1位置的號碼與3位置的號碼進行比較,小的放在1位置。。。與5號位的數字相比,1號位的數字最小。
位置2的編號與位置3的編號進行比較,較小的放在位置2。。。將位置2的編號與位置5的編號進行比較;
將位置3的編號與位置4的編號進行比較。將位置3的編號與位置5的編號進行比較;
將位置4的編號與位置5的編號進行比較;
所以循環的寫法應該是:
for(I = 0;我& ltTX;i++)
{
for(j = I+1;j & ltTX;j++)
{}
}
2.2.strcpy函數的參數是壹個char指針。
s是二維數組,s[j]代表某維1的指針。如果s[TX][100]={"abc "," def"},那麽s[0]指向' a ';S[1]指向“d”
Temp是壹個1維數組。temp[100]不是指針,是數據元素,而且因為定義了char temp[100],下標應該是0-99,妳已經過線了。1維數組的數組名代表數組的指針(具體概念請看書)。
所以應該寫成strcpy(s[j+1],temp)的形式。
3.妳的數據交換方法也不對。
用中間變量temp交換,比如數據a和b,妳要先把a放在temp裏,然後把b賦給a,再把temp賦給b。
而妳是strcpy (s [j+1],temp[100]);。//意外地先將temp賦給s。
4.修改後的代碼如下:
#定義TX 5//同學
int main(int argc,char* argv[])
{
char s[TX][100],temp[100];
int max,I,j;
for(I = 0;我& ltTX;i++)
{
gets(s[I]);
}
for(I = 0;我& ltTX;i++)
{
for(j = I+1;j & ltTX;j++)
{
if((strcmp(s[i],s[j])& gt;0))
{
strcpy(temp,s[I]);//這裏是交易所。
strcpy(s[i],s[j]);
strcpy(s[j],temp);
}
}
}
Printf("排序後的結果是:\ n ");
for(I = 0;我& ltTX;i++)
{
printf("%s\n ",s[I]);
}
系統(“暫停”);
返回0;
}