2020年自考C试题及答案11套合集.docx

上传人:文*** 文档编号:83244229 上传时间:2023-03-29 格式:DOCX 页数:238 大小:271.58KB
返回 下载 相关 举报
2020年自考C试题及答案11套合集.docx_第1页
第1页 / 共238页
2020年自考C试题及答案11套合集.docx_第2页
第2页 / 共238页
点击查看更多>>
资源描述

《2020年自考C试题及答案11套合集.docx》由会员分享,可在线阅读,更多相关《2020年自考C试题及答案11套合集.docx(238页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、2020年自考C试题及答案11套合集全国10月自学考试C+程序设计试题课程代码:04737、单项选择题(本大题共20小题,每小题1分,共20分)1 .对C+语言和C语言的兼容性,描述正确的是(A )A. C+兼容CB. C+部分兼容C D. C兼容C+2 .在C+中使用流进行输入输出,其中用于屏幕输出的对象是(C )A. cerr B. cin C. coutD. cfile(cerr:标准错误输出(非缓冲方式);cin:标准输入;clog标准错误输出(缓冲方式)3 .对使用关键字new所开辟的动态存储空间,释放时必须使用(C )A. free B. create C. delete D. r

2、ealse4 .如没有使用private关键字定义类的数据成员,则默认为(A )A. private B. public C. protected D. friend5 .使用值传递方式将实参传给形参,下列说法正确的是(A )A,形参是实参的备份B.实参是形参的备份C.形参和实参是同一对象D.形参和实参无联 系6,在函数调用时,如某一默认参数要指明一个特定值,则有(A )A.其之前所有参数都必须赋值B.其之后所有参数都必须赋值C.其前、后所有参数都必须 赋值D.其前、后所有参数都不必赋值7 .设存在函数int max(int, int)返回两参数中较大值,若求22, 59, 70三者中最大值,

3、 下列表达式不正确的是(C )A. int m = max (22, max (59, 70) ; B. int m = max (max (22, 59), 70) ; C. int m = max(22,59, 70);D. int m = max(59, max(22, 70);8 .下列哪个类型函数不适合声明为内联函数(A )A.函数体语句较多B.函数体语句较少C.函数执行时间较短D.函数执行时间过长9 . int Func(int, int)5不可与下列哪个函数构成重载( B )A. int Func(int, int, int); B. double Func(int, int);

4、C. double Func(double, double); D. double Func(int, double);说明:不能以形参名来区分函数;不能以函数返回值来区分函数。必须是形参的个数或者类型不同才能构成函数重载。10 .对类中声明的变量,下列描述中正确的是(C )A.属于全局变量B.只属于该类C.属于该类,某些情况下也可被该类不同实例所共享D.任何情况下都可被该类所有实例共享11 .类的私有成员可在何处访问(D )A.通过子类的对象访问B,本类及子类的成员函数中C.通过该类对象访问D.本类的成员函数中12 .如果没有为个类定义任何构造函数的情况下,下列描述正确的是(A )A.编译器

5、总是自动创建一个不带参数的构造函数B.这个类没有构造函数C.这个类不需要构造函数D.该类不能通过编译13 . 个类可包含析构函数的个数是(B )A. 0个 B. 1个C.至少个D. 0个或多个14 . this指针存在的目的是(B )A.保证基类公有成员在子类中能够被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在子类中能够被访问D.保证基类私有成员在子类中能够被访问15 .下列关于类的权限的描述错误的是(A )A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C,普通函数不能直接访问类的公有成员,必须通过对象访问D. 个类能

6、够将另个类的对 象作为成员16 .在编译指令中,宏定义使用哪个指令(B )A. #include B. #define C. #if D. #else17 .设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是(B )A. A类构造函数先执行B.成员构造函数先执行C.两者并行执行D.不能确定类的组合,描述的是一个类内嵌其它类的对象作为成员的情况,它们之间的关系是种包含 与被包含的关系。在声明一个组合类的对象时,不仅它自身的构造函数将被调用,而且还将调用其内嵌对象的 构造函数。这时构造函数的调用顺序是:(1)按照内嵌对象在组合类的声明中出现的次序,依次调用内嵌对象的构造函数;(2)执行

7、本类构造函数的函数体析构函数的调用执行顺序与构造函数刚好相反。18 .下列描述错误的是(A )A.在创建对象前,静态成员不存在B.静态成员是类的成员C.静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员说明:静态成员函数能够直接访问该类的静态数据和函数成员,而访问非静态成员,必须通过 参数传递方式得到对象名,然后通过对象名来访问。19 .对于友元描述正确的是(B )A.友元是本类的成员函数B.友元不是本类的成员函数C.友元不是函数D.友元不能访问 本类私有成员20 .在哪种派生方式中,派生类能够访问基类中的protected成员(B )A. public 和 private B. pu

8、blic 和 protectedC. protected 和 privateD. 仅 protected二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。21 .设要把个文件输出流对象myFile与文件“f:,所用的C+语句是:(“f: ); 。22 . C+中ostream类的直接基类是ios类。23 .运算符只能用成员运算符来重载,不能用友元运算符来重载。24 .定义虚函数所用的关键字是字rtuaL 25. vector类中用于返回向量中第1个对象的方 法是 front (),26 .在C+中,利用向量类模板定义一个具有20个char的向

9、量E,其元素均被置为字符t, 实现此操作的语句是vectorcharE(20, t)。27 .类的继承是指子类继承基类的数据成员和成员函数。28 .不同对象能够调用相同名称的函数,但可导致完全不同的行为的现象称为多态性或(类 的多态性)。29 .include指令指示编译器将一个源文件嵌入到带该指令的源文件之中。30 .设类A有成员函数void Fun(void);若要定义个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句 是:void(A:*pafn) (void): 31 .设在程序中使用如下语句申请了一个对象数组:Point * ptr = new Point2;则在需

10、要释放ptr指向的动态数组对象时,所使用的语句是delete1 ptr;。32 .在保护派生中,基类权限为Private的成员在派生类中不可访问。33 .类A有如下成员函数 int A:fun(double x)return (int) x / 2; int A:fun(int x)return x*2; 设a为类A的对象,在主函数中有int s=a. fun() + (2),则执行该语句后,s的值为。34 .对象传送的消息一般由3部分组成:接收对象名、调用操作名和必要的参数。35 .将指向对象的指针作为函数参数,形参是对象指针,实参是对象的地址值。36 .在使用string类的find成员函

11、数来检索主串中是否含有指定的子串时,若在主串中不 含指定的子串,find函数的返回值是1。37 .在C+中,声明布尔类型变量所用的关键字是空。38 .执行下列代码int a=29, b=100;cout setw (3) a b endl;程序的输出结果是:29100。39 .执行下列代码cout Hex: hex 255;程序的输出结果为Hexf。+语言中能够实现输出个换行符并刷新流功能的操控符是endl三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41. #includeiostream. hvoid main( ) i

12、nt x=5, y=6;const int + p=&x;*p=y; cout*pendl;*p=y;指针p所指向的为常量,不能进行左值操作42. #includeclass fprivate:int x, y;public:fl( )x=0; y=0; print( )coutx yendl; )1void main( ) f a;(1,1);();(1, 1) ; fl ()调用时实参与形参数量不一致43. WincludeOclass fprivate:int x=0, y=0;public:void fl(int a, int b)x=a; y=b; void get ( ) cout

13、x yendl; ;(1,3);();private:int x=0, y=0:数据成员声明时不允许直接赋值44. #includeclass pointprivate:float x;public:void f(float a)x=a;void f( )x=0;friend float max(point& a, point& b);;float max(point& a, point& b)return(? :; void main( ) point a9 b;0; 0;cout (a, b);)cout (a,b); max()不是类的成员函数,()方式调用45. #includetem

14、plateclass f private:! x, y;public:void fl(T a T b)x=a; y=b; T max( )return(xy)?x:y;) ?void main( ) f a;(,); cout( )endl;cout()endl; x,y是私有类型,不能在主函数中直接使用四、完成程序题(本大题共5小题,每小题4分,共20分)46. 完成下面类中的成员函数的定义。class point(private:int m, n;public:point(int, int);point(pointft);;point:point(int a, int b) m=a;n_=

15、b;)point:point(point&t )(m=;n=;47. 下面是个输入半径,输出其面积和周长的C+程序,在下划线处填上正确的语句。#includeusing namespace std;const double pi=;void main()(double r;cout r=;cinr ;double l=*pi*r;double s=pi*r*r;cout n The long is: lendl;cout The area is: sendl;48. 在下划线处填上缺少的部分。#include#includeusing namespace std;class complex(p

16、ublic:int real;int imag;complex(int r二, int i=0)(real=r;imag=i;);complex operator+( complex&a, complex& b)(int r=+;int i=+;return complex(r, i); void main()complex x(l, 2), y(3 4), z;z=x+y;coutz/ + i endl;)49. 程序的输出结果如下:1, 950, 30请根据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:#includeusing namespace std;class base

17、|private:int m;public:base( ) ;base (int a) :m(a) int get( )return m;void set(int a)m=a; void mainObase*ptr=new base2; ptr- set (30);ptr= ptr+1;ptr- set (50);base a2 = l, 9;cout a . get ( ) , al.get( )endl;coutptr- get ( ) ,;ptr=ptr-l;cout ptrget( )endl;delete ptr;)5.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法

18、。 include using namespace std:void main()(float a, b;float cha(float, float); / / 函数 cha 的原型声明a=;b=;float c= cha(a, b);/ /调用函数 chacoutcendl;)float cha(float x, float y)(float w;w=x-y;return w;五、程序分析题(本大题共4小题,每小题5分,共20分)51 .给出下面程序的输出结果。include template class Sample(T n;public:Sampled i) n=i;int opera

19、tor=(Sample &);;template int Sample: operator= (Sample & s)if (n=)return 1;elsereturn 0;void main()(Sampleintsl(2), s2 (3);,cout si 与 s2 的数据成员 (sl=s2 ? 相等:不相等) endl;Samples3 (), s4();cout s3 与 s4 的数据成员 (s3=s4 ? 相等:不相等) endl;S!与S2的数据成员不相等S3与S4数据成员相等52 .给出下面程序的输出结果。#includeusing namespace std;template

20、T max(T ml, T m2)return(mlm2)?ml:m2:void main( ) coutmax(L 7) t max(, )endl;coutmax(1 y J b t max( A 9 a )endl;)75y a53 .给出下面程序的输出结果include using namespace std;class A public:int x;A( ) A(int a) x=a;int get (int a)return x+a; );void main( ) A a (8);int(A:*p)(int);p=A:get;cout (a. *p) (5)endl;A*pi=&a

21、;cout (pi- *P) (7)endl; 131554 .给出下面程序的输出结果。include#includeusing namespace std;class Book char*title; char*author; int numsold;public:Book ( ) Book (const char*strl, const char*str2, const int num) int len=strlen(strl);title=new charlen+1;strcpy(title, strl);len=strlen(str2);author=new charlen+1;str

22、cpy(author, str2);numsold=num; void setbook (const char*strl, const char*str2, const int num) int len=strlen(strl);title=new charlen+1;strcpy(title, strl);len=strlen(str2); author=new charlen+1;strcpy(author, str2); numsold=num;Book( ) delete title; delete author; )void print(ostream&output) output书

23、名:titleendl; output作者:authorendl; output月销售量:numsoldendl; ) .卜书名:数据 结构作者:严蔚 敏 月销售void main( )Book objl(数据结构,严蔚敏,200), obj2 (cout); ( C+语言程序设计,李春葆,210); (cout);)六、程序设计题(本大题共1小题,共10分)55 .在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形 #include #include class point( private:float x y;public:point(float a, float b)

24、x=a;y=b; point( ) x=0; y=0; void set(float a float b)x=a;y=b;float getx( )return x;float gety( )return y;);class tripoint x, y, z; float sl s2, s3;public;. settri(. ); /用于输入三个顶点坐标. test(. ); /用于判断是否构成三角形;请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)判断三条边能构成三角形的条件:任意两边之和大于第三边或任意两边之差小于第3边。void tri:settri(fl

25、oat xl, float yl, float x2, float y2, float x3, float y3)(xl,yl); (x2, y2); (x3, y3); void tri:test()sl=sqrt() ()*(etx ()() + ()()*() 0);s2=sqrt() ()*()() + ()()*() ();s3=sqrt() ()*()() + ()()*() ();全国1月自学考试C+程序设计试题课程代码:04737一.单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或

