可以啊,給你寫了個完整的程序,為了比較好理解,就把循環(huán)分開寫了,實現(xiàn)就是這個意思,如果你想擴(kuò)展的話可以用宏定義來實現(xiàn)。
成都創(chuàng)新互聯(lián)電話聯(lián)系:18982081108,為您提供成都網(wǎng)站建設(shè)網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),成都創(chuàng)新互聯(lián)網(wǎng)頁制作領(lǐng)域十余年,包括玻璃鋼雕塑等多個行業(yè)擁有多年的網(wǎng)站設(shè)計經(jīng)驗,選擇成都創(chuàng)新互聯(lián),為企業(yè)錦上添花!
首先,你的程序邏輯有問題,在交換的時候,所有以對角線為中心的對稱元素交換了兩次,相當(dāng)于沒有交換;所以如果換成a[i][j]輸出的話,結(jié)果與沒有交換前的一樣。
你的變量n是個整數(shù)吧,a是個二維數(shù)組,那么a[i]就是個一維數(shù)組。你把數(shù)組賦給整數(shù)當(dāng)然無法通過啦。你把交換a[i]和a[j]的部分換成循環(huán),a[i][x]與a[j][x]這樣一個一個變量交換。
個人拙見:p= a 要改成 p = &a[0];指標(biāo)是指向記憶體位址,字串也是指向一串字元的指標(biāo),資料交換得靠復(fù)制。
scanf那行里的a[i][j]要寫成&a[i][j],輸入就正常的輸入就行了,其實scanf讀入數(shù)字的時候,數(shù)字可以用空格、回車或者TAB間隔,比如說一個2x2的數(shù)組,你輸入 10 11 12 13 或者輸入10 11 12 13都是可以的。
比如我們定義一個二維數(shù)組為A(i,j)那么在以后的編程中轉(zhuǎn)換為A(j,i)就可以了。其實可以這么轉(zhuǎn)換。比如我們要讓兩個數(shù)組即交換前和交換后的分開顯示。那么可以這樣寫。
1、使用memcpy直接將數(shù)組中的數(shù)據(jù)進(jìn)行交換。
2、你原代碼函數(shù)那樣寫是實現(xiàn)不了數(shù)組交換的,我用你的代碼小做修改。你看下吧。說明:^=只是利用異或來實現(xiàn)2個地址的數(shù)值交換,和你定義一個變量做交換是一個效果。
3、定義一個structcjtemp;然后就直接交換啊。我把那塊做成函數(shù),樓主直接調(diào)用吧,主函數(shù)就沒寫完整了。
4、將兩個數(shù)進(jìn)行互換的方法有兩種形式:借助中間變量完成,此方法直觀,易理解,使用最多 不需要中間變量,通過變量身的運算完成交換。
5、你這個只是試圖交換兩個數(shù)組的首地址,而數(shù)組的首地址是常量,不會交換成功的。你的swap中要用循環(huán)一次交換兩個數(shù)組的對應(yīng)元素才能實現(xiàn)你想要的功能。
你原代碼函數(shù)那樣寫是實現(xiàn)不了數(shù)組交換的,我用你的代碼小做修改。你看下吧。說明:^=只是利用異或來實現(xiàn)2個地址的數(shù)值交換,和你定義一個變量做交換是一個效果。
逐個元素交換即可。前提是兩個數(shù)組必須有同樣的長度 否則無法交換。
你這個只是試圖交換兩個數(shù)組的首地址,而數(shù)組的首地址是常量,不會交換成功的。你的swap中要用循環(huán)一次交換兩個數(shù)組的對應(yīng)元素才能實現(xiàn)你想要的功能。
樓主,數(shù)組是不能增加長度的,兩個不同大小的數(shù)組,小的可以傳給大的,大的怎么也放不下小的啊。
網(wǎng)站欄目:c語言中交換數(shù)組的函數(shù) c語言數(shù)組交換排序示例
網(wǎng)站網(wǎng)址:http://chinadenli.net/article44/dehcshe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、面包屑導(dǎo)航、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)