当前位置:文档之家› 分支结构(选择结构)

分支结构(选择结构)

分支结构(选择结构)
分支结构(选择结构)

分支结构(选择结构)

布尔运算(逻辑运算)

要判断“ A>B”是否成立,其结果不是一个具体的数值,而是“真”或“假”,即“是”或“否”的问题。这类问题在我们日常生活中是很多的,诸如这类判断的问题,其结果都是只有两个:真或假,这就是我们所说的布尔运算(逻辑运算)。

?布尔常量和布尔变量

布尔型的常量或变量的值只有两个: TRUE(真)和 FALSE(假)。要把一个变量定义成布尔类型,用的数据类型是: BOOLEAN。例如程序:

var a,b:boolean;

begin

a:=true;

b:=false;

……

end.

?布尔表达式

布尔表达式有以下两种操作:

?关系运算符: =; <>; >; <; >=; <=,是用来进行关系操作(对比)运算的符号,其结果为 BOOLEAN型。如: 2=3,其结果为 FALSE。 *注意:这里的“ =”与赋值

符号“: =”是完全不同的,其作用和结果均不同。

?逻辑运算符: AND(逻辑和); OR(逻辑或); NOT(逻辑非)。是用来进行逻辑值的

逻辑运算的。如:( 2=3) AND ( 4<>3),值为 FALSE。

布尔表达式的运算顺序是:()à函数à NOT à *,/.DIV,MOD,AND,+,-,OR

à >,<,>=,<=,<>,= 。

布尔表达式中的逻辑运算如下表所示: a和 b 均为布尔型表达式或常 /变量 .

由上可以看出:

?用 AND运算时,左右两个值同为 TRUE时,运算结果才为 TRUE,即两个条件同时满足,结果才为 TRUE。这就是我们平常所说的“和”。

?用 OR运算时,左右两个值只需有一个为 TRUE,运算结果就为 TRUE,即两个条件满足其中一个,结果就为 TRUE。这就是我们平常所说的“或”。

?用 NOT运算时,只是把其后的逻辑值取反,即“非”。

?例: [例 4、 1]

程序运行结果是:

false

true

true

由上可以看出:逻辑运算中的关系运算均用括号“()”括起来。关系运算 /逻辑运算的结果也是一个值( BOOLEAN型),所有布尔运算也是表达式,可以赋给一个变量,也可以直接用输出语句输出。打印输出时,屏幕上就显示“ false”或“ true”。

条件 ( IF ) 语句

条件语句是用一个布尔表达式的值来决定程序的走向。即程序提供一个分支,由布尔表达式的值来决定程序究竞运行哪个分支。即程序已经不是顺序结构了,而是提供了一个分支结构。每次只可能运行其中的一个分支。如下图所示:

条件语句有两种格式:

1、 if <布尔表达式 > then <语句 >;

2、 if <布尔表达式 > then <语句 1> else <语句 2>;

格式 1的作用是:如果布尔表达式值为 TRUE(即该条件满足),则运行语句,否则不运行任何语句。

格式 2的作用是:如果布尔表达式值为 TRUE(即该条件满足),由运行语句 1,否则(即布尔值为 FALSE,亦即条件不满足)就运行语句 2。注意:只有条件语句结束时才有分号。

注意:如果条件语句中的分支语句不止一句,可用“ begin …… end;”来框住,加以区别。如:以下两个程序都为从键盘输入 1个整数,打印出它的算术平方根。 [例 4、 2]:

条件语句的嵌套:条件语句是可以嵌套的,例如:

if a>0 then if a>1 then …… else …… else … .;

上述语句看起来无法理解,但如果我们把它改写为以下形式时,就一目了然了:

if a>0 then begin

if a>1 then begin

……

end

else begin

……

end

else begin

……

end;

也就是说,第二个 IF语句只是第一个 IF语句中的一部分,即嵌入的一个 IF语句。

例:输入一个年份,判断它是否闰年。我们知道,每四年中有一年是闰年,即有 366天,而其余三年是平年,只有 365天,而按照规定: 1、如果哪一年的年份能被 4整除,则该年一般为闰年; 2、这样,每 100年又会少一天,所以又规定如果该年能被 4整除,又能被 100整除,则认为该年不是闰年,而是平年; 3、这样,每 400年又会多出一天,所以又规定,如果哪一年能被 400整除,则该年又是闰年。

由上可知: 1980, 1996, 1984年均为闰年, 1900年为平年,而 2000年为闰年。

程序如下: [例 4、 3]

Program q43;

Var y:integer;

Begin

Readln(y);

if (y mod 4=0) then begin

if (y mod 100=0) then begin

if (y mod 400=0) then begin

writeln('run');

end else begin

writeln('ping');

end;

end else begin

writeln('run');

end;

end else begin

writeln('ping');

end;

end.

多分支语句

IF语句只能使程序有两个分支,当遇到需要有两个以上分支时, IF语句就很不适用了,这时我们可以用 CASE语句,它能使程序有很多个分支。其效果如下图:

CASE 表达式 OF

常量1:语句序列1;

常量2:语句序列2;

……

常量N:语句序列N;

else 语句序列N+1;

END;

其中语句序列如果只有一句,可直接写在常量后的冒号后;如果语句序列有很多句,则应该用 BEGIN…… END加以框住。

CASE语句的作用是,根据表达式,表达式可以有多个值,分别对应于常量 1、 2等值时,就运行该常量后所对应的语句。

