收藏 分销(赏)

C++面向对象程序设计_自学指导书.doc

上传人:xrp****65 文档编号:7711741 上传时间:2025-01-13 格式:DOC 页数:105 大小:600.50KB
下载 相关 举报
C++面向对象程序设计_自学指导书.doc_第1页
第1页 / 共105页
C++面向对象程序设计_自学指导书.doc_第2页
第2页 / 共105页
C++面向对象程序设计_自学指导书.doc_第3页
第3页 / 共105页
C++面向对象程序设计_自学指导书.doc_第4页
第4页 / 共105页
C++面向对象程序设计_自学指导书.doc_第5页
第5页 / 共105页
点击查看更多>>
资源描述

1、C+面向对象程序设计 函授自学指导书C+面向对象程序设计自学指导书浙江师范大学 信息科学与工程学院朱建新 编2005年4月30日目 录第一章 C+语言概述1【学习要点】1【例题分析】1【思考题】2第二章 基本数据类型 运算符及表达式3【学习要点】3【例题分析】3【思考题】5第三章 控制结构6【学习要点】6【例题分析】6【思考题】15第四章 数组19【学习要点】19【例题分析】19【思考题】22第五章 函数与编译预处理32【学习要点】32【例题分析】32【思考题】40第六章 指针50【学习要点】50【例题分析】50【思考题】59第七章 结构体与共用体61【学习要点】61【例题分析】61【思考题】

2、68第八章 类与对象72【学习要点】72【例题分析】72【思考题】79第九章 继承与派生类82【学习要点】82【例题分析】83【思考题】87第十章 运算符重载与虚函数92【学习要点】92【例题分析】92【思考题】102第十一章 文件与流类库104【学习要点】104【例题分析】104【思考题】109105第一章 C+语言概述本章主要介绍C十的起源、发展历史及其特点;C十程序的基本结构;Visual C6.0集成开发环境及上机操作过程。【学习要点】 1. 了解C十语言的特点。 2. 理解C十语言源程序的结构、书写格式和main()函数的作用。 3. 熟悉 Visual C6.0集成开发环境。熟练掌

3、握利用 Visual C6.0集成开发环境开发、调试C十控制台程序的步骤和基本操作。【例题分析】 一、选择题 例11 以下叙述中正确的是。 A. C十程序由main()函数组成 B. C十程序由函数组成 C. C十程序的执行从第一个函数开始 D. 在C十程序中,注释只能位于一条语句之后 解:对于C十程序应明确: (l)程序由函数组成。一个可运行的C十源程序可由一个且仅能由一个 main()函数加上其他的函数组成,其他函数可有可无。 (2)不管main()函数出现在什么位置,程序总是从main()函数开始执行。 (3)注释的两种方法:一是用*和*把注释信息括起来;二是用/,它表示/之后到本行结束

4、为注释内容。可以在程序任何位置进行注释。 正确答案:B。 二、填空题 例12 在下列程序的每行之后加上注释。 #include iostream.h void main() coutHello!n;coutWelcome to C+!n; 解:注释如下:include iostream.h /指示编译器在此处将文件iostream.h上中的代码嵌入本程序。void main() /主函数,void表示 main()函数没有返回值。coutHello!n;/输出字符串“Hello!”到显示器上。 cout“Welcome to C!n;/输出字符串“Welcome to C!n”。 例1-3 C

5、十中函数的函数体由符号开始,用符号结束。 解:C十中函数的函数体由符号“”开始,用符号“”结束。三、 编程题例1-4 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。解: 程序如下: #include iostream.h void main( ) int i; couti; cout你输入的数字是iendl;【思考题】 一、选择题1. C十语言规定:在一个源程序中,main()函数的位置_。A. 必须在最开始B. 必须在系统调用的库函数的后面C. 可以任意D. 必须在最后2. 以下正确的叙述是。A. C十程序的每行中只能写一个语句B. C十语言本身无输入、输出语句C. 在对一个C

