C语言程序设计A期末模拟试题一
一、单项选择题〔每题2分,共20分〕 1. 由C++目标文件连接而成的可执行文件的缺省扩展名为( )。
A. cpp B. exe C. obj D. lik 2. x>0 && x<=10的相反表达式为〔 〕。 A. x<=0 || x>10 B. x<=0 && x>10 C. x<=0 || x<=10 D. x>0 && x>10 3. 在下面的一维数组定义中,哪一个有语法错误。〔 C 〕
A. int a[]={1,2,3}; B. int a[10]={0}; C. int a[]; D. int a[5]; 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的格式为〔 〕。 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的二维数组a[10][30]共占用____ ____字节的存储空间。
5. 局部变量具有局部生存期,存放在内存的______栈______区中。
6. 语句“cout<
7. 对类中常量成员的初始化是通过在构造函数中给出的______________来实现的。 8. 在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_____________。 9. 假定用户为类AB定义了一个构造函数“AB(int aa):a(aa){}〞,那么定义该类的对象时,有________种定义格式。
10. 在每个成员函数中,隐含的第一个参数的参数名为________。 三、程序填充题〔对程序、函数或类中划有横线的位置,根据题意按标号把适宜的内容填写到程序下面相应标号的后面。每题6分,共24分〕
1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开场,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。 #include cout<<〞 斐波那契数列:\\n〞; f1=0; f2=1; cout< cout< int i,j,k; 实用文档. . for(i=1;i 3. 一个类的定义如下: #include 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=a[0]; for(int i=1; i (1) (2) (3) 4.class A { int a; public: A() {a=0;} ___(1)___{} //定义构造函数,用参数aa初始化数据成员a }; main() { ___(2)___; //定义类A的指针对象p ___(3)__; //用p指向动态对象并初始化为整数5 } (1) (2) (3) 四、理解问答题〔写出前两小题的程序运行结果和指出后两小题的程序〔或函数〕所实现的功能。每题6分,共24分〕 1. #include int a[8]={25,48,32,85,64,18,48,29}; int max,min; max=min=a[0]; for(int i=0; i<8; i++) { if(x>a[i]) max=a[i]; if(xcout<<\"max:\"< for(int i=1,s=0;i<20;i++) { if(i%2==0 || i%3==0) continue; cout<cout< char a[10]; int i=0,rem; do { rem=x%16; x=x/16; if(rem<10) a[i]=48+rem; //’0’字符的ASCII码为48 else a[i]=55+rem; //’A’字符的ASCII码为65 实用文档. . i++; }while(x!=0); while(i>0) cout<i]; 6.H 7. 初始化表 8. 成员函数 9. 1 10. this 4. char *f(char *s){ int n=strlen(s); char* r=new char[n+1]; for(int i=0; i else r[i]=s[i]; r[n]=’\\0’; return r; } s[i]<='z') 三、程序填充题 1. (1) f1+f2 (2) i%5==0 (3) f 2. (1) int n (2) k=j (3) a[k]=x 3. (1) AA::MaxA() (2) x=a[i] (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 int x,max; cin>>x; max=x; for(int i=0;i<9;i++) { cin>>x; if(x>max) max=x; } cout<<\"max:\"< 五、编程题〔每题6分,共12分〕 1. 求出从键盘上输入的10个整数中的最大值,要求输入变量用x表示,存储最大值的变量用max表示。 2. 根据下面类中Reverse 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public: void InitAA(int aa[], int nn, int ms) { if(nn>ms) {cout<<\"Error!\"< //元素值按相反的次序排列,返回指向该对象的指针。 }; C语言程序设计A期末模拟试题一 参考答案 一、 单项选择题 二、 填空题 1. C 2. 空白 3. false(或0) 4. 300 5.栈 实用文档. . 8. 假定AB为一个类,那么执行 “AB r1=r2;〞语句时将自动调用该类的( )。 A. 无参构造函数 B. 带参构造函数 C. 赋值重载函数 D. 拷贝构造函数 9. 双目运算符重载为普通函数时,其参数表中应带有〔 〕个参数。 A. 0 B. 1 C. 2 D. 3 10. 当派生类中有和基类一样名字的成员时,一般 C语言程序设计A期末模拟试题二 来说,〔 〕。 一、单项选择题〔每题2分,共20分〕 A. 将产生二义性 B. 派生类1. 编写C++程序一般需经过的几个步骤依次是的同名成员将覆盖基类的成员 ( )。 C. 是不能允许的 D. 基类的 A. 编译、编辑、连接、调试 同名成员将覆盖派生类的成员 B. 编辑、编译、连接、调试 二、填空题〔每题2分,共20分〕 C. 编译、调试、编辑、连接 1. 行尾使用注释的开场标记符为__________。 D. 编辑、调试、编辑、连接 2. 设enum Printstatus{ready=2,busy,error}; 那么2. 假定一个二维数组的定义语句为“int cout< C. (first+length-1)%MS D. (first+length)%MS 实用文档. int i,x; for(i=0; i . cout <<〞count=〞< int num=0; //给统计变量赋初值 for(int i=0;str[i];i++) if (str[i]>=’a’ && str[i]<=’z’ ||___(1)___ ) ___(2)___; ___(3)___; } } } p->next=L; ___(3)___; i++; (1) (2) (3) 4. 一个利用数组实现栈的类定义如下: const int ARRAY_SIZE=10; (1) (2) class Stack { (3) public: void Init() {top=-1;} //初始化栈为空 2. 从键盘上输入一个正整数,然后把它转换成的 void Push(int newElem); //向栈中压入一个元二进制数的每一位存放到一维数组中,最后输出该二进素 制数。注意二进制数的存放是按照从低位到高位的次序 int Pop(); //从栈顶弹出一个元素 进展的。 bool Empty() { //判栈空 #include 实用文档. . 四、理解问答题〔写出前两小题的程序运行结果和指出后两小题的程序〔或函数〕所实现的功能。每题6分,共24分〕 1. #include int i,p=1,s=0; for(i=1;i void Init(char* aa, int bb) { a=new char[strlen(aa)+1]; strcpy(a,aa); b=bb; } char* Geta() {return a;} int Getb() {return b;} void Output() {cout<CD dx,dy; char a[20]; dx.Init(\"abcdef\ strcpy(a,dx.Geta()); strcat(a,\"xyz\"); dy.Init(a,dx.Getb()+20); dx.Output(); dy.Output(); } 3. #include int i=10,a; while(i>0) { a=rand()%100+10; int j, k=int(sqrt(a)+1e-5); //sqrt(x)为求x的平方根函数 for(j=2; j<=k; j++) if(a%j==0) break; if(j>k) {cout<4. int f8(const char* str1, const char* str2) { int i=0; while(str1[i] && str2[i]) if(str1[i]==str2[i]) i++; else if(str1[i]>str2[i]) return 1; else return -1; if(str1[i]==str2[i]) return 0; else if(str1[i]>str2[i]) return 1; else return -1; } 五、编程题〔每题6分,共12分〕 1. 按照下面函数原型语句编写一个函数,返回二维数组a[m][n]中所有元素的平均值,假定采用变量v存放平均值。 2. 根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public: void InitAA(int aa[], int nn, int ms) { if(nn>ms) {cout<<\"Error!\"< //最大值和最小值,并分别由引用参数x和y带回, 实用文档. . //同时假设n大于0那么返回1,否那么返回0。 C语言程序设计A期末模拟试题二 参考答案 三、 单项选择题 四、 填空题 1. // 2. 3 3. 类型 4. template 5. (*p).name 6. 多继承 7. (first+length)%MS 8. 队尾 9. 正确 10. 赋值 三、程序填充题 1. (1) str[i]>=’A ’&& str[i]<=’Z’ (2) num++ (3) return num 2. (1) x/2 (2) x!=0 (3) cout<3. (1) i 四、理解问答题 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 a[M][N],int m,int n); double Mean(double a[M][N],int m,int n) { int i,j; double v=0.0; for(i=0; i v/=m*n; return v; } 2. int AA::MaxMin(int& x, int& y) { int mx,my; mx=my=a[0]; for(int i=1; i if(n>0) 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的正确语句为〔 B 〕。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 5. 假定有“struct BOOK{char title[40]; float price;}; BOOK *book;〞,那么不正确的语句为〔 A 〕。 A. BOOK *x=new book; B. BOOK x={\"C++ Programming\ 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. 面向对象方法的多态性是指〔 〕。 3”,输入50时得到的输出结果为“2 5 5”,输入37时得 A. 一个类可以派生出多个特殊类 到的输出结果为“37”。 B. 一个对象在不同的运行环境中可以有不 #include 三、程序填充题〔对程序、函数或类中划有横线的位置,根据题意按标号把适宜的内容填写到程序下面相应标号的后面。每题6分,共24分〕 1. 把从键盘上输入的一个大于等于3的整数分解为质因子的乘积。如输入24时得到的输出结果为“2 2 2 (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)___;3. void trans(int x) { AA::a() int count (char str[]); 7. 在一个用数组实现的队列类中,假定数组长度 void main(){ 为MS,队首元素位置为first,队列长度为length,那么 char s1[80]; 队尾〔即最后一个〕元素的位置为( )。 cout <<〞Enter a line:〞; A. length+1 B. cin >>s1;first+lengthabc(y)表达式调用一个成员函数, for(int i=0; ___(3)____; i++) { 在成员函数中使用的________就代表了类外的p指针。 char c=ss[i]; 9. 重载插入运算符<<或抽取运算符>>时,其运算 ss[i]=ss[n–1–i]; 符函数不能被定义为类的________函数。 ss[n–1–i]=c; 10. 在一个或假设干个类的根底上构造一个新类, } 被称为___________。 }