第一次問,學習編程。
我試圖讓用戶輸入 1 到 8 之間的數字以在螢屏上列印出東西(高度),如果數字低于 1 或高于 8,我希望程式再次提示輸入而不是它退出并說“無效”。我知道我必須在頂部設定它,而在 C 的底部設定時,我的問題是當我有兩種可能的結果時,我將如何處理它,即太低或太高?
do {
int height = get_int(Height: ");
if (height < 1)
~ ~printf("invalid");
else if (height > 8)
~ ~printf("invalid");
} when(???????)
printf("valid")
uj5u.com熱心網友回復:
關鍵是邏輯運算子中的邏輯或運算子(||)。
邏輯運算子將:
- 將其運算元視為布林值
- 將非零值運算元視為
true - 將零值運算元視為
false
- 將非零值運算元視為
- 對其運算元進行布爾代數運算
- 回傳布爾代數結果
- 回傳
1真正的布爾結果 - 回傳
0錯誤的布爾結果
- 回傳
邏輯或運算子 ( ||) :
lhs || rhs
- 這里
lhs和rhs是 OR(||) 運算子的 2 個運算元 1如果以下任一條件為真 ,OR 運算子將回傳:- 只有
lhs是真的 - 只有
rhs是真的 - 兩者都是真實
lhs的rhs
- 只有
- 換句話說,如果其中一個
lhs或rhs為真,則布爾代數 OR 結果為真。
在您的示例中,有兩個條件:
- 高度小于 1
- 高度大于 8
如果其中任何一個為真,則結果為真(回圈將繼續),因此本例中的運算式為:
int height; /* move height outside the loop so it can be used in do-while condition */
do {
height = get_int();
if (height < 1)
printf("invalid\n");
else if (height > 8)
printf("invalid\n");
} while(height < 1 || height > 8);
printf("valid\n");
此外,由于我們已經在回圈中完成了邏輯條件,我們可以添加一個標志變數來代替:
int flag; /* record the boolean result */
do {
int height = get_int();
if (height < 1) {
printf("invalid\n");
flag = 1;
} else if (height > 8) {
printf("invalid\n");
flag = 1;
} else {
flag = 0; /* !(height < 1 || height > 8) */
}
} while(flag);
printf("valid\n");
uj5u.com熱心網友回復:
試試這個,看看它是否適合你。
如果沒有,請發表評論,告訴我你真正想要什么。
#include <stdio.h>
int main()
{
int height = 0;
while (height < 1 || height > 8) {
scanf("%d", &height);
if (height >= 1 && height <= 8) {
break;
} else {
printf("Invalid, please try again.\n");
}
}
printf("Valid.\n");
return 0;
}
uj5u.com熱心網友回復:
檢查用戶是否做出無效選擇的一種簡單方法是使用簡單的布爾變數,并在做出無效選擇時將其設定為“false”。
我已經修改了您自己的示例代碼以包含我的意思:
bool valid = true;
do {
valid = true; //reset valid to true at the beginning of the loop, otherwise it will remain false when the loop runs again
int height = get_int("Height: ");
if (height < 1)
valid = false; //set valid to false when an invalid choice is made
else if (height > 8)
valid = false; //set valid to false when an invalid choice is made
} while (!valid) //if valid is not true ( or ==false), repeat. If valid is true or not equal to false, don't repeat and continue to the print statement below.
print("valid");
請注意,我使用了get_int您在帖子中提供的相同功能。我不知道這個功能。有關讀取整數的方法(例如scanf),請參閱此執行緒中的其他答案。
uj5u.com熱心網友回復:
我希望這可以幫助你。
#include <stdio.h>
#include <stdlib.h>
int main() {
int num;
do {
printf("Enter 0 to quit\n");
printf("Print Enter number between 1 and 8\n");
scanf("%d",&num);
if (num > 8) {
printf("Number to high\n");
} else if (num < 0) {
printf("Number to low\n");
}
if (num == 0) {
printf("You quit the program goodby\n");
} else {
printf("Number within range\n");
}
} while(num != -0);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/424473.html
