编程论坛's Archiver

asdwwwwww 发表于 2008-5-12 10:47

请各位高手帮忙指点一下错误

菜鸟写了一个程序,找出一个数组的最大值和最小值。
但是输出总是不对,比如我输入1,2,3,4,5.
输出为min=4,max=2
原因一直没有找出来,请各位高手帮帮忙吧!!
谢谢!!!
float minage(float x[])     /*求最小值*/
{
int i,j;
float t;
for(j=0;j<4;j++)
{
  for(i=0;i<=5-j;i++)
          
  {
    if(x[i]>x[i+1])
        {
        t=x[i];
        x[i]=x[i+1];
        x[i+1]=t;
        }
  }
}
return(x[0]);
}

float maxage(float x[])     /*求最大值*/
{
int i,j;
float t;
for(j=0;j<4;j++)
{
  for(i=0;i<=5-j;i++)
          
  {
    if(x[i]>x[i+1])
        {
        t=x[i];
        x[i]=x[i+1];
        x[i+1]=t;
        }
  }
}
return(x[4]);
}

main()
{
int i;
float min,max;
float a[5];
printf("enter 5 numbers:\n");
for(i=0;i<=4;i++)
{
scanf("%f",&a[i]);
}
min=minage(a);
max=maxage(a);
printf("min=%f\n",min);
printf("max=%f\n",max);

}

mqh21364 发表于 2008-5-12 11:26

for(i=0;i<=5-j;i++)改成for(i=0;i<4-j;i++);否则j=0的时候i最大可以取到5,a[5]都越界了,别说a[6]了。

只是奇怪为什么程序不down掉。。。。。。

bianfeng 发表于 2008-5-12 12:33

找最大值和最小值,  排序?
如果是找最大值和最小值,弯就转得大了

asdwwwwww 发表于 2008-5-12 12:35

哈哈
果然好用了
就是这个问题
谢谢 mqh21364!!!!

mqh21364 发表于 2008-5-12 14:46

客气。。。[tk07] [tk07] [tk07]

yt414204458 发表于 2008-5-16 00:12

这个题做的好复杂啊,楼主是不是刚学了函数而做的题啊

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.