例:输入 1到 7之间的某个整数,打印出其对应的星期的英语名: [例 4、 4]:

program q44;

var n:integer;

begin

write(‘n=’);

readln(n);

case n of

1:writeln(‘Monday’);

2:writeln(‘Tuesday’);

3:writeln(‘Wednseday’);

4:writeln(‘Thursday’);

5:writeln(‘Friday’);

6:writeln(‘Saturday’);

7:writeln(‘Sunday’);

else writeln(‘WORNG!’);

end;

end.

例:输入一个学生的数值化成绩,把它转化为等级化成绩。即 100-90是 A, 89-80是 B,79-70是 C, 69-60是 D, 59-0是 E。

练习

1、设X,Y,Z的值分别是FALSE,TRUE,FLASE。写出下列逻辑表达式的值:

not x and not y;

true and x or y;

(x and z) or (z and y);

x or z and y;

2、编写一个程序,功能是从键盘输入一个整数,判断它是否二位数,如果是,就打印它,然后结束程序,否则继续要求输入数。

3、编写一个程序,功能是从键盘输入三个整数,打印出其中最大的一个值。

4、从键盘读入一个数,判断它的正负。是正数,则输出"+",是负数,则输出"-"

5、输入a,b,c三个不同的数,将它们按由小到大的顺序输出

6、铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费;如超50

公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。

7、打印某年某月有多少天。(提示:A、闰年的计算方法:年数能被4整除,并且不能被100整除;或者能被400整除的整数年份。B、利用MOD运算可以判断一个数能否被另一个数整除)

8、某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。

9、编写一个程序,功能是从键盘输入1—12中的某一个数字,由电脑打印出其对应的月份的英语名称。

10、以下程序的功能是从键盘输入一个式子,它只有三个字符,第一个及第三个都是数字,中间那个是运算符,程序能把它的结果打印出来。试在程序空中填上相应的语句。

注意:计算机是不懂得把输入的字符串进行计算的,我们必须自己动手把其中的数字转化成数值型的数据,这其中我们使用了VAL函数,如程序中的:Val(s[1],a,c),是把S字符串中的第一个字符转换为数值A,同时输出了一个错误代码C(其实对我们是没有用的)。

c语言第五章 选择结构程序设计(习题册答案)

第五章选择结构程序设计 基础练习(A) 一、填空题 1、关系表达式的运算结果是逻辑值。C语言没有逻辑型数据,以1代表“真”,以0代表“假”。 2、逻辑运算符!是单目运算符,其结合性是由右结合性。 3、C语言提供的三种逻辑运算符是&&、|| 、!。其中优先级最高的为!,优先级最低的为| | 。 4、逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是任何类型的数据。系统最终以0 和非0 来判定它们属于“真”或“假”。 5、设y为int型变量,请写出描述“y是偶数”的表达式(y%2==0)。 6、设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式x2&&x<3。 8、判断char型变量ch是否为大写字母的正确表达式是(ch>=‘A’)&&(ch<=‘Z’)。 9、当a=3,b=2,c=1时,表达式f=a>b>c的值是0。 10、当a=5,b=4,c=2时,表达式a>b!=c的值是1。 11、已知A=7.5,B=2,C=3.6,表达式A>B&&C>A||AB的值是0。 12、若a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是1。 13、有int x,y,z;且x=3,y=-4,z=5,则表达式(x&&y)==(x||z)的值为1。 14、有int x,y,z;且x=3,y=-4,z=5,则以下表达式的值为1。 !(x>y)+(y!=z)||(x+y)&&(y-z) 15、有int a=3,b=4,c=5,x,y;,则以下表达式的值为0。 !(x=a)&&(y=b)&&0 16、if (!k) a=3;语句中的!k可以改写为k= =0,使其功能不变。 二、选择题 1、逻辑运算符两侧运算对象的数据类型(D)。 A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据 2、以下关于运算符优先顺序的描述中正确的是(C)。 A)关系运算符<算术运算符<赋值运算符<逻辑与运算符 B)逻辑与运算符<关系运算符<算术运算符<赋值运算符 C)赋值运算符<逻辑与运算符<关系运算符<算术运算符 D)算术运算符<关系运算符<赋值运算符<逻辑与运算符 3、下列运算符中优先级最高的是(B)。 A)< B)+ C)&& D)!= 4、为判断字符变量c的值不是数字也不是字母时,应采用下述表达式(D)。 A)c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122 B)!(c<=48||c>=57&&c<=65||c>=90&&c<=97||c>=122) C)c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122 D)!(c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122) 5、能正确表示“当x的取值在[1,100]和[200,300]范围内为真,否则为假”的表 达式是(C)。 A) (x>=1)&&(x<=100)&&(x>=200)&&(x<=300) B) (x>=1)||(x<=100)||(x>=200)||(x<=300) C) (x>=1)&&(x<=100)||(x>=200)&&(x<=300)

6多分支结构——select语句

