[問題] 問一個 簡單的陣列問題

看板C_and_CPP (C/C++)作者 (阿超)時間16年前 (2009/04/02 00:06), 編輯推噓2(2015)
留言17則, 3人參與, 最新討論串1/1
#include<stdio.h> #define m 100 int main() { int i,k,max,min,a[m]; min=max=a[0]; printf("輸入陣列個數\n"); scanf("%d",&k); printf("\n*******intput*********\n"); for(i=0;i<=k-1;i++) { scanf("%d",&a[i]); } for(i=0;i<=k-1;i++) { printf("%d ",a[i]); } printf("\n找到最大 最小"); for(i=0;i<=k-1;i++) { if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } printf("\n*******output*********\n"); printf("\nMax is a %d\n",max); printf("\nMin is a %d\n",min); return 0; } 新手上路!! 不好意思 各位見笑 我不懂min為啥跑不出來 我問過同學他說我位置放錯 他有解釋給我聽 可是我天資愚笨 希望 大大 可以教 我一下 先說謝謝哩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.160.142

04/02 00:19, , 1F
試了一下才找到問題, max或者min都有可能有問題....
04/02 00:19, 1F

04/02 00:20, , 2F
你的max和min給初值的時候給了a[0], 問題是這時候a[0]
04/02 00:20, 2F

04/02 00:20, , 3F
根本還沒有被輸入, 你不能保證裡面的值, 所以拿來當初值
04/02 00:20, 3F

04/02 00:21, , 4F
是有問題的, 造成你後面的max或min的判斷都未必準確.
04/02 00:21, 4F

04/02 00:21, , 5F
樓上很眼熟 XD
04/02 00:21, 5F

04/02 00:21, , 6F
謝謝 跟我的想法一樣 我剛問過同學可是我聽不懂他想表達
04/02 00:21, 6F

04/02 00:21, , 7F
的意思.
04/02 00:21, 7F

04/02 00:22, , 8F
假如a[0]一開始剛好值是-10,這個值會先被記錄在max和min
04/02 00:22, 8F

04/02 00:22, , 9F
謝謝 V大哩 我的min=max=a[m] 應該放在輸入完
04/02 00:22, 9F

04/02 00:22, , 10F
不然有加跟沒加是一樣的吧?!
04/02 00:22, 10F

04/02 00:22, , 11F
接著我輸入5個數, 1 2 3 4 5, 你的min就最後一定是錯的.
04/02 00:22, 11F

04/02 00:23, , 12F
一個是像你說的, 輸入完, 才做min=max=a[0]這樣....
04/02 00:23, 12F

04/02 00:23, , 13F
另一個常見作法, max給int最小值, 保證a[0]一定被換進來
04/02 00:23, 13F

04/02 00:24, , 14F
相對的min給int最大值, 這樣保證min也會被換進a[0].
04/02 00:24, 14F

04/02 00:24, , 15F
說int是因為您的例子是int, 其他type就是其他range:)
04/02 00:24, 15F

04/02 00:26, , 16F
恕小弟冒昧~~請問cosLove您是?_?
04/02 00:26, 16F

04/02 00:27, , 17F
不良牛的某z
04/02 00:27, 17F
文章代碼(AID): #19qv3uEC (C_and_CPP)
文章代碼(AID): #19qv3uEC (C_and_CPP)