栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

选择结构(理论)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

选择结构(理论)

分支结构:根据条件判定的结果,选择执行不同的程序代码。现实中有大量类似的例子,例如根据红绿灯的颜色决定前进、停止等。


文章目录
  • 一、关系运算符与关系表达式
    • 1、关系运算符:
    • 2、关系表达式
  • 二、逻辑运算符与逻辑表达式
  • 三、选择结构
    • 1、单分支
    • 2、双分支
    • 3、条件表达式(三目运算符?:)
    • 4、分支嵌套
    • 5、多分支


一、关系运算符与关系表达式 1、关系运算符:
小于大于小于等于大于等于等于不等于
<><=>===!=

注意:
▶ blacktriangleright ▶ == 与 = 的区别(a=5;赋值运算 a==5;判断是否相等)
▶ blacktriangleright ▶ <、>、<=、>=的优先级大于== 、!=
▶ blacktriangleright ▶ 算术运算符的优先级高于关系运算符的优先级
▶ blacktriangleright ▶ 关系运算符的优先级高于赋值运算符的优先级

2、关系表达式

概念:用关系表达式将表达式连接起来称为关系表达式。
        spacespacespacespacespacespacespace        关系表达式的值非真既假,在C++语言中,用非0代表真,用0代表假。关系表达式的结果只有两个,真为1,0为假。
        spacespacespacespacespacespacespace        一般格式为:<项目1><关系运算符><项目2>
注意:
▶ blacktriangleright ▶ 表达式的值:如果关系表达式成立,其值为1,表示真;否则为0,表示假
▶ blacktriangleright ▶ 字符与字符比较时按位依次比较他们的ASCII码
ASCII码规律:
(1)小写字母的ASCII码值>大写字母的ASCII码值>数字的ASCII码值
(2)同类字符的ASCII码值递增
(3)‘0’:48 ‘A’:65 ‘a’:97,同一英文字符小写-大写=32

#include
using namespace std;
int main(){
	int a=10,b=20;
	cout<<(a=b)<<" "<<(a!=b)<'0')< 

二、逻辑运算符与逻辑表达式

逻辑运算符:非(!)>与(&&)>或(||)
非(!)表示取反,与(&&)表示同时成立(交集),或(||)表示只需要成立一个(并集)

AB!AA&&BA||B
00100
01101
10001
11011

注意:
▶ blacktriangleright ▶ 逻辑运算符的优先级:非>与>或
▶ blacktriangleright ▶ 总优先级:! → rightarrow → 算术 → rightarrow → 关系 → rightarrow → 逻辑 → rightarrow → 赋值 → rightarrow → 逗号
▶ blacktriangleright ▶ 作为条件时,所有非0值均为真;作为结果,只有0和1两种
▶ blacktriangleright ▶ 数学条件:1

例题:输入n,判断某年n是否为闰年
分析:n为闰年的情况有两种:
1、能被4整除且不能被100整除(2200不是闰年)
2、能被400整除
逻辑表达式:(n%4==0 && n%100!=0) || n%400==0

三、选择结构 1、单分支
if(条件){
	语句或语句组
}

代码执行流程:首先计算表达式的值,若为真,则执行语句;否则,不执行语句。

例如,求一个数的绝对值

int a;
cin>>a;
if(a<0)
	a=-a;
cout< 
2、双分支 
if(条件){
	语句或语句组1
}
else{
	语句或语句组2
}

例如,求一个数的绝对值

int a;
cin>>a;
if(a>=0)
	cout< 
3、条件表达式(三目运算符?:) 

形式:条件?值1:值2
当条件成立时,表达式的值为值1,否则为值2
例如,求ab中的最大值的公式如下:a>b?a:b

4、分支嵌套
if(条件1)
	语句1
else{
	if(条件2)
		语句2
	else
		语句3  //语句3亦可是双分支
}

例如,求分段函数,如下所示:
y = { 0   ( x < 0 ) x   ( 0 < = x < = 5 ) x 2   ( x > 5 ) y=begin{cases} 0space(x<0)\ xspace(0<=x<=5)\ x^2space(x>5) end{cases} y=⎩⎪⎨⎪⎧​0 (x<0)x (0<=x<=5)x2 (x>5)​
根据用户输入的x的值计算函数y的值

#include
using namespace std;
int main(){
	int x,y;
	cin>>x;
	if(x<0)
		y=0;
	else{
		if(x<=5)
			y=x;
		else
			y=pow(x,2);
	}
	cout< 
5、多分支 
if(条件1)
	语句1
else if(条件2)
	语句2
else if(条件3)
	语句3
...
else
	语句n

例:输入3个整数,从小到大排序后输出
输入样例:20 7 33
输出样例:7 20 33

分析:a,b,c这三个数排序一共有6种可能:abc、acb、bac、bca、cab、cba,最简单的思路就是使用六个if语句,如下

#include
using namespace std;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	if(a 

上述程序看上去没有错误,而且能够通过样例,但是输入"1 1 1得不到任何输出"!这个例子说明,即使通过了题目中给出的样例,程序仍有可能存在问题。
提示:算法竞赛的目标是编程对于任意输入均可以得到正确的结果,而不仅仅是样例。
将程序稍作修改:把所有的"<“改成”<="。尝试后会发现仍然存在问题。对于"1 1 1",程序会输出六行"1 1 1"。
解决方案:将多个单分支改为多分支,将if改为else if,else if可读作“再如果”,即上一个“如果”不成立才会去判断下一个“如果”,所有“如果”后的语句中只执行一个。

#include
using namespace std;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	if(a 

此时输入"1 1 1",我们会发现仍然存在一个问题,没有输出,因此一般多分支的最后一个分支只写else(当上面所有“如果”都不成立的的情况下执行),这样可以保证此分支结构必有输出。

#include
using namespace std;
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	if(a
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号