#include <stdio.h>
int max_of_four(int, int, int, int);
int main() {
int a, b, c, d;
printf("Enter 4 numbers -");
scanf("%d %d %d %d", &a, &b, &c, &d);
int ans = max_of_four(a, b, c, d);
printf("%d", ans);
return 0;
}
int max_of_four(int a, int b, int c, int d) {
int greatest, i = 0;
int num[4] = { a, b, c, d };
greatest = num[0];
while (i >= 3) {
if (greatest <= num[i]) {
greatest = num[i];
}
i ;
}
return greatest;
}
所以我嘗試使用 for 回圈將每個數字與變數進行比較greatest
。
但是最大整數的答案總是第一個整數。
uj5u.com熱心網友回復:
在max_of_four
:
while (i >= 3)
永遠不會是真的,因為您從i
0開始,并且 0 不大于或等于 3。也許您的意思是while (i <= 3)
,但您通常會使用for
而不是撰寫此回圈while
:
for (int i = 0; i < 4; i )
if (greatest <= num[i]) greatest = num[i];
uj5u.com熱心網友回復:
問題在于while
回圈條件。條件應該是while(i<=3)
。
int max_of_four(int a,int b ,int c, int d) {
int greatest,i = 0;
int num[4] = {a, b, c, d};
greatest = num[0];
while(i <= 3) {
if(greatest <= num[i]) {
greatest = num[i];
}
i ;
}
return greatest;
}
uj5u.com熱心網友回復:
測驗while (i >= 3)
不正確,你可能打算寫這個:
while (i <= 3)
請注意,for
回圈更具可讀性,因為您可以將 的初始化、測驗和增量分組在i
一行中:
for (i = 0; i <= 3; i ) {
if (greatest <= num[i]) {
greatest = num[i];
}
}
另請注意,使用i < 4
而不是i <= 3
使陣列長度更明顯更一致。
此外,您不需要具有 4 個條目的陣列:3 個條目就足夠了,因為您greatest
已經初始化為第一個值。
這是一個修改后的版本:
int max_of_four(int a, int b, int c, int d) {
int greatest = a;
int num[3] = { b, c, d };
for (int i = 0; i < 3; i ) {
if (greatest < num[i]) {
greatest = num[i];
}
}
return greatest;
}
最后,構造一個陣列來確定 4 個整數中的最大值有點過頭了。如果您必須使用for
回圈,您可以將 3 個簡單的測驗包裝成一個虛擬for
陳述句:
int max_of_four(int a, int b, int c, int d) {
for (;;) {
if (a < b) a = b;
if (c < d) c = d;
if (a < c) a = c;
return a;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/402163.html
上一篇:為什么這個for回圈有一個i計數器,當在Python上附加影像時,它從1跳到10?PIL相關
下一篇:R和Python中的雙回圈