C++讲义及习题指导.pdf

上传人:无*** 文档编号:90894656 上传时间:2023-05-18 格式:PDF 页数:144 大小:20.36MB
返回 下载 相关 举报
C++讲义及习题指导.pdf_第1页
第1页 / 共144页
C++讲义及习题指导.pdf_第2页
第2页 / 共144页
点击查看更多>>
资源描述

《C++讲义及习题指导.pdf》由会员分享,可在线阅读,更多相关《C++讲义及习题指导.pdf(144页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第 一 章 C+语言概述1.1 1.1知识要点1.C+语言的特点(1)C+语言支持数据封装封装是指把对象属性和操作结合在一起,构成独立的单元,它的内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。类是数据封装的工具,对象是封装的实现。(2)C+类中包含私有、公有和保护成员类的访问控制机制体现在类的成员中可以有公有成员、私有成员和保护成员。对于外界而言,只需要知道对象所表现的外部行为,而不必了解内部实现细节。封装体现了面向对象方法的“信息隐蔽和周部化原则(3)C+语言中通过发送消息来处理对象消息指对象之间在交互通讯中所传送的信息。消息由三部分构成:消息名、接

2、收消息的对象标识和参数。个对象向另一个对象发送消息请求某项服务,接收消息的对象响应该消息,进行所要求的服务,并把操作的结果返回给请求服务的对象。(4)C+语言中允许友元破坏封装性(5)C+语言允许函数名和运算符重载(6)C+语言支持继承性 继承指子类(派生类)可以自动拥有父类(基类)的全部属性和服务。父类和子类是一般与特殊的关系。在定义一个子类时,可以把父类所定义的内容做为自己的内容,并加入若干新的内容(7)C+语言支持动态联编多态性是指在基类中定义的属性和服务被子类继承后,可以具有不同的数据类型和表现出不同的行为。当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该

3、类中定义的操作。2.C+程序的组成注释部分(两种风格)、编译预处理部分(宏定义,文件包含和条件编译、)、程序正文部分(类型定义、常变量定义、函数定义)。最终,程序源代码由A S C H 码组成类似单词或词组的单元(词法单元),可以用任意的文本编辑器编辑,源代码中的空白(空格、T a b、回车换行)用来表示词法单元的开始和结束,除这一功能外其余空白将被忽略,但如果是字符串内部的空白(不含回车换行,或者说字符串内不能直接回车换行,需要使用转义符)将作为字符串的一部分输出,不会忽略。注释:1)一对 符 号“/*”与“*/”之间的内容称为注释。它可以占多行,是 从 C语言中继承来的一种注释形式。2)一

4、 行 中 符 号 之 后 的 内 容 也 称 为 注 释。它只能占一行,是 C+语言特有的一种注释形式。编译预处理命令:C+的 编 译 预 处 理 命 令 以 开 头。C+提供了三类编译预处理命令:宏定义、文件包含和条件编译。程序主体:用函数组织过程,每个相对独立的过程都要组织成一个函数;不同的程序由不同的函数按层次结构组织而成。一 个 C+程序至少且仅包含个m a i n ()函数,也可以包含一个m a i n ()函数和若干个其他函数。其他函数可以是系统提供的库函数(例如 p r i n t f ()和 s c a n f ()函数),也可以是用户根据需要自己编制设计的函数3.函数C+的程

5、序由若干个文件组成,文件名的后缀为.c p p (c p l u s p l u s)o每个文件又是由函数组成,函数之间可以调用。在这些函数中只有一个函数是主函数m a i n。程序执行时,操作系统先调用主函数,主函数再依次调用其它函数完成设计任务。4.程序的编辑、编译、连接和运行(1)编 辑 编 辑 是 将 编 写 好 的 C+源程序输入到计算机中,生成磁盘文件的过程。(2)编译和连接过程编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码,然后,再将目标代码进行连接,生成可执行文件。编译过程又可分为三个子过程。(1)预处理过程:对源程序编译时,先进行预处理,如果源程序中有预处理

6、命令,则先执行这些预处理命令,执行后再进行下面的编译过程。(2)编译过程:编译过程主要是进行词法分析和语法分析的过程,又称源程序分析。1)词法分析。2)语法分析。3)符号表。4)错误处理程序。5)生成目标代码。连接过程:这是编译的最后一个过程,将用户程序生成的多个目标代码文件和系统提供的库文件中的某些代码连接在起由连接器生成个可执行文件,存储这个可执行文件的扩展名为.exe。(3)运 行 一 个 C+的源程序经过编译和连接后生成了可执行文件。运行可执行文件可在编译系统下选择相关菜单项来实现,也可以采用其他方法。1.2 1.2典型例题分析与解答例 题 1:显 示“lam a student”字符

7、串,并通过简单的程序了解和熟悉运用VC+开发环境进行编写、编译、调试、显示结果的过程。解答:该程序非常简单,如下代码所示,运用了 cout输出流对象代表标准输出显示器,代表后边的字符串向显示器输出的方向。#include void main()cout9,I am a studentvvendl;编辑过程:图 I T新建对话框编辑编辑是将C+源程序输入计算机的过程。在 Visual C+6.0 主界面下,点击F ile 菜单,选择New菜单项,即可出现New对话框,如 图 1 T 所示。在弹出窗口中的F ile s标签页下,选择C+Source F ile。在选项卡右面的文件编辑框里输入文件名

8、如“Exa”,在目录编辑框里输入文件路径,如 d:te s t”。点击确认按钮。将出现编辑窗口,如 图 1-2所示。在 图 1-2 所示的右端编辑窗口里输入以下C+源程序并保存文件。图 1-2 编辑窗口编译编译是使用系统提供的编译器将文本文件E x a.c p p 生成机器语言的过程,结果为E x a.o b j,由于没有得到系统分配的绝对地址,还不能直接运行,如 图-3所示。选择编译菜单下的编译E x a.c p p,计算机将完成对当前源程序的编译。按提示建立默认工程空间。编译无错时,将源程序E x a.c p p 编译为目标文件E x a.o b j。图 1-3 编译源程序连接连接是将目标

9、文件E x a.o b j转换为可执行文件E x a.e x e 的过程。如 图 L4所示选择编译菜单下的构件E x a.e x e。连接无错时,将目标文件E x a.o b j连接为E x a.e x e。dlexa.exe-0 erro r(s),0 uarning(s)J皿编译,小图 1-4 源程序Ln4,CoH-|REC|C0L|0VR|READ/运行运行是执行可执行文件E xa.exe,屏幕输出运行结果。如 图 1-5所示选择编译菜单下的执行 Exa.exeo图 1-5 运行程序运行结果如图1-6所示:图 1-6 运行结果例题2:输入一名学生的成绩,判断该成绩的等级。如=60的,显

10、示“合格”,60的显示“不合格程序:#include/输入输出流对象的头文件void main()(int score;声明成绩变量,用来保存分数cout”输入成绩:”;提示用户的信息cinscore;从键盘上输入分数传递给scoreif(score=60)判断该条件是否真或假coutw”合格”endl;当score=60是真的时候,运行该语句elsecoutw不合格”endl;当 score=60是假的时候,运行该语句)分析:(1)(1)首先该题目要求输入一个分数,则事先声明一个整型变量score。(2)(2)其次从键盘上输入该分数,应有输入语句c in,并由上面定义的变量来保存分数。(3)

11、(3)然后根据分数来判断等级,有两种情况应该用if语句。(4)(4)输出的信息是根据不同条件显示字符串,用到cout输出流对象。(5)(5)用到标准输入输出流对象,所以在程序前加相应头文件。例题3:面向对象的()是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。A.多态性 B.封装性 C.继承性 D.重用性答案B与析:封装性是指把对象属性和操作结合在起,构成独立的单元,其内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接U 与对象发生联系。若不清楚多态性的定义,误选答案A。多态性是指当个对象接收到一 个

