全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(多分支结构)

在C++中,单分支结构(if语句)通常用于简单的条件判断,只有if条件为真的情况下执行花括号里面语句块;双分支结构(if-else)允许程序在if条件为真时执行if后面的语句块,在if条件为假的情况下,执行else后面的语句块;在更复杂的情况下,可能需要根据多个条件来决定哪一段代码,这时就需要扩展if-else语句,使用多个else if块来实现多分支结构,多分支结构功能强大,具体格式如下:

cpp 复制代码
if(condition1){
  //如果condition1为真,则执行这里的代码
  语句1;
  ......
}else if(condition2){
  //如果condition1为假,condition2为真,则执行这里的代码
  语句2;
  ......
}else if(condition3){
  //如果condition1、condition2为假,condition3为真,则执行这里的代码
  语句3;
  ......
}
......
else if(conditionn){
  //如果condition1、condition2、......conditionn-1为假,conditionn为真,则执行这里的代码
  语句n;
  ......
}else{
  //如果condition1、condition2、......conditionn为假,则执行这里的代码
  语句n+1;
  ......
}

在多分支结构中,各个表达式按顺序求值,直到找到某个表达式的值为真,则执行与其相关的语句,并由此结束整个if语句,即跳过后续所有的条件检查。需要注意的是"else if"表达的情况是指排除在它之前条件表达式的情况后,再判断当前的表达式是否成立。

实战训练1---将某一门课程的成绩转换为等级输出

问题描述:

一个学生的成绩如果大于等于90,程序会输出"优秀",如果成绩大于等于80小于90,程序输出"良好",如果大于等于70小于80,程序输出"中等",如果大于等于60小于70,程序输出"及格",如果小于60,程序输出"不及格"。

输入格式:

一行一个整数score,0<=score<=100

输出格式:

输出成绩对应的等级。

输入输出样例:

|-------|-------|
| 输入样例1 | 输出样例1 |
| 95 | 优秀 |
| 输入样例2 | 输出样例2 |
| 89 | 良好 |
| 输入样例3 | 输出样例3 |
| 73 | 中等 |
| 输入样例4 | 输出样例4 |
| 60 | 及格 |
| 输入样例5 | 输出样例5 |
| 56 | 不及格 |

问题分析:

根据题目需要首先定义一个变量score,并从键盘上输入score的值,针对score的取值范围,需要多个条件来判断并执行对应的语句,这时需要if-else if多分支结构来处理,具体程序如下:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main() {
   	int score;//定义成绩变量score 
	cin>>score;//输入变量score的值 
	if(score>=90){ //成绩的范围:90<=score<=100 
		cout<<"优秀"<<endl; 
	}else if(score>=80){//成绩的范围:80<=score<90
		cout<<"良好"<<endl; 
	}else if(score>=70){//成绩的范围:70<=score<80
		cout<<"中等"<<endl;
	}else if(score>=60){//成绩的范围:60<=score<70
		cout<<"及格"<<endl;
	}else{//成绩的范围:score<60
		cout<<"不及格"<<endl;
	}
	return 0;
}

实战训练2---整数比较大小

问题描述:

输入两个整数,比较它们的大小

输入格式:

一行包含两个整数a和b,中间用单个空格隔开。

输出格式:

一个字符。

若a 的值大于 b的值,输出 > ;若a的值等于b的值,输出 = ;若a的值小于b的值,输出 < 。

输入及输出样例:

|-----------|-------|
| 输入样例1 | 输出样例2 |
| 1000 1000 | = |
| 输入样例2 | 输出样例2 |
| -124 2 | < |
| 输入样例3 | 输出样例3 |
| 500 240 | > |

具体程序如下:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
int main() {
   	int a,b;//定义变量a和b 
	cin>>a>>b;//输入变量a和b的值 
	if(a>b){//判断a是否大于b 
		cout<<'>'<<endl;
	}else if(a==b){//判断a和b是否相等 
		cout<<'='<<endl;
	}else{//否则a小于b 
		cout<<'<'<<endl;
	}
	return 0;
}
相关推荐
淡海水9 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
leobertlan9 小时前
好玩系列:训练一个神经网络模型指导小孩玩游戏2-大局观教练
算法
Tisfy10 小时前
LeetCode 3876.构造奇偶一致的数组 II:三种情况分类讨论(其实还是脑筋急转弯)
算法·leetcode·题解·脑筋急转弯
乐迪信息11 小时前
智慧港口船舶AI算法实现在线状态监测
大数据·人工智能·深度学习·算法·计算机视觉
kiracrimson11 小时前
从缓存的角度看链表与线性表的差异
数据结构·链表·缓存
木井巳12 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
心抵鹊13 小时前
归并排序之翻转对(hard)
数据结构·算法
白山编程大哥13 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法
_Twink1e13 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen
shehuiyuelaiyuehao13 小时前
算法34,位运算符操作,总结
算法