关于程序调试的问题!!初学者希望大家指点一下!!!
编写了一个根据利润求解奖金的函数!!在做测试的时候出现问题!输入100等大于零的数字的时候可以得到正确结果!但是当输入的数字小于0的时候结果不正确!调试的时候第一次输入负数的时候profit变量的值正确,但是第二次输入负数的时候变量profit的值为-NaN(0x.....)这点我就不懂了!!为什么呢??求大家帮忙看看!!
程序代码:
/*
程:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型
*/
#include <stdio.h>
void main()
{
float profit=0.0,bonus=0.0;//定义变量利润和奖金方便使用
printf("请输入您在这一年里面为企业赚的的利润,以万为单位\n");
scanf("%f",&profit);//得到我们的利润
while(profit<=0.0)
{
printf("你输入了一个小于零的数字,请你从新输入\n");
scanf("%d",&profit);
}
/*判断用户输入的合法性*/
int level=0;//定义我们的利润段变量
if(profit<=10) {level=1;}
else if(profit<=20) {level=2;}
else if(profit<=40) {level=3;}
else if(profit<=60) {level=4;}
else if(profit<=100){level=5;}
else {level=6;}
/*定义我们的区间段*/
switch(level)
{
case 1:
bonus=profit*0.1;
break;
case 2:
bonus=1+(profit-10)*0.075;
break;
case 3:
bonus=1+0.75+(profit-20)*0.05;
break;
case 4:
bonus=1+0.75+1+(profit-40)*0.03;
break;
case 5:
bonus=1+0.75+1+0.6+(profit-60)*0.015;
break;
case 6:
bonus=1+0.75+1+0.6+0.6+(profit-100)*0.01;
break;
}
/*根据不同的利润计算我们的奖金数额*/
printf("您可以获得的奖金为:%f万\n",bonus);
}



