當前位置:成語大全網 - 書法字典 - c語言,字數組交換;我是新手,解決!

c語言,字數組交換;我是新手,解決!

1.使用冒泡對數字進行排序,例如位置1、位置2、位置3、位置4和位置5***5。

位置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;

}