第三节多分支结构——select语句教学设计 一、教学目标 1、知识与技能: (1)充分理解多分支结构的流程。 (2)能够利用多分支结构的思想解决实际问题。 2、过程与方法: 培养学生独立思考的能力、灵活运用所学知识解决问题的能力。 3、情感态度与价值观: (1)增强学生思维的严密性。 (2)善于发现问题,敢于提出疑问并能够针对疑问积极主动的思考解决。 二、教学重难点 1、重点:理解多分支结构的流程。 2、难点:理解程序中流程的代码描述。 三、教学过程 1、游戏引入 通过学生喜欢的心理测试的小游戏再将学生的注意力吸引到本课中来的同时,让学生初步体会,选择不同的面包能够得到不同的测试结果。 (设计意图:从游戏入手,满足了学生爱玩的童心的同时,集中了学生的注意了,拉近了师生之间的距离,也为后面的问题做好铺垫。)

2、初步理解 教师通过解密心理测试的秘密引出游戏的背后的支持者:程序代码,带领学生边玩游戏边看代码,从中发现规律。同时提出问题:玩游戏的过程当中如果在文本框中输入3,测试结果变成“你是灰太狼”,要达到这个要求需要对游戏代码做怎样的修改?并说明原因(代码是比较抽象的概念,很难通过定义理解它,通过修改代码从形式上让代码成为学生自己的东西,接触学生看到代码的陌生心理,同时让学生初步体会不同的选择对应不同的结果。) 3、深入剖析 通过理解星猫心理测试的过程,将不同的面包对应不同的测试结果转化为流程图中不同的条件对应不同的语句组,通过心理测试的代码导出程序基本格式。 (设计意图:图形是比较直观好理解的表现形式,通过图形引出结构的流程图,结合流程图分析该图是如何应用程序语句描述的,以具体的程序语句对照理解语句格式的基本结构也就不难了。) 4、模拟练习 以程序填空的形式完成分蛋游戏,进一步体会不同的年龄段对应不同的礼物,体验调试程序带来的快乐和成就感,在这一过程中要演示学生的成果,适时给出表扬。 (设计意图:对于初中学生来说,本节课只需要理解多分支结构的执行过程,理解不同的条件对应执行不同的语句组,代码只需要简单了解。通过流程图理解游戏在程序中的执行过程,在通过代码填空,

数据结构复习题及答案

中南大学现代远程教育课程考试(考试)复习题及参考答案 数据结构 (使用教材:余腊生编著,人民邮电出版社出版,《数据结构—基于C++模板类的实现》 一、判断题 1.数组是一种复杂的数据结构,数组元素之间的关系既不是线性的也不是树形的。 [ ] 2.链式存储在插人和删除时需要保持物理存储空间的顺序分配,不需要保持数据元素之间的逻辑顺序。 [ ] 3.在用循环单链表表示的链式队列中,可以不设队头指针,仅在链尾设置队尾指针。 [ ] 4.通常递归的算法简单、易懂、容易编写,而且执行的效率也高。 [ ] 5.一个广义表的表尾总是一个广义表。 [ ] 6.当从一个小根堆(最小堆)中删除一个元素时,需要把堆尾元素填补到堆顶位置,然后再按条件把它逐层向下调整,直到调整到合适位置为止。 [ ] 7.对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(h)。 [ ] 8.存储图的邻接矩阵中,邻接矩阵的大小不但与图的顶点个数有关,而且与图的边数也有关。 [ ] 9.直接选择排序是一种稳定的排序方法。 [ ] 10.30、闭散列法通常比开散列法时间效率更高。 [ ] 11.有n个结点的不同的二叉树有n!棵。 [ ] 12.直接选择排序是一种不稳定的排序方法。 [ ] 13.在2048个互不相同的关键码中选择最小的5个关键码,用堆排序比用锦标赛排序更快。 [ ] 14.当3阶B_树中有255个关键码时,其最大高度(包括失败结点层)不超过8。 [ ] 15.一棵3阶B_树是平衡的3路搜索树,反之,一棵平衡的3路搜索树是3阶非B_树。 [ ] 16.在用散列表存储关键码集合时,可以用双散列法寻找下一个空桶。在设计再散列函数时,要求计算出的值与表的大小m互质。 [ ] 17.在只有度为0和度为k的结点的k叉树中,设度为0的结点有n0个,度为k的结点有nk个,则有n0=nk+1。 [ ] 18.折半搜索只适用于有序表,包括有序的顺序表和有序的链表。 [ ] 19.如果两个串含有相同的字符,则这两个串相等。 [ ] 20.数组可以看成线性结构的一种推广,因此可以对它进行插入、删除等运算。 [ ] 21.在索引顺序表上实现分块查找,在等概率查找情况下,其平均查找长度不仅与表中元素个数有关,而且与每一块中元素个数有关。 [ ] 22.在顺序表中取出第i个元素所花费的时间与i成正比。 [ ] 23.在栈满情况下不能作进栈运算,否则产生“上溢”。 [ ] 24.二路归并排序的核心操作是将两个有序序列归并为一个有序序列。 [ ] 25.对任意一个图,从它的某个顶点出发,进行一次深度优先或广度优先搜索,即可访问图的每个顶点. [ ] 26.二叉排序树或者是一棵空二叉树,或者不是具有下列性质的二叉树:若它的左子树非空,则根结点的值大于其左孩子的值;若它的右子树非空,则根结点的值小于其右孩子的值。 [ ] 27.在执行某个排序算法过程中,出现了排序码朝着最终排序序列位置相反方向移动,则该算法是不稳定的。 [ ] 28.一个有向图的邻接表和逆邻接表中表结点的个数一定相等。 [ ]

c语言程序分支结构题目及答案

21. htm 01. 从键盘输入一个字符,如果是大写字母,就转换成小写;如果是小写字母,就转换成大写,如果是其他字符原样保持并将结果输出。 #include void main() { char c; scanf("%c",&c); if(c>='A'&&c<='Z') c=c+32; else if(c>='a'&&c<='z') c=c-32; printf("%c",c); } 02. 从键盘输入一个数,判断其是否是5的倍数而不是7的倍数。如果是,输出Yes,否则输出No。 #include void main() { int a; scanf("%d",&a); if(a%5==0&&a%7!=0) printf("yes"); else printf("no"); } 03. 从键盘输入一个4 位正整数,求其逆序数,并输出。例如:若输入1234,则输出应该是4321。 #include void main() { int n,g,s,b,q,m; scanf("%d",&n); q=n/1000; b=n/100%10; s=n/10%10; g=n%10;

m=g*1000+s*100+b*10+q; printf("%d\n",m); } 22. htm 01. 从键盘输入一个字符,如果是字母,就输出其对应的ASCII 码;如果是数字字符,就转换成对应整数并输出。 #include void main() { char c; scanf("%c",&c); if(c>='a'&&c<='z'||c>='A'&&c<='Z') printf("ASCII:%d",c); else if(c>='0'&&c<='9') printf(" 数字:%d",c-'0'); } 02.从键盘输入一个数,判断其是否能同时被3和5整除。如果是,输出Yes,否则 输出No。 #include void main() { int a;

案例三:选择结构讲解

案例三:选择结构 【基本信息】 【课标要求】 (二)程序设计语言初步 1.内容标准 (1)理解并掌握一种程序设计语言的基本知识,包括语句、数据类型、变量、常量、表达式、函数。会使用程序设计语言实现顺序、选择、循环三种控制结构。 (2)理解模块化程序设计的基本思想,初步掌握其基本方法。 (3)初步掌握调试、运行程序的方法。 (4)在使用某种面向对象程序设计语言解决问题的过程中,掌握面向对象程序设计的基本思想与方法,熟悉对象、属性、事件、事件驱动等概念并学会运用。 2.活动建议 (1)选择实例,根据解决问题的要求分析设计算法,恰当地使用三种控制结构编写源程序,调试并运行该程序,在过程中体验程序设计语言的逻辑特点。 【教学分析】 算法与程序设计是普通高中信息技术课程中选修模块之一,本模块旨在使学生进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。 “选择结构”是教育科学出版社出版的高级中学课程标准实验教科书《算法与程序设计》第二章第三节的内容,共分三课时,本课为第二课时。主要内容是用选择结构编写简单的程序解决具体问题。用选择结构编写简单的程序解决具体问题是在学生已经掌握了程序设计数据的表示与处理的基础上,理解了顺序结构的前题下提出的。 通过本课的学习,可以促进学生对问题解决方法和思想的理解与掌握,从而提升学生的问题解决能力,让学生在按照一定的流程解决问题的过程中,去体会和理解程序设计的思想,而且也为多分支选择结构的学习打下基础。 【教学目标】

1.知识与技能: (1)掌握分支选择结构实现条件判断控制。 (2)能够运用分支选择结构设计编制程序解决问题。 (3)培养学生的逻辑思维能力,促进学生对问题解决方法的理解。 2.过程与方法: (1)通过教师讲解和演示,利用任务驱动,通过学生分组探究,协作学习,在完成一个个具体的任务的过程中了解常用的文件传输方法; (2)以具体的任务为外驱力,在教师的引导下,通过学生个体的自主探究和相互间的协作学习,提高学生用算法解决问题的综合应用能力。 3.情感、态度和价值观: (1)通过完成实践活动,激发学生对信息技术学习与应用的浓厚兴趣,培养学生正确选择、运用信息技术收集、处理、交流、发布信息的能力。 (2)通过小组协同合作交流学习,培养学生互相帮助、团结协作的良好品质;增强学生协作学习、与人合作交流的意识;形成积极主动地学习和使用信息技术、参与信息活动的态度。 【重点难点】 教学重点:掌握分支选择结构的格式 教学难点:对解决问题的方法和步骤的理解,并能根据实际问题写出代码。 【教学资源】 硬件环境: 连接到Internet 的多媒体网络教室(每人一机),都安装了Windows 2000专业版,并安装了VB。大屏幕投影仪,音响设备等。 软件资源: Flash课件、网络教学系统; 【教学策略】

C语言程序分支结构题目及答案

C语言程序分支结构题目 及答案 This model paper was revised by the Standardization Office on December 10, 2020

01. 从键盘输入一个字符,如果是大写字母,就转换成小写;如果是小写字母,就转换成大写,如果是其他字符原样保持并将结果输出。 #include <> void main() { char c; scanf("%c",&c); if(c>='A'&&c<='Z') c=c+32; else if(c>='a'&&c<='z') c=c-32; printf("%c",c); } 02. 从键盘输入一个数,判断其是否是5的倍数而不是7的倍数。如果是,输出Yes,否则输出No。 #include <> void main() { int a; scanf("%d",&a); if(a%5==0&&a%7!=0) printf("yes"); else printf("no"); } 03. 从键盘输入一个4位正整数,求其逆序数,并输出。例如:若输入1234,则输出应该是4321。

#include <> void main() { int n,g,s,b,q,m; scanf("%d",&n); q=n/1000; b=n/100%10; s=n/10%10; g=n%10; m=g*1000+s*100+b*10+q; printf("%d\n",m); } 01. 从键盘输入一个字符,如果是字母,就输出其对应的ASCII码;如果是数字字符,就转换成对应整数并输出。 #include <> void main() { char c; scanf("%c",&c); if(c>='a'&&c<='z'||c>='A'&&c<='Z') printf("ASCII:%d",c); else if(c>='0'&&c<='9') printf("数字:%d",c-'0'); } 02. 从键盘输入一个数,判断其是否能同时被3和5整除。如果是,输出Yes,否则输出No。 #include <>

C语言_顺序分支结构_选择题(新)

顺序分支结构选择题: 1. 设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch 上面表达式的值是 A) A B) a C) Z D) z B 2. 设a,b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中, 值为0的表达式是 A) 'a'&&'b' B) a<=b C) a||b+c&&b-c D) !((a=10 or a<=0 B) a>=10 | a<=0 C) a> =10 || a< =0 D) a>=10 || a<=0 D 4. 设a为整型变量,不能正确表达数学关系:1010 && a<15 D) !(a<=10) && !(a>=15) A 5. 设x 、y 、z 、t均为int型变量,则执行以下语句后,t的值为 x=y=z=1; t=++x || ++y && ++z; A) 不定值B) 4 C) 1 D) 0 C 6. 语句:printf("%d",(a=2) && (b= -2));的输出结果是 A)无输出B)结果不确定C)-1 D)1 D 7. 能正确表示a和b同时为正或同时为负的逻辑表达式是 A) (a>=0 || b>=0) && (a<0 || b<0) B) (a>=0 && b>=0) && (a<0 && b<0) C) (a+b>0 && a+b<=0) D) a*b>0 D 8. 为了避免嵌套的if-else语句的二义性,C语言规定else总是 与( )组成配对关系。 A) 缩排位置相同的if B) 在其之前未配对的if C) 在其之前未配对的最近的if D) 同一行上的if C 9. 已知int x=10,y=20,z=30,则执行 if (x>y) z=x;x=y;y=z; 语句后,x、y、z 的值是( )。 A) x=10,y=20,z=30 B) x=20,y=30,z=30 C) x=20,y=30,z=10 D) x=20,y=30,z=20 B 10. 执行下面程序的输出结果是( )。 main( ) { int a=5,b=0,c=0; if (a=a+b) printf("****\n"); else printf("####\n"); }

