一个简易计算器项目,自学了一点不是很有头绪

由于我学艺尚浅,有个书上的练习例题没头绪,只写了下面这种程序,但菜单应该做错了方向。
要求如下:
使用C语言开发一个简易计算器项目,此计算器具有以下功能:
(1)系统菜单(即先输出提示信息序号1、2、3….,分别实现什么计算功能,输入序号后,调用相应的功能函数执行计算)
(2)本项目在基础计算方面应至少实现加、减、乘、除、取余、累加、累乘功能;
(3)本项目在排序、统计方面应至少实现数组的输入和对数组的排序和求和功能;
(4)本项目在方程求解方面应至少实现对一元一次方程和一元二次方程的求解。
我程序做出来一部分,但是只能分别计算一次,目前只会菜单选择分别运算的方法加上退出系统功能。

(简单来说,本人对2-4的要求没头绪啊,来论坛向各位找找方法或者看看例子。)

/*
    具体任务:
    开发一个简易计算器项目,此计算器具有以下功能:
    (1)系统菜单(即先输出提示信息序号1、2、3….,分别实现什么计算功能,输入序号后,调用相应的功能函数执行计算)
    (2)本项目在基础计算方面应至少实现加、减、乘、除、取余、累加、累乘功能;
    (3)本项目在排序、统计方面应至少实现数组的输入和对数组的排序和求和功能;
    (4)本项目在方程求解方面应至少实现对一元一次方程和一元二次方程的求解。
*/
#include 
char menu(void);       //定义函数:菜单
float first(void);        //定义函数:判断第一个数字
float second(void);        //定义函数:判断第二个数字
float add(void);        //定义函数:加法
float subtract(void);    //定义函数:减法
float multiply(void);    //定义函数:乘法
float divide(void);        //定义函数:除法
int main(void)
{
    char ch;

    while ((ch = menu()) != '0')        //调用menu函数
    {
        while (getchar() != '\n')
            continue;
        switch (ch)
        {
        case '1':add();            //调用add函数
            break;
        case '2':subtract();    //调用subtract函数
            break;
        case '3':multiply();    //调用multiply函数
            break;
        case '4':divide();        //调用divide函数
            break;
        }
        while (getchar() != '\n')        //读取多于的字符
            continue;
    }
    printf("已退出系统,感谢使用!\n");
    
    return 0;
}
char menu(void)
{
    char ch;

    printf("*----------------------------------------------------*\n");
    printf("*               欢迎使用LMS简易计算器系统            *\n");
    printf("*----------------------------------------------------*\n");
    printf("*                    1: 加法                        *\n");
    printf("*                    2: 减法                        *\n");
    printf("*                    3: 乘法                        *\n");
    printf("*                    4: 除法                        *\n");
    printf("*                    5: 取余                        *\n");
    printf("*                    6: 累加                        *\n");
    printf("*                    7: 累乘                        *\n");
    printf("*                    0: 退出系统                    *\n");
    printf("*----------------------------------------------------*\n");
    printf("选择操作<0-7>                                         \n");

    //输入内容不符合菜单时,进行循环
    while ((ch = getchar()) != '0' && ch != '1' && ch != '2' && ch != '3' && ch != '4')
    {
        printf("请输入菜单里的选项\n");
        while (getchar() != '\n')    //控制多余的字符和回车
            continue;
    }
    return ch;
}
float first(void)
{
    float a;
    int t;
    char ch;

    printf("请输入第一个数字:");
    while (1)
    {
        t = scanf_s("%f", &a);        //获取用户输入的数字
        if (t != 1)            //如果输入不是数字时执行以下代码
        {
            while ((ch = getchar()) != '\n')
            {                        //将缓冲区里的字母打印
                putchar(ch);
                continue;
            }
            printf(" is not an number.\n");
            printf("Please enter a number, such as 2.5, -1.78E8, or 3:");

            continue;

        }
        else        //如果输入是数字,结束循环,并返回a的值
            break;
    }

    return a;
}
float second(void)
{
    float b;
    int t;
    char ch;

    printf("请输入第二个数字:");
    while (1)
    {
        t = scanf_s("%f", &b);
        if (t != 1)
        {
            while ((ch = getchar()) != '\n')
            {
                putchar(ch);
                continue;
            }
            printf(" 这不是一位数字.\n");
            printf("请输入一位数字, 可以是 2.5, -1.78E8, 或者是 77 :");

            continue;

        }
        else
            break;
    }

    return b;
}
float add(void)//加法函数
{
    float add;
    float a, b;

    a = first();
    b = second();
    add = a + b;
    printf("%.2f + %.2f = %.2f\n", a, b, add);

    return add;
}
float subtract(void)//减法函数
{
    float sub;
    float a, b;

    a = first();
    b = second();
    sub = a - b;
    printf("%.2f - %.2f = %.2f\n", a, b, sub);

    return sub;
}
float multiply(void)//乘法函数
{
    float mult;
    float a, b;

    a = first();
    b = second();
    mult = a * b;
    printf("%.2f * %.2f = %.2f\n", a, b, mult);

    return mult;
}
float divide(void)//除法函数
{
    float div;
    float a, b;

    a = first();
    b = second();
    while (b == 0)        //除数不能为0
    {
        printf("这个数不能为0!\n");
        b = second();
    }
    div = a / b;
    printf("%.2f / %.2f = %.2f\n", a, b, div);

    return div;
}


你函数写出来了直接调用啊