6、十源程序进行编译的过程中,可发现注释中的拼写错误D. 在C十程序中,main()函数必须位于程序的最前面 3. 以下符号中能作为用户标识符的是。 A. 123 B. void C. struct D .switch 4. C十语言程序的基本单位是。 A. 程序行B. 语句C. 函数D. 字符 二、填空题 5. 一个可执行的C十程序至少必须有一个函数。 6. C十源程序中注释的作用是。 7. 一个C十语句以结束。是C十语句的组成部分。 8. 在C十语言中输入、输出操作是通过来实现的。 9. 在下列程序的每行之后力,上注释。 #includeiostream.h void main() int n

7、l, n2, sum; contEmter two numbers n1,n2:; cinn1n2; sum=n1+n2; coutn1+n1sumendl; 三、编程题 10. 参照例题分析,编写一个C十程序并上机运行,能输出以下信息:* Hello,C! * 11. 编写一个C十程序,输入任意三个数a,b,c,能输出其中的最大值。第二章 基本数据类型 运算符及表达式本章是C十语言中需要熟记的内容最多的一章,对于数据类型、运算符、表达式等内容既要熟记,更要灵活运用;特别要注意与自然语言明显不同的逗号运算、自增自减等运算的特点。【学习要点】1. 掌握常量与变量、整型数与实型数的概念。2. 掌握

8、字符型数据与字符串型数据的概念以及二者的区别。3. 掌握各种类型的变量说明及其初始化。4. 掌握算术运算、逻辑运算、关系运算、赋值运算、逗号运算等概念。5. 掌握运算符的优先级、左结合和右结合规则以及目数的概念。6. 掌握表达式求值时类型的自动转换和强制类型转换。7. 掌握表达式的组成、表达式的优化。8. 掌握位运算和位运算符。【例题分析】一、选择题 例 21 下列不合法的变量名为_ A. student B. -student C._student D. student() 解:根据变量命名要求,首字母以英文字母或下划线开头。正确答案:B。 例 22 下列不合法的变量名为Atudent Ba

9、student Cs_tudent Dstuden() 解:根据变量命名要求,变量名组成只能由大小写字母、数字、下划线组成。 正确答案:A。例23 下列不合法的变量名为Alint Bint1 cint D_lint 解:根据变量命名要求,系统关键字不能作为变量名。正确答案:C。 例 24 当 a=6,b5时,逻辑表达式 a7ab8的值为_Atrue Bfalse C 非0整型数 D 0解:根据题意和该逻辑表达式的运算结果。 正确答案:C。 例 25 设 X,y,Z为整型数,下列各式中,运算结果与 Xy24的表达式相同的是。 Ax(yz=8,46) Bx= y(z=8,46) CX= y= z8

10、,46 D.x(y= z= 8),46 解:C+语言的赋值运算有别于其他高级语言,逗号运算又是其他高级语言所没有的。 1 在赋值表达式中,可以有多个赋值运算符;计算顺序自右向左,运算优先级低,仅高于远号运算符。 2 逗号既是分隔符,又是运算符,可以用一个逗号运算符或多个逗号运算得将多个表达式连接成逗号表达式,计算顺序自左向右,并将最后一个表达式的值作为整个逗号表达式的值,运算优先级最低;例:a(22, 46,204,6);结果a=6。正确答案:B。例26 设i6,k=0下列各式中,运算结果为k7 的表达式是。A kik B kki C kik Dkk(十十i)解:自增十十、自减运算符是C十语言

