盡管所有條件都已滿足,為什么該程式給出結果 0 或垃圾值?
在我閱讀時,可以在沒有 else 子句的情況下撰寫 if...else。
// 程式尋找三個給定數字中最大的一個
#include <stdio.h>
int main()
{
int a, b, c, big;
printf("Enter three given numbers : ");
scanf("%d%d%d", &a, &b, &c);
// if (1>2) (1>3) (2>3)
if (a > b) // 1>2
{
if (a > c)
big = a;
else
big = c;
}
printf("The largest numnber is = %d",big);
return 0;
}
uj5u.com熱心網友回復:
為了更清楚地說明這個 if 陳述句
if (a > b) // 1>2
{
if (a > c)
big = a;
else
big = c;
}
可以重寫為
if (a > b) // 1>2
{
//.. unimportant
}
前提a是不大于b。也就是說,在這種情況下,代表復合陳述句的 if 陳述句的子陳述句將無法獲得控制權。結果變數big不會被初始化。
您的程式可能如下所示
#include <stdio.h>
int main( void )
{
int a = 0, b = 0, c = 0, big;
printf( "Enter three numbers: " );
scanf( "%d %d %d", &a, &b, &c );
if ( !( a < b ) && !( a < c ) )
{
big = a;
}
else if ( !( b < c ) )
{
big = b;
}
else
{
big = c;
}
printf( "The largest number is = %d\n", big );
return 0;
}
注意用戶可以輸入例如三個彼此相等的數字。
uj5u.com熱心網友回復:
你錯過了這個分支false:
if (a > b)
big 然后將保持未初始化并具有不可確定的值。
要僅使用兩個比較來捕獲所有組合,您可以這樣做:
if (a > b) big = a;
else big = b;
if(c > big) big = c;
更一般的形式:
int arr[...] = {filled with values};
big = arr[0];
for(size_t i = 1; i < sizeof arr / sizeof *arr; i) {
if(arr[i] > big) big = arr[i];
}
uj5u.com熱心網友回復:
我的最簡單解決方案的兩美分:
#include <stdio.h>
int main()
{
int big, b, c; // only need 3 variables
printf("Enter three given numbers : ");
// should check this return value
scanf_s("%d%d%d", &big, &b, &c); // assume first value entered is largest
if (b > big) big = b; // b larger? reassign
if (c > big) big = c; // c larger? reassign
// big is now the largest number entered
printf("biggest number is %d\n", big);
return 0;
}
uj5u.com熱心網友回復:
從邏輯上講,您的程式不正確。在if你應該使用之后else。
在您的程式中,當您輸入數字 {1,2,3} 時,big永遠不會被初始化。但是,如果您輸入 {3,2,1} 它將輸出正確的結果。
#include <stdio.h>
int main()
{
int a, b, c, big;
printf("Enter three given numbers : ");
scanf_s("%d%d%d", &a, &b, &c);
if (a > b)
{
if (a > c)
big = a;
else
big = c;
printf("The largest numnber is = %d", big);
}
else
printf("The largest numnber is not detected");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/325773.html
上一篇:撲朔迷離。NoSuchMethodError。方法'[]'被呼叫在null上。接收者:null試著呼叫。[]("User")
下一篇:當把Firebase集成到Vue.js2時,出現了'未發現的型別錯誤:firebaseApp.firestore不是一個函式'。
