C++04737 第3章 课后练习题 完整答案
- 格式:doc
- 大小:91.50 KB
- 文档页数:9
2010年1月高等教育自学考试全国统一命题考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.在C++中,头文件扩展名为()A..cppB..hC..1ibD..obj2.下列符号中,不属于分隔符的是()A.,B./C.;D.{}3.可替换#definePI3.1415926的语句是()A.float PI 3.1415926;B.const float PI=3.1415926;C.const PI(3.1415926);D.const 3.1415926;4.布尔类型标识符是()A.voidB.shortC.longD.bool5.下列不是C++语言的基本数据类型的是()A.字符类型B.整数类型C.逻辑类型D.枚举类型6.C++允许在结构中定义函数,这些函数称为()A.静态函数B.构造函数C.析构函数D.成员函数7.设函数void inc(int)将形参加1,如有整型变量int i=10;则执行inc(i);后,i的值为()A.9B.10C.11D.未知8.下列哪种默认参数的声明是不正确的()A. int max(int a,int b,int c,int d=0);B. int max(int a,int b,int c=0,int d=0);C. int max(int a=0,int b,int c=0,int d=0);D. int max(int a,int b=0,int c=0,int d=0);9.设int &max(int &,int &)返回两参数中较大者,如有两整型变量int a=10;int b=15;在执行max(a,b)++后,a,b值分别为()A.10,15B.11,15C.10,16D.1l,1610.包含哪种语句的函数不能声明为内联函数()A.循环B.变量自增自减C.if...else…D.变量声明11.定义函数模板中使用的参数类型标识符需使用下列哪组符号括起来()A.<>B.“”C.()D.{}12.一个类拥有多个构造函数,则这些构造函数间为()A.重载关系B.重复关系C.拷贝关系D.无关系13.对于拷贝构造函数point::point(point& p),下列说明正确的是()A.该函数只能访问P的私有成员B.该函数不能访问P的公有成员C.该函数可以访问P的私有和公有成员D.该函数不能访问P的成员14.使用delete[]删除对象数组时,描述正确的是()A.数组中各元素都调用析构函数B.数组中各元素都调用构造函数C.不调用析构函数D.只有首元素调用析构函数15.下列哪个指令属于条件编译指令()A. #elifB. #errorC. #pragmaD. #include16.设类Test中存在成员static int x,则下列哪种初始化方式是正确的()A.Test::int x=25;B.int x=25;C.int Test::x=25;D.int Test x=25;17.下列关于友元的描述错误的是()A.成员函数不可作友元B.类可以作友元C.普通函数可以作友元D.静态函数可以作友元18.在继承中,派生类拥有的基类个数为()A.0个B.1个C.多个D.至少1个19.基类中的protected成员,通过public派生,其在派生类中的可见性为()A.不可访问B.privateC.protectedD.public20.下列哪个不是面向对象的关键要素()A.抽象性B.结构性C.封装性D.多态性二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
全国2009年10月高等教育自学考试C++程序设计试题课程代码:04737一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.对C++中主函数描述正确的是( )A.名称为main,可为多个B.名称不限,可为多个C.名称为main,必须有且只能有一个D.名称不限,必须有且只能有一个2.调用声明为int result(int a,int b)的函数时,正确的方法是( )A.result(1,2)B.result(1)C.result(0.1,0.3)D.result(1,2,3)3.用于包含C++标准库iostream的预处理指令是( )A.#define<iostream>B.#include<iostream>C.#define ‘iostream’D.#include‘iostream’4.无类型标识符是指( )A.voidB.boolC.shortD.long5.从本质上看,引用是被引用变量的( )A.拷贝B.别名C.复制D.克隆6.下面关于数组的初始化正确的是( )A.char str[ ]={'a','b','c'};B.char str[2]={'a','b','c'};C.char str[1][2]={{'a','b'},{'e','d'}};D.char str[ ][ ]={'a','b','c'};7.C++类中定义的成员默认访问属性为( )A.publicB.privateC.protectedD.friend1文档来源为:从网络收集整理.word版本可编辑.8.决定C++语言中函数的返回值类型的是( )A.return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型9.函数int & min(int &,int &)返回参数中较小者,设有两整型变量int a=10;int b=15;在执行语句min(a,b)--;之后,a,b值分别为( )A.9,14B.9,15C.10,14D.10,1510.声明函数为内联函数时所使用的关键字为( )A.constB.inlineC.shortD.signed11.函数int sum(int a=l,int b=1,int c=3)可与下列哪个函数同时声明( )A.double sum(int);B.char sum(int,int);C.int sum(double);D.int sum(int,int,int);12.函数模板template<typename T> void Func(T,T)可具有下列哪种实例化形式( )A.void Func(float,int)B.void Func(char,char)C.void Func(int,double)D.void Func(bool,float)13.下列访问成员的方式哪个是正确的( )A.对象名.对象成员名B.对象指针名.对象成员名C.对象名→对象成员名D.类名→对象成员名14.对类A,复制构造函数的原型是( )A.A::A(const A&);B.A::A(const A *);C.A::A(const A);D.A::A( );15.对class point,如使用point * ptr=new point[2];创建对象数组,则删除此数组使用的语句是( )A.delete ptr[2];B.delete[ ] ptr;C.delete ptr[ ];D.delete[2] ptr;16.下列哪个编译指令不属于条件编译指令( )A.#ifB.#else1文档来源为:从网络收集整理.word版本可编辑.C.#endifD.#error17.类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x的值为( )A.未初始化B.等于a.xC.等于0D.随机18.使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是( )A.strlen()B.strcap()C.strcat()D.strcmp()19.基类中的public成员,通过public派生,其在派生类中的访问权限为( )A.不可访问B.privateC.protectedD.public20.不同对象调用同名函数,但导致完全不同行为的现象称为( )A.抽象B.封装C.继承D.多态性二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。
2022年10月自考C程序设计(04737)试题及答案解析-图文C++程序设计试卷(课程代码04737)本试卷共10页,满分100分,考试时间150分钟。
考生答题注意事项:1.本卷所有试题必须在答题卡上作答。
答在试卷上无效,试卷空白处和背面均可作草稿纸。
2.第一部分为选择题。
必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。
3.第二部分为非选择题。
必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答o4.合理安排答题空间,超出答题区域无效。
第一部分选择题一、单项选择题(本大题共20小题,每小题1分。
共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。
未涂、错涂或多涂均无分。
1.在C++语言中用于注释的标识符是A.&B.//C.某D./2.编写C++程序一般需经过的几个步骤依次是A.编辑、调试、编译、连接B.编译、调试、编辑、连接C.编译、编辑、连接、运行D.编辑、编译、连接、运行3.要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用A.内联函数B.重载函数C.内部函数D.函数模板4.设某=8,执行语句Y=某++,则y等于A.6B.7C.9D.85.下列运算符中,优先级最高的是A.某B.一>C.&&D.>=6.关于new运算符的下列描述中,错误的是A.它可以用来动态创建对象和对象数组B.使用它创建的对象和对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值7.存储下列数据,占用存储字节最多的是A.0B.‘0’C.〝0〞D.0.08.关于类和对象不正确的说法是A.类是一种类型,它封装了数据和操作B.对象是类的实例C.一个类的对象只有一个D.一个对象必属于某个类9.下列有关构造函数的描述中,正确的是A.构造函数可以带有返回值B.构造函数的名字与类名完全相同C.构造函数必须带有参数D.构造函数必须定义,不能缺省10.假定a 为一个整型数组名,则元素a[4]的字节地址为A.a+4B.a+8C.a+16D.a+3211.类中能访问静态成员的函数是C++程序设计试卷第1页共12页A.虚函数B.静态成员函数C.构造函数D.析构函数12.下列说明语句中正确的是A.inta,&ra=a,&&ref=raB.int&refa[10]C.inta,&ra=a,&某refp=&raD.int某pi,某&pref=pi13.关于对象概念的描述中,说法错误的是A.对象就是C语言中的结构体B.对象代表着正在创建的系统中的一个实体C.对象是类的一个变量D.对象之间的信息传递是通过消息进行的14.有关多态性说法不正确的是A.C++语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态多态性15.关于友元函数的描述中,错误的是A.友元函数不是成员函数B.友元函数只能访问类中私有成员C.友元函数破坏隐藏性,尽量少用D.友元函数说明在类体内,使用关键字friend16.类中定义的成员默认访问属性为A.publicB.privateC.protectedD.friend17.拷贝构造函数的参数是A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名18.关于类模板的说法正确的是A.类模板的主要作用是生成抽象类B.类模板实例化时,编译器将根据给出的模板实参生成一个类C.在类模板中的数据成员具有同样类型D.类模板中的成员函数没有返回值19.下列有关重载函数的说法中正确的是A.重载函数必须具有不同的返回值类型B.重载函数参数个数必须相同C.重载函数必须有不同的形参列表D.重载函数名可以不同20.当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数A.都是虚函数B.只有被重新说明时才是虚函数C.都不是虚函数D.只有被重新说明为virtual时才是虚函数第二部分非选择题二、填空题(本大题共20小题,每小题1分,共20分)请在答题卡上作答。
第三章 不饱和碳氢化合物习题3-1 命名(1) (E )-3,4,6-三甲基-4-辛烯 (E )-3,4,6-trimethyl-4-octene (2) 1-甲基-3-异丙基环已烯 3-isopropyl-1-methylcyclohexene (3) 4-甲基-5-丁基环已烯 4-butyl-5-methylcyclohexene习题3-2 命名(1) 4-甲基-2-戊烯 4-methyl-2-pentene(2) 2,3,4-三甲基-3-已烯 2,3,4-trimethyl-3-hexene (3) 1-甲基-4-乙基环已烯 4-ethyl-1-methylcyclohexene(4) (E )-3,4-二甲基-2-环戊基-3-已烯 (E )-2-cyclopentyl-3,4-dimethyl-3-hexene (5) 3,3-二甲基-1-丙基环戊烯 3,3-dimethyl-1-propylcyclopentene(6) (Z )-2,3-二甲基-1-环丁基-3-已烯 (Z )-1-cyclobutyl-2,3-dimethyl-3-hexene习题3-3 试说明累积二烯烃中三个双键碳是否使用同样的杂化轨道成键答:否,累积二烯烃中两个双键共用的碳原子是sp 杂化,另两个碳原子是sp 2杂化。
习题3-4 命名(1) 2,3-二甲基-1,3-丁二烯 2,3-dimethyl-1,3-butadiene (2) (3E )-1,3,5-已三烯 (E )-1,3,5-hexatriene (3) 3-乙基-1,4-庚二烯 3-ethyl-1,4-heptadiene(4) (3Z ,6E )-9-甲基-7-乙基-3,6-癸二烯 (3Z ,6E )-7-ethyl-9-methyl-3,6-decadiene (5) 乙烯基环戊烯 ethenylcyclopentene习题3-5 命名(1) 5-庚烯-1-炔 5-hepten-1-yne(2) 3-甲基-1-辛烯-5-炔 3-methyl-1-octen-5-yne (3) 3-丁基-1-已烯-4-炔 3-butyl-1-hexen-4-yne(4) (E )-4-甲基-3-乙基-2-辛烯-6-炔 (E )-3-ethyl-4-methyl-2-octen-6-yne习题3-6 画共振结构(红色框中为共振杂化体) (1)CH 3CH 2CH 2CH CH CH 2CHCH 2CH 3CH 2CH 2CHCH CH 2CH 3CH 2CH 2CHδ+δ+CH 3CH CH CH CH CH 2(2)CHCH 3CHCHCHCH 2δ+δ+δ+CH 3CH CHCHCH CH 2CH 3CHCH CH CH CH 2习题3-7画共振结构(红色框中为共振杂化体)CH32(1)CH32CH3CH2CONHδδCH3CH CH COCH3(2)CH333CHCCHOCH3CH3CHCOCH CH3CHCH2δδδ2COCH3(3)CH23CH2CH CH C CH3OCH2CH CH COCH3δδδCOCH3(4)33 3(5)3O3OCH3δδδ(5)习题3-8 比较下列各对碳离子或自由基的稳定性强弱CH 3CH CH CH CH OCH 3CH 2CH 2CH CH O(1)(2)CH 2+CH 2+(3)<>>习题3-9两者均为芳香分子薁:两个环分别形成的π6 7和π65大π键杯烯:两个环分别形成π6 5和π2 3的大π键习题3-10画出[14]轮烯的两个构型异构体A B习题3-11 分析下列化合物中的N 、S 、O 的成键情况,并判断它们是否具有芳香性。
(Z ) -1-氟—2 —氯—2 —溴—1 —碘乙烯第三章烯烃二、写出下列各基团或化合物的结构式:① 乙烯基 CH 2=CH-②丙烯基 CH 3CH=CH-③烯丙基CH 2=CHCH ④ 异丙烯基 ⑤ 4 —甲基—顺—2—戊烯⑥ (日-3,4-二甲基一3—庚烯S Z ) -3-甲基一4—异丙基一3 —庚烯 H H 、c=C CfC 时=C C HC ^ CfCf Cf =c” \CH 3CH 2CH3CFiC 生 ”CH(CH 3)2,.C=CCH3 CH 2CF2CH3三、命名下列化合物,如有顺反异构现象, 写出顺反(或)Z-E 名称:1. CHCfCf 丄 C 二CHCF3Ch2 2 —乙基—1—戊烯2. CH 3CH 2 CH 2 CHbi1\ Z AC 二c : CH 3CfCH b(E ) -3,4-二甲基一3—庚烯CH b gHCH 2C H 3(E)-2,4-二甲基一3 —氯一3—己烯CH3a H <——寸——CXI ——(山L1J )——寸——CXI—a H <——寸——CXI ——(Z L1J )a H <——寸—a H <——寸——CXI ——(山-z)——寸——CXI—<——寸——CXI ——(z-z)a H <——寸——CXI; T一 £0£0\ 八工、_^-0T 0£0£0/ 一 O H O -V A 一 ; £0f t 4S S M S S n «—寸“,wa >——g ——«>H——寸o ——(山) a <——cxl ——础吐—— 9——M •9六、3-甲基-2-戊烯分别在下列条件下发生反应, 写出各反应式的 主要产物:H 2/Pd -CCHCHCHC 2CHHOBr(H 2O +Br 2)CHCH 3CH CCHCHCHC* CCHCH Cl Cl冷稀KMnO 4” CHC 十 CCHCHOH OHCHBHs/NaOHfQ CfC*CHCb€H i ------------------------- OHO 3 ,Zn-CH 3COOHHBr/过氧化物CHC+CHC 2CHBrCHICHCH=CQCh fcBr OH Cl 2低温CHCH 3CHCHCHO +CHCCHCHCH七、乙烯、丙烯、异丁烯在酸催化下与水加成生成的活性中间体分别中间体分别是:CHCf++CHCH CHCH3CH3CCH+中间体稳定性和反应速度顺序为:CHCf+<+CHCH CH <CH3CH b CcH+为:稳定性顺序及反应速度顺序是CH3 C—CH CH3I CH3 1 OH CHCH +ICH-C—CH CHCHCH CHCH-C— CHCH+CH CHH2OCH—p— CHCH+ OHCH CH I ICH-g — CHCHOH八、试以反应历程解释下列反应结果:H +(CH 3)3CCH=C 2H + H Z O ---------------(CH 3) 3CCHC 3H + (CH 3) 2严出的20HOH解:反应历程:严+(CH 3) 3CCH=CH + H ---------CH3-C —CH CH 3 +1H 2O+ CH 3 OH 2H +1f Cf C —fH CH 3CH 3CH化合物:CHCH 二CH + HBr ----------- a CH^HCHBrROORCF 3CH=CH + HBr CHjCfCfBr九、试给出经臭氧化,锌纷水解后生成下列产物的烯烃的结构:「 CfCfCHOHCHO 烯烃为:2.出岀-。
C程序设计(第四版)谭浩强_课后习题答案第3章第3章最简单的C程序设计——顺序程序设计373.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
活期利息每一季度结算一次printf("p1=%f\n",p1); // 输出按第1方案得到的本息和printf("p2=%f\n",p2); // 输出按第2方案得到的本息和printf("p3=%f\n",p3); // 输出按第3方案得到的本息和printf("p4=%f\n",p4); // 输出按第4方案得到的本息和printf("p5=%f\n",p5); // 输出按第5方案得到的本息和return 0;}3-2-2#include <stdio.h>#include <math.h>int main(){double r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
第三章 线性方程组1. 用消元法解下列线性方程组:123412345123451234512345354132211)234321x x x x x x x x x x x x x x x x x x x x x x x x ++-=⎧⎪++-+=-⎪⎪-+--=⎨⎪-++-=⎪⎪++-+=-⎩ 124512345123451234523213322)23452799616225x x x x x x x x x x x x x x x x x x x +-+=⎧⎪--+-=⎪⎨-+-+=⎪⎪-+-+=⎩ 1234234124234234433)31733x x x x x x x x x x x x x -+-=⎧⎪-+=-⎪⎨+++=⎪⎪-++=-⎩ 123412341234123434570233204)411131607230x x x x x x x x x x x x x x x x +-+=⎧⎪-+-=⎪⎨+-+=⎪⎪-++=-⎩ 123412341234123421322325)521234x x x x x x x x x x x x x x x x +-+=⎧⎪-+-=⎪⎨+-+=-⎪⎪-+-=⎩ 12341234123412341232313216)23122215522x x x x x x x x x x x x x x x x x x x ++-=⎧⎪++-=⎪⎪+++=⎨⎪++-=⎪⎪++=⎩ 解 1)对方程组得增广矩阵作行初等变换,有135401135401132211003212121113054312141113074512121111014812--⎡⎤⎡⎤⎢⎥⎢⎥----⎢⎥⎢⎥⎢⎥⎢⎥→------⎢⎥⎢⎥-----⎢⎥⎢⎥⎢⎥⎢⎥-----⎣⎦⎣⎦10210110010100321200021200200000200000000000000001110010000--⎡⎤⎡⎤⎢⎥⎢⎥---⎢⎥⎢⎥⎢⎥⎢⎥→→--⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥---⎣⎦⎣⎦因为()()45rank A rank B ==<,所以方程组有无穷多解,其同解方程组为1415324122200x x x x x x x -=⎧⎪+=-⎪⎨-=⎪⎪-+=⎩, 解得123451022x k x k x x k x k=+⎧⎪=⎪⎪=⎨⎪=⎪⎪=--⎩ 其中k 为任意常数。
第六章一、填空题1.单一继承;2.private、protected、public;二、单项选择题1.C;正确使用作用域运算符“::”能否使编译器正确调用相关的成员。
2.A;派生方式有三种,公有public派生在派生类中仍然是保护的。
3.C;赋值兼容规则对单继承和多继承都适合。
4.BCD;构造函数和析构函数都不能被继承。
三、改错题1.class derived:private base{} //错误derived(int b):m(b){} //错误理由:第一、这里不能私有继承,否则派生类构造函数不能调用调用基类构造函数初始化,应改成:class derived:public base{} ;第二、m(b)不是函数,不能调用,应改成derived(int b):base(b){}。
2. Derived类中重载show()方法(提示:使用作用域运算符)void Show(){Base1::Show();Base2::Show();}四、编程题1. 设计一个基类,从基类派生圆柱,设计成员函数输出它们的面积和体积。
#include <iostream>using namespace std;const float PI = 3.1415f;class Base //基类Base{protected: //保护私有数据成员float r;public:Base(float a=0) //只含有构造函数{r = a;}};class Circle:public Base //派生类圆{protected:float area;public:Circle(float a=0):Base(a) //圆的构造函数,调用基类Base初始化半径{area = PI * r * r;}float getArea() //求面积函数,返回float型{return area;}};class Cylinder:public Circle //派生类圆柱体{protected:float h;float area_Cy;float cubage;public:Cylinder(float a=0, float b=0):Circle(a) //圆柱体构造函数{h = b;cubage = PI * r * r * h;}float getArea(float r, float h) //求圆柱体面积,传半径和高两个参数{area_Cy = 2*Circle::getArea() + 2*PI*r*h;//作用域运算符::表明使用Circle类里面的求面积函数return area_Cy;//圆柱体面积等于2个底面积+侧面积}float getCubage() //求圆柱体体积{return cubage;}};void main(){Circle circle(5.5f); //定义一个圆的对象circle,半径为5.5Cylinder cylinder(4.5f,7.6f);//定义一个圆柱体对象cylinder,半径为4.5,高位5.6cout<<"圆的面积:"<< circle.getArea() << endl;cout<<"圆柱的面积:"<< cylinder.getArea(4.5f,7.6f) << endl;cout<<"圆柱的体积:"<< cylinder.getCubage() << endl;}程序输出结果:2.下面是某公司经理、兼职人员、销售经理和销售员的工资计算方法,设计设施的积累和派生类,实现这一工资管理任务。
2018年10月高等教育自学考试全国统一命题考试C++程序设计(课程代码04737)本试卷共l0页,满分l00分,考试时间l50分钟。
考生答题注意事项:1.本卷所有试题必须在答题卡上作答。
答在试卷上无效,试卷空白处和背面均可作草稿纸。
2.第一部分为选择题。
必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。
3.第二部分为非选择题。
必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。
4.合理安排答题空间,超出答题区域无效。
第一部分选择题一、单项选择题:本大题共20小题,每小题l分,共20分。
在每小题列出的备选项审只有一项是最符合题目要求的,请将其选出。
2.设X和y均为bool量,则x&&y曲为真的条件是A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假3.拷贝构造函数应该是A.不带参数的构造函数 B.带有一个参数的构造函数C.带有两个参数的构造函数 D.缺省构造函数4.以下说法中正确的是A.C++程序总是从第一个定义的函数开始执行B.C++程序总是从main函数开始执行C. C++中函数必须有返回值D.C++中函数名必须唯一5.下列虚基类的声明中,正确的是A.class virtual B:public A B.class B:virtual public AC.class B:public A virtual D.virtual class B:public A6.下列哪个类型函数不适合声明为内联函数A.函数体语句较多 B.函数体语句较少C.函数执行时间较短 D.函数被频繁调用7.以下类模板定义正确的为A.template<class T> B.template<class T.class int i>C.template<class T,typename T> D.template<class Tl,T2>8.C++中要实现动态联编,调用虚函数时必须使用A.基类指针 B.类名 C.派生类指针 D.对象名9.下列对静态成员的描述中,不正确的是·A.静态成员不属于对象,是类的共享成员B.静态数据成员要在类外定义和初始化C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D.非静态成员函数也可以操作静态数据成员10.下列对派生类的描述中,错误的是A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类保持不变11.下列函数原型声明语句中,错误的是A.int f(void); B.void f(hat); C.int f(a); D.void f(double a);12.如果有洒t型变量a,则定义指向变量a的指针P正确的写法是A.int P=&a B.int * P=&a C.int&p=*a D.int*P = a13.假定指针变量P定义为“int冰P=flew int(100);”,要释放P所指向盼动态内存,应使用语句 A.delete p; B.delete* p; C.delete&p; D.delete[]p;14.假定A为一个类,则执行“A a[3],b(3);”语句时调用该类构造函数的次数为A.3 B.4 C.5 D.915.C++中定义标准输入输出的痒为A.stdio B.math C。
第三章一、单项选择题1. 声明abc的函数原型,该函数返回double型数据,需要传递一个double型和一个char型参数的。
2.inline3.对象、对象指针、引用4.函数func返回字符型引用,并且需要传递一个char型和一个int型参数。
5.int *fun(char,int&);二、单项选择题1.A;使用了const限制改变。
2.C;函数重载的参数个数和数据类型可相同也可以不相同,返回值也可相同可不相同。
只是函数重载的依据是参数个数和数据类型的不同。
3.C;参考课本P61,当形参有两个时,使用C的格式。
三、改错题1.下面程序错在何处?template <class T>T fun(T x){T y;y = x*x - T; // 错误,T是类型,不是变量,不能参加运算;return y;}2.找出下面程序中的错误之并改正之。
#include <iostream.h> //C++标准中没有iostream.h头文件template <class Type>Type max(T x, y) // x的类型和template中的不一样,并且y没有类型。
{return (x>y) ? (x) : (y);}修改如下:#include <iostream>template <class Type>Type max(Type x, Type y){return (x>y) ? (x) : (y);}3. 找出下面程序中的错误之并改正之。
函数change 的参数定义成了常量,只能使用参数,而无权修改他。
#include <iostream>#include <string>using namespace std;void change(const string& s)//函数change 的参数定义成了常量,只能使用参数,而无权修改他。
{s = s + "pig!";}void main(){string str("it is a ");change(str);cout << str << endl;}修改如下:#include <iostream>#include <string>using namespace std;void change(string& s)//函数change 的参数定义成了常量,只能使用参数,而无权修改他。
{s = s + "pig!";}void main(){string str("it is a ");change(str);cout << str << endl;}四、编程题1.编写一个求方程ax2 + bx + c = 0的根的程序,用3个函数分别求当b2-4ac 大于零、等于零、和小于零时的方程的根。
要求从主函数输入a,b,c的值并输出结果。
#include <iostream>#include <cmath> //使用数学求根函数sqrt(),需要包含头文件cmathusing namespace std;void equation_1 (int a, int b, int c){double x1, x2, temp;temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);//分母乘以1.0是为了保证分母的结果位double型x2 = (-b - sqrt(temp) ) / (2 * a * 1.0);cout<<"两个不相等的实根"<< endl;cout<<"x1 = "<< x1<<", x2 = "<< x2<< endl;}void equation_2 (int a, int b, int c){double x1, x2, temp;temp = b*b - 4 * a * c;x1 = (-b + sqrt(temp) ) / (2 * a * 1.0);x2 = x1;cout<<"两个相等的实根"<< endl;cout<<"x1 = "<< x1<<", x2 = "<< x2<< endl;}void equation_3 (int a, int b, int c){double temp, real1, real2, image1, image2;temp = - (b*b - 4 * a * c);real1 = -b / (2 * a *1.0);real2 = real1;image1 = sqrt(temp);image2 = - image1;cout<<"两个虚根"<< endl;cout<<"x1 = "<< real1<<" + "<< image1<<"j"<< endl;cout<<"x2 = "<< real2<<" - "<< -image2<<"j"<< endl;//加了两个减号,显示更清晰}void main(){int a, b, c;double temp;cout<<"输入a,b,c的值"<< endl; //从主函数输入a、b、ccin>>a>>b>>c;cout<<"方程为:"<< a<<"x*x+"<< b<<"x+"<< c<<" = 0"<< endl;temp = b*b - 4 * a * c;if(temp > 0) //使用if选择语句进行判断选择equation_1 (a, b, c);if(temp == 0)equation_2 (a, b, c);if(temp < 0)equation_3 (a, b, c);}运行结果:2.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。
要求在短小而完全的程序中显示这个程序是怎样被调用的。
#include < iostream >#include < string >using namespace std;char up (char c){return (c >= 97 && c <= 122) ? (c - 32) : c;//小写字母的ASCII码从97-122,大写从65-90,小写转大写码值减32 }void main(){int i=0;string str = "Welcome";while(str[i] != '\0') //字符串未到末尾则调用up函数cout<< up(str[i++]);cout<< endl;}运行结果:3.编写主程序条用带实数r和整数n两个参数的函数并输出r的n次幂。
#include < iostream >using namespace std;double power(double r, int n){int i;double result = 1.0;for(i=0; i<n; i++)result = result * r; //计算r的n次幂return result;}void main(){double r;int n;cout<<"r = ";cin>>r;cout<<"n = ";cin>>n;cout<< r<<"的"<< n<<"次幂是:"<< power(r,n)<< endl; //调用函数}运行结果:4.编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。
其方式为第1行有1个字符C,第2行有2个字符C ,等等。
#include < iostream >using namespace std;void print_triangle(char c, int n){int i, j;for(i=0; i< n; i++) //使用双重for循环输出三角形{for(j=0; j<=i; j++){cout<< c;}cout<< endl;}}void main(){char C;int N;cout << "请输入一个字符:";cin >> C;cout << "请输入行数:";cin >> N;print_triangle(C,N); //调用打印三角形函数}运行结果:5.编写一个ieqiu字符串长度的函数,strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。
#include < iostream >#include < string >using namespace std;int strlen(string str) //传递对象参数,求字符串长度{int len = 0;while(str[len] != '\0'){len++;}return len;}void revers(string& str1) //传递引用参数,将字符串倒序{char c;int j, len;len=strlen(str1);j=len/2-1;while(j>=0){c = str1[j];str1[j] = str1[len-j-1];str1[len-j-1] = c;j--;}str1[len]='\0';}void main(){string str = "Welcome";cout<< str <<"----的长度:"<< strlen(str)<< endl;cout<< "倒序前字符串:" << str << endl; //倒序前revers(str);//cout<< "倒序前字符串:" << str<< endl; //倒序后}运行结果:6.用函数模板实现3个数值中按最小值到最大值排序的程序。