第4章选择(分支)结构程序设计(精)

第四章选择(分支)结构程序设计 C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。 一.if语句的三种形式: 1、if(表达式) 语句; 即:条件为真,执行语句1 2、if(表达式) /* if 和 else是关键字,要小写 */ 语句1; else 语句2; 即:条件为真,执行语句1,否则执行语句2 3、 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; … else if(表达式n) 语句n; 注意以下几点: ①if 后面的条件可以是如下类型: ● 关系表达式,如x>y ● 逻辑表达式,如x>y&&y>z ● 算术表达式,如x+y ● 赋值表达式,如x=y ● 变量,如x ● 常量,如-5 ②如果语句1或语句2是一条语句,则{}一对花括号可以省略③if….else 是一条语句,else 不能单独出现,要注意else 与 if的搭配问题(既:else与其上面最近的且没使用的if搭配) 二.开关分支语句switch 1、形式 switch(表达式) { case 常量表达式1: 语句1;break;

case 常量表达式2: 语句2;break; case 常量表达式3: 语句3;break; …… case 常量表达式n: 语句n;break; default : 语句n+1; } 2、执行过程 当表达式的值等于“常量表达式1”时,执行语句1; 当表达式的值等于“常量表达式2” 时,执行语句2; …… 当表达式的值等于“常量表达式n”时,执行语句n; 当表达式的值与“常量表达式1、常量表达式2……常量表达式n”谁都不等时,就执行default后的语句. 注意以下几点: 1、表达式应该有括号,注意大括号一定要有并且注意配对。 2、表达式可以是整型常量或变量、字符常量或变量、关系表达式、逻辑表达式、整型的算术表达式,总之是整数,但是通常用整型或字符型。C语言计算表达式的值,然后找常量表达式的值匹配。 3、 break 是C语言的一种语句,其作用是跳出switch语句。如果没有break,将会从某个语句组起顺次执行完所有的语句组。有时我们希望这样,有时我们不希望这样。因此可以通过break调整程序的走向。 4、switch和case是关键字,要小写 5、case要和后面的常量表达式用空格分开,且这个常量表达式必须是整型常量或字符常量,不是变量。 6、default可以放在任何位置,不一定在最后,也可以没有 练习题 一、选择题 1.假定所有变量均已正确定义,下列程序段运行后y的值是()。 int a=0, y=10; if (a=0) y--; else if(a>0)y++;else y+=y; A. 20 B. 11 C. 9 D. 0 2.假定所有变量均已正确定义,下列程序段运行后x的值是()。 a=b=c=0; x=35; if (!a) x--; else if(b); if(c) x=3; else x=4; A. 34 B. 4 C. 35 D. 3

