在C中显示数组中的最大值

时间:2019-03-09 14:18:40

标签: c arrays

当我运行此程序时,ageProgMax排在第29位,而不是我想要的60位。我这样做的原因是,分析人员喝的咖啡厅数量最少,但它确实起作用了,但不知何故。

int main()
{
    char poste[] ={'P', 'P', 'O', 'A', 'P', 'A', 'P', 'P'};
    int nbCafe[] ={5, 1, 3, 0, 5, 1, 0, 2};
    int age[] ={25, 19, 27, 22, 49, 24, 60, 29};
    int nbPers = sizeof(age) / sizeof(int);
    int i;
    int ageProgMax = 0;
    for (i = 0; i < nbPers; i++)
        if (poste[i] =='P' || age[i] > ageProgMax)
        {
      ageProgMax = age[i];
        }
    printf ("Max age of programmers : %d\n", ageProgMax);

    return 0;
}

有帮助吗?

谢谢

2 个答案:

答案 0 :(得分:1)

这是由于||处于您的状况。查看您设置的条件,即if (poste[i] =='P' || (age[i] > ageProgMax))。它说如果ageProgMax(age[i] > ageProgMax)中的任何一个为真,则将新值存储到poste[i] =='P'中。因此,对于最后一个条目,即29,即使(age[i] > ageProgMax)为假,poste[i] =='P'也为true,并导致ageProgMax的{​​{1}}被覆盖。 60

您可以像这样纠正程序。

29

答案 1 :(得分:-1)

super.init()

在错误或指向最大int的指针上返回NULL。