帮忙用c写个小程序,关于教师公积金缴纳金额计算

教师公积金缴纳金额计算
功能描述:
某中学教师每月需要根据工资的总额来确定当月需要缴纳的公积金,而当月工资除了基本工资1500元以外,还包括绩效工资,绩效工资和三个因素有关,当月的值班天数,当月的监考次数以及当月的上课次数。(教师每值班一天能够获得60元的收入,每监考一次能获得30元的收入,每上课一次能获得64元的收入)
公积金的缴纳额需要根据工资总额按照一定的比例进行上交。
处理过程描述

输入:
值班天数:整型,教师每月的值班天数不少于5天,不能超过正常工作日22天。
监考次数:整型,教师监考次数不能超过10次。
上课次数:整型,上课次数不能超过30次。
值班天数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。
监考次数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。
上课次数,如果非整型输入,给出错误提示,如果输入范围错误,给出错误提示。

计算公积金:
工资总额=基本工资+绩效工资
绩效工资=值班收入+监考收入+上课收入
值班收入=值班天数×值班的天收入
监考收入=监考次数×监考次收入
上课收入=上课次数×上课次收入

需缴纳的公积金=工资总额大于5000的部分×0.25+工资总额大于4000小于5000的部分×0.2+工资总额大于2000小于4000的部分×0.15+工资总额小于2000的部分×0.1

输出:
绩效工资总额,工资总额,需要缴纳的公积金

测试任务

整个测试所包含的内容:
1、用C语言写出教师公积金缴纳问题的程序,并简单测试,确保程序基本正确
(特别说明:进一步实现其他任何非整型输入的情况,比如输入字符,建议用单独的函数实现判断,在主函数中调用此函数判断值班数/监考数/上课数是否为整数)
2、用visio画出程序所对应的流程图
3、写白盒测试用例,包含语句覆盖,判定覆盖,条件覆盖,判定-条件覆盖,条件组合覆盖,基本路径测试(根据控制流图,同样需要使用visio画出)
4、写黑盒测试用例,包含等价类划分法,边界值法,判定表法(额外补充:时间允许情况下,再用visio画出因果图法)
5、两两交叉进行测试所有黑盒和白盒测试的用例,比较测试结果和预期的结果
6、形成黑盒测试以及白盒测试的大报告

 while(1)
    {
        nRes = scanf("%d",&nDuty);
        if (nRes == 1)
        {
            if (nDuty >= 5 && nDuty <= 22)
            {
                break;
            }
            else if (nDuty < 0)
            {
                printf("输入数据有误,请输入整数!\n");
                printf("输入老师值班天数,不少于5天,不能超过22天:");                
            }
            else
            {           
                printf("输入范围有误,请输入整数!\n");
                printf("输入老师值班天数,不少于5天,不能超过22天:");                
            }           
        }
        else if (nRes == 0)
        {
            scanf("%*c");
            printf("输入老师值班天数,不少于5天,不能超过22天:");            
        }
        else if (nRes == EOF)
        {
            break; //强制中断
        }       
    }

供参考。。

这需求就是大学c语言作业题吧,如果是妹纸我可以帮你写 哈哈

是啊,帮忙写下啦。。。

 int main()
{   
    int nBase = 1500,nPerformance = 0,nTemp = 0,nRes = 0;
    int nDuty = 0,nInvigilate = 0,nClass = 0;
    float fReserve = 0.0;

    printf("输入老师值班天数,不少于5天,不能超过22天:");
    nRes = scanf("%d",&nDuty);
    while(nRes == 1)
    {
        if (nDuty >= 5 && nDuty <= 22)
        {
            break;
        }
        else if (nDuty < 0)
        {
            printf("输入数据有误,请输入整数!\n");
        }
        else
        {           
            printf("输入范围有误,请输入整数!\n");
        }
        printf("输入老师值班天数,不少于5天,不能超过22天:");
        nRes = scanf("%d",&nDuty);
    }

    printf("输入老师监考次数,不能超过10次:");
    nRes = scanf("%d",&nInvigilate);
    while(nRes == 1)
    {
        if (nInvigilate >= 0 && nInvigilate <= 10)
        {
            break;
        }
        else if (nInvigilate < 0)
        {
            printf("输入数据有误,请输入整数!\n");
        }
        else
        {           
            printf("输入范围有误,请输入整数!\n");
        }
        printf("输入老师监考次数,不能超过10次:");
        nRes = scanf("%d",&nInvigilate);
    }

    printf("输入老师上课次数,不能超过30次:");
    nRes = scanf("%d",&nClass);
    while(nRes == 1)
    {
        if (nClass >= 0 && nClass <= 30)
        {
            break;
        }
        else if (nClass < 0)
        {
            printf("输入数据有误,请输入整数!\n");
        }
        else
        {           
            printf("输入范围有误,请输入整数!\n");
        }
        printf("输入老师上课次数,不能超过30次:");
        nRes = scanf("%d",&nClass);
    }

    nPerformance = (nDuty * 60) + (nInvigilate * 30) + (nClass * 64);
    nTemp = nPerformance + nBase;

    if (nTemp > 5000)
    {
        fReserve = (nTemp - 5000) * 0.25 + 1000 * 0.2 + 2000 * 0.15 + 2000 * 0.1;
    }
    else if (nTemp > 4000 && nTemp < 5000)
    {
        fReserve = (nTemp - 4000) * 0.2 + 2000 * 0.15 + 2000 * 0.1;
    }
    else if (nTemp > 2000 && nTemp < 4000)
    {
        fReserve = (nTemp - 2000) * 0.15 + 2000 * 0.1;
    }
    else if (nTemp < 2000)
    {
        fReserve = (float)(nTemp * 0.1);
    }

    printf("%d,%d,%0.2f",nPerformance,nTemp,fReserve);

    return 0;
}