我已經看過以前在stackoverflow上提出的問題,但這是我第一次問,所以我提前道歉任何格式錯誤。我已經在C編程上花了大約一個月的時間,我已經給了一個任務,在我的主函數中使用do/while循環來循環一個displayMenu(),它允許用戶輸入1, 2或3顯示某個信息塊。C:我如何在代碼中打破這個循環?
int main(void)
{
int option = 0;
do
{
option = displayMenu();
}
while (option == displayName() || displayColor() || displayFood());
}
//Display the menu for choosing an option or exiting the program
int displayMenu()
{
int choice = 1;
while (choice == 1 || 2 || 3)
{
puts("Choose which piece of information you would like to know:");
printf("%s", "1 - My name, 2 - My favorite color, 3 - My favorite food\n");
printf("%s", "Or type in any other number to exit the program: ");
scanf("%d", &choice);
puts("");
if (choice == 1)
displayName();
if (choice == 2)
displayColor();
if (choice == 3)
displayFood();
}
return choice;
}
現在,我確定這個錯誤是在這兩個方法中的某個地方,但爲了以防萬一,我發佈了顯示方法。
//Function to display my name
int displayName()
{
int value = 1;
puts("My name is x.\n");
return value;
}
//Function to display my favorite color
int displayColor()
{
int value = 2;
puts("My favorite color is y.\n");
return value;
}
//Function to display my favorite food
int displayFood()
{
int value = 3;
puts("My favorite food is z.\n");
return value;
}
如果用戶輸入1,2或3,程序會正確顯示信息並循環提示用戶再次輸入另一個值。但是,如果輸入任何其他號碼,則程序會再次提示用戶輸入值,而應該關閉程序。 我在做什麼錯?我試圖前三if語句後面插入
else return choice;
,因爲我認爲這將需要打破循環,但沒有奏效。這與我的條件有關嗎?我不確定自己的條件是否正確,(關於==和||優先級和什麼),所以如果有人能夠澄清這點,它會很好。 我知道可能有更高效的方法來執行這個程序,但我僅限於我在課堂上教過的東西,這實際上不僅僅是我編寫的東西。
爲什麼人們不檢查'scanf'的返回值?這是一個集體失憶症/ –
@edrodriguez - 什麼是「maaag」? –
@edrodriguez - 只是好奇你爲公平的性行爲輸入了什麼內容 –