如果我已完成当前功能,如何选择继续执行其他功能?

时间:2016-04-18 05:56:14

标签: c++ function

而不是在第一个" 1"之后立即结束程序,如何选​​择继续执行另一个功能?类似于再次显示菜单以选择其他功能。示例:2或3

#include <stdio.h>

int testing(); int rewarding(); int buying();

void main()
{
    int menu;

    printf("Enter 1 for testing:\n");
    printf("Enter 2 for rewarding:\n");
    printf("Enter 3 for buying:\n");
    scanf("%d", &menu);

    if (menu == 1) {       //first function
        testing();
    }

    else if (menu == 2) {    //second function
        rewarding();
    }

    else if (menu == 3) {    //third function
        buying();
    }

    system("pause");
}

testing() {
    printf("this is the first function\n"); // proceed to selection menu to choose another function when first function is completed
    return(0);
}

rewarding() {
    printf("this is the second function\n");
    return (0);
}

buying() {
    printf("this is the third function\n");
    return(0);
}

3 个答案:

答案 0 :(得分:0)

在一段时间(真实){...}循环中包裹您的菜单和函数调用内容,并进行第四个菜单输入以退出&#39;和其他代码if(menu == 4){break; }

示例:

#include <iostream>

int main(int argc, char **argv)
{
    while(true)
    {
        int menu;
        std::cout << "Press (1) FuncA, (2) Func B, (3) Func C or (4) Quit" << std::endl;
        std::cin >> menu;
        if (menu == 1)
            testing();
        else if (menu == 2)
            rewarding();
        else if (menu == 3)
            buying();
        else if (menu == 4)
            break;
        else
            std::cout << "Please press 1, 2, 3 or 4" << std::endl;
    }
    return 0;
}

&#34;休息&#34;语句立即取消while()循环并退出应用程序。所有其他选择执行相应的功能并循环回菜单。

对tests(),rewarding()或purchase()的调用括号用于分组表达式,如果只需要一个表达式则不需要。我将它们从我的ifs中删除了,但这只是一个品味问题。

您还应该为函数指定返回类型。使用 void testing(){} 如果你不需要返回一个值(你还必须从函数中删除return语句)

答案 1 :(得分:0)

  1. 在获取用户输入的代码周围使用while循环并对其执行操作。
  2. 提供退出循环的选项。

  3. // Loop forever until the user chooses the option to exit the loop.
    while ( true )
    {
       printf("Enter 1 for testing:\n");
       printf("Enter 2 for rewarding:\n");
       printf("Enter 3 for buying:\n");
       printf("Enter 4 to exit:\n");
    
       if ( scanf("%d", &menu) != 1 )
       {
          // Error in input.
          // Read and discard the rest of the line.
          printf("Invalid input. Discarding the input.\n");
          int c;
          while ( (c = getc(stdin)) != EOF && c != '\n' );
    
          // Go on to the start of the loop.
          continue;
       }
    
       if (menu == 1) {       //first function
          testing();
       }
    
       else if (menu == 2) {    //second function
          rewarding();
       }
    
       else if (menu == 3) {    //third function
          buying();
       }
       else if (menu == 4) {    //fourth option
          break;
       }
       else 
       {
          printf("Invalid option: %d\n", menu);
       }
    }
    

    除了以上......

    main的返回类型从void更改为int。这是定义main的标准兼容方式。

    int main() { ... }
    

答案 2 :(得分:0)

使用while循环。 switchif-else更清晰。

请注意scanf的返回值,可能是01EOF。我们只想在它1时继续。

#include <stdio.h>

void print_menu() {
    printf("Enter 1 for testing:\n");
    printf("Enter 2 for rewarding:\n");
    printf("Enter 3 for buying:\n");
}

void testing() {}
void rewarding() {}
void buying() {}    

int main() {
    while (1) {

        print_menu();

        int menu;
        int ret = scanf("%d", &menu);

        if (ret == EOF) break;
        if (ret != 1) continue;

        switch(menu) {
        case 1: testing(); break;
        case 2: rewarding(); break;
        case 3: buying(); break;
        default: printf("Unknown input %d\n", menu); break;
        }
    }
    return 0;
}