11、特有的。1运算符在变量的前面或后面,其运算结果是不同的。若十十或在变量前;则先将变量的值加1(或减 1后,再将变量的值参加运算;反之则先将变量的值参加运算;再将变量的值加1(或减1)。2自增、自减运算符优先级高于算术运算符,A式ik,先计算i,再力。k,D式 k= k(i),若去掉括号,则改变了运算顺序;变为 k十后,再十l。正确答案;C和D。二、填空题例 27 表达式AB20的值为 解:不同类型的数据混合运算时,系统可以自动进行类型转换,将表示范围小的数据类型转换成另一操作数的相同类型后再参与运算,则转换为656620151。 例28 如果定义int e=8;double f=6.4,g8.

12、9;则表达式fint(e3*int(fg)2)4的值为。解:不同类型的数据混合运算时,可以使用强制类型转换符,强制将一种数据类型转换成另一种数据类型后再参与运算,对于表达式,先求表达式的值,然后再转换值的类型,本例的运算结果为 9.4 。若将式中 e3改为 e3.0 则运算结果为6.4,因为e3的值是整型数,而e3.0的值是实型数,改变了括号内的运算结果,致使整个表达式的值发生变化。例29 若int i= 65535,j x000x,k:ki&j;,则k值为,i值为。解:将 10进制数65535和 16进制数000aH在计算机内的二进制原型数值按位与运算,结果为 k= 10,i为 65535。

13、三、编程题例 210 编写一个将华氏温度转换为摄氏温度的程序。转换公式为 C(5.09)(F32),要求输出华氏温度和摄氏温度的对应值。解:程序如下:#includevoid main() double C,F; coutF; C=(5.0/9)*(F-32); cout华氏温度为:F 对应的摄氏温度值是: Cendla1c1a2c2;A20A 60B B20,A,60,B C 20 A 60 BD20A60B E20B注:此处为空格符,CR为回车键符,下文同。解:C十语言没有专门的输入输出语句,其输入输出可通过输入输出流来实现。cin不能将输入的空格赋给字符型变量,空格和回车键均作为输入字符

14、之间的分隔符;字符型变量只能容纳一个字符,整型数只能由数字组成;逗号不能作为分隔符。 正确答案:A、C、D、E。 例32 设有语句float PI= 3.14;,若用科学表示法输出为3.140000e000则下列正确的表达式为_AcoutPIendl;Bcout.setf(ios: scientific,ios:floatfield);coutPIn;Cprintf(12.10fn,PI);Dprintf(en,PI); 解:C十语言除用输出流输出数据外,还可用C语言的输入输出函数,但需包含stdio.h,其输出格式与C十输出流格式不同:C十中可用预定义的格式控制函数定义输出格式,也可以用io

15、s类的成员函数进行格式控制。若学用科学表示法输出数据,必须用ios类成员函数 setf设置状态标志。printf函数必须用e格式符才可以输出科学表示法形式的数据。 正确答案:B、D。二、填空题 例3-3 以下程序的输出结果为_includeiostream.hvoid main() short i; i=-6; coutoctoctidec deci,hexhexiendl: 解:i为short 类型,占用2字节内存,而oct、dec、hex是C十中预定义的格式控制函数控制输入输出数据的格式。答案为 oct177772,dec=-6,hex= fffa。 例 3-4 以下程序的输出结果为inc

16、ludeiostream.hvoid main()int i66;char c=A;couti=(char)i,c=decinn;解: 本程序采用了强制型转换符,将i转换为字符型数据输出,又用格式控制函数将字符型数据转换成数值型数据输出。答案为iB,C66a 例3-5 以下程序的输出结果为_#include void main()int i=0,x=0,y=0;do i+;if(i%3!=0) x+=i;i+; y+=i+; while(i5),coutx=x y= yendl;解:x = 5 y = 7例3-6 以下程序的输出结果为_#include void main()int x, y=

17、10;while(x=y-l) y-=2;if(y%3=0) x+; continue;else if(y4) break;x+;coutx=x y= yendl;解: 输出结果是: x=3 y=2例3-7 以下程序的输出结果为_#includevoid main() int i,j,m;for(i=1;i4;i+) for(j=l;j7;j+) if(j= =4) break;m=i*j;couti * j= m ;coutendl;解: 运行结果如下:ll = 1 l2 = 2 l3 = 32l = 2 22 = 4 23 = 631 = 3 32 = 6 33 = 9注意:当j的值为4时

18、,结束的是内层循环,外层for循环继续执行。例3-8 以下程序的输出结果为_#includevoid main() int i,j,m;for(i= l;i4;i+) for(j=1;j7;j+) if(j = = 4) continue;m=i *j;couti * j= m ;coutendl;解:运行结果如下:1l = l l2=2 l 3=3 15=5 l 6=621 = 2 22=4 23= 6 25 = l0 26= l23l =3 32= 6 33=9 35 = l5 36= 18 注意: continue结束本次循环,即当j的值为4时,内层循环体的条件语句后面的部分不执行,循环

19、变量j自加,执行下一次内层循环。例39 输入一个自然数,输出其各因子的连乘形式。如输入12,输出121223的形式,请填空。#include void main()int i=2, n;coutn;coutn= 1;do if(n%i= =0) cout*i;_1_;else i+; while(_2_);解: nni;n!1 三、编程题 例 310 编程实现如下所示的函数关系式。已知 X,求 y的值。 x (x1)y= x+5 (1x10) x-5 (x l0) 解:该函数实质是一个分段函数,即根据x的不同取值范围,由相应的函数式求y的值。 (1)使用缺省else的if语句形式#inc1ud

20、evoid main()float x,y;coutx ;if(x= l &x=10) y=x-5;couty= yendl;(2)用条件语句的嵌套形式实现#inc1udevoid main()float x,y;coutx;if(x1) y=x;else if(x 10) y=x+5;else y=x-5;cout y= yendl; 例311 根据输入的年月,求出该年该月的天数。 解:本题要根据月份来讨论天数,如是大月(1,3,5,7,8,10,12)则天数是31,如是小月(4,6,9,11)则天数是30;如是2月;要看该年是否闰年,是闰年则为29天,非闰年则为28天,显然本程序采用多分支

21、选择结构。具体程序如下:#include#inc1udevoid main()int year,month,days;coutyear;coutmonth;switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case l2:days=3 1;break;case 4:case 6:case 9:case 11:days=30;break;case 2: if(year%4=0& & year%100!=0) | year%400= =0) days=29;else days=28; break;default:coutInput er

22、ror ! endl; exit(0);coutyear: yearendl month: monthendldays: daysl时,第i项为(ab)a。程序如下:(l)用while语句实现。#includevoid main() float sum,t,a,b;int i;a=2;b= l;i= 2 ) t=a/b; sum=t;while(i=5) a=a+b; /求第i项的分子 b=a-b; /求第i项的分母 t=a/h; /求第i项的值 sum+=t; /求第i项的和 i+;cout sum= sumendl;(2 ) 用for语句实现.#includevoid main() flo

23、at sum,t,a,b;int i,a=b= 1.0, sum=0.0;for(i= 1;i= 15;i+) a=a+b; /求第i项的分子 b=a-b,; /求第i项的分母 t=a/b; /求第i项的值 sum+=t; /求第i项的和cout sum= sumendl;(3 )用do-while语句实现#includevoid main() float sum,t,a,b; int i=l, a=b=1.0;sum=0; do a=a+b; /求第i项的分子 b=a-b; /求第i项的分母 t=a/b; /求第i项的值 sum+=t; /求第i项的和 while(+i= 15);cout

24、sum= sumendl;例3-13 正整数n从键盘输人,计算5n的值。 解:计算5n可用循环语句实现,本例仅以while语句实现。#include void main()int i=1,n;float resuIt=1.0;coutn;if(n) while(i=n) result*=5.0;i+;cout结果是: resultn ;例3-14 1-l213-14l99-1100的值。 解:本题仅以for语句实现。 #include void main() float sum=0.0, s=1 .0; for(int i=l;i=l00;i+) sum+=s/i; s=-s, cout结果是

25、: sumn; 例315 输入一行字符,将其中的两种字符 C和显示出来,而对其他字符不显示,同时统计出其他字符的个数。 解: #include #include void main() char ch; int i=0; while (ch=getchar() ) ! =n ) if(ch!=C&ch!=+) i+; continue; coutch; cout其他字符的个数为:in; 例316 从键盘输入某班若干名学生一门课程的成绩,编程找出最高分和最低分,并统计全班平均成绩。 解:要求程序具有灵活性,程序中参加统计的学生人数应随具体情况而定,不应固定,若以输入负数作为统计结束条件,则程序如

26、下:#include void main()float score;max;min;sum=0.0;int num=0;coutscore;max=min= score;whi1e(score=0) if(scoremax) max=score;if(scoremin) min=score;sum+=score;num+;coutscore;if(num) cout共统计 num人endl;cout最高分是maxend1;cout最低分是 minendl;cout平均成绩是sum/numendl;else cout无输入!endl; 例317 从键盘不断读入字母,如字母为元音字母,则输出其相应

27、的大写字母,否则结束程序解: #include void main()char ch;int quit=0;do coutch;switch(ch) case a:coutA; break;case e:coutE; break;case i:coutl; break;case o:coutO; break;case u:coutU; break;default: quit=1; break; while(!quit); 例318 模拟计算器进行加、减、乘、除数学运算。要求当输入两个操作数和运算符后,输出运算结果。一次运算结束后询问用户是否继续,用户根据需要可继续进行运算。解:#include

28、 void main()char op;char quit=y;float dl;d2;while(quit= =y| quit= =Y) cout输入:第一个操作数;运算符和第二个操作数d1opd2;switch(op) case +: coutd1+d2=(dl+d2)endl;break;case -: coutd1 - d2 =(d1-d2) endl;break;case *: coutd1 * d2= (d1 * d2)endl;break;case /:if(d2=0.0) cout输入错误! endl;quit=0; elsecoutd1 /d2= (d1/d2)rend1;b

29、reak;defauit:cout运算符错误endl;break;coutquit;【思考题】一. 选择题1以下程序的输出结果是_#includevoid main()int w=4,x=3,y=2,z= 1,result;result=wx?w: zy?z:x;coutresultendl;A1 B 2 C 3 D 42若所以变量均已正确说明,下列程序运行后X的值是_a=b=c=0;x=35;if(! a)x-;else if(b) x=2;if(c) x=3;else x=4;coutxendl;A. 34 B. 4 C. 35 D. 33. 若已有说明语句int x,y;则不能实现以下函

30、数关系的程序段是_-1 (x1)A. if (x0) y=1; e1se y=0;C. y=0; D. if(x=0)if(x=0) if(x0) y=l; if(x0) y=1; else y=0; else y=-l; e1se y=-1;4.设有说明语句int a=1,b=0;则执行以下语句后输出为_switch(a)case l:switch(b)case 0:cout *0*;break;case l: cout: *1* ;break;case 2:cout*2*;break;A. *0* B. *0*2* C. *0*l*2* D. 有语法错误5.设有以下程序段,则_int x=

31、0;s=0;while (!x!=0) s+=+x;couts;A. 运行程序段后输出0 子 B. 运行程序段后输出1C. 程序段中的控制表达式是非法 D.程序段执行无限次6. 以下程序段中,能正确计算10!的是_A. do i=1;s=1; B. do i=1;s=0; s=s*i; s=s*i; i+; i+;while(i=l0); whi1e(i=10);C. i=l;s=1; D. i=1;s=0; do s=s*i; do s=s*i; i+; i+;while(i=10); while(i=10);7下面程序的功能是计算正整数2345的各位数字的平方和。请选择填空。#includevoid main() int n,sum=0;n=2345;do sum=sum+_1_;n=_2_; while(n);cout sum= sumendl;

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服