【发布时间】:2018-08-27 02:36:22
【问题描述】:
int A[5] = {2, 2, 1, 4, 1};
int max = A[0], min = A[0];
int k,l;
for (i = 0; i < 5; i++) {
if (A[i] >= max) {
max = A[i];
k = i;
}
}
for (j = 0; j < 5; j++) {
if (A[j] <= min) {
min = A[j];
l = j;
}
}
printf("densely is: %d ", k);
printf("\n");
printf("loosely is: %d ", l);
程序将densely (max) 的位置打印为3。
它将loosely (min) 的位置打印为4。
但是loosely(min)位置的正确答案应该是2和4。
在我的例子中,max 的数字是4,所以位置应该是3(从0 开始计算)。
min 编号为1,因此位置应为2 和4。
现在,我的代码只显示min 号码的一个位置:4。
它应该打印两个位置:2 和 4。
我想打印出max 和min 数字的所有位置。
【问题讨论】:
-
你为什么这么认为?该代码正在寻找最后一次出现的最大值和最小值。最大值为 4,最小值为 1。最后一次出现在索引 4(min) 和索引 3(max)。
-
您希望第一次出现吗?然后尝试
>代替>=和<代替<=。 -
我想打印出最大值和最小值的所有位置。在这种情况下,最大数量为 4,因此位置应为 3(从 0 开始计数)。最小数字是 1,所以位置应该是 2 和 4。现在我的代码只显示最小数字位置是 4。我想要的是它显示 2 和 4
-
这确实有助于理解您的问题。我建议在你的问题中解释这一点。使用edit 来做到这一点。这也有助于避免“松散”和“densley”这两个词引起的混淆。要么避免这些词,要么解释它们。
-
基本上,您可能希望输出多个关于最大索引的信息和多个关于最小索引的信息。您是否考虑过使用多个变量来存储这些变量?您可能需要在这两种情况下使用与数组中的成员一样多的变量,因为所有数组成员都可以包含最大值和最小值。