带开关语句的交互式菜单

时间:2013-03-18 02:52:31

标签: c eclipse

您好我正在尝试使用C语言中的switch语句创建交互式菜单。 虽然我不确定如何触发具有某些参数的函数。 我是一个初学者,我很难过如何做到这一点。 虽然我希望函数询问数字,但switch语句中的函数需要参数。我这样做是作为一个任务,不能提供实际的代码,所以我做了这个模拟。谢谢你的帮助。

以下是我可能使用的代码示例。

#include <stdio.h>

void printMenu()
{
    int choice;

    do
    {
        printf("Main Menu:\n");
        printf("1) do this\n");
        scanf("%d", &choice);

        switch (choice)
        {
            case 1:
                function(); /* though this needs the arguments */
                break;
        }
    } while (choice != 7);

    int main(void)
    {
        printMenu();
        return 0;
    }

    void function(int number1, float number2)
    {
        /*calculation*/
        printf("enter your numbers");
        /* Not sure how to read the numbers in here */
        printf("%d + %d = %d", number1, number2, number1 + number2);
        return;
    }

3 个答案:

答案 0 :(得分:1)

如果你希望switch尽可能小,那么只需调用另一个接受输入的函数然后调用函数...

case 1:
   read_input_and_function()
   break;

...

void read_input_and_function(void)
{
   printf("Enter your numbers: ");
   /* scanf number1, number2 */
   function(number1, number2);
}

答案 1 :(得分:1)

  

switch语句中的函数需要参数但是我   希望函数能够询问数字。

如何首先询问参数,然后调用函数。这样,两个参数可以声明一次并在同一个开关的其他函数中使用,但可以根据所选的情况进行定义。

void function1(int, float);

   void printMenu()
   {

     int choice = 0 , num1 = 0;
     float num2 = 0;

     do
      {
          printf("Main Menu:\n");
          printf("1) do this\n");
          scanf("%d", &choice);

          switch (choice)
          {
              case 1:
                  printf("\nEnter number 1\n");
                  scanf("%d",&num1);
                  printf("\nEnter number 2\n");
                  scanf("%f",&num2);
                  function1(num1,num2);
                  break;
          }
      } while (choice != 7);
    }

答案 2 :(得分:-1)

#include <stdio.h>
#include <stdlib.h>

#define Pi 3.14159216

/*  
*small program of how to create a menu
*/

main ()
{
float degree,radians;
int input;
/*degrees to radians */
float degreesToRadians (float deg)
{
return ((Pi * deg) / 180.0);
}

/*radians to degrees*/
float radiansToDegrees (float rad)
{
 return rad * (180 / Pi);
}
void menu ()
{
 printf ("\n");
 printf ("1. degrees\n");
 printf ("2. radians\n");
 printf ("3. quit\n");
do
switch (input) {
case 1:
          printf ("\n");
          printf ("\n");

          printf (" Enter value of degrees: ");
          scanf ("%f", &degree);
          printf ("RADIANS = %f \n\n", degreesToRadians (degree));
          menu (); 
          break;

case 2:
          printf ("\n");
          printf ("\n");

          printf (" Enter value of radians: ");
          scanf ("%f", &radians);
          printf ("DEGREES = %f \n\n", radiansToDegrees (radians));
          menu (); 
          break;
case 3:
          printf (" quiting app \n");
          exit (0);
          break;
default:
      printf ("wrong option\n");
      break;
  }
while (input != 3);
    getchar ();   
   }
 }
menu ();
}