2013-10-28 16 views
1

我不明白這一點。嗯,這是代碼,首先。C void菜單程序

#include <stdio.h> 

void load_menu(void); 
void sum(void); 
void product(void); 
void difference(void); 
void rest(void); 

int main(int argc, char** argv) 
{ 
load_menu(); 
return 0; 
} 

void load_menu(void) 
{ 
int choice; 

do 
{ 
    printf("Menu\n\n"); 
    printf("1. Sum\n"); 
    printf("2. Product\n"); 
    printf("3. Difference\n"); 
    printf("4. Rest\n"); 
    printf("5. Exit(Bad choice)\n"); 
    scanf_s("%d", &choice); 

    switch (choice) 
    { 
    case 1: sum(); 
     break; 
    case 2: product(); 
     break; 
    case 3: difference(); 
     break; 
    case 4: rest(); 
     break; 
    case 5: printf("Quitting program!\n"); 
     system("PAUSE"); 
     exit(0); 
     break; 
    default: printf("Invalid choice!\n"); 
     break; 
    } 

    } while (choice != 3); 

} 

    void sum(void) 
    { 
     int num1, num2; 
     int ch; 

     printf("Enter number 1: "); 
     scanf_s("%d", &num1); 
     printf("Enter number 2: "); 
     scanf_s("%d", &num2); 

     printf("\nThe sum of the numbers was: %d", num1 + num2); 


     while ((ch = getchar()) != '\n' && ch != EOF); 

     printf("\n\nPress ENTER to continue."); 
     while ((ch = getchar()) != '\n' && ch != EOF) 
     ; 

system("cls"); 
return; 
} 

    void product(void) 
    { 
    int num1, num2; 
    int ch; 

    printf("Enter a number 1: "); 
    scanf_s("%d", &num1); 
    printf("Enter number 2: "); 
    scanf_s("%d", &num2); 

    printf("\nThe product of the numbers was: %d", num1 * num2); 

    while ((ch = getchar()) != '\n' && ch != EOF); 

    printf("\n\nPress ENTER to continue."); 
    while ((ch = getchar()) != '\n' && ch != EOF) 
     ; 

system("cls"); 
return; 
} 

    void difference(void) 
    { 
    int num1, num2; 
    int ch; 

    printf("Enter a number 1: "); 
    scanf_s("%d", &num1); 
    printf("Enter a number 2: "); 
    scanf_s("%d", &num2); 

    printf("\nThe difference of the numbers was: %d", num1 - num2); 

    while ((ch = getchar()) != '\n' && ch != EOF); 

    printf("\n\nPress ENTER to continue."); 
    while ((ch = getchar()) != '\n' && ch != EOF) 
    ; 

system("cls"); 
return; 
} 

    void rest(void) 
    { 
    int ch; 
    printf("Sleepy sleepy... zZZzZzZz\n"); 
    printf("You now feel awake again!\n"); 


    while ((ch = getchar()) != '\n' && ch != EOF); 

    printf("\n\nPress ENTER to continue."); 
    while ((ch = getchar()) != '\n' && ch != EOF) 
    ; 

system("cls"); 
return; 
} 

但問題是,在「差異部分」,它完成計算後,它只是退出,如果我按Enter鍵。它應該清除屏幕並重復菜單,但它只是退出? 其他部分工作正常,但差異部分出了什麼問題? 你能找到任何錯誤或建議嗎?我認爲這是迴歸部分.. 我試過系統暫停,但它什麼也沒做,只是暫停,我不得不退出。

那麼你認爲這是什麼問題呢? 在此先感謝。

+2

'while(choice!= 3);'你確定3是正確的值嗎? – Mat

+0

OH所以這是一個問題?好的,我會嘗試修復它。 – James

+0

哦謝謝..它的工作。我用其餘的4取而代之。再次感謝。 – James

回答

4

條件您do ... while循環是while (choice != 3)difference()對應選擇3。因此,如果選擇3,difference()運行,然後循環結束,結束程序。

+0

謝謝。是的,這是問題,所以我用4替換3。並且程序運行良好。 – James