26、未 选均无分。+源程序文件扩展名为(A )A. cpp B. h C. lib D. obj+中使用流进行输入输出,其中专用于从键盘进行输入的流是(B )(D )A. #defineOB. include C. #define D. include”(D )x,则下列句与其它三项含义不同的是(A )* p=&x;& p=x; & p=x; &p=x;.为产生封装性,则需使用哪个关键字(D )swap(int&, int也)将交换两形参的值,如两整型变量int a=10; int b=15; 则执行swap(a, b)后,a、b值分别为(C ) ,10, 15,10,15,默认参数必须放在参数序

27、列的(C )min(int, int)返回两参数中较小值,若求15, 26, 47三者中最小值,下列表达式中错误的是(B ) m=min(min(15, 26), min(15, 47); m=min(15, 26, 47); m=min(15, min(47, 26): m =min(min(47, 26), 16);print (char)构成重载的是(C )print (int);print(char, char);print(char);print(int, int);,运算结果类型相同的对是(D )/ / /2/2和 7/2 / /2(A ),加快访问速度,减缓访问速度,减缓访问速度

28、,加快访问速度(A )Sum(T x, T y) return x+y; ),其中T为模板类型,则下列语句中对该函数错误的使用是(D )(1, 2);(, ); ( A , C );(A,);(C )A. #include B. define C. #else D. ttpragma(A )二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。,实现此操作的C+语句是_couta;+将数据从个对象流向另个对象的流动抽象为“流”,从流中获取数据的操作称为提取.int b=100;coutHex:hexb;程序的输出结果是Hex:64 +程序必须有且

29、只有一个主函数,其函数名为main一,+,此声明语句是complexdoublec(,);int add(int ml=0, int m2=2, int m3=4)return ml+m2+m3; 在主函数中有 int s=add(l)+add (0, l)+add(0, 1, 2);则执行此语句后s的值为_15+中使用inline关键字说明函数为内联函数。:#define PI ,则若不想使该宏定义影响到程序的其它地方,能够使用#undef PI 删除该宏定义。(注:配套教材上没有),组成这种类型的不仅能够有数据,还能够有对数据进行操作的函数 a=0; double b=0; cinab;,

30、 b=。,其析构函数的定义原型为Point。;,与它们在成员初始化列表中给出的顺序无关volatile、static关键字的函数。0。+中用于动态创建对象,并返回该对象的指针的关键字是new。+的流类库预定义的与标准输出设备相联接的流是cout 一coutnoshowpoint ;程序输出结果是123三、改错题(本大题共5小题,每小题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41. ttincludeOclass f(private:float x, y;publicrf(float a, float b)x=a; y=b; float max () r

31、eturn (xy) ?x: y; );main( ) f a(, ); cout( )endl;42. #includeclass test private:int x;public:test(int a)x=a; void set (int a)x=a; void get() coutxendl; /error缺少分号;main() const test a(3);(5);;)43. #includeclass pointprivate:float x, y;public:fl(float a, float b)x=a; y=b; point()x=0; y=0; void getx()

32、coutxendl; void gety() coutyendl; ;void print (point a) coutendl; /error:应将 print 函数说明为 point 类的友元函数 main() point a;G );print(a);)44. #includeclass fprivate:int x, y;public:fl(int a, int b)x=a; y=b; void print () coutxyendl; ) ;mainO f a;(,);“error:实际参数类型与fl函数的形参类型不一致,应修改为一致。0;)45. #includemainO int

