Re: [問題] 有關利用陣列求出最大值與最小值??
※ 引述《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
11/28 11:08, 1F
→
11/28 11:08, , 2F
11/28 11:08, 2F
推
11/28 11:08, , 3F
11/28 11:08, 3F
→
11/28 11:11, , 4F
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
11/28 11:16, 7F
推
11/28 11:19, , 8F
11/28 11:19, 8F
推
11/28 11:51, , 9F
11/28 11:51, 9F
→
11/28 11:53, , 10F
11/28 11:53, 10F
→
11/28 17:10, , 11F
11/28 17:10, 11F
→
11/28 17:11, , 12F
11/28 17:11, 12F
→
11/28 17:13, , 13F
11/28 17:13, 13F
→
11/28 17:16, , 14F
11/28 17:16, 14F
推
11/28 17:23, , 15F
11/28 17:23, 15F
推
11/28 18:36, , 16F
11/28 18:36, 16F
推
11/28 19:48, , 17F
11/28 19:48, 17F
推
11/28 20:14, , 18F
11/28 20:14, 18F
→
11/29 16:57, , 19F
11/29 16:57, 19F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):