1wxhlovepython 发表于 2020-10-24 12:20:08

关于一维数组求最值问题

一维数组求最值问题,为什么求得出最大值,求不出最小值呢?

昨非 发表于 2020-10-24 12:35:38

发一下代码吧

1wxhlovepython 发表于 2020-10-24 12:45:30

昨非 发表于 2020-10-24 12:35
发一下代码吧

#include<stdio.h>
#define N 20
void main()
{
        int i;//下标索引
        int max,min;
        int a={58,58,69,100,120,78,99,77,55,24,188,102};
        double sum=a;
        max=min=a;
        for(i=1;i<N;i++)
        {
                if(a>max)
                        max=a;
                if(a<min)
                        min=a;

                sum +=a;

        }

        printf("max=%d,min=%d\n",max,min);
        printf("average=%.2lf\n",sum/N);

        getchar();
        return 0;

}

胡鸣谦 发表于 2020-10-24 12:48:36

#include<stdio.h>
#define N 20
int main()
{
      int i;//下标索引
      int max,min;
      int a={58,58,69,100,120,78,99,77,55,24,188,102};
      double sum=a;
      max=min=a;
      for(i=1;i<N;i++)
      {
                if(a>max)
                        max=a;
                if(a<min)
                        min=a;

                sum+=a;

      }

      printf("max=%d,min=%d\n",max,min);
      printf("average=%.2lf\n",sum/N);
      getchar();
      return 0;

}

1wxhlovepython 发表于 2020-10-24 12:55:46

胡鸣谦 发表于 2020-10-24 12:48
#include
#define N 20
int main()


a应该是a的,显示不出来,但是这样结果还是不对

昨非 发表于 2020-10-24 13:00:28

1wxhlovepython 发表于 2020-10-24 12:45
#include
#define N 20
void main()


原因在于,你的数组大小是20,只赋值了前面几个值,后面的都是0

昨非 发表于 2020-10-24 13:01:00

胡鸣谦 发表于 2020-10-24 12:48
#include
#define N 20
int main()


你这是个啥啊{:10_245:}

1wxhlovepython 发表于 2020-10-24 13:07:24

昨非 发表于 2020-10-24 13:00
原因在于,你的数组大小是20,只赋值了前面几个值,后面的都是0

我理解你的意思了,就是N=20的话,数组里面就有20个数,但是我只赋值了12个,后面就自动补零了。那如果我要定义一个不确定的数组,等待用户自行输入的话,又怎么宏定义N 的大小呢?

昨非 发表于 2020-10-24 13:17:40

1wxhlovepython 发表于 2020-10-24 13:07
我理解你的意思了,就是N=20的话,数组里面就有20个数,但是我只赋值了12个,后面就自动补零了。那如果我 ...

这个可能需要动态申请内存

昨非 发表于 2020-10-24 13:24:30

1wxhlovepython 发表于 2020-10-24 13:07
我理解你的意思了,就是N=20的话,数组里面就有20个数,但是我只赋值了12个,后面就自动补零了。那如果我 ...

#include<stdio.h>
#define N 20
void main()
{
        int i;//下标索引
        int max, min;
        int a = { 58,58,69,100,120,78,99,77,55,24,188,102 };
        double sum = a;
        max = min = a;
        for (i = 1; i < N; i++)
        {
                if (a > max)
                        max = a;
                if (a < min &&a!=0)   //加个这个可以得到正确答案
                        min = a;

                sum += a;

        }

        printf("max=%d,min=%d\n", max, min);
        printf("average=%.2lf\n", sum / N);

        getchar();

}

风过无痕1989 发表于 2020-10-24 13:27:17

本帖最后由 风过无痕1989 于 2020-10-24 13:48 编辑

6楼正解,你只初始化进数组12个值,还差8个呢,你再加8个在后面(或者在定义那里将20改为12),再看看

#include<stdio.h>
void main()
{
      int i,N;//下标索引
      printf("请确定数组大小: ");
                scanf("%d",&N);
      int a;
      int max,min;
        for(i=0;i<N;i++)
        {
                scanf("%d",&a);
        }
      double sum=a;
      max=min=a;
      for(i=0;i<N;i++)   // 数组是从0 开始的
      {
             if(a>max)
                  max=a;
             if(a<min)
                  min=a;

                sum +=a;
      }

      printf("max=%d,min=%d\n",max,min);
      printf("average=%.2lf\n",sum/N);


}
页: [1]
查看完整版本: 关于一维数组求最值问题