C语言刷题随记 ——奖金分配_算法

文章目录

  • ​​题目​​
  • ​​1. 题目描述​​
  • ​​2. 程序分析​​
  • ​​思路​​
  • ​​题解​​

题目

1. 题目描述

企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

C语言刷题随记 ——奖金分配_数据结构_02

2. 程序分析

请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

思路

可以尝试用数轴,脑图等工具把文中题目分成几个部分,然后使用 if 语句对各种不同的情况分开讨论。

C语言刷题随记 ——奖金分配_程序分析_03

题解

#include <stdio.h>

int main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;

if(i<=100000) bonus=i*0.1;
else if(i<=200000) bonus=bonus1+(i-100000)*0.075;
else if(i<=400000) bonus=bonus2+(i-200000)*0.05;
else if(i<=600000) bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000) bonus=bonus6+(i-600000)*0.015;
else bonus=bonus10+(i-1000000)*0.01;

printf("bonus=%d",bonus);

return 0;
}

C语言刷题随记 ——奖金分配_c语言_04