C语言练习第二题

前言:

一时摸鱼一时爽,摸完追作业火葬场QAQ
话不多说,赶紧开始第二题的练习。
之后的任务我打算每天都做一点,堆到最后做太烦了。现在先补完之前的任务,补完之后认真的制定一个计划表。

第二题

题目:
企业发放的奖金根据利润提成。

利润(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中就选择分支结构来表达。
输入:当月利润I
输出:奖金总数
分析:
1、定义双精度浮点数I和奖金。
2、建立数学模型
3、运用条件分支语句

我的过程

#include<stdio.h>
int main()
{
	double I;
	double bonus,sun1,sun2,sun3,sun4,sun5;
	sun1=100000*0.1;
	sun2=sun1+100000*0.075;
	sun3=sun2+200000*0.05;
	sun4=sun3+200000*0.03;
	sun5=sun4+400000*0.015;

	printf("利润I为:");
	scanf("%lf",&I);
	if(I<=100000)
	{bonus=I*0.1;}
	else if(I>100000&&I<=200000)
    {bonus=sun1+(I-100000)*0.075;}
	else if(I>200000&&I<=400000)
    {bonus=sun1+sun2+(I-200000)*0.05;}
	else if(I>400000&&I<=600000)
    {bonus=sun1+sun2+sun3+(I-400000)*0.03;}
	else if(I>600000&&I<=1000000)
    {bonus=sun1+sun2+sun3+sun4+(I-600000)*0.015;}
	else if(I>1000000)
	{bonus=sun1+sun2+sun3+sun4+sun5+(I-1000000)*0.01;}
	printf("该利润下的奖金为:%lf",bonus);
	return 0;
}

运行结果
在这里插入图片描述
总结

一开始我写代码的时候没有考虑到 输出转换符“%f”和“%lf” 的区别,而使用了%f 这使我在输出结果时因为小数点后的位数不够导致得到错误的结果。%f 的默认输出类型是float,而我定义的却是double类型的数据,应该用%lf 来表示。

在使用条件语句时,也可以用switch语句来替换,不过由于switch语句的表达式不能是实型数据,相比if-else多了一些条件限制。所以最常用的还是if 的分支语句。

在写代码之前,一定要先分析输入和输出,才能更加明确的思考下一个步骤。这题主要是运用了数学思维再加编程逻辑,只要在执行翻译代码之前的思维能清晰有条理,基本上编程都不会出现错误。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北山雪初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值