C语言程序-分支结构题目及答案

21.htm 01. 从键盘输入一个字符,如果是大写字母,就转换成小写;如果是小写字母,就转换成大写,如果是其他字符原样保持并将结果输出。#include void main() { char c; scanf("%c",&c); if(c>='A'&&c<='Z') c=c+32; else if(c>='a'&&c<='z') c=c-32; printf("%c",c); } 02. 从键盘输入一个数,判断其是否是5的倍数而不是7的倍数。如果是,输出Y es,否则输出No。 #include void main() { int a; scanf("%d",&a); if(a%5==0&&a%7!=0) printf("yes"); else printf("no"); } 03. 从键盘输入一个4位正整数,求其逆序数,并输出。例如:若输

入1234,则输出应该是4321。 #include void main() { int n,g,s,b,q,m; scanf("%d",&n); q=n/1000; b=n/100%10; s=n/10%10; g=n%10; m=g*1000+s*100+b*10+q; printf("%d\n",m); } 22.htm 01. 从键盘输入一个字符,如果是字母,就输出其对应的ASCII码;如果是数字字符,就转换成对应整数并输出。 #include void main() { char c; scanf("%c",&c); if(c>='a'&&c<='z'||c>='A'&&c<='Z') printf("ASCII:%d",c); else if(c>='0'&&c<='9') printf("数字:%d",c-'0'); } 02. 从键盘输入一个数,判断其是否能同时被3和5整除。如果是,

