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