关于程序调试的问题!!初学者希望大家指点一下!!!
编写了一个根据利润求解奖金的函数!!在做测试的时候出现问题!输入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); }