吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1269|回复: 3
收起左侧

[学习记录] C语言学习100列之002

[复制链接]
流光 发表于 2021-11-30 13:58
【程序2】
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      

2.程序源代码:
[C] 纯文本查看 复制代码
#include "stdio.h"
#include "conio.h"
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);
  getch(); 
}


自写代码:
[C] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>



int main() {
	double rates(long int);
	long int I;
	long int temp_I;
	long int Iarr[6] = { 0,100000,200000,400000,600000,1000000 };  //设置阶段值
	double sum = 0;

	printf("请输入当月的利润:");
	scanf("%ld", &I);
	//float b = rates(I);



	for (int i = 5; i >= 0; i--) //五个阶段的计算,从大到小

	{
		if (I > Iarr[i])//如果当月的利润 存在计算的阶段内

		{

			temp_I = I - Iarr[i];  //利润-阶段范围 = 需要计算的奖金
			sum = sum + (double)temp_I * rates(I); //从函数获取利率并计算




			printf("高于%ld 利润结算范围,%ld元业绩 提成比例为:%.1lf%%计算奖金:%lf\n", Iarr[i], temp_I, rates(I) * 100, temp_I * rates(I));

			I = I - (long int)temp_I;
		}







	}

	printf("总奖金为:%lf\n", sum);

	return 0;

}

double rates(long int a) {


	if (a > 1000000)
	{
		return 0.001;
	}
	else if (a > 600000)
	{
		return 0.015;
	}
	else if (a > 400000)
	{
		return 0.030;
	}
	else if (a > 200000)
	{
		return 0.050;
	}
	else if (a > 100000)
	{
		return 0.075;
	}
	else
	{
		return 0.1000;
	}









}




说明下:
这题文档中提供代码 似乎有问题,大家帮忙看看
我写的和他的输出答案不一样,为了更加直观。我把我的思路给打印出来。
ddddddddddddd.jpg


eeeeeeeeeee.jpg


免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
Roy430699 + 1 + 1 我很赞同!
xiaogenban123 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

兔纸 发表于 2021-11-30 14:20
小白路过学习了
wxyrogue 发表于 2021-11-30 14:51
kenxy 发表于 2021-11-30 15:11
源码确实有错,bonus2=bonus1+100000*0.75;
  bonus4=bonus2+200000*0.5;
  bonus6=bonus4+200000*0.3;
  bonus10=bonus6+400000*0.15;  几个小数写错了,应该是0.075  ,0.05,  0.03  , 0.015
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表