2022年C语言程序设计A期末模拟试题 .pdf
《2022年C语言程序设计A期末模拟试题 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言程序设计A期末模拟试题 .pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言程序设计A期末模拟试题 (1-4)1 / 14 C 语言程序设计A期末模拟试题一一、单项选择题(每小题2 分,共 20 分)1. 由 C+目标文件连接而成的可执行文件的缺省扩展名为 ( )。 A. cpp B. exe C. obj D. lik 2. x0 & x=10 的相反表达式为() 。A. x10 B. x10 C. x=0 | x0 & x10 3. 在下面的一维数组定义中,哪一个有语法错误。( C )A. int a=1,2,3; B. int a10=0; C. int a; D. int a5; 4. 假定 p 是具有 double 类型的指针变量,则表达式+p 使 p
2、 的值(以字节为单位)增加( C ) 。A. 1 B. 4 C. sizeof(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. d
3、elete p; 7. 假定 AA 为一个类, a 为该类公有的数据成员,px为指向该类对象的一个指针,则访问px 所指对象中数据成员 a 的格式为() 。 A. px(a) B. pxa C. px-a D. px.a 8. 栈具有()的操作特性。 A. 先进先出 B. 先进后出 C. 进出无序 D. 进出任意9. 对于任一个类,用户所能定义的构造函数的个数至多为 ( )。 A. 0 B. 1 C. 2 D. 任意个10.下 列 对 派 生 类 的 描 述 中 错 误 的 说 法 是 :() 。 A. 派生类至少有一个基类 B. 派生类可作为另一个派生类的基类 C. 派生类除了包含它直接定义
4、的成员外,还包含其基类的成员 D. 派生类所继承的基类成员的访问权限保持不变二、填空题(每题2 分,共 20 分)1.C+ 语言是在 _语言的基础上发展起来的。2.当执行 cin 语句时,从键盘上输入每个数据后必须接着输入一个_符,然后才能继续输入下一个数据。3.假定 x 是一个逻辑量,则x & false的值为_。4.元素类型为char 的二维数组a1030共占用_ _ 字节的存储空间。5.局 部 变 量 具 有局 部 生 存期 , 存 放 在 内存 的_栈_区中。6.已知语句“ coutp; ”的输出是“ Hello!” ,则语句“ cout*p; ”输出的是 _。7.对类中常量成员的初始
5、化是通过在构造函数中给出的 _来实现的。8.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_。9.假定用户为类AB定义了一个构造函数“AB(int aa):a(aa)” ,则定义该类的对象时,有_种定义格式。10.在每个成员函数中,隐含的第一个参数的参数名为 _。三、程序填充题 (对程序、 函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6 分,共 24 分)1. 斐波那契数列的第1 和第 2 个数分别为0 和 1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20 个数,要求每行输出5 个数。#include v
6、oid 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)_; coutsetw(6)f; if(_(2)_) coutendl; f1=f2; f2=_(3)_; coutendl; (1) (2) (3) 2. 对数组 an 按升序进行的选择排序算法 void SelectSort(int a, _(1)_) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
7、- - - - - 第 1 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)2 / 14 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. 已知一个类的定义如下:#include class AA int a10; int n; public: void SetA(int aa, int nn); /用数组 aa 初始化数据成员a, /用 nn 初始化数据成
8、员 n int 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; public: A() a=0; _(1)_
9、/定义构造函数,用参数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:maxendl; co
10、utmin: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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)3 / 14 r
11、em=x%16; x=x/16; if(rem0) coutai; coutendl; 4. char *f(char *s) int n=strlen(s); char* r=new charn+1; for(int i=0; i=a & sims) 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. B
12、 2. A 3. C 4.B 5.C 6.A 7.C 8.B 9.D 10.D 二、填空题1. C 2. 空白3. false(或 0) 4. 300 5. 栈6.H 7. 初始化表8. 成员函数9. 1 10. this 三、程序填充题1. (1) f1+f2 (2) i%5=0 (3) f 2. (1) int n (2) k=j (3) ak=x 3. (1) AA:MaxA() (2) x=ai (3) return x 4. (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、13 37 3. 此函数用于把十进制整数x 转换为十六进制数字串输出4. 根据参数 s 所指向的字符串,生成一个由r 所指向的新字符串并返回,该字符串使s 字符串中的小写字母均变为大写。五、编程题1. #include void main() int x,max; cinx; max=x; for(int i=0;ix; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)4 / 14 if
14、(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;” ,则元素a2
15、1的值为( A ) 。 A. 0 B. 4 C. 8 D. 6 3.函数重载是指( A ) 。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同4.假定 p 指向的字符串为” string ”,若要输出这个字符串的地址值,则使用( D ) 。 A. cout*s; B. couts; C. cout&s; D. cout(void *)s; 5.在类作用域中能够通过直接使用该类的()成员名进
16、行访问。 A. 私 有B. 公 用 C. 保 护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; ”语句时将自动调用该类的(
17、)。 A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数9.双目运算符重载为普通函数时,其参数表中应带有()个参数。 A. 0 B. 1 C. 2 D. 3 10.当派生类中有和基类一样名字的成员时,一般来说, () 。 A. 将产生二义性 B. 派生类的同名成员将覆盖基类的成员 C. 是不能允许的 D. 基类的同名成员将覆盖派生类的成员二、填空题(每题2 分,共 20 分)1.行尾使用注释的开始标记符为_。2.设 enum Printstatusready=2,busy,error; 则 coutname 等价的表达式是_。6.如果一个派生类的基类不止一个,则这种
18、继承称为 _。7.在一个用数组实现的队列类中,假定数组长度为 MS ,队首元素位置为first,队列长度为length ,则插入一个新元素的位置为_。8.向一个队列中插入元素就是把该元素放到_元素的后一位置上。9.假定用户只为类AB 定义了一个构造函数“AB():a(0),b(0)” ,则定义该类对象x 的定义语句“AB x; ”是 _( 正确 / 错误 ) 的。10.除了 _运算符外,其他重载的运算符都可以被派生类继承。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6 分,共 24 分)名师资料总结 - - -精品资料欢迎下载
19、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)5 / 14 1. 统计字符串中英文字母个数的程序。 #include int count (char str); void main() char s180; cout s1; cout ”count=”count(s1)=a & stri=z |_(1)_ ) _(2)_; _(3)_; (1) (2) (3) 2. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存
20、放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。 #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) (3) 3. 假定有定义为 “struct NODEint data; NODE* next;” ,下面算法根据table数组中的 n 个元素建立一个表头指针为L 的链表,链表中结点值的顺序与数组元素值的顺序正好相反。void f6(NODE*& L,
21、 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 newElem); /向栈中压入一个元素int Pop(); /从栈顶弹出一个元素bool Empty() /判栈空 if(top=-1) return true;else return false; int Depth() ret
22、urn top+1; /返回栈的深度void Print(); /按照后进先出原则依次输出栈中每个元素,直到栈空为止private: int elemARRAY_SIZE; /用于保存堆栈元素的数组int top; /指明栈顶元素位置的指针; 该类的 Pop和 Print函数的实现分别如下:_(1)_ if(top=-1) cout 栈空 !endl; exit(1); /中止运行 return _(2)_; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 -
23、- - - - - - - - C语言程序设计A期末模拟试题 (1-4)6 / 14void 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
24、 class CD char* a; int b; public: void 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
25、(); dy.Output(); 3. #include #include #include 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. 按照下面函数原
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言程序设计A期末模拟试题 2022 语言程序设计 期末 模拟 试题
限制150内