《2021年10月自考C程序设计(04737)试题及答案解析.docx》由会员分享,可在线阅读,更多相关《2021年10月自考C程序设计(04737)试题及答案解析.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2021年10月高等教育自学考试全国统一命题考试C+程序设计试卷(课程代码04737)本试卷共10页,总分值100分,考试时刻150分钟。考生答题考前须知:1 .本卷所有试题必需在答题卡上作答。答在试卷上无效,试卷空白处和反面都可作草稿纸。2 .第一部份为选择题。必需对应试卷上的题号利用2B铅笔将答题卡的相应代码涂黑。3 .第二部份为非选择题。必需注明大、小题号,利用0 . 5毫米黑色笔迹签字笔作答。4.合理安排答题空间,超出答题区域无效。第一部份选择题一、单项选择题(本大题共20小题,每题1分。共20分)在每题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将答题卡的相应代码涂黑。未
2、涂、错涂或多涂均无分。1 .在C+语言顶用于注释的标识符是A. &B. / /C. *D. /.编写C+程序一样需通过的几个步骤依次是A.编辑、调试、编译、连接B.编译、调试、编辑、连接C.编译、编辑、连接、运行D.编辑、编译、连接、运行.要求通过函数来实现一种不太复杂的功能,而且要求加速执行速度,选用A.内联函数B.重载函数C.内部函数D.函数模板.设x=8,执行语句丫=乂+,那么y等于A. 6B. 7C. 9D. 8.以下运算符中,优先级最高的是A. *B. -C. &D. =.关于new运算符的以下描述中,错误的选项是A.它能够用来动态创立对象和对象数组B.利用它创立的对象和对象数组能够
3、利用运算符delete删除C.利用它创立对象时要挪用构造函数D.利用它创立对象数组时必需指定初始值.存储以下数据,占用存储字节最多的是A.OB.OC. 0D. 0. 0.关于类和对象不正确的说法是A.类是一种类型,它封装了数据和操作B.对象是类的实例C. 一个类的对象只有一个D. 一个对象必属于某个类.以下有关构造函数的描述中,正确的选项是A.构造函数能够带有返回值B.构造函数的名字与类名完全相同#include class Base| private :int Y;public:Base(int y =0) Y =y;cout M Base( w y w ) nu ; |Base( ) J
4、cout n - Base( ) nw j |void print( ) | cout Y ” * ; |I ;class Derived public Base private :int Z;public:Derived (int y. int 工):Base(y)|Z = z5cout Derived(R y H zH)nw ;IDerived( ) | cout w - Derived( ) n ; |void print ()I Base: :print();cout Z encil ;Ivoid main()| Derived d( 10,20);d. print();I52.给出下
5、面程序输出结果。include iostream. hvoid main()Iint x,yTz;x =3 ;y = x + ;z = + x ;cout frx = x M ;y = y ;z = z endl;I六、程序设计题体大题共I小题,共10分)请在答题卡上作答。53.写一个程序,概念一个抽象类Sh叩e,由它派生3个类:Square(正方形)、Trapezoid(梯 形)和Triangle(三角形)。用虚函数别离计算几种图形面积、并求它们的和。要求用基 类指针数组,使它每一个元素指向一个派生类对象。#include class Shape| public :virtual doubl
6、e aiea( ) const = 0;绝密*启用前2015年10月高等教育自学考试全国统一命题考试C+程序设计试题答案及评分参考(课程代码04737)-、单项选择题(本大题共20小题,每题I分,共M分)LB 1LB2. D 3. A4. D12 D 11 A 14. C工B67. D15. Bm B17. C8. C 9. B10. C18. B19. C20. A二,填空题(本大题共20小JH.每小康1分共20分)2Lcin 多态性类族 ios 实例24”30,333622. im AB: :bh= 10;25. friend void B: :fun();28.访问控制方式或继承方式31
7、,虚函数23.保护(peuxted)数据26.3.1416, 3.1434 p=new int 101;37形参的类型39. friend void B: :;三、改错题(本大JH共5小题,卷小题4分,共20分)29.32.35.38.40.常对象 引用 #definc 友元函敷 全局对歆42,45.答案:rewm p;错。get()函数的返回值应该是int型变量,而代码中段“)返回的 是尿型指针。自考单科包过 qql6581612修改:将return p;修改为return /p;答案山呢tYaluc(7);是私有函数,不能直接调用,修改:将如Value(im)函数声明为公有函数。答案:x
8、= 5;错。x为静态数据成员,该赋值形式错误。修改:int A:x-5;答案:8n或A 44);镐&是常将象,不能被更新。修改:将A定义为非常对象。答案:b. Htoero(0f0);错误,因为类中不存在带有两个形参的setzcro()函数。修改:将 b.8twm(0.0);修改为 b. ettero();46 .答案而t i0;il0=2 i - I一 aum a ipl(xpl) tp2(xp2)解析友元类的使用,定义Line是Poinl类的友元类,成员对象的初始化采用列丧的 形式分 ,五程序分析题(本大题共2小题,每题5分,共10分,Base(lO)Derive# 10,20)10 20
9、-Derived。* Base().答案:x=5; y=3;z = 504737 Cz理序设计 试题答案及评分参考第I页(共2或,六程序设计题(本大题共10分)52 .答案:class Square : public Sh&feI public :Square( double| double area,)const | rclum side * 4de; |private?double Bide;hclass Trapezoid : public Shape| public :Trapezoid(double ivdouble jvdouble k) :a(i/,b(j) fh(k)IIdou
10、ble area() const| return ( ( a +b) h/2) ;1private double a,b,h;I class Triangle:public Shape| public :Triane(double i9double j) :w(i) th(j)IIdouble axea( ) const| return( w h/2);)private: double wth;11void main()IShape * p5;Square se(5);Trapezoid td( 2 t5f4) Triangle te(5.8,;p0 s&se;plp2double fh =0
11、;forCSnt i =0;i arca( ) ; | cout ” 总面积是: da cndl;04737 Ci程序设计/试逋答案及评分参考第2页(共2页)c.构造函数必需带有参数D.构造函数必需概念,不能缺省.假定a为一个整型数组名,那么元素a4的字节地址为A. a+4B a+8C. a+16D. a+32.类中能访问静态成员的函数是A.虚函数B.静态成员函数C.构造函数D.析构函数10 .以下说明语句中正确的选项是B. int&refa10D. int*pi, *&pref=piA. int a, &ra=a, &ref=raC. int a, &ra=a, &*refp=&ra.关于对
12、象概念的描述中,说法错误的选项是A.对象确实是C语言中的结构体B.对象代表着正在创立的系统中的一个实体C.对象是类的一个变量D.对象之间的信息传递是通过消息进行的.有关多态性说法不正确的选项是A.C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态多态性15.关于友元函数的描述中,错误的选项是A.友元函数不是成员函数B.友元函数只能访问类中私有成员C.友元函数破坏隐藏性,尽可能少用D.友元函数说明在类体内,利用关键字friend16.类中概念的成员默许访问属性为A.17.B privat
13、e拷贝构造函数的参数是C protectedD friendA.某个对象名C.某个对象的引用名A.某个对象名C.某个对象的引用名B.某个对象的成员名D.某个对象的指针名18.关于类模板的说法正确的选项是A.类模板的要紧作用是生成抽象类B.类模板实例化时,编译器将依照给出的模板实参生成一个类C.在类模板中的数据成员具有一样类型D.类模板中的成员函数没有返回值.以下有关重载函数的说法中正确的选项是A.重载函数必需具有不同的返回值类型B.重载函数参数个数必需相同C.重载函数必需有不同的形参列表D.重载函数名能够不同.当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数A.都是
14、虚函数B.只有被从头说明时才是虚函数C.都不是虚函数D.只有被从头说明为virtual时才是虚函数第二部份第二部份非选择题二、填空题(本大题共20小题,每题1分,共20分)请在答题上作答。19 . C语言中scanf命令在C+中改用:cin.假定类AB中有一个公用属性的静态数据成员static int bb;在类外不通过对象名给该成 员bb赋值为10的写法:int AB; bb=10;20 .在类内部概念的公有(public)数据能够在类外进行存取,但珍惜protected数据和私有 (private)数据不能在类外直接存取。21 .在C+中,虚函数帮助实现了类的多态性。22 .假设是要把类B
15、的成员函数void fun()说明为类A的友元函数,那么应在类A中加入语句23 .执行以下程序 double a=3. 1415926, b=3. 14; coutsetprecision(5)a setprecision(5)bendI;程序的输出结果是。24 .在C+中,访问一个指针所指向的对象的成员所用的指向运算符是 o.基类的公有成员在派生类中的访问权限由 决定。25 .由const修饰的对象称为 o.假设是通过同一个基类派生一系列的类,那么将这些类总称为 o26 .为了实现运行时的多态性,派生类需从头概念基类中的 o.在C+中有两种参数传递方式:传值和传 o27 . C+中ostre
16、am的直接基类。28 .int*p=NULL,利用new为指针P申请一个存储大小为10的寄放int型的空间,代码为 O29 .在编译指令中,宏概念利用 指令。30 .每一个对象都是所属类的一个 o.函数重载时,编译系统会依照 或形参的个数来区分。31 .静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是。40. 局部对象和全局对象中,在同一程序中 生存期最长。三、改错题(本大题共5小题,每题4分,共20分)请在答题卡上作答。下面的程序段中有一处错误,请在答题卡上抄写错误所在行并指犯错误缘故。41. #include using namespace std;class base(i
17、nt p;public:base (int a) jp = &a;Iint get() |return p;II *int main()Ibase b(3);cout b. get();42. #include using namespace std ; class base)int a;int get() | return a;Ivoid setValue(int b) |a = b;Iint geta() return a;II;int main()1base b;b setValue(7);return 0 ;)43. #inclu(ie using namespace std ; cl
18、ass A |static int x ;int y;public :A(int a,int b) |x = a;y = b;Iint get() | return x + y;II ;x = 5;int main ()IAa(l2)Jcout a. get( ) endl; return 0;I44. #include using namespace std; class A|int x;public:A( int a) x = a;Ivoid set( int a) x = a;void get( ) cout x endl ;1I ;int main()Iconst A a(4);set
19、(6);a get();set( 10);a. get();return 0;45. #include using namespace std; class base)int a,b;public :void setzero ( ) |x = 0; y = 0;void show()(cout x w . y endl;I iint main( ) base b;b. setzero(0,0);return 0;四、完成程序题(本大题共5小题,每题4分,共20分) 请在答题卡上作答。46 .用简单项选择择法对10个数排序,使其从小到大排列。#includef, stdax. hn#includ
20、e using namespace std ; int main (void)Iint i;int num 10 ,t,j;fbrC.) cin numi;for(i =0;i 9;i + )fbr( j = i +1 ;j numj)It = numi;num=num j;for(i =0;i 10;i + ) cout numi w ;I.打印以以下列图案:* * *#includen stdafic. hM#include using namespace std;void main( void)Int j,n;for()/i控制行号I.for(j =)/j 控制空格cout ;for()
21、/n控制星号 cout cout endl;48.任意输入10个同窗的成绩,计算其平均成绩。要求用函数average计算平均成绩,主函数输入数据并输出 结果。#includeH stdafx. h#include using namespace std;void main( void)Ifloat average ( float a);float scorc 10;for()Icin score i;Icoat average : average ( score ) endl ;Ifloat average( float a)Ifloat sum =0;for( int i =0;i 10;i
22、 + ) | ,Ireturn ( sum/10);I.编一个函数to_lower(),实现将字符串中的大写字母转换成相应小写字母。主函数输 入数据并输出结果。#mcludeH stdafx. h#include -一 一 9void main ( void )Ivoid to_lower( char a);char str 10;cin str;to_lower( str);cout str endl ;Ivoid to_lower( char a)I fbr(int i =0;i 0;i + ) if()ai + =32;.下面程序用来求直角三角形斜边长度。#include #inclul
23、e class Line; class Point | private : double xty;public :Point(double i =0,double j =0)x = i;y =j;JPoint ( Point &p )x = p*x;y =p y; |I ;class Line private : Point pl f p2; public:Line( Point &xpl t Point &xp2) :| | double GetLength();I ;double line: :GetIjength() | double dx = p2 x - pl. x;double dy = p2 y - pl. y; return sqrt(dx*dx + dy*dy);I .void main()| Point pl9P2(6,8);Line LI (pl ,p2);cout LL GetLength ( ) endl ;I五、程序分析题(本大题共2小题,每题5分,共10分) 请在答题卡上作答。49 .给如下面程序输出结果。