《电大C语言程序设计A期末模拟试题(14)小抄参考.doc》由会员分享,可在线阅读,更多相关《电大C语言程序设计A期末模拟试题(14)小抄参考.doc(16页珍藏版)》请在三一办公上搜索。
1、专业好文档 C语言程序设计A期末模拟试题一一、单项选择题(每小题2分,共20分)1. 由C+目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. lik2. x0 & x=10的相反表达式为( )。A. x10 B. x10C. x=0 | x0 & x103. 在下面的一维数组定义中,哪一个有语法错误。( C ) A. int a=1,2,3; B. int a10=0;C. int a; D. int a5;4. 假定p是具有double类型的指针变量,则表达式+p使p的值(以字节为单位)增加( C )。A. 1 B. 4 C. sizeof(
2、double) D. sizeof(p)5. 当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是( B )。 A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录 C. 仅仅搜索源程序所在目录 D. 搜索当前逻辑盘上的所有目录6. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( A )。 A. delete p; B. delete *p; C. delete &p; D. delete p;7. 假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,
3、则访问px所指对象中数据成员a的格式为( )。 A. px(a) B. pxa C. px-a D. px.a8. 栈具有( )的操作特性。 A. 先进先出 B. 先进后出 C. 进出无序 D. 进出任意9. 对于任一个类,用户所能定义的构造函数的个数至多为( )。 A. 0 B. 1 C. 2 D. 任意个10. 下列对派生类的描述中错误的说法是:( )。 A. 派生类至少有一个基类 B. 派生类可作为另一个派生类的基类 C. 派生类除了包含它直接定义的成员外,还包含其基类的成员 D. 派生类所继承的基类成员的访问权限保持不变二、填空题(每题2分,共20分)1. C+语言是在_语言的基础上发
4、展起来的。2. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个_符,然后才能继续输入下一个数据。3. 假定x是一个逻辑量,则x & false的值为_。4. 元素类型为char的二维数组a1030共占用_ _字节的存储空间。5. 局部变量具有局部生存期,存放在内存的_栈_区中。6. 已知语句“coutp;”的输出是“Hello!”,则语句“cout*p;”输出的是_。7. 对类中常量成员的初始化是通过在构造函数中给出的_来实现的。8. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_。9. 假定用户为类AB定义了一个构造函数“AB(int aa):a(aa)”
5、,则定义该类的对象时,有_种定义格式。10. 在每个成员函数中,隐含的第一个参数的参数名为_。 三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分)1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。#includevoid main() int f,f1,f2,i; cout” 斐波那契数列:n”; f1=0; f2=1; coutsetw(6)f1setw(6)f2; for(i=3;i=20;i+) f=_(1)_; cou
6、tsetw(6)f;if(_(2)_) coutendl;f1=f2;f2=_(3)_; coutendl; (1) (2) (3) 2. 对数组an按升序进行的选择排序算法 void SelectSort(int a, _(1)_) int i,j,k; for(i=1;in;i+) /进行n-1次选择和交换 k=i-1; for(j=i;jn;j+) if(ajak) _(2)_; int x=ai-1; ai-1=ak; _(3)_; (1) (2) (3) 3. 已知一个类的定义如下:#includeclass AA int a10;int n;public:void SetA(int
7、 aa, int nn); /用数组aa初始化数据成员a, /用nn初始化数据成员nint MaxA(); /从数组a中前n个元素中查找最大值void SortA(); /采用选择排序的方法对数组a中前n个元素 /进行从小到大排序 void InsertA();/采用插入排序的方法对数组a中前n个元素进行从小到大排序void PrintA(); /依次输出数组a中的前n个元素; 该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。int _(1)_ int x=a0;for(int i=1; ix) _(2)_;_(3)_;(1) (2) (3)4class A int a; pub
8、lic: A() a=0; _(1)_ /定义构造函数,用参数aa初始化数据成员a ; main() _(2)_; /定义类A的指针对象p _(3)_; /用p指向动态对象并初始化为整数5 (1) (2) (3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分) 1. #include #include void main() int a8=25,48,32,85,64,18,48,29; int max,min; max=min=a0; for(int i=0; iai) max=ai; if(xai) min=ai; coutmax
9、:maxendl; coutmin:minendl; 2. #include void main() for(int i=1,s=0;i20;i+) if(i%2=0 | i%3=0) continue; couti ; s+=i; coutsendl; 3. void trans(int x) char a10; int i=0,rem; do rem=x%16; x=x/16; if(rem0) couta-i; coutendl; 4. char *f(char *s) int n=strlen(s); char* r=new charn+1; for(int i=0; i=a & si
10、ms) coutError!endl; exit(1);MS=ms;n=nn;a=new intMS;for(int i=0; iMS; i+) ai=aai;AA* Reverse(); /对于调用该函数的对象,将其a数组中前n个 /元素值按相反的次序排列,返回指向该对象的指针。;C语言程序设计A期末模拟试题一参考答案一、 单选题1. B2. A3. C4.B5.C6.A7.C8.B9.D10.D二、 填空题1. C2. 空白3. false(或0) 4. 3005.栈6.H7. 初始化表8. 成员函数9. 110. this三、程序填充题1. (1) f1+f2 (2) i%5=0 (3)
11、 f2. (1) int n (2) k=j (3) ak=x3. (1) AA:MaxA() (2) x=ai (3) return x4. (1) A(int aa):a(aa) (2) A *p (3) p=new A(5)四、理解问答题1. max:85 min:18 2. 1 5 7 11 13 37 3.此函数用于把十进制整数x转换为十六进制数字串输出4.根据参数s所指向的字符串,生成一个由r所指向的新字符串并返回,该字符串使s字符串中的小写字母均变为大写。五、编程题1. #include void main() int x,max; cinx; max=x; for(int i=
12、0;ix; if(xmax) max=x; coutmax:maxendl; 2.AA* AA:Reverse()int i,x;for(i=0; in/2; i+) x=ai; ai=an-1-i; an-1-i=x; return this; C语言程序设计A期末模拟试题二一、单项选择题(每小题2分,共20分)1. 编写C+程序一般需经过的几个步骤依次是( )。 A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试 C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接2. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a21的值为( A )。 A.
13、 0 B. 4 C. 8 D. 63. 函数重载是指( A )。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同4. 假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用( D )。 A. cout*s; B. couts; C. cout&s; D. cout(void *)s;5. 在类作用域中能够通过直接使用该类的( )成员名进行访问。 A. 私有 B. 公用 C
14、. 保护 D. 任何6. 假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为( )。 A. a B. AA:a C. a() D. AA:a()7. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。 A. length+1 B. first+length C. (first+length-1)%MS D. (first+length)%MS 8. 假定AB为一个类,则执行 “AB r1=r2;”语句时将自动调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C
15、. 赋值重载函数 D. 拷贝构造函数9. 双目运算符重载为普通函数时,其参数表中应带有( )个参数。 A. 0 B. 1 C. 2 D. 310. 当派生类中有和基类一样名字的成员时,一般来说,( )。 A. 将产生二义性 B. 派生类的同名成员将覆盖基类的成员 C. 是不能允许的 D. 基类的同名成员将覆盖派生类的成员二、填空题(每题2分,共20分)1. 行尾使用注释的开始标记符为_。2. 设enum Printstatusready=2,busy,error; 则coutname等价的表达式是_。6. 如果一个派生类的基类不止一个,则这种继承称为_。7. 在一个用数组实现的队列类中,假定数
16、组长度为MS,队首元素位置为first,队列长度为length,则插入一个新元素的位置为_。8. 向一个队列中插入元素就是把该元素放到_元素的后一位置上。9. 假定用户只为类AB定义了一个构造函数“AB():a(0),b(0)”,则定义该类对象x的定义语句“AB x;”是_(正确/错误)的。10. 除了_运算符外,其他重载的运算符都可以被派生类继承。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分) 1. 统计字符串中英文字母个数的程序。 #include int count (char str); void mai
17、n() char s180; cout s1; cout ”count=”count(s1)=a & stri=z |_(1)_ ) _(2)_; _(3)_; (1) (2) (3) 2. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。 #include void main() int x; coutx; int a20,k=0,r; do r=x%2; ak+=r; x=_(1)_; while(_(2)_); for(-k;k=0;k-) _(3)_; coutendl; (1) (2) (
18、3) 3. 假定有定义为“struct NODEint data; NODE* next;”,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序正好相反。void f6(NODE*& L, int table, int n) L=NULL;if(ndata=_(2)_;p-next=L;_(3)_;i+;(1) (2) (3) 4. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10;class Stack public:void Init() top=-1; /初始化栈为空 void Push(int new
19、Elem); /向栈中压入一个元素int Pop(); /从栈顶弹出一个元素bool Empty() /判栈空 if(top=-1) return true;else return false;int Depth() return top+1; /返回栈的深度void Print(); /按照后进先出原则依次输出栈中每个元素,直到栈空为止private:int elemARRAY_SIZE; /用于保存堆栈元素的数组int top; /指明栈顶元素位置的指针; 该类的Pop和Print函数的实现分别如下:_(1)_ if(top=-1) cout栈空!endl;exit(1); /中止运行re
20、turn _(2)_;void Stack:Print() while(!Empty() cout_(3)_ ;(1) (2) (3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分) 1. #include const int N=5; void main() int i,p=1,s=0; for(i=1;iN; i+) p=p*i; s=s+p; coutsetw(5)isetw(5)p; coutsetw(5)sendl; 2#include #include class CD char* a; int b; public: vo
21、id Init(char* aa, int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char* Geta() return a; int Getb() return b; void Output() couta bendl; ;void main()CD dx,dy;char a20;dx.Init(abcdef,30);strcpy(a,dx.Geta();strcat(a,xyz);dy.Init(a,dx.Getb()+20);dx.Output();dy.Output(); 3. #include #include #includ
22、e void main() int i=10,a; while(i0) a=rand()%100+10; int j, k=int(sqrt(a)+1e-5); /sqrt(x)为求x的平方根函数 for(j=2; jk) coutastr2i) return 1; else return -1; if(str1i=str2i) return 0; else if(str1istr2i) return 1; else return -1; 五、编程题(每小题6分,共12分) 1. 按照下面函数原型语句编写一个函数,返回二维数组amn中所有元素的平均值,假定采用变量v存放平均值。 2. 根据下面
23、类中MaxMin 函数成员的原型和注释写出它的类外定义。class AA int* a;int n;int MS;public:void InitAA(int aa, int nn, int ms) if(nnms) coutError!endl; exit(1);MS=ms;n=nn;a=new intMS;for(int i=0; i=A & stri=Z(2) num+ (3) return num 2. (1) x/2 (2) x!=0 (3) coutak3. (1) in (2) tablei (3) L=p4. (1) int Stack:Pop() (2) elemtop- (
24、3) Pop()四、理解问答题1. 1 1 1 2 2 3 3 6 9 4 24 33 2. abcdef 30 abcdefxyz 50 3. 随机产生出10个10至100之间的素数并显示出来。4. 实现strcmp函数的功能,比较两个字符串str1和str2的大小,若str1较大则返回1,若str2较大则返回-1,若两者相等则返回0。五、编程题1. double Mean(double aMN,int m,int n); double Mean(double aMN,int m,int n) int i,j; double v=0.0; for(i=0; im; i+) for(j=0;
25、jn; j+) v+=aij; v/=m*n; return v; 2.int AA:MaxMin(int& x, int& y)int mx,my;mx=my=a0;for(int i=1; imx) mx=ai;if(ai0) return 1; else return 0; C语言程序设计A期末模拟试题三一、单项选择题(每小题2分,共20分)1. C+程序的基本模块为( )。 A. 表达式 B. 标识符 C. 语句 D. 函数2. 设x和y均为bool量,则x & y为真的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假3. 函数调用不可以( D
26、 )。 A. 出现在一个表达式中 B. 出现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参4. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为( B )。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m;5. 假定有“struct BOOKchar title40; float price; BOOK *book;”,则不正确的语句为( A )。 A. BOOK *x=new book; B. BOOK x=C+ Programming,27.0; C. BOOK *x=new BOOK; D. BOO
27、K *x=book;6. 假定变量x定义为“int x=5;”,要使rx成为x的引用(别名),rx应定义为( D )。 A. int rx=x; B. int rx=&x; C. int *rx=&x; D. int &rx=x;7. 面向对象方法的多态性是指( )。 A. 一个类可以派生出多个特殊类 B. 一个对象在不同的运行环境中可以有不同的变体 C. 针对一消息,不同的对象可以以适合自身的方式加以响应 D. 一个对象可以是由多个其他对象组合而成的8. 面向对象软件开发中使用的OOD表示( )。 A. 面向对象分析 B. 面向对象设计 C. 面向对象语言 D. 面向对象方法9. 在关键字p
28、rivate后面定义的成员为类的( )成员。 A. 私有 B. 公用 C. 保护 D. 任何10. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。 A. int AA:a() B. int AA:a() C. AA:a() D. AA:int a()二、填空题(每题2分,共20分)1. C+语言的编译单位是扩展名为_ CPP_的_程序_文件。2. C+常数0345对应的十进制值为_。3. 假定x是一个逻辑量,则!x | false的值为_。4. 若a是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为_ cina _。5. 当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的_总和_。6. 若p指向x,则_*p _与x的表示是等价的。7. 已知语句“couts;”的输出是“apple”,则执行语句“coutabc(y)表达式调用一个成员函数,在成员函数中使用的_就代表了类外的p指针。 9. 重载插入运算符或