C无效菜单程序

标签 c

我不明白这个。 好吧,首先是代码。

#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,它就会退出。它应该清除屏幕并重复菜单,但它只是退出了??? 其他部分工作正常,但差异部分到底有什么问题? 你能找到任何错误或建议吗?我认为这与返回部分有关.. 我尝试了系统 PAUSE,但它除了暂停之外什么也没做,我不得不退出。

那么你认为这是什么问题? 提前致谢。

最佳答案

do...while 循环的条件是 while (choice != 3)difference() 对应选项 3。因此,如果选择 3,则运行 difference(),然后循环终止,程序结束。

关于C无效菜单程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19627057/

相关文章:

c - 预期为 ‘const char *’ 但 C 中的参数类型为 ‘char **’

c - execvp 找不到程序时返回错误

c - 快速排序,是否可以输出 N 维数组中的前 m 个排序值,从而比完整的 N 排序更快

c - 如何通过一个定时器捕获输入信号并生成pwm信号

c - 指针指向字符串时没有输出

c - 从 8 位数据中去除 C 中的奇偶校验位,后跟 1 个奇偶校验位

c - 带超时的 SetWindowPos/ShowWindow

c - 以编程方式验证 X509 证书和私钥匹配

更改传递指针的函数中的字符串

c - 如果我有一个整数值大于 1024 的文件描述符,select() 仍然可以处理它吗?