C语言 选择结构程序设计练习题

第四章选择结构程序设计 一、填空 1.在C语言中,表示逻辑“真”值用_________。 2.得到整型变量a的十位数字的表达式为_________。 3.表达式:(6>5>4)+(float)(3/2)的值是_________。 4.表达式:a=3,a-1‖--a,2*a的值是_________。(a是整型变量) 5.表达式:(a=2.5-2.0)+(int)2.0/3的值是_________。(a是整型变量)6.C语言编译系统在给出逻辑运算结果时,以数值_________代表“真”,以 _________代表“假”;但在判断一个量是否为“真”时,以_________代表“假”,以_________代表真。 7.当m=2,n=1,a=1,b=2,c=3时,执行完d=(m=a!=b)&&(n=b>c)后,n的值为_________,m的值为_________。 8.若有int x,y,z;且x=3,y=-4,z=5,则表达式:!(x>y)+(y!=z)||(x+y)&&(y-z)的值为_________。 二、编程: 1.企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求应发放奖金总数? 2.输入三个整数x,y,z,请把这三个数由小到大输出。 3.输入某年某月某日,判断这一天是这一年的第几天? 4.本程序演示从键盘输入x的值,计算并打印下列分段函数的值。 y=0(x<60) y=1(60<=x<70) y=2(70<=x<80) y=3(80<=x<90)

数据结构考试题库含答案

数据结构习题集含答案 目录

选择题 第一章绪论 1.数据结构这门学科是针对什么问题而产生的(A ) A、针对非数值计算的程序设计问题 B、针对数值计算的程序设计问题 C、数值计算与非数值计算的问题都针对 D、两者都不针对 2.数据结构这门学科的研究内容下面选项最准确的是(D ) A、研究数据对象和数据之间的关系 B、研究数据对象 C、研究数据对象和数据的操作 D、研究数据对象、数据之间的关系和操作 3.某班级的学生成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那 么下面关于数据对象、数据元素、数据项描述正确的是(C ) A、某班级的学生成绩表是数据元素,90分是数据项 B、某班级的学生成绩表是数据对象,90分是数据元素 C、某班级的学生成绩表是数据对象,90分是数据项 D、某班级的学生成绩表是数据元素,90分是数据元素 4.*数据结构是指(A )。 A、数据元素的组织形式 B、数据类型 C、数据存储结构 D、数据定义 5.数据在计算机存储器内表示时,物理地址与逻辑地址不相同,称之为(C )。 A、存储结构 B、逻辑结构 C、链式存储结构 D、顺序存储结构 6.算法分析的目的是(C ) A、找出数据的合理性 B、研究算法中的输入和输出关系 C、分析算法效率以求改进 D、分析算法的易懂性和文档型性

