Re: [問題] 有關利用陣列求出最大值與最小值??

看板C_and_CPP作者 (Devil)時間16年前 (2009/11/28 10:01), 編輯推噓8(8011)
留言19則, 12人參與, 最新討論串2/2 (看更多)
※ 引述《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

11/28 11:08, , 1F
我討厭 .NET ,為何要用express?
11/28 11:08, 1F

11/28 11:08, , 2F
Dev是很久沒人維護了,但是用來寫toy program有何問題?
11/28 11:08, 2F

11/28 11:08, , 3F
express 免費而已,就這麼簡單。
11/28 11:08, 3F

11/28 11:11, , 4F
wxDev-C++還不是一樣免費 講得好像只有微軟才送免費工具
11/28 11:11, 4F

11/28 11:12, , 5F
11/28 11:12, 5F

11/28 11:12, , 6F
為生物多樣化起見,上班以外最好不要看到微軟的東東
11/28 11:12, 6F

11/28 11:16, , 7F
我以為你在說討厭 Visual Studio .NET,為什麼要用exp版
11/28 11:16, 7F

11/28 11:19, , 8F
那個i, 程式後面需要看到終值的狀況其實不並少見吧@_@"
11/28 11:19, 8F

11/28 11:51, , 9F
for( int i... )的用法在C裡面不能用阿...
11/28 11:51, 9F

11/28 11:53, , 10F
C99 可以。
11/28 11:53, 10F

11/28 17:10, , 11F
好像有人很討厭M$, 那改推薦Eclipse好了=.,="汗
11/28 17:10, 11F

11/28 17:11, , 12F
我原意只是想建議他使用些還有人在維護的IDE罷了
11/28 17:11, 12F

11/28 17:13, , 13F
不過我想, 學程式最終還是要上班賺錢吧...VC還是建議低
11/28 17:13, 13F

11/28 17:16, , 14F
win下面用記事本,linux下面用cat就好了,用什麼dev-c++
11/28 17:16, 14F

11/28 17:23, , 15F
notepad++ XD
11/28 17:23, 15F

11/28 18:36, , 16F
寫小小程式用dev c++ 是可以啦,可是以後去工作...?
11/28 18:36, 16F

11/28 19:48, , 17F
.NET是.NET, 怎麼會跟express版的vs混在一起講...
11/28 19:48, 17F

11/28 20:14, , 18F
我還蠻喜歡 MSIDE 的, Compile linux 的程式還沒有什問題
11/28 20:14, 18F

11/29 16:57, , 19F
不過我想,要賺錢,最終還是不要學程式吧...
11/29 16:57, 19F
文章代碼(AID): #1B48IGZ_ (C_and_CPP)
文章代碼(AID): #1B48IGZ_ (C_and_CPP)