企业发放的奖金根据利润提成有关问题异常求教

企业发放的奖金根据利润提成问题错误求教
是不是数据类型错误?
#include<stdio.h>
int main(void)
{
float sum1=10*0.1;
float sum2=sum1+10*0.075;
float sum4=sum2+20*0.05;
float sum6=sum4+20*0.03;
float sum10=sum6+40*0.015;

float i;
printf("请输入利润,单位为万元:\n ");
scanf("%d",&i);              //单位为万元

float profit;
if(i<=10)
profit=i*0.1;
else if(i<=20)
profit=sum1+(i-10)*0.075;
else if(i<=40)
profit=sum2+(i-20)*0.05;
else if(i<=60)
profit=sum4+(i-40)*0.03;
else if(i<=100)
profit=sum6+(i-60)*0.015;
else 
profit=sum10+(i-100)*0.01;

printf("你能从利润中获得的提成为:%d\n",profit);
return 0;
}


结果总是0...

------解决方案--------------------
第12行:    scanf("%d",&i);
输入的是一个整数,我没记错的话输入float类型是scanf("%4.4f",&i);
------解决方案--------------------

#include<stdio.h>
int main(void)
{
float sum1=10*0.1;
float sum2=sum1+10*0.075;
float sum4=sum2+20*0.05;
float sum6=sum4+20*0.03;
float sum10=sum6+40*0.015;

float i;
printf("请输入利润,单位为万元:\n ");
scanf("%f",&i);             //格式有问题,输入float当然是%f

float profit;
if(i<=10)
profit=i*0.1;
else if(i<=20)
profit=sum1+(i-10)*0.075;
else if(i<=40)
profit=sum2+(i-20)*0.05;
else if(i<=60)
profit=sum4+(i-40)*0.03;
else if(i<=100)
profit=sum6+(i-60)*0.015;
else 
profit=sum10+(i-100)*0.01;

printf("你能从利润中获得的提成为:%f\n",profit); //格式有问题,输出float当然是%f
return 0;
}

仅供参考
------解决方案--------------------
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

------解决方案--------------------
printf和scanf系列函数看标准定义,另外看c 隐世类型提升
------解决方案--------------------
引用:
C/C++ code?123456789101112131415161718192021222324252627282930#include<stdio.h>int main(void){    float sum1=10*0.1;    float sum2=sum1+10*0.075;    float sum4=sum2+20*0.05;    float sum6……

++