7.算法分析的主要方法(A )。 A、空间复杂度和时间复杂度 B、正确性和简明性 C、可读性和文档性 D、数据复杂性和程序复杂性 8.计算机内部处理的基本单元是(B ) A、数据 B、数据元素 C、数据项 D、数据库 9.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储 比顺序存储要(B )。 A、低 B、高 C、相同 D、不好说 10.算法的时间复杂度取决于( C ) A 、问题的规模B、待处理数据的初始状态 C、问题的规模和待处理数据的初始状态 D、不好说 11.数据结构既研究数据的逻辑结构,又研究物理结构,这种观点(B )。 A、正确 B、错误 C、前半句对,后半句错 D、前半句错,后半句对 12.在数据结构中,从逻辑上可以把数据结构分成( C ) A、动态结构和静态结构 B、紧凑结构和非紧凑结构 C、线性结构和非线性结构 D、内部结构和外部结构 13.线性表的顺序存储结构是一种( )的存储结构,线性表的链式存储结构是一种( A ) 存储结构。 A、随机存取 B、顺序存取 C、索引存取 D、散列存取 14.*下列程序的时间复杂度是(A ) for (i=1; i<=n; ++i){ for (j=1; j<=n; ++j){ c [i][j]=0;

C语言程序分支结构题目及答案

C语言程序分支结构题 目及答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

01. 从键盘输入一个字符,如果是大写字母,就转换成小写;如果是小写字母,就转换成大写,如果是其他字符原样保持并将结果输出。 #include <> void main() { char c; scanf("%c",&c); if(c>='A'&&c<='Z') c=c+32; else if(c>='a'&&c<='z') c=c-32; printf("%c",c); } 02. 从键盘输入一个数,判断其是否是5的倍数而不是7的倍数。如果是,输出Yes,否则输出No。 #include <> void main() { int a; scanf("%d",&a); if(a%5==0&&a%7!=0) printf("yes"); else printf("no"); }

03. 从键盘输入一个4位正整数,求其逆序数,并输出。例如:若输入1234,则输出应该是4321。 #include <> void main() { int n,g,s,b,q,m; scanf("%d",&n); q=n/1000; b=n/100%10; s=n/10%10; g=n%10; m=g*1000+s*100+b*10+q; printf("%d\n",m); } 01. 从键盘输入一个字符,如果是字母,就输出其对应的ASCII码;如果是数字字符,就转换成对应整数并输出。 #include <> void main() { char c; scanf("%c",&c);

C语言选择结构程序设计编程题.doc

实验2 选择结构程序设计 一.实验目的: 1.掌握选择控制语句的使用方法; 2.了解C程序语句的执行过程。 二.实验内容: 1.编写程序:输入一个整数,判断该数的奇偶性。(输出相应的标志even-偶数odd-奇数,请记住这两个单词)。 2.从键盘输入的正整数,判断是否能被5和7同时整除,若是,则输出Yes;否则输出No。 3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字母,则把它变为大写字母;若是其它字符则不变。 4.编写程序,对于给定的一个百分比制成绩,输出相应的五分制成绩。设:90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为’E’(用if…else…与switch 语句两种方法实现)。 5. 企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提成10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万元到40万元之间时,高于20万元的部分,可提5%;40万元到60万元之间时,高于40万元的部分,可提成3%;60万元到100万元之间时,高于60万元的部分,可提成1.5%;高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润i,求发放奖金总数。 6. 输入某年某月某日,判断这一天是这一年的第几天。 7. 输入一个字符,请判断是字母、数字还是特殊字符。 8. 身高预测: 男性成人身高=(父亲身高+母亲身高)*0.54cm 女性成人身高=(父亲身高*0.923+母亲身高)/2cm 如果喜爱体育锻炼,那么身高可增加2%;如果有良好的饮食习惯,可增加身高1.5%。键盘输入性别、父母身高、是否爱好体育锻炼、是否有良好的饮食习惯,利用给定身高预测方法对你的身高进行预测。 9. 要求用switch语句编程设计一个简单的计算器程序。要求根据用户从键盘输入的表达式。 操作数1 运算符op 操作数2 计算表达式的值。指定的算术运算符为加(+)、减(-)、乘(*)、除(/)。 在此基础上,增加如下要求: (1)如果要求程序能进行浮点数运算,程序应该如何修改?如何比较实型变量和常数0是否相等? (2)如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改? (3)如果要求连续多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N y/n)? 如果用户输入Y或y时,程序继续进行其它算术运算,否则程序才退出运行状态。那么程序如何进行修改?

树结构习题及答案

【例5-1】写出如图5-1所示的树的叶子结点、非终端结点、每个结点的度及树深度。 A B C D E F G H I J 图5-1 解: (1)叶子结点有:B、D、F、G、H、I、J。 (2)非终端结点有:A、C、E。 (3)每个结点的度分别是:A的度为4,C的度为2,E的度为3,其余结点的度为0。 (4)树的深度为3。 【例5-2】一棵度为2的树与一棵二叉树有什么区别? 解:度为2的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树的次序不能交换。 【例5-3】树与二叉树有什么区别? 解:区别有两点: (1)二叉树的一个结点至多有两个子树,树则不然; (2)二叉树的一个结点的子树有左右之分,而树的子树没有次序。 【例5-4】分别画出具有3个结点的树和三个结点的二叉树的所有不同形态。 解:如图5-2(a)所示,具有3个结点的树有两种不同形态。 图5-2(a) 如图5-2(B)所示,具有3个结点的二叉树有以下五种不同形态。 图5-2(b) 【例5-5】如图5-3所示的二叉树,试分别写出它的顺序表示和链接表示(二叉链表)。 解: (2)该二叉树的二叉链表表示如图5-4所示。

【例5-6】试找出满足下列条件的所有二叉树: (1)先序序列和中序序列相同; (2)中序序列和后序序列相同; (3)先序序列和后序序列相同。 解: (1)先序序列和中序序列相同的二叉树为:空树或者任一结点均无左孩子的非空二叉树; (2)中序序列和后序序列相同的二叉树为:空树或者任一结点均无右孩子的非空二叉树; (3)先序序列和后序序列相同的二叉树为:空树或仅有一个结点的二叉树。 【例5-7】如图5-5所示的二叉树,要求: (1)写出按先序、中序、后序遍历得到的结点序列。 (2)画出该二叉树的后序线索二叉树。 解: (1) 先序遍历序列:ABDEFC 中序遍历序列:DEFBAC 后序遍历序列:FEDBCA (2)其后序线索二叉树如图5-6所示。 b a c d e f 图5-5 图5-6

c语言第4章 选择结构程序设计习题答案

第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

树结构习题集及规范标准答案

第5章树 【例5-1】写出如图5-1所示的树的叶子结点、非终端结点、每个结点的度及树深度。 A B C D E F G H I J 图5-1 解: (1)叶子结点有:B、D、F、G、H、I、J。 (2)非终端结点有:A、C、E。 (3)每个结点的度分别是:A的度为4,C的度为2,E的度为3,其余结点的度为0。 (4)树的深度为3。 【例5-2】一棵度为2的树与一棵二叉树有什么区别? 解:度为2的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树的次序不能交换。 【例5-3】树与二叉树有什么区别? 解:区别有两点: (1)二叉树的一个结点至多有两个子树,树则不然; (2)二叉树的一个结点的子树有左右之分,而树的子树没有次序。 【例5-4】分别画出具有3个结点的树和三个结点的二叉树的所有不同形态。

解:如图5-2(a)所示,具有3个结点的树有两种不同形态。 图5-2(a) 如图5-2(B)所示,具有3个结点的二叉树有以下五种不同形态。 图5-2(b) 【例5-5】如图5-3所示的二叉树,试分别写出它的顺序表示和链接表示(二叉链表)。 解: (1)顺序表示。

(2)该二叉树的二叉链表表示如图5-4所示。 图5-4 【例5-6】试找出满足下列条件的所有二叉树: (1)先序序列和中序序列相同; (2)中序序列和后序序列相同; (3)先序序列和后序序列相同。 解: (1)先序序列和中序序列相同的二叉树为:空树或者任一结点均无左孩子的非空二叉树; (2)中序序列和后序序列相同的二叉树为:空树或者任一结点均无右孩子的非空二叉树; (3)先序序列和后序序列相同的二叉树为:空树或仅有一个结点的二叉树。

选择结构单分支结构(教学设计)

2.3.2程序的选择结构——教学设计 一、教材分析 本节课的教学内容是教育科学出社版、普通高中课程标准实验教材选修模块《算法与程序设计》中的第2章第3节《程序的选择结构》,是在上两课时(2.1—2.2)学习VB的基本数据类型、常量、变量、函数、表达式等程序设计语言和程序顺序结构的基础上,学习程序的选择结构,其中包含“选择结构的格式、功能、执行过程”。 在解决实际问题的过程中,常常需要对事物进行判断和选择。如何在程序设计中能够实现判断和选择,选择结构是重要的选择方式之一。在讲解这一知识点时,采用英语“If you feel happy then you will smile else you will sad.”提炼选择结构并编写程序,引导学生经历分析问题、设计算法、编写程序、调试程序等用计算机解决问题的全过程。通过分析程序,归纳总结出VB语言的选择结构的格式、功能、执行过程,让学生体验自主学习、协助学习的乐趣,体验成功的快乐。 二、学情分析 在第一章的学习中,学生已经经历了利用计算机解决问题的基本过程,领略了用计算机解题的奇妙之道,在第二章中学习VB的基本数据类型、常量、变量、函数、表达式等程序设计语言和程序顺序结构的基础上,感悟了程序设计是其中的关键环节,对程序设计已经产生了一定兴趣。 三、教学目标: 1、通过英语“If you feel happy then you will smile.”提炼选出择结构的单分支结构,通过英语“If you feel happy then you will smile else you will sad.”提炼出选择结构的双分支结构,讲解单分支结构和双分支结构及其功能和执行过程。师生共同分析“密码登陆框”问题,分别用单分支和双分支结构解决密码输入正确和不正确时的处理方法。归纳总结VB语言的选择结构的格式、功能、执行过程,掌握条件选择语句的使用方法,能够编写简单的选择结构的程序;掌握VB语言的关系表达式、逻辑表达式等程序设计语言的基本知识。 2、初步掌握程序调试、运行的方法。 3、本节从问题“密码登陆框”入手,逐步增加难度,让学生明白条件选择语句的执行流程及使用方法,引导学生经历分析问题、设计算法、编写程序、调试程序等用计算机解决问题的过程,体验成功的快乐。 四、教学重点、难点 重点:1.理解VB语言选择结构的格式、功能、执行过程。 2.掌握VB语言的关系表达式、逻辑表达式等程序设计语言的基本知识。 难点:关系表达式和逻辑表达式得运用,如何利用计算机来解决生活中的实际问题。 五、教学策略: 本节课以课程标准为核心,以教材为依据,教学流程呈现梯度层进式发展。首先从英文“If you fell happy then you will simile.”引入,快速自然的引导学生走进主题,明确本节课的学习目标,并顺势讲解单分支和双分支结构的格式、功能和执行过程。通过组织学生完成“密码登陆框”问题,首先完成单分支结构的学习,将问题变形后组织学生独立完成双分支结构,进一步理解选择结构的格式、功能和

c语言选择结构

1. 以下非法的赋值语句是 A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0; 2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是A: 6 B: 0 C: 2 D: 1 3. 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else printf(“%d”,x++); } 程序运行后,如果从键盘上输人5,则输出结果是()。 A: 3 B: 4 C: 5 D: 6 4. 有如下程序 main0 { int a=2,b=-1,c=2; if(a main()

a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是( )。 A: 2,1 B: 3,2 C: 4,3 D: 2,-1 6.两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4 7. 能表示x 为偶数的表达式是 A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0 8. 下面的程序段中共出现了几处语法错误? int a,b; scanf("%d",a); b=2a; if(b>0) printf("%b",b); A: 1 B: 2 C: 3 D: 4 9. C 语言中,逻辑“真”等价于 A: 大于零的数 B: 大于零的整数 C: 非零的数 D: 非零的整数

相关主题
文本预览
相关文档 最新文档