C语言swith()的问题.谢谢解答

来源:百度知道 编辑:UC知道 时间:2024/06/05 01:23:58
企业发放的奖金根据利润提成,利润为money,利润低于或等于10万元的,奖金可提成10%,利润万大于10万小于等于20万时,低于10万部份仍按10%提成,高出10万部份按7.5%提成(同下面);利润大于20万小于等于40万时,高出20万部份按%5提成,利润大于40万小于等于60万时,高出40万部份按%3提成,利润大于60万小于100万时,高出60万部份按%1.5提成;利润大于100万时,超出100万部份按%0.1提成;
运行时..高出100000部份都OK,可是输入8000时,却得到3100而不是800,这是为什么?
#include "stdio.h"
main()
{

float money,bont1,bont2,bont4,bont6,bont10,i;
int c;
bont1=100000*0.1;
bont2=bont1+100000*0.075;
bont4=bont2+200000*0.05;
bont6=bont4+200000*0.03;
bont10=bont6+400000*0.015;
printf("please input a money:");
scanf("%f",&money);
c=(int)(money/100000);
if(c>10) c=10;
switch(c)
{
case 0:i=money*0.1;break;
case 1:i=bont1+(money-100000)*0.075;break;
case 2:
case 3:i=bont2+(money-200000)*0.05;break;
case 4:
case 5:i=bont4+(money-400000)*0.03;break;
case 6:
case 7:
case

哈哈
我把你的代码复制到我的机子上
输入8000时得到的结构是800
我不知道为什么你得到的是3100

如果是你说的那样
我觉得可能是
一。
你的编译器有问题。
二。
你的内存里的内容没有即使清除。导致你出现这种错误结构。

我用的是VC++6.0

please input a money:8000
the liyun is 800.000000
Press any key to continue

完全正确