2022年C语言程序设计A期末模拟试题 .pdf
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 的值(以字节为单位)增加( 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. delete 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. 派生类除了包含它直接定义的成员外,还包含其基类的成员 D. 派生类所继承的基类成员的访问权限保持不变二、填空题(每题2 分,共 20 分)1.C+ 语言是在 _语言的基础上发展起来的。2.当执行 cin 语句时,从键盘上输入每个数据后必须接着输入一个_符,然后才能继续输入下一个数据。3.假定 x 是一个逻辑量,则x & false的值为_。4.元素类型为char 的二维数组a1030共占用_ _ 字节的存储空间。5.局 部 变 量 具 有局 部 生 存期 , 存 放 在 内存 的_栈_区中。6.已知语句“ coutp; ”的输出是“ Hello!” ,则语句“ cout*p; ”输出的是 _。7.对类中常量成员的初始化是通过在构造函数中给出的 _来实现的。8.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_。9.假定用户为类AB定义了一个构造函数“AB(int aa):a(aa)” ,则定义该类的对象时,有_种定义格式。10.在每个成员函数中,隐含的第一个参数的参数名为 _。三、程序填充题 (对程序、 函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6 分,共 24 分)1. 斐波那契数列的第1 和第 2 个数分别为0 和 1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20 个数,要求每行输出5 个数。#include void 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)_) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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 初始化数据成员 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)_ /定义构造函数,用参数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; 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 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)3 / 14 rem=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 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 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(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. 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.在类作用域中能够通过直接使用该类的()成员名进行访问。 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. 无参构造函数 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.如果一个派生类的基类不止一个,则这种继承称为 _。7.在一个用数组实现的队列类中,假定数组长度为 MS ,队首元素位置为first,队列长度为length ,则插入一个新元素的位置为_。8.向一个队列中插入元素就是把该元素放到_元素的后一位置上。9.假定用户只为类AB 定义了一个构造函数“AB():a(0),b(0)” ,则定义该类对象x 的定义语句“AB x; ”是 _( 正确 / 错误 ) 的。10.除了 _运算符外,其他重载的运算符都可以被派生类继承。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6 分,共 24 分)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 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. 从键盘上输入一个正整数,然后把它转换成的二进制数的每一位存放到一维数组中,最后输出该二进制数。注意二进制数的存放是按照从低位到高位的次序进行的。 #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, 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() return top+1; /返回栈的深度void Print(); /按照后进先出原则依次输出栈中每个元素,直到栈空为止private: int elemARRAY_SIZE; /用于保存堆栈元素的数组int top; /指明栈顶元素位置的指针; 该类的 Pop和 Print函数的实现分别如下:_(1)_ if(top=-1) cout 栈空 !endl; exit(1); /中止运行 return _(2)_; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 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 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(); 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. 按照下面函数原型语句编写一个函数,返回二维数组amn中所有元素的平均值,假定采用变量v存放平均值。 2. 根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。class AA int* a; int n; int MS; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)7 / 14public: 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) coutak 3. (1) in (2) tablei (3) L=p 4. (1) int Stack:Pop() (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; 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. 其中一个为假3.函数调用不可以( D ) 。 A. 出现在一个表达式中 B. 出现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参4.假定变量 m定义为“ int m=7;” ,则定义变量p名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)8 / 14的正确语句为( 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. 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. 面向对象方法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 是一个字符数组,则从键盘上向该数组输入一个字符串的表达式为_ cina _。5.当定义一个结构体变量时,系统分配给该变量的内存大小等于各成员所需内存大小的_总和 _。6.若 p 指向 x,则 _*p _ 与 x 的表示是等价的。7.已知语句“ couts; ”的输出是“apple ” ,则执行语句“ coutabc(y)表达式调用一个成员函数,在成员函数中使用的_就代表了类外的p 指针。9.重载插入运算符时,其运算符函数不能被定义为类的_函数。10.在一个或若干个类的基础上构造一个新类,被称为 _。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6 分,共 24 分) 1. 把从键盘上输入的一个大于等于3 的整数分解为质因子的乘积。如输入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)_; cout”逆序后的字符串: ”sendl ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)9 / 14 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() 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)_; /由 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 main() char a510=student,worker,soldier,cadre,peasant; char s110, s210; strcpy(s1,a0); strcpy(s2,a0); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)10 / 14 for(int i=1;i0) strcpy(s1,ai); if(strcmp(ai, s2)0) strcpy(s2,ai); couts1 s2endl; 3. #include #include void main() int x,y; cinx; y=int(sqrt(x); /sqrt(x)为求 x 的算术平方根 for(int i=1;i=y;i+) if(x%i=0) cout ”x=”i * x/inext; while(f) if(f-datap-data) p=f; f=f-next; return p; 假定 IntNode 的类型定义为: struct IntNode int data; /结点值域 IntNode* next; /结点指针域 ; 五、编程题(每小题6 分,共 12 分)1. 计算1+3+32+.+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。 2. 根据下面类中Reverse1 函数成员的原型和注释写出它的类外定义。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; ia 5. 总和6. *p 7. ple 8. this 9. 成员10. 继承(派生)三、程序填充题1. (1) x3 (或 x=2) (2) x%i=0 (3) i+ 2. (1) void fun(char ss) (2) fun(s) (3) in/2 3. (1) ARRAY: (2) new intn (3) vi=ai 4. (1) a=new intMaxLen (2) return ai; (3) s+=r.GetValue(i) 四、理解问答题名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)11 / 141. 121 a,b,c=7,12,30 2. worker cadre 3. 把从键盘上输入的一个整数x 分解为所有可能的每两个因子之积。4. 实现 strcat函数的功能,把str2所指字符串连接到 str1所指字符串的后面,并返回str1指针。五、编程题1. #include void main() int i; /用 i 作为循环变量 int p=1; /用 p 作为累乘变量 int s=1; /用 s 作为累加循环变量 for(i=1;i=10;i+) p*=3; s+=p; coutsn=n; px-MS=MS; px-a=new intMS; for(int i=0; ian-1-i=ai; return px; C语言程序设计A期末模拟试题四一、单项选择题(每小题2 分,共 20 分)1.可用作C+语言用户标识符的一组标识符是( )。A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 2a DO sizeof 2.存 储 以 下 数 据 , 占 用 存 储 字 节 最 多 的 是() 。 A. 0 B. 0 C. “0” D. 0.0 3.以下说法中正确的是( B ) 。 A. C+程序总是从第一个定义的函数开始执行 B. C+程序总是从main 函数开始执行 C. C+函数必须有返回值,否则不能使用函数 D. C+程序中有调用关系的所有函数必须放在同一个程序文件中4.以下正确的说法是( B ) 。 A. 用户调用标准库函数前,必须重新定义 B. 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C. 系统不允许用户重新定义标准库函数 D. 用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源文件中5.变 量s的 定 义 为 “ char *s= ”Hello world! ”; ” , 要使变量 p 指向 s 所指向的同一个字符串,则应选取( A ) 。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 6.假定变量a 和pa 定义为“double a10, *pa=a; ” ,要将12.35 赋值给 a 中的下标为5 的元素,不正确的语句是( D ) 。 A. pa5=12.35; B. a5=12.35; C. *(pa+5)=12.35; D. *(a0+5)=12.35; 7.关于消息,下列说法中不正确的是() 。 A. 发送消息的对象请求服务,接受消息的对象提供服务 B. 消息的发送者必须了解消息的接收者如何相应消息 C. 在 C+中,消息的发送具体体现为对接收消息的对象的某个函数的调用 D. 每个对象只能接收某些特定格式的消息8.软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的() 。 A. 可维护性 B. 可复用性 C. 兼容性 D. 正确性9.假定 AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为() 。 A. abc B. *this C. this D. this& 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - C语言程序设计A期末模拟试题 (1-4)12 / 1410.类的析构函数可以带有( )个参数。 A. 0 B. 1 C. 2 D. 任意二、填空题(每题2 分,共 20 分)1.用于从键盘上为变量输入值的标准输入流对象是 _。2.程序中的预处理命令是指以_字符开头的命令。3.常 数100和3.62的 数 据 类 型 分 别 为_和_。4.用于存储一个长度为n的字符串的字符数组的长度至少为 _ n+1_ 。5.假定 a 是一个一维数组, 则 ai对应的存储地址(以字节为单位)为_ a+i*sizeof(ai) _。6.基类和派生类的关系称为_。7.类定义中,既包含数据成员,也包含_成员。8.在一个用数组实现的队列类中,包含有两个数据成员,一个指明队列长度,另一个指明_元素的位置。9.当一个队列为空时,不能对其做_元素的操作。10.派 生 类 的 成 员 函 数 可 以 直 接 访 问 基 类 的成员,不能直接访问基类的 _ 成员。三、程序填充题(对程序、函数或类中划有横线的位置,根据题意按标号把合适的内容填写到程序下面相应标号的后面。每小题6 分,共 24 分) 1. 对数组 an 按升序进行的插入排序算法 void InsertSort(_(1)_, int n) int i,j,x; for(i=1;i=0;j-) /为 x 顺序向前寻找合适的插入位置 if(xaj) _(2)_; else _(3)_; aj+1=x; (1) (2) (3) 2. 假定有定义为 “struct NODEint data; NODE* next;” ,下面算法根据table数组中的 n 个元素建立一个表头指针为L 的链表,链表中结点值的顺序与数组元素值的顺序相同。void f5(NODE*& L, int table, int n) if(nnext=_(2)_; p-data=_(3)_; i+; p