程序的选择——分支结构基础语法讲解

1.if语句和缩进

    在C++的程序设计中,程序不只是一成不变的。有时也会根据情况选择执行。这个时候就需要分支结构了。

1.1.if语句基本语法:

if(表达式)
    语句;

    if后面也不一定只有一个语句。可以用大括号将多个语句合并成一个语句块。比如:

if(表达式)
{
    语句1;
    语句2;
    语句1;
}

    如果if括号里面的表达式为false(即0),直接跳过if后面的语句或语句块。否则就执行if后面的语句或语句块。

1.2.缩进

    在C++中,一般会对语句块进行缩进。一般就是四个空格。缩进并不是强制要求,只是为了美观才缩进的。比如:

#include<iostream>
using namespace std;
int main(){
    int a,b,max;
    cin>>a>>b;
    max=a;
    if(b>a)
    {
        cout<<"改变max的值"<<endl;
        max=b;
    }
    cout<<"较大数是"<<max<<endl;
    return 0;
}

2.if else语句

如果……那么……否则……就是一个经典的if else语句。if else语句的基本语法如下:

if(表达式)
    语句1;
else
    语句2;

当然,else后面跟if一样,可以只是一个语句,也可以是一个语句块。

2.1.例题1——闰年判断

闰年判断 - 洛谷

题目描述

输入一个年份,判断这一年是否是闰年,如果是输出 1 1 1,否则输出 0 0 0

1582 1582 1582 年以来,闰年的定义:

普通闰年:公历年份是 4 4 4 的倍数,且不是 100 100 100 的倍数的,为闰年(如 2004 2004 2004 年、 2020 2020 2020 年等就是闰年)。

世纪闰年:公历年份是整百数的,必须是 400 400 400 的倍数才是闰年(如 1900 1900 1900 年不是闰年, 2000 2000 2000 年是闰年)。

输入格式

输入一个正整数 n n n,表示年份。

输出格式

输出一行。如果输入的年份是闰年则输出 1 1 1,否则输出 0 0 0

输入输出样例

输入 #1
1926
输出 #1
0
输入 #2
1900
输出 #2
0
输入 #3
2000
输出 #3
1
输入 #4
1996
输出 #4
1

提示

数据保证, 1582 ≤ n ≤ 2020 1582 \leq n \leq 2020 1582n2020 且年份为自然数。

判断闰年的口诀:四年一闰,百年不闰,四百年又闰
根据这个口诀模拟就行了。

#include<iostream>
using namespace std;
int main(){
    int year;
    cin>>year;
    if((year%4==0&&year%100!=0)||year%400==0)//根据口诀写出表达式
        cout<<1<<endl;
    else cout<<0<<endl;
    return 0;
}

2.2.练习1——洛谷团队系统

洛谷团队系统 - 洛谷

题目描述

在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间 5 5 5 分钟;而在洛谷团队中上传私有题目,每题只需要花费 3 3 3 分钟,但是上传题目之前还需要一次性花费 11 11 11 分钟创建与配置团队。现在要配置 n n n 道题目,如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu

输入格式

输入一个正整数 n n n,表示需要配置的题目量。

输出格式

输出一行,一个字符串。如果本地配置花费的总时间短,请输出 Local,否则输出 Luogu

输入输出样例

输入 #1

2

输出 #1

Local

输入 #2

50

输出 #2

Luogu

提示

数据保证 1 ≤ n ≤ 100 1 \leq n\leq 100 1n100

程序示例:

#include<iostream>
using namespace std;
int main(){
    int n;
    cin>>n;
    if((n*5)<(n*3+11))
        cout<<"Local"<<endl;
    else
        cout<<"Luogu"<<endl;
    return 0;
}

3.if else嵌套

3.1.语法介绍

当我们有很多情况需要判定时,可以使用“分支嵌套”。也可以叫做“else if语句”。

if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else if(表达式3)
    语句3;
……
else if(表达式n)
    语句n;

注意:每一个if都会自动匹配最近的else。

3.2.例题1——肥胖问题

肥胖问题 - 洛谷

题目描述

BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是 m h 2 \dfrac{m}{h^2} h2m,其中 m m m 是指体重(千克), h h h 是指身高(米)。不同体型范围与判定结果如下:

  • 小于 18.5 18.5 18.5:体重过轻,输出 Underweight
  • 大于等于 18.5 18.5 18.5 且小于 24 24 24:正常体重,输出 Normal
  • 大于等于 24 24 24:肥胖,不仅要输出 BMI 值(使用 cout 的默认精度),然后换行,还要输出 Overweight

现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。

对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 0 0 0,不要输出后缀 0 0 0

