标题:一个简单c程序的探讨
只看楼主
zmhdxy
Rank: 1
等 级:新手上路
帖 子:452
专家分:0
注 册:2007-9-27
 问题点数:0 回复次数:15 
一个简单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: 1
等 级:新手上路
威 望:1
帖 子:296
专家分:0
注 册:2007-8-27
得分:0 
switch语句更好一点~~

女朋友问我想怎么死~~~
             我说我想"爽死"
2007-11-30 09:18
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
得分:0 
我帮你用switch语句写吧

用代码打出楼房...用编程编出幸福...
2007-11-30 09:28
C语言的深度
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:卡特的怀抱
等 级:版主
威 望:1
帖 子:9577
专家分:19
注 册:2007-10-22
得分:0 
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: 1
等 级:新手上路
帖 子:452
专家分:0
注 册:2007-9-27
得分:0 
警告的问题解决
#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: 1
等 级:新手上路
帖 子:452
专家分:0
注 册:2007-9-27
得分:0 
还有没有别的方法

2007-11-30 12:03
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
结果用double

倚天照海花无数,流水高山心自知。
2007-11-30 12:33
dandanmei
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-30
得分:0 
请教一下啊
C语言不是不识别汉字吗?
为什么你们的程序里都有汉字(不是/*……*/)
2007-11-30 12:46
行走
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2007-7-26
得分:0 
回复 8# 的帖子
不是C语言不支持汉字,而是你用的编译环境不支持。如果你想让你写的C程序里能支持汉字,就要通过程序的方法载入汉字字库。
2007-11-30 13:58
dandanmei
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2007-11-30
得分:0 
什么环境支持汉字或者咋么载入汉字啊
2007-11-30 14:14



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




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

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