使用getNum();正确和无限循环问题

时间:2012-10-08 23:01:12

标签: c loops infinite

我正在尝试做这个任务中的一些问题。基本上我需要一个菜单​​,4个选项,其中两个接受来自用户的输入作为基数和指数的形式。第三个输出基本加注的答案,然后第四个退出程序。

我无法通过getNum()获取用户输入;我不太确定如何正确使用它。只是看看如何使我的代码更好地工作的一些技巧。

寻求帮助:

  1. 接受来自两个不同功能的用户输入并使用它 输出答案
  2. 选择菜单选项
  3. 时解决无限循环问题
  4. 每个功能完成后,仅将程序循环回主菜单 选择菜单选项4时退出程序

    int main(void)
    {
        int option = 0;
        do
        {
            loadMenu();
                while (option<1 || option>4)
                {
                    printf("\nChoose an option between 1 and 4:");
    
                    option = getNum();
                    while (getNum() != '\n');
                }
                switch (option)
                {
                    case 1:
                        baseChange();   //Gets base number
                        break;
                    case 2:
                        powerChange();  //Gets exponent
                        break;
                    case 3:
                        calcMath(); //Calculates the answer
                        break;
                    default:
                        break;
                }
        }
    
            while (option != 4);
            printf("Goodbye!\n");
    }
    void loadMenu()                      //Menu choices
    {
        printf("Power Menu:\n" );
        printf("  1. Change base\n");
        printf("  2. Change exponent\n");
        printf("  3. Calculate\n");
        printf("  4. Exit\n");
        printf("Option?\n");
    }
    
    int baseChange(int base)
    {   
        printf("What is your base?: ");
    
        base = getNum();
        while (getNum() != '\n');
    
        return base;
    }
    
    int powerChange(int power)
    {
    
        printf("What is the power?: ");
    
        power = getNum();
        while (getNum() != '\n');
    
        return power;
    }
    
    int calcMath(int base, int power)
    {
        int index = 0;
        long answer = 1.00;
    
        for(index = 1; index <= power; index++) answer = answer * base;
        {
            printf("%d raised to the power of %d is %ld.\n\n", base, power, answer);
        }
    
        return answer;
    }
    

2 个答案:

答案 0 :(得分:0)

  

我无法通过getNum()获取用户输入;我也不是   确定如何正确使用它。

你还没有告诉我们关于这个功能的任何信息;它不是C标准的一部分。

  

查看有关如何使我的代码更好地工作的一些提示。寻求帮助:

我认为这有点早。加大力度解决问题,如果有具体问题再回来。更像是这个:

  

选择菜单选项

时解决无限循环问题

通过循环第二次查看你的程序使用选项做什么。

答案 1 :(得分:0)

请在main()之前声明getnum()函数,如下所示;

/* declare getnum() prior to its first use */
float getnum(void)
{
  float x;

  printf("Enter a number: ");
  scanf("%f", &x);
  return x;
}