5分支结构程序1
- 格式:doc
- 大小:175.50 KB
- 文档页数:12
算法的分支结构
算法的分支结构是指程序在执行过程中根据不同的条件选择不同的执行路径。
常见的分支结构有以下几种:
1、顺序结构:程序按照从上到下的顺序依次执行语句,不进行任何条件判断。
2、条件结构:程序根据条件判断选择不同的执行路径。
常见的条件结构有if-else语句和switch-case语句。
3、循环结构:程序通过循环体中的语句反复执行,直到满足退出循环的条件为止。
常见的循环结构有for循环、while循环和do-while循环。
4、递归结构:程序可以通过调用自身的函数实现对问题的解决。
递归结构通常包含一个或多个基本条件和一个递归调用。
5、短路结构:当条件成立时,程序会直接跳过后续的条件判断,继续执行下一条语句。
常见的短路结构有and 和or运算符、三目运算符等。
这些分支结构可以组合使用,形成更复杂的算法结构。
例如,可以使用条件结构和循环结构来实现一个简单的排序算法。
Python语言程序设计-第章-分支结构含答案(一)Python语言程序设计是计算机学科中的一个重要领域,本文将针对Python语言程序设计的第一章——分支结构进行介绍,并探讨分支结构的相关知识点。
一、分支结构的概念和基本语法分支结构是程序执行流程中的一个重要构成部分,它的基本概念和语法如下:if 条件语句:执行语句1else:执行语句2其中,条件语句可以是一个表达式,它的值为True或False。
如果条件语句的值为True,则执行语句1,否则执行语句2。
需要注意的是,if和else的后面都要加上冒号(:),执行语句要缩进。
二、if语句的嵌套if语句可以进行嵌套,即在if语句中再嵌套一个if语句。
if语句嵌套的语法如下:if 条件语句1:执行语句1if 条件语句2:执行语句2else:执行语句3需要注意的是,在if语句嵌套中,每个if语句都要有对应的else,否则程序会出现错误。
三、if语句的多分支结构在实际编程过程中,有时候需要对多个条件进行判断,此时就需要用到if语句的多分支结构。
if语句的多分支结构语法如下:if 条件语句1:执行语句1elif 条件语句2:执行语句2elif 条件语句3:执行语句3else:执行语句4需要注意的是,在if语句的多分支结构中,每个elif语句都是对上一个if或elif语句的条件的补充,else语句是对以上所有条件都不成立的情况的处理。
四、练习题1、输入一个数字,判断它是正数、负数还是零。
答案:num = int(input('请输入一个数字:'))if num > 0:print(num, '是正数')elif num == 0:print(num, '是零')else:print(num, '是负数')2、输入一个年份,判断它是否为闰年。
答案:year = int(input('请输入一个年份:'))if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: print(year, '是闰年')else:print(year, '不是闰年')3、输入三个数字,求出它们的平均数。
有趣的分支结构程序例子分支结构是程序设计中的一种常见结构,它允许程序根据不同的条件选择不同的执行路径。
以下是一些有趣的分支结构程序例子,它们展示了分支结构的灵活性和实用性。
1. 猜数字游戏:创建一个程序,让用户猜一个随机生成的数字。
如果用户猜对了,程序输出"恭喜你,猜对了!";如果用户猜错了,程序会提示用户是猜大了还是猜小了,然后用户可以继续猜。
2. 奇偶数判断:编写一个程序,让用户输入一个整数,然后判断该整数是奇数还是偶数。
如果是奇数,程序输出"这是一个奇数";如果是偶数,程序输出"这是一个偶数"。
3. 成绩等级划分:编写一个程序,让用户输入一个考试成绩,然后根据以下规则划分等级:90分以上为优秀,80-89分为良好,70-79分为中等,60-69分为及格,60分以下为不及格。
程序根据输入的成绩输出相应的等级。
4. 闰年判断:编写一个程序,让用户输入一个年份,然后判断该年份是否是闰年。
如果是闰年,程序输出"这是一个闰年";如果不是闰年,程序输出"这不是一个闰年"。
闰年的判断规则是:年份能被4整除但不能被100整除,或者能被400整除。
5. 石头剪刀布游戏:创建一个程序,让用户选择石头、剪刀或布,然后与计算机进行比较。
根据石头剪刀布的规则,判断胜负并输出结果。
6. 购物车结算:编写一个程序,让用户输入购买商品的数量和单价,然后计算出总金额。
如果购买数量超过10件,程序会给予10%的折扣。
最后输出总金额和折扣后的金额。
7. BMI指数计算器:创建一个程序,让用户输入身高和体重,然后计算出BMI指数。
根据BMI指数的范围,判断用户的体重状况并输出相应的描述。
8. 电影评分推荐:编写一个程序,让用户输入自己对几部电影的评分,然后根据评分的平均值推荐相应的电影类型。
比如,如果平均评分高于8分,则推荐动作片;如果平均评分低于5分,则推荐喜剧片。
5 分支结构程序 (1)5.1 关系运算符和表达式 (1)5.1.1 关系运算符及其优先次序 (1)5.1.2 关系表达式 (1)5.2 逻辑运算符和表达式 (2)5.2.1 逻辑运算符极其优先次序 (2)5.2.2 逻辑运算的值 (3)5.2.3 逻辑表达式 (3)5.3 if语句 (4)5.3.1 if语句的三种形式 (4)5.3.2 if语句的嵌套 (8)5.3.3 条件运算符和条件表达式 (9)5.4 switch语句 (10)5.5 程序举例 (11)5分支结构程序5.1 关系运算符和表达式在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。
比较两个量的运算符称为关系运算符。
5.1.1关系运算符及其优先次序在C语言中有以下关系运算符:1)< 小于2)<= 小于或等于3)> 大于4)>= 大于或等于5)== 等于6)!= 不等于关系运算符都是双目运算符,其结合性均为左结合。
关系运算符的优先级低于算术运算符,高于赋值运算符。
在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。
5.1.2关系表达式关系表达式的一般形式为:表达式关系运算符表达式例如:a+b>c-dx>3/2‘a’+1<c-i-5*j==k+1都是合法的关系表达式。
由于表达式也可以又是关系表达式。
因此也允许出现嵌套的情况。
例如:a>(b>c)a!=(c==d)等。
关系表达式的值是真”和“假”,用“1”和“0”表示。
如:5>0的值为“真”,即为1。
(a=3)>(b=5)由于3>5不成立,故其值为假,即为0。
【例5.1】main(){char c='k';int i=1,j=2,k=3;float x=3e+5,y=0.85;printf("%d,%d\n",’a’+5<c,-i-2*j>=k+1);printf("%d,%d\n",1<j<5,x-5.25<=x+y);printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);}在本例中求出了各种关系运算符的值。
字符变量是以它对应的ASCII码参与运算的。
对于含多个关系运算符的表达式,如k==j==i+5,根据运算符的左结合性,先计算k==j,该式不成立,其值为0,再计算0==i+5,也不成立,故表达式值为0。
5.2 逻辑运算符和表达式5.2.1逻辑运算符极其优先次序C语言中提供了三种逻辑运算符:1)&& 与运算2)|| 或运算3)! 非运算与运算符&&和或运算符||均为双目运算符。
具有左结合性。
非运算符!为单目运算符,具有右结合性。
逻辑运算符和其它运算符优先级的关系可表示如下:!(非)→&&(与)→||(或)“&&”和“||”低于关系运算符,“!”高于算术运算符。
按照运算符的优先顺序可以得出:a>b && c>d 等价于 (a>b)&&(c>d)!b==c||d<a 等价于 ((!b)==c)||(d<a)a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b)5.2.2逻辑运算的值逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。
其求值规则如下:1.与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。
例如:5>0 && 4>2由于5>0为真,4>2也为真,相与的结果也为真。
2.或运算||:参与运算的两个量只要有一个为真,结果就为真。
两个量都为假时,结果为假。
例如:5>0||5>8由于5>0为真,相或的结果也就为真。
3.非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。
例如:!(5>0)的结果为假。
虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。
但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。
例如:由于5和3均为非“0”因此5&&3的值为“真”,即为1。
又如:5||0的值为“真”,即为1。
5.2.3逻辑表达式逻辑表达式的一般形式为:表达式逻辑运算符表达式其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。
例如:(a&&b)&&c根据逻辑运算符的左结合性,上式也可写为:a&&b&&c逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”分别代表“真”和“假”。
【例5.2】main(){char c='k';int i=1,j=2,k=3;float x=3e+5,y=0.85;printf("%d,%d\n",!x*!y,!!!x);printf("%d,%d\n",x||i&&j-3,i<j&&x<y);printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);}本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。
由于x为非0,故!!!x的逻辑值为0。
对x|| i && j-3式,先计算j-3的值为非0,再求i && j-3的逻辑值为1,故x||i&&j-3的逻辑值为 1。
对i<j&&x<y式,由于i<j的值为1,而x<y为0故表达式的值为1,0相与,最后为0,对i==5&&c&&(j=8)式,由于i==5为假,即值为0,该表达式由两个与运算组成,所以整个表达式的值为0。
对于式x+ y||i+j+k由于x+y的值为非0,故整个或表达式的值为1。
5.3 if语句用if语句可以构成分支结构。
它根据给定的条件进行判断,以决定执行某个分支程序段。
C语言的if语句有三种基本形式。
5.3.1if语句的三种形式1.第一种形式为基本形式:ifif(表达式) 语句其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该语句。
其过程可表示为下图。
【例5.3】main(){int a,b,max;printf("\n input two numbers: ");scanf("%d%d",&a,&b);max=a;if (max<b) max=b;printf("max=%d",max);}本例程序中,输入两个数a,b。
把a先赋予变量max,再用if语句判别max和b的大小,如max小于b,则把b赋予max。
因此max中总是大数,最后输出max的值。
2.第二种形式为: if-elseif(表达式)语句1;else语句2;其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。
其执行过程可表示为下图。
【例5.4】main(){int a, b;printf("input two numbers: ");scanf("%d%d",&a,&b);if(a>b)printf("max=%d\n",a);elseprintf("max=%d\n",b);}输入两个整数,输出其中的大数。
改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。
3.第三种形式为if-else-if形式前二种形式的if语句一般都用于两个分支的情况。
当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;…else if(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。
然后跳到整个if语句之外继续执行程序。
如果所有的表达式均为假,则执行语句n。
然后继续执行后续程序。
if-else-if语句的执行过程如图3—3所示。
【例5.5】#include"stdio.h"main(){char c;printf("input a character: ");c=getchar();if(c<32)printf("This is a control character\n");else if(c>='0'&&c<='9')printf("This is a digit\n");else if(c>='A'&&c<='Z')printf("This is a capital letter\n");else if(c>='a'&&c<='z')printf("This is a small letter\n");elseprintf("This is an other character\n");}本例要求判别键盘输入字符的类别。
可以根据输入字符的ASCII码来判别类型。
由ASCII 码表可知ASCII值小于32的为控制字符。
在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。
这是一个多分支选择的问题,用if-else-if语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。
例如输入为“g”,输出显示它为小写字符。
4.在使用if语句中还应注意以下问题:1)在三种形式的if语句中,在if关键字之后均为表达式。
该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。
例如:if(a=5) 语句;if(b) 语句;都是允许的。
只要表达式的值为非0,即为“真”。
如在:if(a=5)…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。