解题思路:

本题总共有6种情况,分别是:


1. 利润低于或等于100000元时


       即i<=100000


2. 利润高于100000元,低于或等于200000元时


       即100000<i≤200000


3. 利润高于200000元,低于或等于400000元时


       即200000<i≤400000


4. 利润高于400000元,低于或等于600000元时


       即400000<i≤600000


5. 利润高于600000元,低于或等于1000000元时


       即600000<i≤1000000


6. 利润高于1000000元时


       即i>1000000



注意事项:

分清情况,注意代码的整洁性,还有就是公式别用错。因为这个题解运用了定义整型常量的方法,所以省去了冗杂的0的书写,使代码变得整洁、简便地同时,缩短了代码的编译时间。


参考代码:

#include "stdio.h"
int main()
{
	int i,r;
	const int B=100000;
	scanf("%d",&i);
	if(i<=B)//利润低于或等于100000元时
	{
		r=i*0.1;
	}
		else if(i>B && i<=(2*B))     //利润高于100000元,低于或等于200000元时
		{
			r=0.1*B+(i-B)*0.075;
		}
			else if(i>(2*B) && i<=(4*B))     //利润高于200000元,低于或等于400000元时
			{
				r=0.1*B+0.075*B+(i-2*B)*0.05;
			}
				else if(i>(4*B) && i<=(6*B))     //利润高于400000元,低于或等于600000元时
				{
					r=0.1*B+0.075*B+0.05*2*B+(i-4*B)*0.03;
				}
					else if(i>(6*B) && i<=(10*B))     //利润高于600000元,低于或等于1000000元时
					{
						r=0.1*B+0.075*B+0.05*2*B+0.03*2*B+(i-6*B)*0.015;
					}
						else if(i>(10*B))     //利润高于1000000元时
						{
							r=0.1*B+0.075*B+0.05*2*B+0.03*2*B+4*B*0.015+((i-10*B)*0.01);
						}
						printf("%d",r);
	return 0;
}


点赞(0)
 

0.0分

53 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 23 条评论

编程者 2月前 回复TA
@编程者 后来尝试用&&逻辑与操作符也是正确的,100000<i<=200000这种判断语句最好不要用,最好用i>100000&&i<=200000这种语句。在我们的逻辑中可能是没什么差别,但编译器可能并不认可这是同一种效果的语句。
编程者 2月前 回复TA
@编程者 这个是正确的,是因为在if语句中给的条件限制太多了?所以之前一直卡在else之后的第一条if语句中~~
编程者 2月前 回复TA
@编程者 int main(){     int i;     int a = 0;      scanf("%d", &i);     if (i <= 100000) {      a = i * 0.1;     }     else {         a = 100000 * 0.1;         if (i <= 200000) {             a += (i - 100000) * 0.075;         }          else {             a += 100000 * 0.075;             if (i <= 400000) {                 a += (i - 200000) * 0.05;             }             else {                 a += 200000 * 0.05;                 if (i <= 600000) {                     a += (i - 400000) * 0.03;                 }                 else {                     a += 200000 * 0.03;                     if (i <= 1000000) {                         a += (i - 600000) * 0.015;                     }                     else {                         a += 400000 * 0.015;                         a += (i - 1000000) * 0.01;                     }                 }             }         }     }     printf("%d\n", a);     return 0; }
编程者 3月前 回复TA
@编程者 a += 200000 * 0.05;                 if (400000 < i <= 600000) {                     a += (i - 400000) * 0.03;                 }                 else {                     a += 200000 * 0.03;                     if (600000 < i <= 1000000) {                         a += (i - 600000) * 0.015;                     }                     else {                         a += 400000 * 0.015;                         if (i > 1000000) {                             a += (i - 1000000) * 0.01;                         }                     }                 }             }         }     }     printf("%d", a);     return 0; }
编程者 3月前 回复TA
int main() {
    int i;
    int a = 0;
    scanf("%d", &i);
    if (i <= 100000) {
        a = i * 0.1;
    }
    else {
        a = 100000 * 0.1;
        if (100000 < i <= 200000) {
            a += (i - 100000) * 0.075;
        }
        else {
            a += 100000 * 0.075;
            if (200000 < i <= 400000) {
                a += (i - 200000) * 0.05;
            }
            else {
                a += 200000 * 0.05;
                if (400000 < i <= 600000) {
                    a += (i - 400000) * 0.03;
                }
                else {
为啥我这只对一半呢?
太阳系的一粒沙子 3月前 回复TA
@huljo223 你这个能通过?
穷哈 10月前 回复TA
@huljo223 那如果a正好等于100000 那结果不就是10000*0.075 是多出来的那份提成是0.075
huljo223 11月前 回复TA
还不是一样都又臭又长
#include<stdio.h>
int main()
{
	int a, b;
	scanf("%d", &a);
	switch (a / 100000)
	{
	case 0:
		b = a * 0.1;
		break;
	case 1:
		b = 10000 + (a-100000) * 0.075;
		break;
	case 2:
	case 3:
		b = 17500 + (a-200000) * 0.05;
		break;
	case 4:
	case 5:
		b = 27500 + (a - 400000) * 0.03;
		break;
	case 6:
	case 7:
	case 8:
	case 9:
		b = 33500 + (a - 600000) * 0.015;
		break;
	default:
		b = 39500 + (a - 1000000) * 0.01;
	}
	printf("%d", b);
	return 0;
}
lxs_vip 12月前 回复TA
@勇敢冲 后面的利润计算方式有问题
ccc 1年前 回复TA
@勇敢冲 最后一个else if里面 x <= 100000,然后它下面y = x * 0.1;