C語言,VC6 0,程式功能是轉置行列式,請問大佬們怎麼修改呢???

時間 2021-06-01 14:24:38

1樓:行者隨緣

這個錯誤可能只是現階段報出來的,改完以後可能還會有別的錯誤。

首先,你的函式在定義的時候void Transpose (a,n)應該有型別名,比如int n等等。

其次,功能上也有問題,轉置矩陣的兩重for迴圈也有問題,i應該從0開始迴圈,而不是1。否則第一行的數字沒法轉置。

再次,這個函式功能叫轉置矩陣,行列式是只是乙個數字,不存在轉置一說。

最後,說說為啥會報這個問題。因為C語言的二維陣列傳參時必須要指定列寬。因為二維陣列在記憶體裡實際上是連續儲存的,a[0][0]和a[1][0]之間的記憶體實際上差了100*sizeof(int)這麼多個位元組,如果在傳參時不指定列寬,編譯器怎麼知道a[1][0]相對於首位址的偏移呢?

所以你非要在函式裡使用二維陣列有三個辦法:

【最簡單】使用全域性變數,反正你的a是全域性定義的,乾脆別傳參了,直接在函式裡訪問全域性變數。這種做法雖然在大型程式裡很不推薦,但是反正你的程式很短,功能簡單,也無妨。

【比較簡單】傳參的時候傳乙個二維陣列,並把形參寫成void Transpose (int a[100], int n);關鍵在於你必須指定第二個中括號中的100

【最麻煩】把a定義為指標陣列,a的每個成員都是指標(陣列指標)。每個a的成員都指向乙個長度為100的一位陣列,然後傳參的時候傳乙個int **a就可以了。

給乙個你如何傳遞二維陣列的example

#include

#include

void func(int a[100])

int main()

PS:你的程式我沒跑,可能還有別的問題肉眼沒看出來,慢慢除錯吧,有問題再追問

vc6 0真的那麼差嗎?

已登出 別說放在VC6的那個年代,就說xp時代,vc6都是水平比較高的乙個軟體,關鍵問題是那個時代已經過去了,放到現在,這是乙個落伍的軟體,從使用習慣到語言規範到相容性都很落後。二級C語言都換成VS2010學習版了,除了個別臭名昭著的教材,很多教材在從新編輯的時候都放棄了vc6,換用VS2010並且...

vs2019可以替代vc6 0嗎?

呵呵哈哈捂臉熊 看是 你想學C語言 還是 你要學C語言 前者你自己會有足夠的動力學習新知識,建議選擇其他教材 後者建議老老實實跟著老師步驟走,考試拿個高分走人 普通少年pro max 可以是可以,但VS其實主要還是面向大型工程的,並且夾帶了不少微軟自己的私貨,經常會對初學者造成困擾。初學者建議你使用...

VS 2010 和 VC 6 0 有什麼區別,感覺 VC 用起來更簡單,VS 好複雜?

小小羅 vs消滅了大括號不寫在下一行的異端 至少我是被消滅了我用vs寫c 程式,大括號自動換 初學程式設計的時候用的是vc,當時嘗試過用vs,感覺 愛瑪vs怎麼這麼難用 當時學的是c,也就寫點基本語法的程式。現在寫帶介面的程式,vs真的太好太好用了 對於一些技術上的問題,留給其他的大牛來回答,我就負...