C++面向对象程序设计自学指导书.pdf
《C++面向对象程序设计自学指导书.pdf》由会员分享,可在线阅读,更多相关《C++面向对象程序设计自学指导书.pdf(105页珍藏版)》请在咨信网上搜索。
C+面向对象程序设计自学指导书浙江师范大学信息科学与工程学院目录第一章C+语言概述.4【学习要点】.4【例题分析】.4【思考题】.5第二章基本数据类型运算符及表达式.6【学习要点】.6【例题分析】.6【思考题】.8第三章控制结构.8【学习要点】.8【例题分析】.9【思考题】.17第四章数组.20【学习要点】.20【例题分析】.21【思考题】.24第五章函数与编译预处理.33【学习要点】.33【例题分析】.33【思考题】.40第六章指针.49【学习要点】.49【例题分析】.50【思考题】.58第七章结构体与共用体.60【学习要点】.60【例题分析】.60【思考题】.67第八章类与对象.70【学习要点】.70【例题分析】.71【思考题】.77第九章继承与派生类.80【学习要点】.80【例题分析】.80【思考题】.84第十章运算符重载与虚函数.89【学习要点】.89【例题分析】.89【思考题】.99第十一章文件与流类库.100【学习要点】.100【例题分析】.100【思考题】.105第一章C+语言概述本章主要介绍C+十的起源、发展历史及其特点;C+十程序的基本结构;Vi sual C+6.0集成开发环境及上机操作过程。【学习要点】1.了解C+十语言的特点。2.理解C+十语言源程序的结构、书写格式和mai n()函数的作用。3.熟悉Vi sual C+6.0集成开发环境。熟练掌握利用Vi sual C+6.0集成开 发环境开发、调试C+十控制台程序的步骤和基本操作。【例题分析】一、选择题例1 1 以下叙述中正确的是A.C 十十程序由mai n()函数组成B.C+十程序山函数组成C.C+十程序的执行从第一个函数开始D.在C+十程序中,注释只能位于一条语句之后解:对于C+程序应明确:(1)程序由函数组成。一个可运行的C+十源程序可由一个且仅能由一个mai n O函数加上其他的函数组成,其他函数可有可无。(2)不管mai n()函数出现在什么位置,程序总是从mai n()函数开始执 行。(3)注释的两种方法:一是用/*和*/把注释信息括起来;二是用/,它表示/之后到本行结束为注释内容。可以在程序任何位置进行注释。正确答案:Bo二、填空题例12在下列程序的每行之后加上注释。#i nclud e i ostre am.h voi d mai n()cout He llo!n;cout We lcome to C+!n;)解:注释如下:#i nclud e i ostre am.h 指示编译器在此处将文件i ostre am.h上中的代码嵌入本程 序。voi d mai n()主函数,voi d表示mai n()函数没有返HI值。coutHe llo!n;输出字符串“He llo!”到显示器上。cout V V We lcome to C+!n;/输出字符串We lcome to C+!n 例1-3 C+十中函数的函数体由符号开始,用符号结束。解:C+十中函数的函数体由符号“”开始,用符号“”结束。三、编程题例1-4编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。解:程序如下:#i nclud e i ostre am.h voi d mai n()(i nt i;cout”请输入一个数字:;ci ni;cout你输入的数字是i e nd l;【思考题】一、选择题LC+十语言规定:在一个源程序中,mai n()函数的位置A.必须在最开始B.必须在系统调用的库函数的后面C.可以任意D.必须在最后2.以下正确的叙述是A.C+十程序的每行中只能写一个语句B.C+十语言本身无输入、输出语句C.在对一个C+十源程序进行编译的过程中,可发现注释中的拼写错误D.在C+十程序中,mai n()函数必须位于程序的最前面3.以下符号中能作为用户标识符的是A._123 B.voi d C.struct D.swi tch4.C+十语言程序的基本单位是A.程序行B.语句C.函数D.字符二、填空题5.一个可执行的C+十程序至少必须有一个函数。6.C+十源程序中注释的作用是7.一个C+十语句以结束。是C+十语句的组成部分。8.在C+十语言中输入、输出操作是通过来实现的。9.在下列程序的每行之后力,上注释。#i nclud e voi d mai n()i nt nl,n2,sum;contnln2;sum=nl+n2;cout n 1+n 1=sum 8的值为A.true B.false C.非 0 整型数 D.0解:根据题意和该逻辑表达式的运算结果。正确答案:Co例2-5设X,y,Z为整型数,下列各式中,运算结果与X=y=24的表达式相 同的是A.x=(y=z=8,4X6)B.x=y=(z=8,4X6)C.X=y=z=8,4X6 D,x=(尸 z=8),4X6解:C+语言的赋值运算有别于其他高级语言,逗号运算又是其他高级语言所没有 的。1.在赋值表达式中,可以有多个赋值运算符;计算顺序自右向左,运算优先 级低,仅高于远号运算符。2.逗号既是分隔符,又是运算符,可以用一个逗号运算符或多个逗号运算得将 多个表达式连接成逗号表达式,计算顺序自左向右,并将最后一个表达式的值作为 整个逗号表达式的值,运算优先级最低;例:a=(2X2,4+6,20/4,6);结果 a=6o 正确答案:Bo例26设i=6,k=0下列各式中,运算结果为k=7的表达式是A.k=i+k B.k=k+i+C.k=+i+k D.k=k+(十十 i)解:自增十十、自减一一运算符是C+十语言特有的。1.运算符在变量的前面或后面,其运算结果是不同的。若十十或一一在变量前;则 先将变量的值加1(或减1后,再将变量的值参加运算;反之则先将变量的值参加 运算;再将变量的值加1(或减1)。2.自增、自减运算符优先级高于算术运算符,A式i+k,先计算i+,再力。k,D式k=k+(+i),若去掉括号,则改变了运算顺序;变为k+十 后,再十1。正确答案;C和D。二、填空题例2 7表达式A+B+20的值为解:不同类型的数据混合运算时,系统可以自动进行类型转换,将表示范围小 的数据类型转换成另一操作数的相同类型后再参与运算,则转换为65+66+20=151o例 28 如果定义 i nte=8;d ouble f=6A,g=8.9;则表达式 f+i nt(e/3*i nt(f+g)/2)%4 的值为解:不同类型的数据混合运算时;可以使用强制类型转换符,强制将一种数据 类型转换成另一种数据类型后再参与运算,对于表达式,先求表达式的值,然后再 转换值的类型,本例的运算结果为9.4 o若将式中e/3改为e/3.0则运算结果为6.4,因为e/3的值是整型数,而e/3.0的值是实型数,改变了 括号内的运算结果,致使整个表达式的值发生变化。例 2 9 若 i nti=65535,j=0 xOOOx,k:k=i&j;,则 k 值为i 值为解:将10进制数65535和16进制数OOOaH在计算机内的二进制原型数值按位 与运算,结果为k=10,i为65535o三、编程题例2-10 编写一个将华氏温度转换为摄氏温度的程序。转换公式为C=(5.0/9)(F32),要求输出华氏温度和摄氏温度的对应值。解:程序如下:#i nclud e voi d mai n()d ouble C,F;cout输入华氏温度值:;ci nF;C=(5.0/9)*(F-32);cout 华氏温度为:对应的摄氏温度值是:“8的值为A.ture B.false C.非 0 整型数 D.04.若a和b为整型变量,语句b=(a=l+2aX3),a+5运行后,a和b的结果为A.9,8 B.3,8 C.3,9 D.9,145.以下不正确的叙述是A.在C+十程序中,PI和pi是不同的变量B.在C+十程序中,逗号运算符的优先级最低C.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能 输入实型数值D.若s、t为i nt数,设t=S2后,s的值不变6.若i nt a;ch ar b;float c;d ouble d;则表达式abc+d值的数据类型为。*A.i nt B.float C.d ouble D.ch ar7.已知字母A的ASCII码为十进制数65,D为字符型变量,则D=A+9-4 的值。8.若a为16进制数,若想通过a&b运算使a的二进制数的高4位清零,低4位 不变;则b的16进制数是9.编制程序,输入相应字母的ASCII码值,输出该字母。10.用C+十描述下面命题:(Da小于b或大于c(2)a和b中至少有一个大于c。(3)a和b中只有一个大于c。(4)a和b中两个都大于c。第三章控制结构【学习要点】1.掌握顺序结构的编程方法,这是程序设计的基础。2.学会ci n、cout实现输入/输出数据。3.学会应用字符输入/输出函数。4.掌握pri ntf函数和scanf函数。5.掌握条件语句的形式和使用.6.掌握条件语句的嵌套。7.掌握条件运算符的使用。8.掌握swi tch语句的形式和使用。9.掌握for,wh i le,d o一wh i le三种循环语句。10.掌握循环的嵌套。11.掌握 bre ak,conti nue,goto 语句.【例题分析】一、多项选择题例3-1如有以下定义和输入语句,若要求al、a2、cl、c2的值分别为20、60、A、B,则下列数据输入方式中正确的是i nt al,a2;ch ar cl,c2;ci na lc Ia2c2;A.20A 11 60B B.20,A,60,B C.20 LJ A LJ 60 LJ BD.20A60B E.20 A 6 0 B注:此处LJ为空格符,VCR为何车键符,下文同。解:C+十语言没有专门的输入/输出语句,其输入/输出可通过输入/输 出流来实现。ci n不能将输入的空格赋给字符型变量,空格和回车键均作为输入 字符之间的分隔符;字符型变量只能容纳一个字符,整型数只能由数字组成;逗号不能作为分隔符。正确答案:A、C、D、Eo例32设有语句float PI=3.14;,若用科学表示法输出为3.140000e+000 则下列正确的表达式为A.coutPIe nd l;B.cout.se tf(i os:sci e nti fi ct i os:floatfi e ld);coutPIn;C.pri ntf(%12.10fn,PI);D.pri ntf(%e n,PI);解:C+十语言除用输出流输出数据外,还可用C语言的输入/输出函数,但需 包含std i o.h,其输出格式与C+十输出流格式不同:C+十中可用预定义的格式控制 函数定义输出格式,也可以用i os类的成员函数进行格式控制。若学用科学表示法输 出数据,必须用i os类成员函数se tf设置状态标志。pri ntf函数必须用e格式符才可 以输出科学表示法形式的数据。正确答案:B、Do二、填空题例3-3以下程序的输出结果为#i nclud e voi d mai n()sh ort i;i=-6;cout oct=octi d e c d e ci,h e x=h e x i e nd l:解:i为sh ort类型,占用2字节内存,而oct、d e c、h e x是C+十中预定义的格 式控制函数控制输入/输出数据的格式。答案为oct=177772,d e c=-6,h e x=fffa。例3-4以下程序的输出结果为#i nclud e voi d mai n()(i nt i=66;ch ar c=A;couti=(ch ar)i,c=d e ci nn;)解:本程序采用了强制型转换符,将i转换为字符型数据输出,又用格式控制函数 将字符型数据转换成数值型数据输出。答案为i=B,C=66a例3-5以下程序的输出结果为#i nclud e voi d mai n()i nt i=0,x=0,y=0;d o i+;i f(i%3!=0)x+=i;i+;y+=i+;wh i le(i 5),coutx=x y=ye nd l;)解:x=5 y=7例3-6以下程序的输出结果为#i nclud e voi d mai n()i nt x,y=10;wh i le(x=y-l)y-=2;i Ry%3=0)x+;conti nue;)e lse i f(y4)bre ak;x+;coutx=x尸ye nd l;)解:输出结果是:x=3 产2例3-7以下程序的输出结果为#i nclud e voi d mai n()i nt i,j,m;for(i=l;i 4;i+)forC=l;j7;j+)i f(j=4)bre ak;m=i*j;couti *j=m)coute nd l;解:运行结果如下:1X1=1 1X2=21X3=32X1=22X2=42X3=63X1=33X2=63X3=9注意:当j的值为4时,结束的是内层循环,外层for循环继续执行。例3-8以下程序的输出结果为#i nclud e voi d mai n()i ntfor(i=l;i 4;i+)for(j=l;j7;j+)i f(j=4)conti nue;m=i*j;couti *j=mcoute nd l;解:运行结果如下:1X1=1 1X2=2 1 X3=3 1X5=5 1 X6=62义 1=2 2X2=4 2X3=6 2X5=10 2X6=123X1=3 3X2=6 3X3=9 3X5=15 3X6=18注意:conti nue结束本次循环,即当j的值为4时-,内层循环体的条件语句后面的部 分不执行,循环变量j自加,执行下一次内层循环。例39输入一个自然数,输出其各因子的连乘形式。如输入12,输出12=12X2X3的形式,请填空。#i nclud e voi d mai n()i nt i=2,n;cout输入一个自然数:;ci nn;coutn=1;d o i f(n%i=0)cout*i;1:e lse i+;wh i le(2);解:n=n/i;n!=l三、编程题例3-10编程实现如下所示的函数关系式。已知X,求y的值。x(xl)y=y x+5(1 WxWlO)*5(xN 10)解:该函数实质是一个分段函数,即根据x的不同取值范围,由相应的函数式求y 的值。(1)使用缺省e lse的i f语句形式#i nc 1 ud e voi d mai n()(float x,y;coutEnte r a numbe r:ci nx;i f(x=1&x=10)y=x-5;couty=ye nd l;(2)用条件语句的嵌套形式实现#i nc 1 ud e voi d mai n()(float x,y;coutEnte r a numbe r:;ci nx;i f(xl)y=x;e lse i f(x 10)y=x+5;e lse 尸x-5;cout y=ye nd l;例3 11根据输入的年月,求出该年该月的天数。解:本题要根据月份来讨论天数,如是大月(1,3,5,7,8,10,12)则天数 是31,如是小月(4,6,9,11)则天数是30;如是2月;要看该年是否闰年,是 闰年则为29天,非闰年则为28天,显然本程序采用多分支选择结构。具体程序如 下:#i nclud e#i nc lud e voi d mai n()(i nt ye ar,month,d ays;coutEnte r th e ye ar:ci nye ar;coutEnte r th e month:;ci nmonth;swi tch(month)(case 1:case 3:case 5:case 7:case 8:case 10:case 12:d ays=3 1;bre ak;case 4:case 6:case 9:case 1 l:d ays=30;bre ak;case 2:i f(ye ar%4=0&ye ar%100!=0)|ye ar%400=0)d ays=29;e lse d ays=28;bre ak;d e fault:coutInput e rror!e nd l;e xi t(0);coutye ar:ye are nd l month:month e nd ld ays:d ayse nd l;例3-12求下列分数序列的前15项之和。2/1,3/2,5/3,8/5,13/8,21/13,.解:根据题意可采用累加方法,为此需定义一个存放累加结果的变量sum,累加 的过程自然是通过循环结构来实现,循环变量i的取值范围是1到15,且循环变量 表示当前的数列项数;在循环体内不仅要计算数列第i项的值,还要计算前i项的累 加和。数列的规律:从第2项开始;每一项的分母是前一项的分子,而分于是前一 项的分子分母之和,即第i1项为a/b,则当i l时,第i项为(a+b)/a。程序 如下:(1)用wh i le语句实现。#i nclud e voi d mai n()float sum,t,a,b;i nt i;a=2;b=l;i=2)t=a/b;sum=t;wh i le(i=5)a=a+b;/求第i项的分子b=a-b;/求第i项的分母t=a/h;求第i项的值sum+=t;求第i项的和i+;cout sum=sume nd l;(2)用for语句实现.#i nclud e voi d mai n()float sum,t,a,b;i nt i,a=b=1.0,sum=0.0;for(i=l;i=15;i+)a=a+b;/求第i项的分子b=a-b,;/求第i项的分母t=a/b;/求第i项的值sum+=t;求第i项的和cout sum=sume nd l;(3)用d o-wh i le语句实现#i nclud e voi d mai n()float sum,t,a,b;i nt i=l,a=b=1.0;sum=0;d o a=a+b;/求第i项的分子 b=a-b;求第i项的分母 t=a/b;/求第i项的值 sum+=t;求第i项的和 wh i le(+i=15);cout sum=sume nd l;)例3-13正整数n从键盘输人,计算5n的值。解:计算5n可用循环语句实现,本例仅以wh i le语句实现。#i nclud e voi d mai n()i nt i=l,n;float re su!t=1.0;cout输入 n:;ci nn;i f(n)wh i le(i=n)re sult*=5.0;i+;)cout结果是:re sultn;)例 3-14 1-1/2+1/3-1/44 Fl/99-1/100 的值。解:本题仅以for语句实现。/i nclud e voi d mai n()float sum=0.0,s=l.0;for(i nt i=l;i=100;i+)sum+=s/i;s=-s,cout结果是:sumn;)例3-15输入一行字符,将其中的两种字符C和+显示出来,而对其他 字符不显示,同时统计出其他字符的个数。解:#i nclud e#i nclud e voi d mai n()ch ar ch;i nt i=0;wh i le(ch=ge tch ar()!=n)i f(ch!=C&ch!=+)i+;conti nue;coutch;)cout”其他字符的个数为:例3-16从键盘输入某班若干名学生一门课程的成绩,编程找出最高分和最低分,并统计全班平均成绩。解:要求程序具有灵活性,程序中参加统计的学生人数应随具体情况而定,不应 固定,若以输入负数作为统计结束条件,则程序如下:#i nclud e voi d mai n()float score;max;mi n;sum=0.0;i nt num=0;cout=0)i f(scorcmax)max=scorc;i f(score mi n)mi n=score;sum+=score;num+;cout输入一个成绩!;ci nscore;)i f(num)cout共统计num人e nd l;cout最高分是maxe nd 1;cout最低分是mi ne nd l;cout平均成绩是sum/nume nd l;e lse cout无输入!e nd l;例3 17从键盘不断读入字母,如字母为元音字母,则输出其相应的大写字母,否 则结束程序解:#i nclud e voi d mai n()(ch ar ch;i nt qui t=0;d o coutn输入一个字母:;ci nch;swi tch(ch)case a:coutA;bre ak;case e:coutE;bre ak;case i:coutr;bre ak;case o:coutO;bre ak;case u:coutU;bre ak;d e fault:qui t=l;bre ak;)wh i le(!qui t);例3-18模拟计算器进行加、减、乘、除数学运算。要求当输入两个操作数和 运算符后,输出运算结果。一次运算结束后询问用户是否继续,用户根据需要可继 续进行运算。解:#i nclud e voi d mai n()(ch ar op;ch ar qui t=y;float d l;d 2;wh i le(qui t=y|qui t=Y)cout 输入:第一个操作数;运算符和第二个操作数e nd l;ci nd lopd 2;swi tch(op)case coutd l+d 2=(d l+d 2)e nd l;bre ak;case coutd l d 2-(d l-d 2)e nd l;bre ak;case coutd l*d 2=(d l*d 2)e nd l;bre ak;case 7:i f(d 2=0.0)cout输入错误!e nd l;qui t=0;e lsecoutd 1 7d 2-(d l/d 2)re nd 1;bre ak;d e faui t:cout运算符错误e nd l;bre ak;cout是否继续(y)?ci nqui t;!【思考题】选择题1.以下程序的输出结果是#i nclud e voi d mai n()(i nt w=4,x=3,y=2,z=1,re sult;re sult=wx?w:zy?z:x;coutre sulte nd l;A.1 B.2.C 3.D.42.若所以变量均已正确说明,下列程序运行后X的值是 a=b=c=0;x=35;i f(!a)x;e lse i f(b)x=2;i f(c)x=3;e lse x=4;coutxe nd l;A.34 B.4 C.35 D.33.若已有说明语句i nt x,y;则不能实现以下函数关系的程序段是.r-1(xl)A.i f(x=0)i f(x0)y=l;e lse y=-l;B.尸 1;i f(x!=0)i f(x0)y=l;e lse y=0;D.i f(x=0)i f(x0)y=l;e lse y=0;e lse y=-l;4.设有说明语句i nta=l,b=0;则执行以下语句后输出为.swi tch(a)case 1:swi tch(b)case O:cout*O*;bre ak;case 1:cout:1;bre ak;*)case 2:cout*2*;bre ak;A b*0*2*C*2*D 有昔5.设有以下程序段,则i nt x=O;s=O;wh i le(!x!=0)s+=+x;couts;A.运行程序段后输出0子 B.运行程序段后输出1C.程序段中的控制表达式是非法D.程序段执行无限次6.以下程序段中,能正确计算10!的是A.d o(i=l;s=l;B.d o i=l;s=0;s=s*i;s=s*i;i+;i+;wh i le(i=10);wh i le(i=10);C.i=l;s=l;D.i=l;s=0;d o s=s*i;d o s=s*i;i+;i+;wh i le(i=10);wh i le(i=10);7.下面程序的功能是计算正整数2345的各位数字的平方和。请选择填空。#i nclud e voi d mai n()i nt n,sum=0;n=2345;d o sum=sum+1;n=2;wh i le(n);cout sum=sume nd l;A.n%10 B.(n%10)*(n%10)C.n/10 D.(n/10)*(n/10)A.n/1000 B.n/100 C.n/10 D.n%108.等比数例的第1项a=l,公比q=2下面程序的功能是求满足前n项和小于100时 的最大n,请选择填空。#i ncki d e i ostre am.h voi d mai n()i nt a,q,n,sum;a=l;q=2;n=sum=0;d o+n;a=a*q;wh i le(sum100);2;coutn;)A.sum+B.sum+=a C.sum=a D.a+=sum*A.n=n-2 B.n=n C.n+D.n-=l二、填空题9.下面程序的功能是计算100至1000之间有多少个数,其各位数字之和是5。#i nclud cvoi d mai n()i nt i,s,k,count=0,for(M00;i=1000;i+)s=0,k=i,wh ile()s=s+;_5if(s!=5);e lsecount+;coutcount;10.计算两个整数的最大公因子。#i nclud e voi d mai n()i nt te mp,num,d e n,a,b;ci nab,num=a;d e n=b,wh i le(d e n)te mp=;num=d e n;d e n=te mp;coute nd l;11.阅读理解指出下面程序的功能。#i nclud e voi d mai n()(const i nt magi c=17;i nt gue ss;coutgue ss th e magi c numbe r:ci ngue ss;i f(gue ss=magi c)coutRi gh t!e nd l;coutTh e magi c numbe r i s:magi c;e lsecoutWrong!e nd l;i f(gue ssmagi c)coutToo h i gh e nd l;e lse coutToo lowe nd l;三、编程题12.修改例3-11根据所输入的年份,求出该年天数。13.试编程序输入二角形三边a,b,c,判断是否能构成一个三角形若能,则求该三 角形面积。14.每个苹果0.8元第一天买2个苹果从第二天开始,每天买前一天的2倍直至 购买的苹果个数不超过100的最大值、编写程序,求每天花多少钱?15.找出1 99之间的全部同构数。同构数是这样一组数:它出现在其平方数的右 边。如5是25右边的数,25是625右边的数,故5和25都是同构数。16.求一个整数任意次方的最后三位数。即求x 丫的最后三位数要求x,y从键盘输 入。17.将数列 1、2、5、10、21、42、85、170、341、682、延长到第 50 项18.计算 l!+2!+3!+.+n!前 10 项之和。19.输入一行由英文字母、数字、符号等组成的字符,将其中的大写和小写字母的 个数分别统计出来。20.买现摄氏温度与华氏温度的转换,并按1.0间隔输出对照表,格式如下:摄氏温度 华氏温度0.0 32.01.0 33.821.求整数100-200间能被3或13整除的所有整数。22.读入10个学生的个人信息的学号和成绩,输出所有学生的学号、成绩,同时并根 据分数与等级的对应关系,输出每一个学生相应的成绩等级。成绩:100 90 8980 7970 6960 59-0等级:优 良 中 及格 差第四章数组【学习要点】1.掌握一维和二维数组的定义和数组元素的引用方法,了解其存储结构。2.掌握一维和二维数组初始化方法。3.掌握有关一维和二维数组的基本算法。4.掌握字符数组的定义、其元素的引用方法和字符数组的初始化方法。5.掌握C+提供的对字符串进行处理的基本函数.【例题分析】一、选择题例4-1以下合法的数组定义是。A.i nta=A,B,C;B.i ni a5=0,l,2,3,4,5;C.nta=A,B,C);D.i nt a=0,1,2,3,4,5);解:根据数组定义和初始化情况,数组类型与所赋数据的类型应一致,指定的 数组长度应大于或等于花括弧中的数据个数,对数组长度可省略。正确答案:Do例42设有定义语句i nta24:则以下叙述不正确的是A.a数组可以看成是由a0 al两个元素组成的一维数组B.a0代表一个地址常量C.元素a0是由4个整型元素组成的一维数组D.可用a0=5;的形式给数组元素赋值解:C+对二维数组的处理是将其看作一个特殊的一维数组,即这个数组中每 个元素又是一个一线数组。所以二维数组a可认为是由两个元素a 0 o al组成 的一维数组,而数组元素a L0和al又是由4个i nt型元素组成的一维数组。C+十规定了数组名代表地址常量,其值是不可改变的,故赋值语句a0=5:是 非法的。正确答案:Do例4-3若有说明i nta34;,则对a数组元素的非法引用是A.a02*l B,a04 C.a4-20 D.al3解:引用二维数组元素的格式为:数组名下标表达式1下标表达式2,而下 标表达式可以是常量、变量,但其值必须是确定的整数且在该数组的定义范围之 内。正确答案;Bo例44若有以下定义和语句,则输出结果是ch ar a,s10,s=abcd;a=s;couts;A.abe d B.a C.abe d-LJ l_l l_l l_l D.编译出错解:字符数组的赋值,不能通过赋值语句实现,而是通过初始化或Stre py函数 来实现。正确答案:Do例4-5能判断字符串si是否大于字符串s2的是A.i f(sls2)B.i f(strcmp(sl,s2)C.i f(strcmp(sl,s2)0)D.sls2解:两个字符串比较必须使用字符串比较函数stre mP(字符串1,字符串 2)o比较的结果:相等时返回以0;大于时返回正整数;小于时返回负整数。正确答案:Co二、填空题例 4-6 若有定义 i nt a34=1,2,0,4,6,8,10),则初始化后 a 12得到的初值是对得到的初值是解:在定义的同时对数组元素进行初始化,可以对所有元素赋初值,也可只对 部分元素赋初值;其余元素为0o根据数组中元素排列的顺序以行为单位进行存放,定义式右边的数据是以作为行元素进行组织的。故a 1 2得到的初值是 0,a 2 1得到的初值是6。例 4-7 语句 coutstrle n(tn06508AW),n,;的输出结果_。解:按照C+十中转义字符的规定,在字符串tnV06508AW”中,含有t、n.065转义字符,分别表示单个字符;0也是转义字符,是宇符串结束标志,系统认为字符串到此结束,不计其后的8、A、Wo正确答案:5o注意:若将8改为7,而07却是一个字符,加上A、W,此字符串的长度是8-例48以下程序的输出结果是#i nclud e i ostre am.h#i nclud e stri ng.h voi d mai n()ch ar str50 xyz,pl20=abe d,p2=ABCD;strcpy(str+2,strcat(pl+2,p2+l);coutstrn;解:山于字符数组名str、pl、pZ表示地址,同理表达式str+2、pl+2 p2+1 的值也是地址,str+2表示字符串“xyz”中字符z的地址,pl+2表示字符串“abe d”中c的地址,p2+l表示字符串ABCD中字符B的地址,分别代表的字符 串为“z、cd BCD”。调用函数strcat(pl+2,p2+l)得到字符串“cd BCD,调用strcpy()后,将刚才“cd BCD”拷贝到str中以 3 为起始地址 的存储单元中,因此覆盖了 str中从N开始的存储单元中的数 据,正确答案:xycd BCDo三、编程题例4-9 先定义一个含有30个整型元素的数组,依次赋予从2开始的偶数,然后将按顺序每五个数的平均值放在另一个数组中,并要求按每行3个数输出结 果。解:根据题意,可定义一维整型数组a 30用于存放初始数据和数组b6用于 存放平均值,临时变量sum用来存放5个元素之和。以i(初值为0,终值为29)作 为循环变量,用for循环通过a i =2*i+2给数组a赋值;以i作为循环变量,表 达式i%5=0将a的30个元素分成6组,分别求出和sum,以j为数组b的下 标,用wh i le循环来实现bj为a的5个元素之平均值。程序如下:#i nclud c i ostre am.h voi d mai n()i nt a30,i,j=0;float sum=0,b6;for(i=0,i 30,i+)ai=2*i+2;给 a 数组元素赋值cout30 个整数为:n;fbr(i=0;i 30;i+)coutai /输出 a 数组元素的值coutn;i=0;wh i le(i 30)求a中每5个元素的平均值,放入b数组中sum+=ai;i+;i f(i%5=0)5个元素为一组,求平均值bj=sum/5;sum=0;j+;/sum必须置为0,为下一组数求和作准备cout每五个数的平均值:;for(i=0;i 6;i+)i f(i%3=0)coutAn,;每行输出 3 个数coutb i t;)例 4-10通过循环按行顺序为一个5X5的二维数组赋125的自然数,然 后计算并输出该数组的左下三角元素之和。试编程。解;可以利用双重循环实现二维数组的赋值,即用外循环控制行下标i,内循环 控制列下标j,在循环体中数组元素ai j=n,(n的初值为1,每赋值一次加1);同样利用双重循环实现左下三角元素之和的计算,外循环的行下标i从。4,内循 环的列下标j的终值为可变数,其规律是与行下标值正好相等,即j的值从0变化 到i,在循环体内对元素进行累加,并存放在sum中。程序如下:#i nclud e i ostre am.h voi d mai n()i nt a5 5,i,j,n=l,sum=0;for(i=0;i 5;i+)forC=0;j5;j+)ai j=n+;cout”数组的左下半三角:n;for(i=0;i 5;i+)for(j=0;j=I;j+)sum+=ai j;coutai jt;coutn;coutc,则 c 在 mi d 的左侧,令新的 bot=mi d-l,转(5)。(4)若ami d lbot,则表明要查找的数据c不在数组a中。程序如下:#i nclud e i ostre am.h i nclud e stri ng.h voi d mai n()ch ar a=ad fgi kmnprs,c;i nt top,bot,mi d;cout已排序的字符串:cout”输入一待查找的字符:;ci nc;fbr(top=0;bot=strle n(a)-1;top=bot;)用 srtle n计算 a 中的实际字符个数 mi d=(top+bot)/2;i f(c=ami d)coutcami d)top=mi d+l;e lse bot=mi d-l;)i f(topbot)cout*n;【思考题】一、选择题1.若有以下说明,则数值为4的表达式是i nta 12=1,2,3,4,5,6,7,8,9,10,11,12;ch ar c=a,d,g;A.ag-c B.a4 C.ad-c D.ad-c2.以下程序的输出结果是#i nclud e i ostre am.h voi d mai n()i nt n2=0,i,j,k=2;for(i=0;i k;i+)for(j=0;jk,j+)n|j=ni+l;coutnkn;A.不确定的值 B.3 C.2 D.13.以下对二维数组的正确说明是A.i nt a3 B.floata(3,4)C.d ouble al4 D.float a(3)(4)4.若有说明i nta34;则对a数组元素的正确引用是A.a24 B.al,3 C.al+l0 D.a(2)(l)5.以下能对二维- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 面向 对象 程序设计 自学 指导书
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文