标题:关于发奖金的问题
只看楼主
xiaotan
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-5-5
 问题点数:0 回复次数:3 
关于发奖金的问题

题目:
企业发放的的奖金根据利润提成。利润yuan低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元(100000<yuan<=200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000<yuan<=400000时,其中20万元还按上述办法提成(下同),高于20万元的部分按5%提成;40000<yuan<=600000时,高于40万元的部分按3%提成;600000<yuan<=1000000时,高于60万的部分按1.5%提成;yuan>1000000时,超过100万的部分按1%提成。从键盘输入当月利润yuan,求应发放的奖金总数。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
double k,l,n,m,p,yuan,jiangjin,r;//
定义几个变量//
k=100000;
l=200000;
n=400000;
m=600000;
p=1000000;
printf("\nplease input month liren:\n");
scanf("%d",&yuan);//输入当月的利润
//
if(yuan<=k)
r=0;
if(yuan>k && yuan<=l)
r=1;
if(yuan>l && yuan<=n)
r=2;
if(yuan>n && yuan<=m)
r=3;
if(yuan>m && yuan<=p)
r=4;
if(yuan>p)
r=5;//根据if条件语句,判定yuan的范围,以便求出r的值
//
switch(r)//求出r的值之后,由case定位出jiangjin的值,然后输出
//
{case 0: jiangjin=yuan*(10/100); break;
case 1: jiangjin=k*(10/100)+(yuan-k)*(7.5/100); break;
case 2: jiangjin=l*(10/100)+(yuan-l)*(5/100); break;
case 3: jiangjin=n*(10/100)+(yuan-n)*(3/100); break;
case 4: jiangjin=p*(10/100)+(yuan-p)*(1.5/100); break;
case 5: jiangjin=k*(10/100)+(yuan-k)*(1/100); break;
default: printf("error\n");break;
}
printf("\nplease output Jiangjin: %f\n",jiangjin);
}

各位高手,帮我看一下这个程序好吗?尽管很简单,但是我还是调试不出来!没有语法错误!就是没有结果,无论你输入什么数,得到的结果都是0.00000,我实在是找不出来错误在那里,大家帮一下我好吗?谢谢啦!

搜索更多相关主题的帖子: 奖金 
2006-05-19 17:28
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
得分:0 
以下是引用xiaotan在2006-5-19 17:28:00的发言:

题目:
企业发放的的奖金根据利润提成。利润yuan低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元(100000<yuan<=200000)时,其中10万元按10%提成,高于10万元的部分,可提成7.5%;200000<yuan<=400000时,其中20万元还按上述办法提成(下同),高于20万元的部分按5%提成;40000<yuan<=600000时,高于40万元的部分按3%提成;600000<yuan<=1000000时,高于60万的部分按1.5%提成;yuan>1000000时,超过100万的部分按1%提成。从键盘输入当月利润yuan,求应发放的奖金总数。
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
double k,l,n,m,p,yuan,jiangjin,r;//应该把r定义为int.
//
k=100000;
l=200000;
n=400000;
m=600000;
p=1000000;
printf("\nplease input month liren:\n");
scanf("%d",&yuan);//应该把%d改为%lf, 因为你定义的为双精度
//
if(yuan<=k)
r=0;
if(yuan>k && yuan<=l)
r=1;
if(yuan>l && yuan<=n)
r=2;
if(yuan>n && yuan<=m)
r=3;
if(yuan>m && yuan<=p)
r=4;
if(yuan>p)
r=5;//根据if条件语句,判定yuan的范围,以便求出r的值
//
switch(r)//求出r的值之后,由case定位出jiangjin的值,然后输出
//
{case 0: jiangjin=yuan*(10/100); break; //把10/100改为10.0/100, 因为整形10/100的结果为0.
case 1: jiangjin=k*(10/100)+(yuan-k)*(7.5/100); break;//把10/100改为10.0/100, 因为整形10/100的结果为0.
case 2: jiangjin=l*(10/100)+(yuan-l)*(5/100); break;//把10/100改为10.0/100, 因为整形10/100的结果为0.
case 3: jiangjin=n*(10/100)+(yuan-n)*(3/100); break;//把10/100改为10.0/100, 因为整形10/100的结果为0.
case 4: jiangjin=p*(10/100)+(yuan-p)*(1.5/100); break;//把10/100改为10.0/100, 因为整形10/100的结果为0.
case 5: jiangjin=k*(10/100)+(yuan-k)*(1/100); break;//把10/100改为10.0/100, 因为整形10/100的结果为0.
default: printf("error\n");break;
}
printf("\nplease output Jiangjin: %f\n",jiangjin);
}

各位高手,帮我看一下这个程序好吗?尽管很简单,但是我还是调试不出来!没有语法错误!就是没有结果,无论你输入什么数,得到的结果都是0.00000,我实在是找不出来错误在那里,大家帮一下我好吗?谢谢啦!


其它的奖金关系对不对,你自己再仔细看看...

[此贴子已经被作者于2006-5-19 18:25:04编辑过]

2006-05-19 18:22
xsimon
Rank: 1
等 级:新手上路
帖 子:121
专家分:0
注 册:2006-5-5
得分:0 

#include<stdio.h>

int main (void)
{
float i, bonus;

scanf ("%f", &i);

if (i > 1000000)
bonus =(i-1000000)*0.01 + 37950;

else if (i > 600000)
bonus =(i-600000)*0.015 + 33500;

else if (i > 400000)
bonus = (i-400000)*0.03 + 27500;

else if (i > 200000)
bonus = (i-200000)*0.05 + 17500;

else if (i > 100000 )
bonus = (i-100000)*0.075 + 10000;

else bonus = i*0.1;

printf ("%-10.1f", bonus);

getch ();
return 0;
}

2006-05-19 18:24
xiaotan
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-5-5
得分:0 

呵呵!你们真的好厉害啊!我连这些问题都不能解决!可见我平时编的程序真的是太少太少了!我以后得好好的努力拉!哎!我很后悔以前没有把C语言学好!我现在啊相当是从头在来的,不过我还是很感谢你们,感谢这个论坛,感谢大家!

2006-05-21 14:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-65623-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.613921 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved