在數組中查找最大值和最小值的情況。我們初始化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