33、 x=6;const int*p=xS error:应改为 const int*p=&x;cout*pendl ;)四、完成程序题(本大题共5小题,每小题4分,共20分),使其输出10,并在退出运行时正确释放分配给指针的存储空间。ttinclude using namespace std;void mainOint *a, *p;a=new int (10);P= _a;cout*pendl;delete p;(或 delete a;)47. #include using namespace std;class base(private:int x;public:base(int a)x=a;

34、int get()return x;void showbase() coutx=xendl;;class Derived:public baseprivate:int y;public:Derived(int a, int b):base(a)y=b;void showderivedOcoutx=get (), y=yendl;);void mainObase b (3);Derived d(6, 7);0;0;b=d;0;Derived bl(d);(或 Derived bl (6, 7); 或 base bl (6);或 base bl (d);) 0;base* pb=&bl;pb-sh

35、owbase ();0;0;输出结果如下:x=3x=6, y=7x=6x=6x=6x=6, y=7x=6B: display ()C: display ()在下划线处填上缺少的部分。源程序如下:#includeusing namespace std;class B(public:virtual void display( ) cout B:display( ) endl; ):class C:public B|public:virtual void (或 void) display。cout*C:display() *endl;;void fun(B*p)(p-display ();)void

36、 main()(B b, *pb;C c;pb=&b;fun(pb);pb=&c;fun(pb);This is linelThis is line2This is line3在下划线处填上缺少的部分。源程序如下:ttinclude #include fstreamusing namespace std;void mainOfstream fin, fout;(,ios:out);if(10)return;for(int i=0;i3;i=i+l)fout“This is linei+lendl;0;(,ios:in);if(1 0)return;char str100;while(!()(或

37、等价答案)(str, 100);coutstrendl;)0;)源程序如下:ttinclude using namespace std;templateT fun(T x)_T_y;y=x*x-T(5);return y;void main() (float a=2;coutfun (a);五、程序分析题(本大题共4小题,每小题5分,共20分)#includettinclude using namespace std;#includefstream)void mainO (ofstream myFilel;(;cout Enter the data in Chinese format(. ,

38、May 25): endl;string Date(*, January 1);string Year=(0,4);int k=(,);int i=1);string Month=(k+1, i-k-l);string Day=(i+1,2);string NewDate二Day+“ +Month+ +Year;myFilel original date:*Dateendl;myFilelConverted date:NewDateendl;0;)original date:, January 1Converted date:1 January#includeusing namespace s

