平常心丿 发表于 2022-4-17 14:18:36

兄弟们看一下程序哪里出现了问题,无法正确输出最大值

/*
编写一个程序,输入a、b、c三个值,输出其中最大值。
输入:一行数组,分别为a b c
输出:a b c其中最大的数
*/

#include <stdio.h>
#define NUM 3

double Max_Array(double array);

int main()
{
        double Array;
        for(int i = 0; i < NUM; i++)
        {
                printf("请输入第%d个数:", i + 1);
                scanf("%lf", &Array);
        }
        printf("您输入的数字分别为");
        for(int i = 0; i < NUM; i++)
        {
                printf("%.2lf ", Array);
        }
       
        printf("其中最大的数字为:");
        Max_Array(Array);
       
        return 0;
}

double Max_Array(double array)
{
        double max;
        for(int i = 0; i < NUM; i++)
        {
                max = array;
                if(max < array)
                {
                        max = array;
                }
        }
        return max;
}

傻眼貓咪 发表于 2022-4-17 14:53:22

#include <stdio.h>

int max(int, int);

int main() {
        int a, b, c;
        scanf("%d%d%d", &a, &b, &c);
        printf("%d", max(max(a, b), c));
        return 0;
}

int max(int a, int b) {
        return a > b ? a : b;
}

风车呼呼呼 发表于 2022-4-17 17:02:11

你把max = array;放在循环里面,岂不是每次循环都重置了max,循环最后实际上得到的不过是第一个元素和最后一个元素比较得出的最大值
for(int i = 0; i < NUM; i++)
      {
                max = array;
                if(max < array)
                {
                        max = array;
                }
      }

yzzc 发表于 2022-4-17 21:10:00

double Max_Array(double array)
{
      double max; max = array;   //移这里来
      for(int i = 0; i < NUM; i++)
      {                                        //在里面他每次都是array
               
                if(max < array)      //这里比较总是是array比较
                {
                        max = array;
                }
      }
      return max;
}
所以你程序最后会报错
页: [1]
查看完整版本: 兄弟们看一下程序哪里出现了问题,无法正确输出最大值