Zero-Se 2016-12-06 06:18 采纳率: 91.7%
浏览 991
已采纳

进一步实现其他任何非整型输入的情况,比如输入字符,用单独的函数实现判断,在主函数中调用此函数判断

#include <stdio.h>

int main(int argc,char* argv[])
{   
    int nBase = 1500,nPerformance = 0,nTemp = 0,nRes = 0;
    int nDuty = 0,nInvigilate = 0,nClass = 0;
    double 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\n",nPerformance);
    printf("工资总额是%d\n",nTemp);
    printf("需要缴纳的公积金是%0.2f\n",fReserve);
    return 0;
}

  • 写回答

1条回答 默认 最新

  • Zero-Se 2016-12-06 06:21
    关注

    因为要进行白盒测试,求大神进行修改,谢谢诶

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?