C++零基础入门——07 选择结构

本文详细介绍了C++中的选择结构,包括if语句的单分支、双分支和多分支形式,以及if语句的嵌套使用,switch语句的应用,以及三目运算的简化表达。通过实例展示了如何判断偶数、闰年、上海一日游费用和体育考试项目等。
摘要由CSDN通过智能技术生成


一、程序流程结构

C/C++中有三种基本程序运行结构:顺序结构、选择结构、循环结构
1.顺序结构: 程序按照从上到下的顺序,依次执行代码,不会发生跳转。
2.选择结构: 程序分为多条不同的路,根据条件判断是否满足,再有选择性的执行相应的代码
3.循环结构: 程序根据条件判断是否满足,如果满足条件,会重复执行相同的某段代码

二、选择结构

1. if语句

作用: 判断条件,有选择性的执行相应的代码语句。

if语句一共有三种形式存在:

(1)单分支

语法:

if (条件){
	执行语句;
}

if--如果,判断条件的意思。判断为真(true),则执行语句;判断为假(false),则不执行语句。

流程图:

示例:

// 判断成绩:60分以上及格,85分以上优秀,60分以下不及格

#include<iostream>
using namespace std;
int main(){
	int score;
	cout << "请输入你的成绩:";
	cin >> score;
	if (score<60){ // 如果分数小于60,输出不及格
		cout << "很遗憾,你没有及格......" << endl; 
	}
	if (60<=score && score<85){ // 如果分数大于等于60 并且 分数小于85,输出及格
	//注意:此处表示60<=score<85,但在C++中,不能直接支持链式比较,需要使用逻辑运算符进行连接
		cout << "恭喜你,及格了!" << endl; 
	}
	if (score>=85){ // 如果分数大于等于85,输出优秀
		cout << "太棒了,你的成绩很优秀!" << endl;
	}
	return 0 ;
}
/**
运行效果:
	1. 输入成绩:59,if语句进行判断,成绩小于60,输出:“很遗憾,你没有及格”
	2. 输入成绩:61,if语句进行判断,成绩大于等于60 并且 小于85,输出:“恭喜你,及格了”
	3. 输入成绩:85,if语句进行判断,成绩大于等于85,输出“太棒了,你的成绩很优秀”
**/

(2)双分支

语法:

if (条件){
	执行语句1;
}else{
	执行语句2;
}

if--如果,else--否则
判断条件,如果条件为真(true),则执行语句1,否则(false)执行语句2

流程图:
在这里插入图片描述
示例:

// 判断成绩录取:某校录取分数线为500分,达到分数线即可录取成功,否则录取失败。

#include<iostream>
using namespace std;
int main(){
	int score;
	cout << "请输入你的成绩:";
	cin >> score;
	if (score>=500){ // 如果分数大于等于500,输出录取成功
		cout << "恭喜你,录取成功!" << endl; 
	}else{ // 否则,输出录取失败
		cout << "很遗憾,录取失败!" << endl; 
	}
	return 0 ;
}

/**
运行效果:
	1.输入成绩:500,判断成绩满足条件大于等于500,输出:”恭喜你,录取成功!“
	2.输入成绩:499,判断成绩不满足条件大于500,输出:”很遗憾,录取失败!“
**/

(3)多分支

语法:

if (条件1){
	执行语句1;
}else if (条件2){
	执行语句2;
}else{
	执行语句3;
}

if--如果,else if--否则如果,else--否则
判断条件1,如果条件为真(true),则执行语句1;否则如果满足条件2,则执行语句2;否则(false)执行语句3

流程图:
在这里插入图片描述
示例:

// 判断成绩:60分以上及格,85分以上优秀,60分以下不及格
// 可以对比单分支,查看区别。不同写法,相同效果,多分支会更简便。
// 注:else if可以根据具体条件而定,如果有N个条件,则可以使用N个else if。

