循环不工作

loop not working?

本文关键字:工作 循环      更新时间:2023-10-16

调用Back to Main Menu后,它返回到主菜单,但是当输入选项或命令时,该选项不被接受或循环不工作。想知道错在哪里?是要加上额外的电话吗?

#include <iostream>
using namespace std;
char mainMenu(void);
int factorial(int n);
unsigned long long combination(long nK, long nR);
int main(){
char option;
int shape,function,i,j,k,t,n;
long nK, nR;
unsigned long long COM;
while((option=mainMenu())!='0')
{
    switch(option)
    {
        case '1'://Program 1: 
            cout<< "*Drawing a shapen"
                << "(1-Rectangle, 2-Triangle, 3-Inverted Triangle, 4-Letter 'H', 0-Back to Main Menu)n";
            do
            {
                cout<< "Choose shape >> ";
                cin>> shape;
                cout<< endl;
                switch(shape)
                {
                    case 1: break;
                    case 2: break;
                    case 3: break;
                    case 4: break;
                    case 0:
                        //Back to Main Menu
                        cout<< "Back to main menun"
                            << endl;
                        return mainMenu();     //After here, it does back to Main Menu but command or option is not working 
                    }
            }while(shape!=0);
        case '2': //Program 2
            cout<< "*Choose function of calculatorn"
                << "(1-Factorial, 2-Combination, 0-Back to main menu)n";
            do
            {
                cout<< "Choose function >> ";
                cin>> function;
                cout<< endl;
                switch(function)
                {
                    case 1: break;
                    case 2: break;
                    case 0:
                        cout<< "Back to main menun"
                            << endl;
                        return mainMenu();
                }
            }while(function!=0);
        case '0':
            cout<< "Program is terminatingn"
                << endl;
            return 0;
        default:
            cout<< "Wrong input. Please choose one of the above options.n"
                << endl;
            return mainMenu();
    }
}
}
char mainMenu(void){
char option;
cout<< "##############################n"
    << "Main Menun"
    << "Enter your command!n"
    << "##############################n"
    << endl
    << "1. Program1n"
    << "2. Program2n"
    << "0. Exitn"
    << endl
    << "Command >> ";
cin>> option;
cout<< endl;
return option;
}

我不知道你的问题是什么,但是你的代码缺少2个重要的东西。首先,在每个case块的末尾需要break语句,否则程序流将继续到下一个case语句。

第二,内部菜单永远不会脱离内部while(1)循环。这是goto使用的一种可能情况,尽管在实践中最好重构代码,将顶部菜单和内部菜单分成两个函数,并在内部菜单中使用return返回到外部菜单。

我不知道你的问题是什么,但是你的代码缺少2个重要的东西。首先,您需要在每个case块的末尾使用break语句,否则程序流将继续执行下一个case语句。

第二,内部菜单永远不会逃离内部while(1)循环。这是goto使用的一种可能的情况,尽管在实践中最好重构代码,将顶部菜单和内部菜单分成两个函数,并在内部菜单中使用return返回到外部菜单。

如前所述,你的代码遗漏了很多东西。如果您分发整个代码,以及精确的错误消息和line. ,那将是非常棒的。

空值没有被忽略?…

…这不是很好的解释吗?

还有,你确定你包含了iostream吗?

#include iostream
也就是说,您没有声明程序中使用的任何变量。

您还在mainMenu()函数的第2行遗漏了一个空格。

还有,请告诉我们你期望发生什么。