请注意,保留六位有效数字不是保留六位小数。例如 123.4567 123.4567 123.4567 应该输出为 123.457 123.457 123.457 5432.10 5432.10 5432.10 应该输出为 5432.1 5432.1 5432.1

输入格式

共一行。

第一行,共 2 2 2 个浮点数, m , h m, h m,h,分别表示体重(单位为 kg),身高(单位为 m)。

输出格式

输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight 情况的特别处理请参照题目所述。

输入输出样例

输入 #1
70 1.72
输出 #1
Normal
输入 #2
100 1.68
输出 #2
35.4308
Overweight

提示

对于所有数据, 40 ≤ m ≤ 120 40\le m \le 120 40m120 1.4 ≤ h ≤ 2.0 1.4 \le h \le 2.0 1.4h2.0 m m m h h h 的小数点后不超过三位。

示例程序:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double m,h,BMI;
    cin>>m>>h;
    BMI=m/(h*h);
    if(BMI<18.5)
        cout<<"Underweight";
    else if(BMI>=15&&BMI<24)
        cout<<"Normal";
    else if(BMI>=24)//if(BMI>=24)可以不加,因为就只有三种情况,前面两种都不是就是第三种
        cout<<BMI<<endl<<"Overweight";
	return 0;
}

3.3.练习1——计算邮资

题目描述

请根据邮件的重量和用户选择是否加急计算邮费。计算规则:

  • 重量在 1000 1000 1000 以内(包括),基本费 8 8 8 元;

  • 超过 1000 1000 1000 克的部分,每 500 500 500 克加收超重费 4 4 4 元,不足 500 500 500 克部分按 500 500 500 克计算;

  • 如果用户选择加急,多收 5 5 5 元。

输入格式

一行,包含一个正整数 x x x 和一个字符 c(yn),之间用一个空格隔开,分别表示重量和是否加急。

如果字符是 y,说明选择加急;如果字符是 n,说明不加急。

输出格式

输出一行一个正整数,表示邮费。

输入输出样例 #1

输入 #1
1200 y
输出 #1
17

提示

对于100%数据 1 ≤ x ≤ 1 0 6 1\leq x\leq 10^6 1x106

还是一样,根据题目模拟就行了。

#include<iostream>
#include<cmath>
using namespace std;
int main(){
    int x,ans=0;
    char c;
    cin>>x>>c;
    if(x<1000&&c=='n')ans=8;
    else if(x<1000&&c=='y')ans=8+5;
    else if(x>1000&&c=='n')ans=8+ceil((x-1000)/500.0)*4;
    else ans=8+ceil((x-1000)/500.0)*4+5;
    cout<<ans<<endl;
    return 0;
}

4.switch 语句

4.1.switch语法

如果有很多单调的情况,我们可以用switch语句简化。switch语句基本语法如下:

switch(表达式)
{
    case 常量表达式1:语句块1
    case 常量表达式2:语句块2
    …
    default:语句块n
}

    switch语句中的每个常量表达式都必须各不相同。在执行switch语句的时候,会先计算表达式的值,然后将表达式的值带入到每个case后面的表达式。发现了可以匹配的就把后面所有的语句都执行了。
    default代表默认情况。即如果判断没有一个是成立的,在其它情况下执行的语句。
    break可以用来跳出switch语句。在执行switch语句时,只要碰到一个break,后面的所有语句就都不会再执行了。

4.2.例题——小洛机器人

提供以下指令(一个字符),机器人按照指令给出对应的回复:
•输入G:打招呼,小洛会回复 Hello, my master!,还会在下一行加上一句 I'm Xiaoluo.
•输入N:自我介绍,小洛只会回复 I'm Xiaoluo.
•输入S:唱歌,小洛会哼唱 Teinei teinei teinei~
•输入B或者Q:告别,小洛向你说 Bye bye!
•其他任何字符:小洛无法理解,只能回复 Sorry...

代码如下:

#include<iostream>
using namespace std;
int main(){
    char c;
    cin>>c;
    switch(c)
    {
    case'G':cout<<"Hello, my master!"<<endl;//先输出Hello, my master!,然后跳到后面,输出I'm Xiaoluo.
    case'N':cout<<"I'm Xiaoluo."<<endl;break;
    case'S':cout<<"Teinei teinei teinei~"<<endl;break;
    case'B':case'Q':cout<<"Bye bye!"<<endl;break;//B和Q都会输出Bye bye!
    default:cout<<"Sorry..."<<endl;//由于是在最后所以不需要跳出
    }
    return 0;
}

课后作业

【入门2】分支结构 - 洛谷

喜欢就订阅此专辑吧!

【蓝胖子编程教育简介】
蓝胖子编程教育,是一家面向青少年的编程教育平台。平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。

欢迎扫码关注蓝胖子编程教育
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值