| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付赛孚耐:软件保护加密专家
身份认证令牌USB KEY   
共有 930 人关注过本帖
标题:一个简单c程序的探讨
收藏  订阅  推荐  打印 
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27
一个简单c程序的探讨

企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高 于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
下面是我编的,请问有没有其他的方法(注:if  else 的变换不算)
#include<stdio.h>
#include<stdlib.h>
void main()
{
long int i;
int   x1,x2,x4,x6,x10,x;
printf("请输入一个数(这里用80万测试):\n");
scanf("%d",&i);
x1=100000*0.1;
x2=x1+100000*0.075;
x4=x2+200000*0.05;
x6=x4+200000*0.03;
x10=x6+400000*0.015;
if(i<=100000)
  x=i*0.1;
else if(i<=200000)
  x=x1+(i-100000)*0.075;
else if(i<=400000)
     x=x2+(i-200000)*0.05;
else if(i<=600000)
  x=x4+(i-400000)*0.03;
else if(i<=1000000)
  x=x6+(i-600000)*0.015;
else x=x10+(i-1000000)*0.01;
printf("计算的结果为:\n%d\n",x);
system("pause");
}
还有个问题就是 :
这个程序是有警告的,把int 改成double 就没有了,可是输入数据之后,显示的是0
不改呢 ,警告是不妨碍运行的 所以说是int 声明的话,结果就是对的
可不可以用别大方法,让其一举两得呢
搜索更多相关主题的帖子: 利润  奖金  探讨  include  
2007-11-30 09:14
万兽无缰
Rank: 3Rank: 3
等级:中级会员
威望:1
帖子:296
积分:3226
注册:2007-8-27

switch语句更好一点~~

女朋友问我想怎么死~~~
             我说我想"爽死"
2007-11-30 09:18
C语言的深度
Rank: 12Rank: 12Rank: 12
来自:卡特的怀抱
等级:版主
威望:1
帖子:9450
积分:94949
注册:2007-10-22

我帮你用switch语句写吧

用代码打出楼房...用编程编出幸福...
2007-11-30 09:28
C语言的深度
Rank: 12Rank: 12Rank: 12
来自:卡特的怀抱
等级:版主
威望:1
帖子:9450
积分:94949
注册:2007-10-22

main()
{
  long i;
  float bonus,bonl,bon2,bon4,bon6,bon10;
  int branch;
  /*初始化变量*/
  bon1=100000*0.1;
  bon2=bon1+100000*0.075;
  bon4=bon2+200000*0.05;
  bon6=bon4+200000*0.03;
  bon10=bon6+400000*0.015;
  printf("请输入利润i:");
  scanf("%d",&i);
  branch=i/100000;
  if(branch>10) branch=10;
  switch(branch)
  { case 0:bonus=i*0.1;break;
    case 1:bonus=bonl+(i-100000)*0.075;break;
    case 2:
    case 3:bonus=bon2+(i-200000)*0.05;break;
    case 4:
    case 5:bonus=bon4+(i-400000)*0.03;break;
    case 6:
    case 7:
    case 8:
    case 9:bonus=bon6+(i-600000)*0.015;break;
    case 10:bonus=bon10+(i-1000000)*0.01;
  }
  prinft("奖金是%10.2f\n",bonus);
  getch();
  }

用代码打出楼房...用编程编出幸福...
2007-11-30 09:43
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27
警告的问题解决

#include<stdio.h>
#include<stdlib.h>
void main()
{
    long int i;
    int   x1,x2,x4,x6,x10,x;
    printf("请输入一个数(这里用80万测试):\n");
    scanf("%d",&i);
    x1=(int)(100000*0.1);
    x2=(int)(x1+100000*0.075);
    x4=(int)(x2+200000*0.05);
    x6=(int)(x4+200000*0.03);
    x10=(int)(x6+400000*0.015);
    if(i<=100000)
        x=(int)(i*0.1);
    else if(i<=200000)
        x=(int)(x1+(i-100000)*0.075);
    else if(i<=400000)
        x=(int)(x2+(i-200000)*0.05);
    else if(i<=600000)
        x=(int)(x4+(i-400000)*0.03);
    else if(i<=1000000)
        x=(int)(x6+(i-600000)*0.015);
    else x=(int)(x10+(i-1000000)*0.01);
    printf("计算的结果为:\n%d\n",x);
    system("pause");


}

2007-11-30 12:02
zmhdxy
Rank: 3Rank: 3
等级:中级会员
帖子:452
积分:4790
注册:2007-9-27

还有没有别的方法

2007-11-30 12:03
nuciewth
Rank: 12Rank: 12Rank: 12
来自:我爱龙龙
等级:版主
威望:99
帖子:9589
积分:95706
注册:2006-5-23

结果用double

倚天照海花无数,流水高山心自知。
2007-11-30 12:33
dandanmei
Rank: 1
等级:新手上路
帖子:24
积分:334
注册:2007-11-30

请教一下啊
C语言不是不识别汉字吗?
为什么你们的程序里都有汉字(不是/*……*/)
2007-11-30 12:46
行走
Rank: 2
等级:注册会员
帖子:45
积分:554
注册:2007-7-26
回复 8# 的帖子

不是C语言不支持汉字,而是你用的编译环境不支持。如果你想让你写的C程序里能支持汉字,就要通过程序的方法载入汉字字库。
2007-11-30 13:58
dandanmei
Rank: 1
等级:新手上路
帖子:24
积分:334
注册:2007-11-30

什么环境支持汉字或者咋么载入汉字啊
2007-11-30 14:14
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.057326 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved