南理工C++讲义及习题指导.pdf
《南理工C++讲义及习题指导.pdf》由会员分享,可在线阅读,更多相关《南理工C++讲义及习题指导.pdf(144页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 一 章C+语言概述1.1 1.1知识要点2.C+程序的组成注释部分(两种风格)、编译预处理部分(宏定义,文件包含和条件编译、)、程序正文部分(类型定义、常变量定义、函数定义)。最终,程序源代码由A SC I I 码组成类似单词或词组的单元(词法单元),可以用任意的文本编辑器编辑,源代码中的空白(空格、Ta b、回车换行)用来表示词法单元的开始和结束,除这一功能外其余空白将被忽略,但如果是字符串内部的空白(不含回车换行,或者说字符串内不能直接回车换行,需要使用转义符)将作为字符串的一部分输出,不会忽略。注释:1)一对 符 号 /*”与“*/”之间的内容称为注释。它可以占多行,是 从 C语言中
2、继承来的一种注释形式。2)一行中符号“”之后的内容也称为注释。它只能占一行,是 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
3、+的程序由若干个文件组成,文件名的后缀为,c p p (c p l u s p l u s)o每个文件又是由函数组成,函数之间可以调用。在这些函数中只有一个函数是主函数m a i n。程序执行时,操作系统先调用主函数,主函数再依次调用其它函数完成设计任务。4.程序的编辑、编译、连接和运行(1)编 辑 编 辑 是 将 编 写 好 的 C+源程序输入到计算机中,生成磁盘文件的过程。(2)编译和连接过程编译器的功能是将程序的源代码转换成为机器代码的形式,称为目标代码,然后,再将目标代码进行连接,生成可执行文件。编译过程又可分为三个子过程。(1)预处理过程:对源程序编译时,先进行预处理,如果源程序中有
4、预处理命令,则先执行这些预处理命令,执行后再进行下面的编译过程。(2)编译过程:编译过程主要是进行词法分析和语法分析的过程,又称源程序分析。1)词法分析。2)语法分析。3)符号表。4)错误处理程序。5)生成目标代码。连接过程:这是编译的最后一个过程,将用户程序生成的多个目标代码文件和系统提供的库文件中的某些代码连接在一起由连接器生成一个可执行文件,存储这个可执行文件的扩展名为.e x e。(3)运行 一个C+的源程序经过编译和连接后生成了可执行文件。运行可执行文件可在编译系统下选择相关菜单项来实现,也可以采用其他方法。1.2 1.2典型例题分析与解答例 题 1:显 示“l a m a s t
5、u d e n t”字符串,并通过简单的程序了解和熟悉运用V C+开发环境进行编写、编译、调试、显示结果的过程。解答:该程序非常简单,如下代码所示,运用了 COUt输出流对象代表标准输出显示器,代表后边的字符串向显示器输出的方向。#include void main()coutvvI am a student,endl;编辑过程:图 1-1 新建对话框编辑编辑是将C+源程序输入计算机的过程。在 Visual C+6.0 主界面下,点击F ile 菜单,选择New菜单项,即可出现New对话框,如 图 1-1所示。在弹出窗口中的F ile s 标签页下,选择C+Source F ile。在选项卡右
6、面的文件编辑框里输入文件名如“Exa”,在目录编辑框里输入文件路径,如 d:te s t”。点击确认按钮。将出现编辑窗口,如图1-2所示。在 图 1 2 所示的右端编辑窗口里输入以下C+源程序并保存文件。图 1-2 编辑窗口编译编译是使用系统提供的编译器将文本文件Exa.cpp生成机器语言的过程,结果为Exa.o b j,由于没有得到系统分配的绝对地址,还不能直接运行,如 图 1-3所示。选择编译菜单下的编译Exa.cpp,计算机将完成对当前源程序的编译。按提示建立默认工程空间。编译无错时,将源程序Exa.cpp编译为目标文件Exa.obj图1-3编译源程序连接连接是将目标文件Exa.obj转
7、换为可执行文件Exa.exe的过程。如图4所示选择编译菜单下的构件Exa.exe。连接无错时,将目标文件Exa.obj连接为Exa.exe。图1-4源程序运行运行是执行可执行文件Exa.exe,屏幕输出运行结果。如 图L 5所示选择编译菜单下的执行 Exa.exe。图 1-5 运行程序运行结果如图-6 所示:图 1-6 运行结果例题2:输入一名学生的成绩,判断该成绩的等级。如=60的,显 示“合格”,60的显示“不合格”。程序:#include 输入输出流对象的头文件void main()int score;声明成绩变量,用来保存分数cout=60)判断该条件是否真或假cout合格=60是真的
8、时候,运行该语句elsecout“不合格=60是假的时候,运行该语句)分析:(1)(I)首先该题目要求输入一个分数,则事先声明一个整型变量score。(2)(2)其次从键盘上输入该分数,应有输入语句c in,并由上面定义的变量来保存分数。(3)(3)然后根据分数来判断等级,有两种情况应该用if语句。(4)(4)输出的信息是根据不同条件显示字符串,用到cout输出流对象。(5)(5)用到标准输入输出流对象,所以在程序前加相应头文件。例题3:面向对象的()是一种信息隐蔽技术,目的在于将对象的使用者与设计者分开。不允许使用者直接存取对象的属性,只能通过有限的接口与对象发生联系。A.多态性 B.封装性
9、 C.继承性 D.重用性答案B分析:封装性是指把对象属性和操作结合在一起,构成独立的单元,其内部信息对外界是隐蔽的,不允许外界直接存取对象的属性,只能通过有限的接口与对象发生联系。若不清楚多态性的定义,误选答案A o多态性是指当一个对象接收到一个请求进行某项服务的消息时,将根据对象所属的类,动态地选用该类中定义的操作。若不清楚继承性的定义,误选答案C。继承是指派生类可以自动拥有基类的全部属性和服务。若不清楚而用性的定义,误选答案D。重用性是多态性的一种表现形式。例题4:C+源文件的扩展名为()。A.cpp B.c C.txt D.exe答案AI 析:C+源程序的扩展名为cpp。C 程序的扩展名
10、为c。文本文件的扩展名为txt。源程序编译后可执行文件的扩展名为exe。若不清楚C+源程序扩展名和C源程序扩展名的区别,误选答案B。C+兼容C,当文件名保存为c 时,调用C 编译器;当文件名保存为cpp时调用C+编译器。若不清楚C+源程序扩展名和文本文件扩展名的区别,误选答案C。C+源程序可以在文本编辑器里编辑,但定注意将其扩展名保存cp p,不能为txt。若不清楚C+源程序和C+可执行文件的扩展名的区别,误选答案D。C+源程序经过编译、连接后得到可执行文件的扩展名为exe。例题5:C+的合法注释是(A./*This is aC program/*B./This is a C programC
11、.”This is a C program D./This is a C program/答案:B分析:单 行 注 释 常 采 用 多 行 注 释 采 用“/*”和“*/。单行注释也可采用“/*”和“*/”,但答案A 书写格式错误,不能选答案A。注释和字符串的区别,双引号内的字符为字符串。不能选答案C 单行注释不需要结束符“二如果有,只能作为注释的一部分存在。也不能选答案D。例题6:下面标识符中正确的是()。A._abc B.3ab C.int D.+ab答案:A分析:C+的标识符由字母、下划线和数字组成,而且第一个字符不能为数字。答案B 第一个字符为数字不能选B o 标识符不能为关键字,不能
12、选答案C o 答 案 D 第一个字符不是字母或下划线,也不能选。例题7:分析下列该程序的错误。输入数据格式为:2,5(回车)。main。int sum=0;int a,b;coutHinput a,b:u;cin a b;sum=a+b;coutsumendl;)本程序把输入的两个数据进行累加并输出结果。输入数据格式为:2 5。#include/编译预处理命令,以#开头。把系统已经定义好的输入输出功能包含到本程序中。void main()/程序的主函数 /主函数开始int sum=O;/定义一个变量sum存放累加结果,并且赋初值为0int a,b;/定义两个变量,保存输入值coutinput
13、a,b:n;/提示输入cin a b;使用基本输入设备cin输入两个变量值sum=a+b;进行累加,结果保存到sum变量coutsumendl;使用基本输出设备cout输出累加结果sum)分析:没有使用编译预处理命令:#includeo iostream.h是系统定义的一个头文件(hhead),设置了 C+的 I/O环境。cin cout为基本输入、输出设备,定义在iostream.h头文件中。(2)没有main()函数的返回类型,系统提示警告。main。函数的返回类型常标注为void。(3)输入数据时没有使用空格分隔。输入运算符“”要求输入的多个数据用空格分隔。1.3 1.3教材习题分析与解
14、答1.参照例题,编写一个能输出以下信息的程序。How are you.Fine,thank you.程序:#includeVoid main()Coutvv”How are you.,endl;输出字符串并换行。CouKTine,thank you.vvendl;)2.参照例题,编写一个求两个数78、45之差的程序。程序:#include void main()int sum=0;sum=78+45;求和cout78+45=,sum endl;)3.参照例题,编写一个求三个数14、25、16之和的程序。#include void main()(int a,b,c,sum;定义变量coutinp
15、ut three number:n;c in a b c;/从键盘输入三个数给变量a和 b、csum=a+b+c;/求和coutsum is sum;)4.上机运行本章的三个例题,熟悉所用系统的上机方法与步骤。略5.上机运行本章习题1、2 和 3。略1.4 1.4 补充习题1.下 面 的()不是C+所包含的要素。A.重载 B.对象 C.类 D.继承2.下列标识符中,()是合法的。A.goto B.Student C.123 D.kId3.在C+语言中,()的陈述是正确的。A.能使用关键字并区分大小写 B.能使用关犍字并不区分大小写C.不能使用关键字并区分大小写 D.不能使用关键字并不区分大小写
16、4.C+语言中语句的结束符是(A.,B.;C.o D.、5,下面对于类的描述,()是错误的。A.类是抽象数据类型的实现 B.类是具有共同行为的若干对象的统一描述体C.类是创建对象的模板 D.类就是C 语言中的结构类型6.写一个程序输出Hello,C+!。7.编译下列程序,改正错误信息,分析输出结果。#include void main()int x,y;coutMinput x:endl;cinx;y=x*x;cout y=yn”;)改正:coutny=n y Mn;8.下列程序有何错误?#include void main()coutHello,endl;改正:#include void m
17、ain()coutnHellonendl;9.关于C+和 C 语言的描述中,()是错误的?A.C 是 C+的一个子集 B.C 程序在C+环境可以运行C.C+程序在C 环境可以运行 D.C+是面向对象的而C 是面向过程的10.给出下列程序的运行结果。#include void main()(int a(2),b(3),c(4);coutcl=cendl;c=a+b;cout c2=cendl;)第 2 章 基本数据类型与数值表达式2.1知识要点计算机的基本功能是进行数据处理。在 C+语言中,数据处理的基本对象是常量和变量。运算是对各种形式的数据进行处理。数据在内存中存放的情况由数据类型所决定。数
18、据的操作要通过运算符实现,而数据和运算符共同组成了表达式。本章是对C+语言中的数据类型、运算符、表达式等内容的全面介绍,要正确理解其特点,井灵活运用,主要掌握以下的知识要点:1.掌握常量和变量的概念。2.掌握整型数据和实型数据、字符型数据和字符串型数据的概念和区别。3.掌握各种类型的变量说明及其初始化。4 .掌握算术运算、关系运算、逻辑运算、赋值运算、逗号运算、条件运算等概念。5 .掌握运算符的优先级、左结合和右结合规则。6 .掌握表达式求值时的自动转换和强制类型转换。7 .掌握自加、自减运算的规则。8 .掌握常用数学函数的功能。2.2典型例题分析与解答1.1.选择题例 题 1:运算符+、=、
19、*、=中,优先级最高的运算符是()。A.+B.=C.*D.=答案:C分析:根据C+语言对运算符优先级的规则,以上运算符优先级从低到高的次序为=、=、+、*。例题2:下列说法正确的是()。A.c o u t ”n”是一个语句,它能在屏幕上显示“n B.68 代表的是字符D。C.1E+5 的写法正确,它表示余割整型常量。D.0 x10 相当于 0 20。答案:D分析:分号是语句的已部分,且 n 是转义字符;68 代表了八进制的6、8,而八进制中没有数字8;1E+5 是实型常量;十六进制的10 相当于十进制的16,相当于八进制的20。例题3:下列不合法的变量名为()oA.i n t B.i n t
20、i C.n am e _ 1答案:AD.n am e O分析:根据变量名命名要求,不能作为变量名。变量名只能由大小写字母、数字、下划线组成,且系统关键字例题4:下面正确的为(A.4.1/2C.3/2=1 结果为1答案:A分析:运算符要求式整型;B.3.2%3D.7/2结果为3.5关系运算值为0;两个整数相除,商为为相除后的整数部分。例题 5:已知 a=4,b=6,c=8,d=9,则”(a+,b a+&c d)?+d:a =y&ch,B,&!y)的 值 是()。A.0 B.语法错 C.1 D.“假”分析:根据C+语言中运算符优先级的高低,“!”运算符最高,关系运算符高于逻辑运算符。则上面的表达式
21、转换为:1&1&1,结果为1。答 案:Co2.2.填空题例题8:如果s 是 int型变量,且 s=6,则下面s%2+(s+1)%2表 达 式 的 值 为。答案:1分 析:运 算 符 是 求 余 运 算,得 到 的 结 果 是 相 除 后 的 余 数。表 达 式 转 换 为 6%2+(6+1)%2=0+7%2=lo例题 9:如果定义 int a=2,b=3;float x=5.5,y=3.5;则表达式(float)(a+b)/2+(int)x%(int)y 的值为答案:4.5分析:不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换为另一种数据类型后再进行运算。对表达式,先求
22、表达式的值,再转换值的类型,本题的运算结果为4.5。例 题 10:设所有变量均为整型,则表达式(e=2,f=5,e+,f+,e+f)的 值 为。答案:9分析:逗号运算符是是将两个或多个表达式组合成个表达式的运算符。求解时从左至右依次计算每个表达式的值,整个表达式的值就是最右边的表达式的值。本题的答案为9。例题II:已知字母a的ASCII码为十进制数97,段ch为字符型变量,则表达式ch=,a,+8-4的 值 为 一。答案:e分析:C+语言中,对字符数据进行算术运算,实际上就是对字符的ASCH码进行运算。以字符形式输出时,再将ASCII码转换为相应的字符输出。本题表达式为ch=97+8-4=10
23、1,101相应的ASCH为字符e。3.3.编程题例 题 12:编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。解:程序如下:#includevoid main()(double r,h,area,volume;cout”请输入半径:“;cinr;cout 请输入高:“;cinh;area=3.14*r*r;volume=area*h;coutcc”底面积是:,areaendl;coutcv”体积是:5,vol umeendl;)2.3教材习题分析与解答i.i.C+语言中有哪些数据类型?分别说明它们的类型关键字、取值范围、类型长度。答:C+语言中的数据类型有:整型(短整型,整型,长整
24、型);字符型;逻辑型;枚举型;实 型(单精度,双精度,长双精度);引用型(指针,引用);复合型(结构,联合);空类型。2.2.字符常量与字符串常量的区别是什么?答:字符常量与字符串常量的主要区别在于:(1)定界符不同。字符常量使用单引号,而字符串常量使用双引号。(2)长度不同。字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数。(3)存储要求不同。字符常量存储的是字符的A S C H 码值,而字符串常量除了要存储有效的字符外,还要存储一个结束标志 0 。3.说明下面的每个数据各属于哪一种(数值常量、字符常量、字符串、标识符、保留字、运算符、标点、非法数据)?2 5 1 8-
25、3.6 71 2.8“4”4,x l “x 2”“1 9 4 9.1 0”cinK _ nam e3 ab “f l oat x ,y ”;if+“n”?“s y l.cpp”3 2 答:数值常量有:2 5,1 8,-3.6 7,1 2.8字符常量有:,,3 2 字符串有:“4”,“x 2”,“1 9 4 9.1 0”,“s y l.cpp?,保留字:cin,int,e ndl,if运算符:+标 点:?非法数据:“f l oat x ,y ;,3 ab变量:x l,K nam e4.选择题C l)下列数据类型不是C+语言基本数据类型的是()。A.字符型 B.整型 C.实型 D.数组答案:D(2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 理工 C+ 讲义 习题 指导
限制150内