#include<iostream>
using namespace std;
int main(){
	int score;
	cout << "请输入你的成绩:";
	cin >> score;
	if (score<60){ // 如果分数小于60,输出不及格
		cout << "很遗憾,你没有及格......" << endl; 
	}else if (60<=score && score<85){ // 否则如果分数大于等于60 并且 分数小于85,输出及格
		cout << "恭喜你,及格了!" << endl; 
	}else{ // 否则,输出优秀
		cout << "太棒了,你的成绩很优秀!" << endl;
	}
	return 0 ;
}
/**
运行效果:
	1. 输入成绩:59,if语句进行判断,成绩小于60,输出:“很遗憾,你没有及格”
	2. 输入成绩:61,if语句进行判断,成绩大于等于60 并且 小于85,输出:“恭喜你,及格了”
	3. 输入成绩:85,if语句进行判断,成绩大于等于85,输出“太棒了,你的成绩很优秀”
**/

练习一 偶数

题目介绍: 读取一个整数a,如果a为偶数在屏幕上输出"偶数",否则输出"奇数"。
样例输入: 22
样例输出: 偶数
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------

#include<iostream>
using namespace std;
int main(){
	int a;
	cin >> a;
	if (a%2==0){ // 如果 a除以2的余数为0,则输出”偶数“
		cout << "偶数"; 
	}
	return 0 ;
}

练习二 判断闰年

题目介绍: 输入一个年份(整数),判断输入的是不是闰年,并输出结果。闰年判断条件:能被4整除且不能被100整除或者能被400整除。

样例输入1: 2008
样例输出1: 2008是闰年

样例输入2: 2009
样例输出2: 2009不是闰年
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------

#include<iostream>
using namespace std;
int main(){
	int year;
	cin >> year;
	if (year%4==0 && year%200!=0) || (year%400=0){
		cout << year << "是闰年" << endl; 
	}else{
		cout << year << "不是闰年" << endl; 
	} 
	return 0 ;
}

练习三 上海一日游

题目介绍: “上海一日游”的收费标准为:5 人以内(含 5 人)按散客标准,每人 300 元;超过 5 人,按团体标准,每人 280 元。输入人数n,输出旅游总费用。
样例输入: 9
样例输出: 2520
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------

#include<iostream>
using namespace std;
int main(){
	int n;
	cin >> n;
	if (n<=5){
		cout << n*300 << endl;
	}else{
		cout << n*280 << endl;
	}
	return 0 ;
}

2. if语句嵌套

在if语句中,还可以继续嵌套if语句,以达到更精准的判断。

示例:
题目介绍: 做一个高考录取系统,二本录取分数线为400分,一本录取分数线为500分,输入一个分数,判断分数是否达到录取分线,若达到则输出相应的录取结果,否则输出未被录取。

样例输入1: 401
样例输出1: 恭喜你,二本已录取

样例输入2: 501
样例输出2: 恭喜你,一本已录取

样例输入3: 399
样例输出3: 很遗憾,未被录取

#include<iostream>
using namespace std;
int main(){
	int score;
	cin >> score;
	if (score>=400){
		if(score<500){
			cout << "恭喜你,二本已录取" << endl;
		}else{
			cout << "恭喜你,一本已录取" << endl; 
		}
	}else{
		cout << "很遗憾,未被录取" << endl;
	}
	return 0 ;
}

练习一 体育考试

题目介绍: 体育考试中,每个学生要考两个项目。男生必考的是1000米,女生必考的是800米 。
另外一个项目根据座位的单双号决定,男生单号跳高,双号跳远。女生单号跳绳,双号仰卧起坐。
程序输入b(男生)或g(女生)和座位号,输出要参加的项目。
样例输入: b 12
样例输出: 1000m 跳远
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------

#include<iostream>
using namespace std;
int main(){
	char sex;
	int n;
	cin >> sex >> n;
	if (sex=='b'){
		if (n%2==0){
			cout << "1000m 跳远" << endl; 
		}else{
			cout << "1000m 跳高" << endl; 
		}
	}else{
		if (n%2==0){
			cout << "800m 仰卧起坐" << endl;
		}else{
			cout << "800m 跳绳" << endl; 
		}
	}
	return 0 ;
}

练习二 完美数字

