看板 C_and_CPP 關於我們 聯絡資訊
#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
VictorTom:試了一下才找到問題, max或者min都有可能有問題.... 04/02 00:19
VictorTom:你的max和min給初值的時候給了a[0], 問題是這時候a[0] 04/02 00:20
VictorTom:根本還沒有被輸入, 你不能保證裡面的值, 所以拿來當初值 04/02 00:20
VictorTom:是有問題的, 造成你後面的max或min的判斷都未必準確. 04/02 00:21
cosLove:樓上很眼熟 XD 04/02 00:21
ok77120:謝謝 跟我的想法一樣 我剛問過同學可是我聽不懂他想表達 04/02 00:21
ok77120:的意思. 04/02 00:21
VictorTom:假如a[0]一開始剛好值是-10,這個值會先被記錄在max和min 04/02 00:22
ok77120:謝謝 V大哩 我的min=max=a[m] 應該放在輸入完 04/02 00:22
ok77120:不然有加跟沒加是一樣的吧?! 04/02 00:22
VictorTom:接著我輸入5個數, 1 2 3 4 5, 你的min就最後一定是錯的. 04/02 00:22
VictorTom:一個是像你說的, 輸入完, 才做min=max=a[0]這樣.... 04/02 00:23
VictorTom:另一個常見作法, max給int最小值, 保證a[0]一定被換進來 04/02 00:23
VictorTom:相對的min給int最大值, 這樣保證min也會被換進a[0]. 04/02 00:24
VictorTom:說int是因為您的例子是int, 其他type就是其他range:) 04/02 00:24
VictorTom:恕小弟冒昧~~請問cosLove您是?_? 04/02 00:26
cosLove:不良牛的某z 04/02 00:27