作者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