在数组中查找最大值和最小值的情况。我们初始化max =0
或max=temp[0];
但是在最小值的情况下,我们不需要初始化min =0
或min=temp[0]
...为什么?C查找最大值和最小值?
回答
首先,你不应该在任何情况下初始化max
与0
(例如,寻找最大的数组,如果你初始化max
与0
包含所有负值时,结果总是0
)。由于为了找到最大值(和最小值),需要将变量max
(或min
)与其他值进行比较,无论如何您都需要初始化为temp[0]
,以避免将数组元素与未初始化的变量进行比较。
我发现了另一个评论你的代码的一部分:
#include<stdio.h>
int main() {
int arr[3];
int i,max,min; max=min=0;
printf("Enter the value in Array \n");
for(i=1;i<=3;i++) {
scanf("%d",&arr[i]);
}
printf("\n Value of array \n");
for(i=1;i<=3;i++) { printf("%d \n",arr[i]); }
printf("\n Finding Maximum and minimum value \n");
for(i=1;i<=3;i++) {
if(arr[i]>max) max=arr[i];
if(arr[i]<min) min=arr[i];
}
printf("Max = %d \n Min = %d \n ",max,min);
getch();
}
有不工作几件事情:
for(i=1;i<=3;i++)
在C,索引从0开始的,所以有效数组元素是arr[0]
,arr[1]
和arr[2]
,使得对于回路应
for(i = 0; i < 3; i++)
好了,现在想象你在你的数组元素10,5和7
你最小值设置为0:
max=min=0;
现在你迭代这个循环:
for(i=0;i<3;i++) {
//...
if(arr[i]<min) min=arr[i];
}
是10 < 0
?不,这不对。
是5 < 0
?不,这不对。
是7 < 0
?不,这不对。
所以你看,min永远不会改变。
为了避免这种情况,只需将其设置为第一要素后读取数组:
for(i= 0;i < 3;i++) {
scanf("%d",&arr[i]);
}
min = max = arr[0];
现在,让我们重申我们的循环:
for(i=0;i<3;i++) {
//...
if(arr[i]<min) min=arr[i];
}
是10 < 10
?不,这不对。
是5 < 10
?是的!将分钟设置为5
是7 < 5
?不,这不对。
现在min
是你在与最大的现有代码有5
同样的问题。想象一下,你输入-4
,-55
和-20
元素 - max
将始终保持0
。
“我做到了。最大= 0和最大[0]都工作正常.. 但我做同样的事情,它不工作.... –
@Manojrawat然后请告诉我们你是如何做到了 - 包括在问题中的代码示例。 –
@Manojrawat好的,在评论中找到了代码,请参阅更新后的帖子 –
在访问它们之前,您总是需要在C中初始化变量;它的未定义行为不是。要做的最好的事情是,检查数组长度不为零,是将min
/max
初始化为第零个元素。然后从第一个元素开始循环。
*访问*未初始化变量的值只是未定义行为 –
@Ol Charlesworth;好点 - +1 - 我已经修改我的回答。 – Bathsheba
max = temp[0]
作为参考点。您将开始比较每个元素,如果有任何元素大于此值,max
值将更新为该值。类似min = temp[0]
也是有效的,但现在算法将被改变,并且如果有人比这更小,则需要比较每个元素,如果是,则min
将被更新为那个。
#include
@Manojrawat问题列表(1)没有什么像标准中的'void main'它是'int main '。 (2)你正在访问出界。一个由三个元素组成的数组只会在第一个和第二个位置处有值。所有循环都从1到3意味着一个[3]实际上是第四个位置。 (3)用数组的第一个元素而不是零初始化'max'和'min'。应该有一些小于零的值来处理你的if条件。 –
- 1. 查找最大值和最小值
- 2. 查找最小值和最大值
- 3. 查找最小值和最大值JAVA
- 4. 查找最大,最小和中间值
- 5. 在C中查找最小值和最大值(while循环)
- 6. 查找最大值/最小值
- 7. 查找最小值的最大值
- 8. 查找局部最小值/最大值
- 9. SQL查询 - 查找日常最小值,最大值和时间的最小值和最大值发生
- 10. 查找值的平均值,最大值和最小值进入
- 11. 在Java中查找num值和最小值/最大值值
- 12. 计算最小值和最大值C#
- 13. 最小值和最大值C++
- 14. 重置最大值和最小值C#
- 15. SQL查询最大值和最小值
- 16. 在bigquery中查找多个值的最小值和最大值
- 17. 查找平均值,最小值,最大值和范围
- 18. 在F#中查找最大值,最小值和平均值#
- 19. MongooseJS查找最大值,最小值和平均值
- 20. 查找最大值和最小值为偶数和奇数
- 21. 最大值和最小值?
- 22. 查找最大群集的最小值?
- 23. 在C++中查找矩阵的最大值,最小值和平均值
- 24. 找到一个DataTable使用C#的最大值和最小值
- 25. 找到最大值和最小值的C++函数
- 26. 查找本地最小值最小值
- 27. Unix脚本 - 查找最小值和最大值(Bash Shell)
- 28. 使用CUBLAS查找最大值和最小值
- 29. 在WPF DataGrid列中查找最大值和最小值
- 30. 查找堆栈中的最大值和最小值
初始化'min = 0'可能不是很有帮助... –
http://mattgemmell.com/2008/12/08/what-have-you-tried/ – SJuan76