当我运行此程序时,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;
}
有什么帮助吗?
谢谢
最佳答案
这是因为||
处于您的状况。查看您设置的条件,即if (poste[i] =='P' || (age[i] > ageProgMax))
。它说如果ageProgMax
或(age[i] > ageProgMax)
都为true,则将新值存储到poste[i] =='P'
。因此,对于最后一个条目,即29
,即使(age[i] > ageProgMax)
为false,poste[i] =='P'
也为true,并导致ageProgMax
的60
被29
覆盖。
您可以像这样纠正程序。
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;
}
关于c - 在C中显示数组中的最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55078258/