简单C语言计算工资问题

haitanshangdeyu 2009-05-10 10:08:15
一个很简单的C语言编写的计算工资的问题,经过修改,编译是通过了,可是为什么输出的值总是不对呢?!似乎总是少了一位而已,并没有按照我设计的算法来啊~~求诸位指点迷津~~
源程序如下:
void main()
{
double base=0;
double pay=0;
printf("Please put in your base:");
scanf("%ld",&base);
if(base<=0)
{
printf("Wrong number!");
}

else if(base<=100000)
{
pay=base*0.1;
}
else if(base<=200000)
{
pay=100000*0.1+(base-100000)*0.075;
}
else if(base<=400000)
{
pay=100000*0.1+100000*0.075+(base-200000)*0.05;
}
else if(base<=600000)
{
pay=100000*0.1+100000*0.075+200000*0.05+(base-400000)*0.03;
}
else if(base<=1000000)
{
pay=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(base-600000)*0.15;
}
else
{
pay=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(base-100000)*0.01;
}

printf("The pay is %ld",pay);
getch();


}
...全文
522 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitanshangdeyu 2009-05-10
  • 打赏
  • 举报
回复
好的~~多谢~~正在打基础~~结贴了
liyanhong5201314 2009-05-10
  • 打赏
  • 举报
回复
这种写法太差
goodname 2009-05-10
  • 打赏
  • 举报
回复
你还是看看scanf,printf的用法吧。

简单说scanf如果使用%ld,必须是输入长整形数据,你给一个double的base不合适
printf打印double的必须使用%lf,
一般教科书上都写的,是些基本的东西,可以翻翻书。
haitanshangdeyu 2009-05-10
  • 打赏
  • 举报
回复
这样做确实解决了问题,但是我想了解一下原因~~辛苦你再解释一下吧~~谢啦~~
haitanshangdeyu 2009-05-10
  • 打赏
  • 举报
回复
为什么呢?问题出在哪里了呢?是溢出了么?
goodname 2009-05-10
  • 打赏
  • 举报
回复
printf("The pay is %lf",pay);
goodname 2009-05-10
  • 打赏
  • 举报
回复
long base=0;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