题目介绍: 一个数字可以被自身所有位上非0数字整除,那么这个数字被称为完美数字。例如:132可以分别被1、2、3整除,则132是完美数字。
输入一个三位整数,判断其是否为完美数字。
样例输入: 132
样例输出: 132是完美数字
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------

#include<iostream>
using namespace std;
int main(){
	int n,a,b,c;
	cin >> n;
	a = n/100; // n的百位数:整数相除结果取整,三位数除以100得到百位数
	b = (n%100)/10; // n的十位数:三位数除以100的余数为后两位数,再以余数除以10得到十位数 
	c = n%10; // n的个位数:三位数除以10的余数为十位数
	if (n%a==0){
		if (n%b==0){
			if(n%c==0){
				cout << n << "是完美数字" << endl;
			}
		}
	}
	return 0 ;
}

3.switch语句

作用: 可执行多条分支语句
语法:

switch(表达式) // 根据表达式的结果,判断执行哪条分支语句
{
	case 结果1:执行语句;break; // 如果是结果1,则执行该语句,执行后退出分支
	case 结果2: 执行语句;break; // 如果是结果2,则执行该语句,执行后退出分支
	...  // 有多少结果就可以有多少分支
	default:执行语句;break; // 如果以上结果都不满足,则执行默认语句,执行后退出分支
}
注意:每个分支语句后面必须加上break(退出),否则执行语句会出错

示例:
题目介绍: 假设今天星期一,程序读入整数n,输出n天后是星期几。
样例输入: 8
样例输出: 8天后为星期二

#include<iostream>
using namespace std;
int main(){
	int n;
	cin >> n;
	switch(n%7){ // 判断n除以7的余数结果
		case 0:cout << n << "天后是星期一" << endl;break; // 结果=0,是星期一
		case 1:cout << n << "天后是星期二" << endl;break; // 结果=1,是星期二
		case 2:cout << n << "天后是星期三" << endl;break; // .....
		case 3:cout << n << "天后是星期四" << endl;break;
		case 4:cout << n << "天后是星期五" << endl;break;
		case 5:cout << n << "天后是星期六" << endl;break;
		default:cout << n << "天后是星期天" << endl;break;
	}
	return 0 ;
}

练习一 计算器

题目介绍: 编写代码实现计算器的+、-、*、/功能。程序输入两个要运算的数字(浮点类型)和运算符号,输出运算结果。当输入非法符号时,需要提示“非法输入”。
样例输入: 1.5 * 2
样例输出: 3
---------------------------------------------------------------------------------我是一条答案分割线------------------------------------------------------------------------

#include<iostream>
using namespace std;
int main(){
	double a,b;
	char c;
	cin >> a >> c >> b;
	switch(c){
		case '+':cout << a+b << endl;break;
		case '-':cout << a-b << endl;break;
		case '*':cout << a*b << endl;break;
		case '/':
			if (b!=0){ // 判断b是否为0,不为0,则进行除法计算
				cout << a/b << endl;
			}break;
		default:cout << "非法输入" << endl;break; // b为0,执行默认语句,输出"非法输入"
	}
	return 0 ;
}

4. 三目运算

作用: 简化选择结构代码,实现简单的判断
语法: 表达式1 ? 表达式2 : 表达式3
说明: 如果表达式1的值为真,则执行表达式2,并返回表达式2的结果
       如果表达式1的值为假,则执行表达式3,并返回表达式3的结果
示例:

#include<iostream>
using namespace std;
int main(){
	int a=10,b=20,c=0;
	c = (a>b ? a:b); // 如果a>b,那么c=a,否则c=b
	cout << "c=" << c << endl; // 输出结果:20
	
	// 需要注意:在C++中,三目运算返回结果的是一个变量,可以用来进行赋值
	(a>b ? a:b) = 100; // 如果a>b,返回a,则a=100;否则返回b,则b=100
	cout << "a=" << a << endl; //输出结果:10
	cout << "b=" << b << endl; // 输出结果:100
	return 0 ;
}

专栏和博客不断更新中,欢迎关注哦~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小汪不秃头~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值