《算法笔记》实战笔记——2.3选择结构(例题4-3 比较交换3个实数值,并按序输出、习题4-10-1 奖金计算)

前言 

        为准备大四华为笔试,决定使用学长推荐的《算法笔记》一书来学习,配套有《算法笔记·上机训练实战指南》,希望学习完此书,刷完力扣,能够通过笔试,为拿到大厂offer奠定基础💪

        此文为实战系列第二篇。

我的笔记

        1.问题 C: 例题4-3 比较交换3个实数值,并按序输出  

        该问题我思索时间较多,因为一开始将问题复杂化了,足足分了6种情况讨论,让人头都大了😨,不知代码从何敲起;

        幸好又读了一遍题目,抓住题目中的重点 

输入3个实数a, b, c,······按照从小到大的顺序输出这三个数a, b, c。”   

        输入输出字母顺序不变,因此完全可以,将大值往后挪,小值前调,这样考虑情况简单了不少,只需考虑前面的数一定比后面的小即可;

        最终很快写完了代码。

#include <stdio.h>

int main(){
	double a, b, c, t;
	scanf("%lf %lf %lf", &a, &b, &c);
	if(a>b)  {
		t = a;
		a = b;
		b = t;
		if(a>c)  {
			t = a;
			a = c;
			c = t;	
		}
		if(b>c)  {
			t = b;
			b = c;
			c = t;
		}
    }
	else  {
		if(a>c)  {
			t = a;
			a = c;
			c = b;	
			b = t;
		}
		else  if(b>c)  {
			t = b;
			b = c;
			c = t;
		}
	} 
	printf("%.2f %.2f %.2f\n", a, b, c);
	return 0;
} 

(看着代码,忽然想到,是不是可以建立一个函数,用来交换两个数字呢?待学完函数一课,回来再做修改🥰) 

        2. 奖金计算问题,if else 嵌套代码可以精简一点

        另外,本来想着是否可以使用switch函数,但回顾相关知识,case中需要是常量表达式,故弃之,啧,switch函数应用范围有点窄呀🤔

#include <stdio.h>

int main(){
	double i, m;
	scanf("%lf", &i);
	if(i<=100000)  
		m = i*0.1;
	else if(i<=200000)  
		m = 10000 + (200000-i)*0.075;
	else if(i<=400000)  
		m = 17500 + (400000-i)*0.05;
	else if(i<=600000)  
		m = 27500 + (600000-i)*0.03;
	else if(i<=1000000)  
		m = 33500 + (1000000-i)*0.015;
	else  
		m = 39500 + (i-1000000)*0.01;
	printf("%.2f\n", m);
	return 0;
}        //可将一堆大括号省略

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值