39、td;class Simple int x, y;public:Simple () x=y=O;Simple(int i, int j)x=i;y=j;void copy(Simple&s);void setxy(int i, int j)x=i;y=j;void print()coutx=x,y=yendl; ;void Simple:copy(Simple&s) x=;y=;void func(Simple si, Simple&s2)|(30, 40);(70, 80);)void mainOSimple objl(l, 2), obj2;(objl);func(objl,obj2);0

40、;0;)x=l, y=2x=70,y=804includeint main ()int i=17;while(i=10)if(一i%4=3)continue;elsecouti=*iendl;i=16i=14i=12i=10#includeusing namespace std;void main()(int num=300;int &ref=num;coutref;ref=ref-100;cout“ num;num=num-50;cout refendl;300 200 150六、程序设计题(本大题共1小题,共10分)(先进后出),栈的大小由使用者确定。要求该类模板对外提供 如下二种基本操作

41、:(1)push入栈(2)pop出栈,用数组来实现#includeusing namespace std;templateclass StackT xsize;int current;public:Stack()current=0; .push (.);.pop (.););请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型) 参考答案#includeusing neunespace std;templateclass StackT xsize;int current;public:Stack()current=0;bool Push(T e);bool Pop(T &e);;templatebool Stack: :Push(T e) 插入新元素e为新的栈顶元素if (current = size) 栈满return false;)x+current =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com