12、请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。若不清楚继承性的定义,误选答案C。继承是指派生类可以自动拥有基类的全部属性和服务。若不清楚重用性的定义,误选答案D。重用性是多态性的种表现形式。例题4:C+源文件的扩展名为()。A.cpp B.c C.txt D.exe答案A分析:C+源程序的扩展名为cpp。C 程序的扩展名为c。文本文件的扩展名为txt。源程序编译后可执行文件的扩展名为exe。若不清楚C+源程序扩展名和C源程序扩展名的区别,误选答案B。C+兼容C,当文件名保存为c 时,调用C 编译器;当文件名保存为cpp时调用C+编译器。若不清楚C+源程序扩展名和文本

13、文件扩展名的区别,误选答案C。C+源程序可以在文本编辑器里编辑,但一定注意将其扩展名保存cp p,不能为txt。若不清楚C+源程序和C+可执行文件的扩展名的区别,误选答案D。C+源程序经过编译、连接后得到可执行文件的扩展名为exe。例题5:C+的合法注释是()。A./*This is a C program/*B./This is a C programC.”This is a C program D./This is a C program/答案:B分析:单行注释常采用“”,多行注释采用“/*”和“*/。单行注释也可采用“/*”和但答案A 书写格式错误,不能选答案A。注释和字符串的区别,双引

14、号内的字符为字符串。不能选答案C。单行注释不需要结束符“”,如果有,只能作为注释的一部分存在。也不能选答案D。例题6:下面标识符中正确的是()。A._abc B.3ab C.int D.+ab答案:A分布:C 的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。答案B 第一个字符为数字不能选B o 标识符不能为关键字,不能选答案C o 答 案 D 第一个字符不是字母或下划线,也不能选。例题7:分析下列该程序的错误。输入数据格式为:2,5(回车)。main()int sum=0;int a,b;coutinput a,b:M;cin a b;sum=a+b;coutsumendl;)本程

15、序把输入的两个数据进行累加并输出结果。输入数据格式为:2 5o#include /编译预处理命令,以开头。把系统已经定义好的输入输出功能包含到本程序中。void main()/程序的主函数 /主函数开始int sum=0;定义一个变量sum存放累加结果,并且赋初值为0int a,b;/定义两个变量,保存输入值coutinput a,b:M;/提示输入cin a b;使用基本输入设备cin输入两个变量值sum=a+b;进行累加,结果保存到sum变量coutsumendl;使用基本输出设备cout输出累加结果sum)分析:(1)没有使用编译预处理命令:#includeo iostream.h是系统

16、定义的,个头 文 件(hhead),设置了 C+的 I/O环境。cin、cout为基本输入、输出设备,定义在iostream.h头文件中。(2)没有main()函数的返回类型,系统提示警告。main。函数的返回类型常标注为void。(3)输入数据时没有使用空格分隔。输 入 运 算 符”要求输入的多个数据用空格分隔。1.3 1.3教材习题分析与解答1.参照例题,编写一个能输出以下信息的程序。How are you.Fine,thank you.程序:#includeVoid main()C out,How are you.v endl;输出字符串并换行。C out,5Fine,thank you

17、.vendl;)2.参照例题,编写一个求两个数78、45之差的程序。程序:#include void main()int sum=0;sum=78+45;求和coutH78+45=sum endl;3.参照例题,编写一个求三个数14、25、16之和的程序。ttinclude void mainO int a,b,c,sum;定义变量coutinput three number:n;c in a b c;/从键盘输入三个数给变量a 和 b、csum=a+b+c;/求和coutsum is sum;)4.上机运行本章的三个例题,熟悉所用系统的上机方法与步骤。略5.上机运行本章习题1、2 和 3。略

18、1.4 1.4 补充习题1.下 面 的(不是C+所包含的要素。A.重我 B.对象 C.类 D.继承2.下列标识符中,()是合法的。A.goto B.Student C.123 D.kId3.在C+语言中,()的陈述是正确的。A.能使用关键字并区分大小写 B,能使用关键字并不区分大小写C.不能使用关键字并区分大小写 D.不能使用关键字并不区分大小写4.C+语言中语句的结束符是()。A.,B.;C.o D.、5.下面对于类的描述,()是错误的。A.类是抽象数据类型的实现 B.类是具有共同行为的若干对象的统一描述体C.类是创建对象的模板 D.类就是C 语言中的结构类型6.写一个程序输出Hello,C

19、+!,7.编译下列程序,改正错误信息,分析输出结果。#include void main()int x,y;coutinput x:nendl;cinx;y=x*x;coutny=y nn;改正:couty=M y,n;8.下列程序有何错误?#include void main()coutMHelloendl;改正:#include void main()coutHellonendl;9,关于C+和 C 语言的描述中,()是错误的?A.C 是 C Z的一个子集 B.C 程序在C+环境可以运行C.C+程序在C 环境可以运行 D.C+是面向对象的而C 是面向过程的10.给出下列程序的运行结果。#i

20、nclude void main()inta(2),b(3),c(4);coutMc l=H c en d l;c=a+b;coutHc2=H c en d l;第 2 章基本数据类型与数值表达式2.1知识要点计算机的基本功能是进行数据处理。在 C+语言中,数据处理的基本对象是常量和变量。运算是对各种形式的数据进行处理。数据在内存中存放的情况由数据类型所决定。数据的操作要通过运算符实现,而数据和运算符共同组成了表达式。本章是对C+语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,并灵活运用,主要掌握以下的知识要点:1.掌握常量和变量的概念。2.掌握整型数据和实型数据、字符型数

21、据和字符串型数据的概念和区别。3.掌握各种类型的变量说明及其初始化。4.掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。5.掌握运算符的优先级、左结合和右结合规则。6.掌握表达式求值时的自动转换和强制类型转换。7.掌握自加、自减运算的规则。8.掌握常用数学函数的功能。2.2典型例题分析与解答1.1.选择题例 题 1:运算符+、=、*、=中,优先级最高的运算符是()0A.+B.=C.*D.=答案:C分析:根据C+语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、=、+、*。例题2:下列说法正确的是()。A.cout”n”是一个语句,它能在屏幕上显示“nB.68代

22、表的是字符D。C.1E+5的写法正确,它表示余割整型常量。D.0 x10 相当于 020。答案:D分析:分号是语句的已部分,且W 是转义字符;68代表了八进制的6、8,而八进制中没有数字8;1E+5是实型常量;卜六进制的10相当于十进制的1 6,相当于八进制的20。例题3:下列不合法的变量名为()。A.int B.inti C.name_l D.nameO答案:A分析:根据变量名命名要求,变量名只能由大小写字母、数字、下划线组成,且系统关键字不能作为变量名。例题4:下面正确的为()。A.4.1/2 B.3.2%3C.3/2=1 结果为1 D.7/2 结果为3.5答案:A分析:运算符要求式整型;

23、关系运算值为0:两个整数相除,商为为相除后的整数部分。例题 5:已知 a=4,b=6,c=8,d=9,则(a+,b a+&O d)?+d:a =y&c h B&!y)的 值 是()。A.0 B.语法错 C.1 D.“假”分析:根据C+语言中运算符优先级的高低,“!”运算符最高,关系运算符高于逻辑运算符。则上面的表达式转换为:1&1&1,结果为1。答案:C o2.2.填空题例题8:如果s 是 i n t 型变量,且 s=6,则下面s%2+(s+1)%2表 达 式 的 值 为。答案:1分析:运算符是求余运算,得到的结果是相除后的余数。表达式转换为6%2+(6+1)%2=0+7%2=1。例题 9:如

24、果定义 i n t a=2,b=3;f l o a t x=5.5,y=3.5;则表达式(f l o a t)(a+b)/2+(i n t)x%(i n t)y的值为。答案:4.5方析:不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进行运算。对表达式,先求表达式的值,再转换值的类型,本题的运算结果为4.5。例 题 1 0:设所有变量均为整型,则表达式(e=2,4 5,e+,f+,e+f)的 值 为 一.答案:9分析:逗号运算符是是将两个或多个表达式组合成一个表达式的运算符。求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。

25、本题的答案为9。例题1 1 :已知字母a 的A S C H 码为十进制数9 7,且设c h 为字符型变量,则表达式c h=H+,8,-4,的值为o答案:e分析:C+语言中,对字符数据进行算术运算,实际上就是对字符的A S C H 码进行运算。以字符形式输出时,再将A SC II码转换为相应的字符输出。本题表达式为c h=9 7+8-4=1 0 1,1 0 1相应的A SC II为字符e。3.3.编程题例 题 1 2:编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。解:程序如下:#i n c l ud e vo i d m a i n()d o ub l e r,h,a r e a,

26、vo l um e;c o ut w”请输入半径:;c i n r;c o ut vv”请输入高:”;c i n h;a r e a=3.1 4*r*r;vo l um e=a r e a*h;c o ut ”底面积是:v a r e a e n d l;c o ut vv”体积是:,vo l um e e n d l;2.3教材习题分析与解答i.i.C+语言中有哪些数据类型?分别说明它们的类型关键字、取值范围、类型长度。答:C+语言中的数据类型有:整 型(短整型,整型,长整型);字符型;逻辑型;枚举型;实 型(单精度,双精度,长双精度);引 用 型(指针,引用);复 合 型(结构,联合);空

27、类型.2.2.字符常量与字符串常量的区别是什么?答:字符常量与字符串常量的主要区别在于:(1)定界符不同。字符常量使用单引号,而字符串常量使用双引号。(2)长度不同。字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数。(3)存储要求不同。字符常量存储的是字符的A S C H 码值,而字符串常量除了要存储有效的字符外,还要存储一个结束标志 0 。3.说明下面的每个数据各属于哪一种(数值常量、字符常量、字符串、标识符、保留字、运算符、标点、非法数据)?2 5 1 8 -3.6 71 2.8 “4”,4x l “x 2”“1 9 49.1 0”c i nK _ n a m e3a

28、 b fl o a t x ,y”;i f+“n”?;“s yl.c p p”32 答:数值常量有:2 5,1 8,-3.6 7,1 2.8字符常量有:V,32 字符串有:4”,“x 2”,“1 9 49.1 0”,“s yl.c p p”,“暧保留字:c i n ,i n t,e n d l,i f运算符:+标点:?非法数据:“fl o a t x ,y ;,3a b变 量:x l,K _ n a m e4.选择题(1)下列数据类型不是C+语言基本数据类型的是()。A.字符型 B.整型 C.实型 D.数组答案:D(2)在 C+语言中,0 8 0 是()。A.八进制数 B.十进制数 C.卜六进

29、制数 D.非法数答案:B(3)下列字符列中,可作为C+语言程序自定义标识符是()。A.s w i t c h B.fi l e C.b r e a k D.d o答案:B(4)运 算 符+、=、=、中,优先级最低的运算符是(A.+答案:cB.=c.=D.%(5)下列字符列中,可以作为“字符串常量”的 是()oA.ABC B.xyz C.,uvw,D.a答案:B(6)设变量 m,n,a,b,c,d 均为 0,执行(m=a=b)|(n=c=d)后,m,n 的 值 是()A.0,0 B.0,1 C.1,0 D.1,1答案:C(7)字符串 vmx43np102q”的长度是()。A.8 B.10 C.1

30、7 D.16答案:A(8)在 C+语言中,自定义的标识符()。A.能使用关键字并且不区分大小写 B.不能使用关键字并且不区分大小写C.能使用关键字并且区分大小写 D.不能使用关键字并且区分大小写答案:D(9)设有代码“inta=5;,则执行了语句a+=a-=a*a;后,变量a 的 值 是(A.3 B.0 C.-40 D.-12答案:C(1 0)设 a 为 5,A.b=a/2C.b=a%2答案:C执行下列代码后,b 的值不为2 的 是(B.b=6-(-a)D.b=a 3?3:2)o(1 1)下 面 的()均是C 语言的整型常量。A.Oxffiff 和 611 B.Olb 和 Oxal C.986

31、.012 和 0667 D.2e4 和 Ox答案:A(12)数学公式J y+e i 写成表达式,下 面 的()是正确的。A.sqrt(abs(pow(x,y)+exp(y)B.sqrt(abs(pow(y,x)+exp(y)C.sqrt(fabs(pow(x,y)+exp(y)D.sqrt(fabs(pow(y,x)+exp(y)答案:D5.x 为 in t类型,y 为 double类型,指出下列各表达式值的类型。1/3int(2)48Llong(3)5%3int(4)x*3/ydouble(5)仅+20int(6)(int)yint(7)y!=10bool(8)x10bool(9)x10?x

32、:sqrt(x)int 或 float(10)x&ybool(11)truebool(12)(char)(x+10)char(13)1.0/3float(14)sizeof(float)int(15)x,y,x+y,double说明:(9)题,如果x10成立,表达式值的类型为in t,如果x10不成立,表达式值的类型为float。(15)题,为逗号表达式,x+y的值即为整个表达式的值,因而值的类型为double。bool型在C+用 int代替,true值 为 1,false值为0。6.写 出 卜 列算术表达式的值:(1)x+a%3*(int)(x+y)%2/4 x=2.5,a=7,y=4.7答

33、:上述表达式=2.5+2(int)7.2%2/4=2.5+1*7%2/4=2.5(2)(float)(a+b)/2+(int)x%(int)y a=2,b=3,x=3.5,y=2.5答:上述表达式=(float)5/2+3%2=2.5+1=3.57.设程序中有说明语句int a=20;double x=4.7;char r=a;试求出下列每个表达式的值(假定各表达式互不影响)。答案答案(1)a-H-20(2)+r98(3)l+a/3%43(4)10*sizeof(int)40(5)char(a+20)(6)a=r|a=floor(x)0(7)a/9.02.222222(8)x=pow(3,5)

34、273.000000(9)x=(a-H-,H-+)97.000000(10)ceil(x-0.5)5.000000(ll)a=abs(a)%8-10-6(12)x=fobs(-27.2)+633.200000(13)floor(x+0.5)5.000000(14)ceil(x-=0.5)-0.5)4.000000(15)floor(x*1000+0.5)/10004.700000(16)floor(x+0.5)5.000000(17)floor(x*1000)/10004.700000(18)a+rand()%40某一个随机整数(19)a%=n%=2),n=55此题运行时要给n赋初值,n必须是

35、整型奇数,n为整型偶数出错。(20)a+=a-=a*=a 0说明:函数ceil(x),返回大于等于x的最小整数;floor(x),返回小于等于x的最大整数;rand(),返回032767之间的整数。8.设程序中有说明语句int x=20;float y=4.7;char ch=k;试求出下列每个表达式的值(假定各表达式互不影响)答案答案x=00(2)x!=y1x+210(4)=A0ch!=01(6)x0&y01x0&11(8)y0&00!(x|y)=!x&!y0(10)x+!=20|y1(11)!ch=ch0(12)!(x&y)=!x|!y1说明:C+语言提供了三种逻辑运算符:!,&,I!,其

36、中!逻辑非的优先级最高,&逻辑与次之,II逻辑或最低。!逻辑非是右结合性,&逻辑与和|逻辑或是左结合性。2.4补充习题1.1.选择题(1)C+语言中的标识符只能右字母、数字和下划线三种字符组成,且第一个字符()。A.必须为字母 B.必须为下划线C.必须为字母或下划线 D.可以是字母、数字和下划线中任一中字符(2)下面正确的字符常量是()。A.C B.C.W D.(3)如果说明语句:charc=7 2;则变量c()。A.包 含1个字符 B.包含2个字符C.包含3个字符 D.说明不合法,c的值不确定(4)表达式18/4*sqrt(4.0)/8值的数据类型为(A.int B.float C.doub

37、le)oD.不确定(5)关于逻辑运算符的说法正确的是()。A.它们都是双目运算符,优先级相同B.语句“inta=O,c=l,b;b=a&c+;”执行后,c 的值为 2C.语句“inta=O,c=l,b;b=a|c+;”执 行 后,c 的值为 2D.语 句 int a=l,c=l,b;b=a&c+;”执 行 后,c 的值为 2(6)设 intm=7,n=12;则表达式为3 的 是()。A.n%=(m%=5)B.n%=(m-m%5)C.n%=m-m%5 D.(n%=m)-(m%=5)(7)数学公式yx+lny,正确的C+语言的表达式是()。A.sqrt(fabs(pow(y,x)+log(y)B.

38、sqrt(fabs(pow(x,y)+log(y)C-sqrt(abs(pow(y,x)+log(y)D.sqrt(abs(pow(x,y)+log(y)(8)有如下程序段:int a=14,b=15,x;char c=,A9;x=(a&b)&(c b)&(n=c d)后 n 的值为()oA.1 B.2 C.3 D.4(1 8)用 C+的语言表达式表示 x +l o g i o x l 的正确是()。A.f a b s (x*3+l o g (x)B.a b s (p o w (x,3)+l o g (x)C.f a b s (p o w (x,3.0)+l o g (x)D.a b s (p

39、 o w (x,3.0)+l o g (x)(1 9)设 i n t k=7,x=1 2;则能使值为3的 表 达 式 是。A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5 D.(x%=k)-(k%=5)(2 0)设有语句:i n t a=7;f l o a t x=2.5,y=4.7;则表达式 x+a%3*(i n t)(x+y)%2/4 的值是()oA.2.5 0 0 0 0 0 B.2.7 5 0 0 0 0 C.3.5 0 0 0 0 0 D.0.0 0 0 0 0 0(2 1)设有语句i n t x=3,y=4,z=5;则下面表达式中值为0的 是()。A.x&y B.

40、x =yC.x|y+z&y-z D.!(x y)&!z 1 1 1)(2 2)表达式1 8/4*s q r t (4.0)/8 值的数据类型为()A.i n t B.f l o a t C.d o u b l e D.不确定(2 3)判断c h a r 型变量n是否为小写字母的正确表达式为()。A.a =n =n)|(z =a)&(n =a )&(n goto 语句。3.2典型例题分析与解答1.1.选择题例 题 1:如果有以下语句:int a,b;char m,n;的方式中不正确的是()oA.10,20,X,YB.1020 XYc in a b m n ;贝 lj下歹U 输入数据C.10 20

41、 X YD.10、20、X、Y答案:C分析:C+语言没有专门的输入/输出语句,其输入/输出是通过输入/输出流来实现的。用 cin输入时,空格和回车键均可作为输入字符之间的分隔符,逗号不能作为分隔符。字符型变量只能容纳一个字符。例题2:以下不正确的语句是()oA.if(xy);B.if(x=y)&(x!=0)x+=y;C.if(x!=y)cinx;else ciny;D.if(xy)x-H-;y+;答案:B与析:if语句后面的表达式必须放在括号内“()”,且不能使用赋之值运算符。在 if和 else后面用花括号“”括起来的多个语句成为了一个复合语句。例题3:下面程序的输出结果是()。#inclu

42、devoid main()int a=6,b=6;if(a5)a-=l;b+=l;elsea+=l;b-=l;coutvva=vvav vendl;cout,b=,b;)A.5 B.a=5 C.a=5 D.编译时出错7 b=7 b=6答案:D分析:在 ifelse语句的中间应为单条语句或复合语句,不能为多条语句。例题4:对 while、dowhile循环结构,下面说法正确的是()。A.只是表达形式不同B.dowhile结构中的语句至少执行一次C.while结构中的语句至少执行一次D.条件成立时,它们有可能一次也不执行答案:B分析:要知道while、do.while两种循环结构的区别在于:whi

43、le循环是先判断条件是否成立,成立时才执行,而 do.while是先执行再判断,它至少执行一次。例题5:以下不正确的是()。A.语句for(i=0;i+)表示无限循环 B.for(;)表示无限循环C.for()也表示无限循环 D.while(1)表示无限循环答案:C分析:fbr循环语句中的表达式可以省略,但分号不可省略。例题6:下面循环体的执行次数为()o#includevoid main()int a,b;for(a=0,b=5;a=b.例题7:对中断语句的说法下面不正确的是()。A.用户可以指定中断的位置 B.用户可以指定转移的位置C.break语句可以跳出本循环 D.continue语句

44、可以结束本次循环答案:B与析:不论break语句还是continue语句转移的位置是根据程序默认的,不用人为的设置。例题8:下列函数的功能是()。#includevoid main()char a;int i;cina;fbr(i=l;i=,a,)&(a=,z,)a=a-i;couta;A.把 a 中的小写字母变成大写字母 B.把 a 中的小写字母变成大写字母C.把 a 中的所有字母变成小写字母 D.把 a 中的字母变成它前面i 个的字母答案:D分析:本题要求判断程序的功能,可以用列举法判断其gon功能,例 设 a=f,则程序结果为 edcbaAAAAA,本程序仅对在小写字母az之间的字母起作

45、用。2.2.填空题例题9:下面的程序实现输出x,y,z 三个数中的最大值,请填入正确的内容。#includevoid main()int x=5,y=8,z=9,u,v;if(1)u=x;else u=y;if(2)v=u;else v=z;cout,v=,v e n d l;答案:(l)xy(2)uz分析:本程序首先找出x 和 y 中较大的数放入变量u 中,再将u 与 z 做比较,其中较大者放入变量v 中,为三个数中的最大值。例 题 10:有以下程序段:int n=0;while(n=l)n+;while循 环 执 行 次 数 是.答案:为无限次。分析:要注意=和=的区别,”是赋值运算符,=

46、是关系运算符“等于。这里while(n=l)永远为1,为真值,则答案为无限次。例 题 11:计算卜20之间偶数之和,请填充:#includevoid main()int a,b,i;a=0;b=0;for(i=0;:i+=2)a+=i;coutw”偶数之和为:”avvendl;答案:(l)iv=20 或 i21(2)b+=i+l(3)例 题 12:下面程序运行结束后,k 的值为。#includevoid main()int i,j,k;for(i=0j=10;i=j;i+j)k=i+j;countk;答案:io。分析:在程序中每循环一次,变量i+1,而变量j-1,i+j之和保持不变为1 0,直

47、到循环结束。例 题 13:下面程序是输出100以内能被7 整除且个位数是4 的所有整数,请填空:#inc ludevoid main()int i,j;for(i=0;:i+)j=i*10+4;if()continue;coutjendl;)答案:(l)iv=9 或 i 10(2)j%7!=0(3)else分析:山题目可知判断100以内的数,故 i 变量的终值应为:i=9或 i10o要满足不被7整除的条件为:j%7!=0;反之不满足该条件的则要输出。3.3.改错题例 题 14:下面的程序存在着语法错误,请指出并予以修改:#includevoid main()float x,y;/Iif(x0)

48、;/2x=x+y;/3coutxendl;/4else cout-x;/5答案:标 号 3 语 句 改 为 x=x+y;。(2)标号4 语句改为 coutx endl;。分析:选择结构语句的语法要求,条件表达式放在括号内,后面不加逗号。i f 语句后面有多于一个语句时要加大括号“”,成为复合语句。例 题 15:下面的程序是从键盘输入10个字符,统计出其中的数字字符的个数。#inc ludevoid main()正确程序为:int i,c,n;for(i=0,j=10,i-H-);c=getchar();if(c0&c9)n+)couttn=,n en d l;#includevoid main

49、()int i,c,n=0;for(i=0;j0&cv9)n+;cout44n=,n e n d l;分析:fbr循环语句中三个表达式之间必须用分号分隔,括号外没有分号。if 语句的条件有错,0 和 9 作为字符常量,应加上单引号、作为统计用的变量m初值应赋值为0。修改后的正确程序显示在右边。0 变量没有定义应改为i)4.4.看程序写结果例题 16:#includevoid main()int a,b,c,d,x;a=c=0;b=l;d=20;if(a)d=d-10;else if(!b)if(!c);else x=25;cout,d=,d en d l;cout,=,x e n d l;)运

50、行结果:d=20 x=25分析:这 是 个 if语句的嵌套结构,判断三个if语句的条件表达式都“假”,则执行最后一个 else后面的语句“x=25”例题 17:#includevoid main()int x=6,y=8;if(x+6)cout-yendl;elsecouty+endl:)运行结果:7分析:程序在判断第一个条件if(x+6)时,由于此时x 的值为6 所以不成立,故不做语句 coutvv+yv 6),因 x 值 为 7,条件成立,故执行语句cout-yw endl;此时y 值 为 8,执 行 则 输 出 7。例题 18:#includevoid main()int a;coutw

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