用C语言数组最大值最小值碰到的问题

Jake peralta 2021-03-16 02:06:39
用C来写数组的最大值最小值 为什么添加了min=a[0]就可以求最小值 而max没有写也好使 为什么在都不写max=a[0] min=a[0] 的情况下 Max好使 min不好使 #define N 30 int main() { int a[N], min = 0, max = 0, i = 0, sum = 0, avg = 0; printf("请输入30名学生的成绩:"); for (i=0; i < N; i++) { scanf_s("%d", &a[i]); } for (i = 0; i < N; i++) { sum += a[i]; if (min > a[i]) { min = a[i]; } if (max < a[i]) { max = a[i]; } } avg = sum / N; printf("最大值=%d\n", max); printf("最小值=%d\n", min); printf("平均值=%d\n", avg); return 0; }
...全文
1758 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-03
  • 打赏
  • 举报
回复
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html
  • 打赏
  • 举报
回复
min 和 max的初始值都需要指定一个。
sichuanwww 2021-03-21
  • 打赏
  • 举报
回复
目标是消灭数组,直接求值 max min 函数直接求值
finalfantasy_xu 2021-03-21
  • 打赏
  • 举报
回复
min = max = a[0];是比较简单的初始话方法
six2me 2021-03-19
  • 打赏
  • 举报
回复
最好的办法是将第一个数据赋值给max和min,这样最保险。否则当你输入的值都是负值的时候,你如果将max=min=0,结果也会有问题吧
xiaoxiangqing 2021-03-19
  • 打赏
  • 举报
回复
快乐胖电工 2021-03-19
  • 打赏
  • 举报
回复
哈哈,比较,总要有个初始值嘛。
Jake peralta 2021-03-18
  • 打赏
  • 举报
回复
引用 15 楼 智者知已应修善业的回复:
学习编程能让人变得静思与反复推敲。
好的谢谢 懂了懂了
  • 打赏
  • 举报
回复
min的值是0,已经是非负数的最小值了。 int min = 100;
  • 打赏
  • 举报
回复
学习编程能让人变得静思与反复推敲。
  • 打赏
  • 举报
回复
就提问来说,数据类型是int应当知道有最大和最小的直接可以赋值INT_MIN,INT_MAX
引用 12 楼 Adorika 的回复:
[quote=引用 5 楼 智者知已应修善业的回复:]通常最大值初始化为最小,最小值初始化为最大即可。
那应该怎么写呢[/quote]
真相重于对错 2021-03-17
  • 打赏
  • 举报
回复
引用 11 楼 Adorika 的回复:
[quote=引用 3 楼 真相重于对错的回复:]因为你所有的数字都大于0,所以无法比较出来
做最大值最小值咋可能不大于零呢[/quote] 举个例子你就清楚了 比如你输入 1,2,3,4,5 所有值都比0大,那么这些值和0比较都大, 因此 if(min>a[i]) { 。。。。。 }//这个判断语句块永远不会执行。 循环结束后,min还是0
Jake peralta 2021-03-17
  • 打赏
  • 举报
回复
引用 5 楼 智者知已应修善业的回复:
通常最大值初始化为最小,最小值初始化为最大即可。
那应该怎么写呢
Jake peralta 2021-03-17
  • 打赏
  • 举报
回复
引用 3 楼 真相重于对错的回复:
因为你所有的数字都大于0,所以无法比较出来
做最大值最小值咋可能不大于零呢
Jake peralta 2021-03-17
  • 打赏
  • 举报
回复
引用 1 楼 赵4老师的回复:
#include <stdio.h>
#define N 30
int main()
{
    int a[N], min, max,  i, sum , avg;
    printf("请输入%d名学生的成绩\n",N);
    for (i=0; i < N; i++) {
        while (1) {
            printf("第%d名学生的成绩:",i+1);
            fflush(stdout);
            rewind(sstdin);
            if (1==scanf_s("%d", &a[i]) {
                if (0<=a[i] && a[i]<=100) break;
            }
            printf("输入格式错误!请重新输入\n",N);
        }
    }
    sum=0;
    min=max=a[0];
    for (i = 1; i < N; i++) {
        sum += a[i];
        if (a[i]<min) min = a[i];
        if (a[i]>max) max = a[i];
    }
    avg = sum / N;
    printf("最大值=%d\n", max);
    printf("最小值=%d\n", min);
    printf("平均值=%d\n", avg);
    return 0;
}
大佬 但是我们现在不用写这么 详细 感谢分享 十分有用
自信男孩 2021-03-16
  • 打赏
  • 举报
回复
min = max = a[0];

这句加上,初始化最大值和最小值。
要么就是按照楼上所说,把最大值定义成int能表示的最大正整数,min定义成int的最小值;
但是int在不同编译器里会有所不同,比如16位编译器和32位,64编译器里标识的位数不同;所以,还得考虑这个。
因此,min = max = a[0];是比较简单的初始话方法
  • 打赏
  • 举报
回复
我这样说才能令有所领悟,授之以渔。
赵4老师 2021-03-16
  • 打赏
  • 举报
回复
引用 5 楼 智者知已应修善业 的回复:
通常最大值初始化为最小,最小值初始化为最大即可。
此法不保险,且麻烦(对不同数值类型而言)。 个人意见,至少有一个数据的话,还是把最大值和最小值都初始化为第0个数据比较保险。
qzjhjxj 2021-03-16
  • 打赏
  • 举报
回复
楼主可以这样运行下代码,看看max min avg输出什么,找找感觉:
#define N 30
int main()
{
   int a[N], min, max, i, sum = 0, avg = 0;
   /*printf("请输入30名学生的成绩:");
   for (i=0; i < N; i++)
   {
     scanf_s("%d", &a[i]);
   }
   for (i = 0; i < N; i++)
  {
     sum += a[i];
     if (min > a[i])
     {
       min = a[i];
     }
     if (max < a[i])
     {
      max = a[i];
     }
   }
   avg = sum / N; */
   printf("最大值=%d\n", max);
   printf("最小值=%d\n", min);
   printf("平均值=%d\n", avg);
   system("pause");
   return 0;
}
最大值最小值比较大小,都是有限范围内的,值的大小也是相对的,是某一个范围内的大小,大小值肯定在特定区域内的一个,然后去比较。比如说去比较一个幼儿园小朋友的身高,如果设置初值:max=成人的身高,最后这个max还能找得到吗?
  • 打赏
  • 举报
回复
通常最大值初始化为最小,最小值初始化为最大即可。
加载更多回复(4)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