版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计A期末模拟试题(1-4) 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
2、. 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. delete p;7. 假定AA为一个类,a为该类公有的数据成员,p
3、x为指向该类对象的一个指针,则访问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.
4、C+语言是在_语言的基础上发展起来的。2. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个_符,然后才能继续输入下一个数据。3. 假定x是一个逻辑量,则x & false的值为_。4. 元素类型为char的二维数组a1030共占用_ _字节的存储空间。5. 局部变量具有局部生存期,存放在内存的_栈_区中。6. 已知语句“coutp;”的输出是“Hello!”,则语句“cout*p;”输出的是_。7. 对类中常量成员的初始化是通过在构造函数中给出的_来实现的。8. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_。9. 假定用户为类AB定义了一个构造函数“AB(
5、int aa):a(aa)”,则定义该类的对象时,有_种定义格式。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+
6、) f=_(1)_; coutsetw(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
7、:void SetA(int 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)4clas
8、s A int a; public: 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) m
9、in=ai; coutmax: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
10、 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. 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
11、 (2) i%5=0 (3) 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
12、=x; for(int i=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;”,则元素a
13、21的值为( A )。 A. 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. 在类作用域中能够通过直接使用该类的( )成员名进行访问。
14、 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;”语句时将自动调用该类的( )。 A. 无参构造
15、函数 B. 带参构造函数 C. 赋值重载函数 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
17、str); void main() 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)_; coute
18、ndl; (1) (2) (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; /初始化栈为空 voi
19、d Push(int newElem); /向栈中压入一个元素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;ex
20、it(1); /中止运行return _(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
21、 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();dy.Output(); 3. #include #i
22、nclude #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. 按照下面函数原型语句编写一个函数,返回二维数组amn中所有元素的平均值,假定采用变量v
23、存放平均值。 2. 根据下面类中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()
24、(2) elemtop- (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;
25、 i+) for(j=0; 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. 其中一个为
26、假3. 函数调用不可以( D )。 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=ne
27、w BOOK; D. BOOK *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.
28、面向对象方法9. 在关键字private后面定义的成员为类的( )成员。 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是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为_
29、cina _。5. 当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的_总和_。6. 若p指向x,则_*p _与x的表示是等价的。7. 已知语句“couts;”的输出是“apple”,则执行语句“coutabc(y)表达式调用一个成员函数,在成员函数中使用的_就代表了类外的p指针。 9. 重载插入运算符时,其运算符函数不能被定义为类的_函数。10. 在一个或若干个类的基础上构造一个新类,被称为_。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6分,共24分) 1. 把从键盘上输入的一个大于等于3的整数分解
30、为质因子的乘积。如输入24时得到的输出结果为“2 2 2 3”,输入50时得到的输出结果为“2 5 5”,输入37时得到的输出结果为“37”。 #include void main() int x; coutx; while(_(1)_); int i=2; do while(_(2)_) couti ; x/=i; _(3)_; while(ix); if(x!=1) coutx; coutendl; (1) (2) (3) 2. 主函数调用一个fun函数将字符串逆序。 #include #include _(1)_; void main( ) char s80; cins; _(2)_;
31、cout”逆序后的字符串:”sendl ; void fun(char ss) int n=strlen(ss); for(int i=0; _(3)_; i+) char c=ssi; ssi=ssn1i; ssn1i=c; (1) (2) (3) 3. 已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。class ARRAY int *v; /指向存放数组数据的空间int s; /数组大小 public: ARRAY(int a, int n); ARRAY()delete v; int size
32、() return s; int& operator(int n); ;_(1)_ ARRAY(int a, int n)if(n=0) v=NULL;s=0;return;s=n;v=_(2)_;for(int i=0; in; i+) _(3)_;(1) (2) (3) 4. #include #include class A int *a; int n; int MaxLen; public: A(): a(0), n(0), MaxLen(0) A(int *aa, int nn, int MM) n=nn; MaxLen=MM; if(nMaxLen) exit(1); _(1)_;
33、 /由a指向长度为MaxLen的动态数组 for(int i=0; in; i+) ai=aai; A() delete a; int GetValue(int i) _(2)_ /函数体返回ai的值 ; void main() int b10=1,2,3,4,5,6,7,8,9,10; A r(b,10,10); int i,s=0; for(i=0; i10; i+); _(3)_ /把r对象的a数据成员中的每个 /元素值依次累加到s中 couts=sendl; (1) (2) (3)四、理解问答题(写出前两小题的程序运行结果和指出后两小题的程序(或函数)所实现的功能。每小题6分,共24分) 1. #include void main() int a=2,b=5,c=0; if(a+b10) c=a*b; else c=3*a+b; if(c=20) coutc*c; else cout4+c-5; coutendl; a=a+b; b=a+b;c+=a+b; couta,b,c=a,b,cendl; 2. #include #include void
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年修订版:双方官方分手协议书(2024版)2篇
- 商业装修简易施工合同
- 茶楼木地板翻新施工合同
- 船舶制造钢架棚施工合同
- 跑步教练招聘协议模板
- 医疗聘用合同医疗志愿者招募
- 剧院建筑真石漆涂装协议
- 桥梁建设彩钢工程协议
- 2024年办公室装修工程保密合同标准文本版
- 茶园租赁合同:茶文化研究与发展
- 2024新版(北京版)三年级英语上册单词带音标
- 幼教培训课件:《幼儿园如何有效组织幼儿户外自主游戏》
- 《勿忘国耻.强国有我》国家公祭日主题班会课件
- 古诗词考级方案
- 《清明上河图》-完整版PPT
- (日文文书模板范例)请求书-请求书
- 奇瑞汽车转向系统碰撞建模指南V
- 防孤岛测试报告
- 一种用滚轮装置进行桥架电缆敷设的方法
- 治理校园噪声五年级综合实践上册课件
- GWJ 009-2016 无线电管理频率数据库结构技术规范
评论
0/150
提交评论