读书人

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

发布时间: 2013-04-05 10:24:33 作者: rapoo

企业发放的奖金根据利润提成问题错误求教
是不是数据类型错误?

#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……

++

读书人网 >C语言

热点推荐