看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《asdf12345 (==)》之銘言: : 是最近小弟利用Dev-C++構寫一個陣列並利用函式寫出陣列中的最大與最小。 建議去抓個visual c++ express 2008來用 不用錢的... 別再用好幾年沒人維護的老舊編譯工具了 : #include<stdio.h> : #include<stdlib.h> : #define row 2 : #define col 3 : int number1(int [row][col]); : int number2(int [row][col]); : int main() : { : int a[row][col]={7,4,6, : 9,11,13}; 這裡這樣寫雖然沒錯, 編譯也會過, 用也能用 不過還是建議你改成 int a[row][col] = { {7, 4, 6}, {9, 11, 13}, } 人看起來, 比較清楚一點@@ : int i,j; : for(i=0;i<row;i++) : for(j=0;j<col;j++) : { : printf("最大值為%3d\n",a[i][j]); : printf("最小值為%3d\n",a[i][j]); : } 這迴圈你只窮取了整個陣列裡面的值出來 然後直接輸出, 根本沒做過判斷大小值的動作 你所寫的兩個函式, 也都沒有呼叫 還有就是, for迴圈我們一般這樣寫 for(int i = 0; i < row; i++) { } 不會把i的宣告拿到外面用 除非後面的程式需要看得見這個i的最終值 不過目前沒碰過這樣的需求就是了@@ 還有就是 在VC 2003以上的編譯器 你在同個函式 無論寫多少次 for(int i = 0; i < x; i++) { } 這樣的迴圈, i 值的生命週期 會始終被管控在自己的迴圈內 而像是VC6這類比較老的編譯器 i則會被沿用到這個函式結束為止 : system("pause"); : return 0; : } : int number1(int a[row][col]) : { : int max=0,i,j; : for(i=0;i<row;i++) : for(j=0;j<col;j++) : { : if (a[i][j]>max) : max=a[i][j]; : return max; : } 這裡的邏輯錯誤只有一個 就是return max的地方 這裡會寫成這樣 我相信是你還不懂return在函式裡面的意思 return max;真正的意思是: 結束這個函式, 並且迴傳max值 請把上面這行重複多看幾次, 你一return這函式就無條件結束了 而你的雙迴圈也因此才跑一圈就被打斷了 所以你怎樣也取不到你要的值 這個函式基本上你只要把return max;搬到雙for迴圈之外 這樣就會回傳正確的max值了 : } : int number2(int a[row][col]) : { : int min,i,j; : min=a[0][0]; : for(i=0;i<row;i++) : for(j=0;j<col;j++) : { : if (min>a[i][j]) : min=a[i][j]; : return min; : } : } 同number1 : 可以請大大教我說程式哪裡要改嗎? ^_^ !!! 最後建議你, 就算只是練習 也該開始戒掉使用無意義的名稱 無論是變數, 函式, 類別, 都一樣 多打幾個字而已, 死不了人的 當程式設計師還怕打字, 那...提早改行吧 (for這種迴圈例外, i, j, k, 這類的簡單名稱還是很讚低) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.133.240
MOONRAKER:我討厭 .NET ,為何要用express? 11/28 11:08
MOONRAKER:Dev是很久沒人維護了,但是用來寫toy program有何問題? 11/28 11:08
twotwoone:express 免費而已,就這麼簡單。 11/28 11:08
MOONRAKER:wxDev-C++還不是一樣免費 講得好像只有微軟才送免費工具 11/28 11:11
MOONRAKER:一樣  ̄σ ̄ http://wxdsgn.sourceforge.net/ 11/28 11:12
MOONRAKER:為生物多樣化起見,上班以外最好不要看到微軟的東東 11/28 11:12
twotwoone:我以為你在說討厭 Visual Studio .NET,為什麼要用exp版 11/28 11:16
VictorTom:那個i, 程式後面需要看到終值的狀況其實不並少見吧@_@" 11/28 11:19
qoozxc789:for( int i... )的用法在C裡面不能用阿... 11/28 11:51
tinlans:C99 可以。 11/28 11:53
devilarise:好像有人很討厭M$, 那改推薦Eclipse好了=.,="汗 11/28 17:10
devilarise:我原意只是想建議他使用些還有人在維護的IDE罷了 11/28 17:11
devilarise:不過我想, 學程式最終還是要上班賺錢吧...VC還是建議低 11/28 17:13
yoco315:win下面用記事本,linux下面用cat就好了,用什麼dev-c++ 11/28 17:16
hilorrk:notepad++ XD 11/28 17:23
ducksteven:寫小小程式用dev c++ 是可以啦,可是以後去工作...? 11/28 18:36
cole945:.NET是.NET, 怎麼會跟express版的vs混在一起講... 11/28 19:48
wowtiger:我還蠻喜歡 MSIDE 的, Compile linux 的程式還沒有什問題 11/28 20:14
yenchenlan:不過我想,要賺錢,最終還是不要學程式吧... 11/29 16:57