C 练习实例2
练习2
#include<stdio.h>
void main()
{ double i;
double b1,b2,b3,b4,b5,sum;
b1=100000*0.1;
b2=b1+100000*0.075;
b3=b2+200000*0.05;
b4=b3+200000*0.03;
b5=b4+400000*0.015;
printf("请输入当月利润:");
scanf("%f",&i);
if(i<=100000)
{sum=i*0.1;}
else if(i<=200000)
sum=b1+(i-100000)*0.075;
else if(i<=400000)
sum=b2+(i-200000)*0.05;
else if(i<=600000)
sum=b3+(i-400000)*0.03;
else if(i<=1000000)
sum=b4+(i-600000)*0.015;
else
sum=b5+(i-1000000)*0.01;
printf("当月奖金为:");
printf("%f元\n",sum);
运行输入 120000或120000.0 答案均为-92559605893710121000000000000000.00000这个奇怪的输出,若将i的double类型改为int 类型 则答案正确,为什么?
原来是float对应的是%f,而double对应的是%lf。
scanf()语句:"%lf"用于double类型,"%f"用于float类型
printf()语句:"%f"既可用于double类型,又可用于float类型,但意思是指“保留6位小数”