搜索
您的当前位置:首页正文

C语言程序设计A期末模拟试题(1-4)

来源:抵帆知识网
.

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 void main() { int f,f1,f2,i;

cout<<〞 斐波那契数列:\\n〞; f1=0; f2=1;

cout<f=______(1)______; cout<if(_____(2)______) cout<f2=____(3)_______; }

cout<(1) (2) (3) 2. 对数组a[n]按升序进展的选择排序算法 void SelectSort(int a[], ___(1)___) {

int i,j,k;

实用文档.

.

for(i=1;ik=i-1; for(j=i;j(1) (2) (3)

3. 一个类的定义如下: #include class AA { int a[10]; 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=a[0];

for(int i=1; ix) ___(2)___; ___(3)___; }

(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 #include void main() {

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:\"<2. #include void main() {

for(int i=1,s=0;i<20;i++) { if(i%2==0 || i%3==0) continue; cout<cout<3. void trans(int x) {

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='a' && r[i]=s[i]-'a'+'A';

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 void main() {

int x,max; cin>>x; max=x;

for(int i=0;i<9;i++) { cin>>x; if(x>max) max=x; }

cout<<\"max:\"<AA* AA::Reverse() {

五、编程题〔每题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!\"<AA* Reverse(); //对于调用该函数的对象,将其a数组中前n个

//元素值按相反的次序排列,返回指向该对象的指针。 };

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<name等价的表达式但形参的个数或类型不同 是____________。 B. 两个以上的函数取一样的名字和具有一6. 如果一个派生类的基类不止一个,那么这种继样的参数个数,但形参的类型可以不同 承称为____________。 C. 两个以上的函数名字不同,但形参的个数7. 在一个用数组实现的队列类中,假定数组长度或类型一样 为MS,队首元素位置为first,队列长度为length,那么 D. 两个以上的函数取一样的函数名,并且插入一个新元素的位置为__________。 函数的返回类型一样 8. 向一个队列中插入元素就是把该元素放到4. 假定p指向的字符串为〞string〞,假设要输出________元素的后一位置上。 这个字符串的地址值,那么使用〔 D 〕。 9. 假定用户只为类AB定义了一个构造函数 A. cout<<*s; B. cout< 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+length

C. (first+length-1)%MS D. (first+length)%MS

实用文档.

int i,x;

for(i=0; ireturn this; }

.

cout <<〞count=〞<int count(char str[]){

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 if(top==-1) return true;else return false;} void main() int Depth() {return top+1;} //返回栈的深度 { void Print(); int x; //按照后进先出原那么依次输出栈中每个 cout<<\"输入一个整数:\"; 元素,直到栈空为止 cin>>x; private: int a[20],k=0,r; int elem[ARRAY_SIZE]; //用于保存堆栈元素的数 do { 组 r=x%2; int top; //指明栈顶元素位置的指 a[k++]=r; 针 x=___(1)___; }; } while(___(2)___); for(--k;k>=0;k--) ___(3)___; 该类的Pop和Print函数的实现分别如下: cout<cout<<\"栈空!\"<(1) (2) exit(1); // 中止运行 (3) } 3. 假定有定义为“struct NODE{int data; NODE* return ___(2)___; next;};〞,下面算法根据table数组中的n个元素建立一} 个表头指针为L的链表,链表中结点值的顺序与数组元 素值的顺序正好相反。 void Stack::Print() { void f6(NODE*& L, int table[], int n) while(!Empty()) { cout<<___(3)___ <<' '; L=NULL; } if(n<=0) return; int i=0; (1) (2) NODE* p; (3) while(___(1)___) { p=new NODE; p->data=___(2)___;

实用文档.

.

四、理解问答题〔写出前两小题的程序运行结果和指出后两小题的程序〔或函数〕所实现的功能。每题6分,共24分〕

1. #include const int N=5; void main() {

int i,p=1,s=0; for(i=1;i2.#include #include class CD { char* a; int b; public:

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 #include #include void main() {

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!\"<int MaxMin(int& x, int& y); //从数组a的前n个元素中求出

//最大值和最小值,并分别由引用参数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) i4. (1) int Stack::Pop() (2) elem[top--] (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 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; imx) mx=a[i]; if(a[i]x=mx; y=my;

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 同的变体 void main() C. 针对一消息,不同的对象可以以适合自身 { 的方式加以响应 int x; D. 一个对象可以是由多个其他对象组合而 cout<<\"请输入一个整数,假设小于3那成的 么重输:\"; 8. 面向对象软件开发中使用的OOD表示〔 〕。 do cin>>x; while(___(1)___); A. 面向对象分析 B. 面向对象设计 int i=2; C. 面向对象语言 D. 面向对象方法 do{ 9. 在关键字private后面定义的成员为类的〔 〕 while(___(2)___) { 成员。 cout< 3. 假定x是一个逻辑量,那么!x || false的值为 #include __________。 ___(1)___; 4. 假设a是一个字符数组,那么从键盘上向该数 void main( ) { 组输入一个字符串的表达式为____ cin>>a ____。 char s[80]; 5. 当定义一个构造体变量时,系统分配给该变量 cin>>s; 的内存大小等于各成员所需内存大小的____总和___。 ___(2)___; 6. 假设p指向x,那么____*p ____与x的表示是 cout<<〞逆序后的字符串:〞<abc(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. 在一个或假设干个类的根底上构造一个新类, } 被称为___________。 }

三、程序填充题〔对程序、函数或类中划有横线的位置,根据题意按标号把适宜的内容填写到程序下面相应标号的后面。每题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)___;

for(int i=0; i //元素值依次累加到s中

cout<<\"s=\"<(1) (2) (3)

四、理解问答题〔写出前两小题的程序运行结果和指出后两小题的程序〔或函数〕所实现的功能。每题6分,共24分〕

1. #include void main() {

int a=2,b=5,c=0;

if(a+b>10) c=a*b; else c=3*a+b;

if(c<=20) cout<a=a+b; b=a+b;c+=a+b;

(1) (2) (3) cout<<\"a,b,c=\"< } #include 2. #include class A { #include int *a; int n; int MaxLen; void main() { public: char A(): a(0), n(0), MaxLen(0) {} a[5][10]={\"student\ A(int *aa, int nn, int MM) { char s1[10], s2[10]; n=nn; strcpy(s1,a[0]); strcpy(s2,a[0]); MaxLen=MM; for(int i=1;i<5;i++) { if(n>MaxLen) exit(1); if(strcmp(a[i], s1)>0) strcpy(s1,a[i]); ___(1)___; //由a指向长度为MaxLen的动 if(strcmp(a[i], s2)<0) strcpy(s2,a[i]); 态数组 } for(int i=0; i int GetValue(int i) ___(2)___ //函数体返回a[i]的 #include 值 void main() }; { void main() int x,y; { cin>>x; int b[10]={1,2,3,4,5,6,7,8,9,10}; y=int(sqrt(x)); //sqrt(x)为求x的算术平方 A r(b,10,10); 根 int i,s=0; for(int i=1;i<=y;i++) for(i=0; i<10; i++); ___(3)___ //把r对象的a if(x%i==0) cout<<数据成员中的每个

实用文档.

.

〞x=〞<4. IntNode* FindMax(IntNode *f) {

if(!f) return NULL; IntNode *p=f; f=f->next; while(f) { if(f->data>p->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作为循环变量、累乘变量和累加变量的标识符。

C语言程序设计A期末模拟试题三

参考答案

五、 单项选择题

六、 填空题

1. cpp、 程序 2. 229 总和 6. *p 7. ple 8. this 生〕

2. 根据下面类中Reverse1函数成员的原型和注释写出它的类外定义。 class AA { int* a; int n; int MS; public:

void InitAA(int aa[], int nn, int ms) { if(nn>ms) {cout<<\"Error!\"<AA* Reverse1(); //通过动态存储分配得到一个对象,并动态分配

//a[MS]数组空间,要求该对象中的n和MS的值与*this中的

//对应成员的值一样,数组元素的值是按照*this中数组元

//素的相反次序排列得到的,要求该函数返回动态对象的地址。 };

2.

worker cadre

3. 把从键盘上输入的一个整数x分解为所有可能的每两个因子之积。

4. 实现strcat函数的功能,把str2所指字符串连接到str1所指字符串的后面,并返回str1指针。

五、编程题

3. !x 4. cin>>a 5.

10. 继承〔派

9. 成员

三、程序填充题 1. #include 1. (1) x<3 (或x<=2) (2) x%i==0 (3) i++ void main() 2. (1) void fun(char ss[]) (2) fun(s) (3) ifor(i=1;i<=10;i++) {p*=3; s+=p;}

四、理解问答题 cout<a,b,c=7,12,30

实用文档.

.

2.

AA* AA::Reverse1() {

AA *px=new AA;

px->n=n; px->MS=MS; px->a=new int[MS]; for(int i=0; ia[n-1-i]=a[i]; }

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〞 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 a[10], *pa=a;〞,要将12.35赋值给a中的下标为5的元素,不正确的语句是〔 D 〕。

A. pa[5]=12.35; B. a[5]=12.35;

C. *(pa+5)=12.35; D. *(a[0]+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&

10. 类的析构函数可以带有( )个参数。 A. 0 B. 1 C. 2 D. 任意 二、填空题〔每题2分,共20分〕 1. 用于从键盘上为变量输入值的标准输入流对象是________。 2. 程序中的预处理命令是指以______字符开头的命令。 3. 常数100和的数据类型分别为__________和__________。 4. 用于存储一个长度为n的字符串的字符数组的长度至少为____ n+1____。 5. 假定a是一个一维数组,那么a[i]对应的存储地址〔以字节为单位〕为_ a+i*sizeof(a[i]) _。 6. 基类和派生类的关系称为__________。 7. 类定义中,既包含数据成员,也包含________成员。 8. 在一个用数组实现的队列类中,包含有两个数据成员,一个指明队列长度,另一个指明__________元素的位置。 9. 当一个队列为空时,不能对其做________元素的操作。

10. 派生类的成员函数可以直接访问基类的 成员,不能直接访问基类的 ______成员。

三、程序填充题〔对程序、函数或类中划有横线的位置,根据题意按标号把适宜的内容填写到程序下面相应标号的后面。每题6分,共24分〕

1. 对数组a[n]按升序进展的插入排序算法

实用文档.

.

void InsertSort(___(1)___, int n) {

int i,j,x;

for(i=1;i=0;j--) //为x顺序向前寻找适宜的插入位置 if(x(1) (2) (3) 2. 假定有定义为“struct NODE{int data; NODE* next;};〞,下面算法根据table数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序一样。

void f5(NODE*& L, int table[], int n) {

if(n<=0) {L=NULL; return;}

L=new NODE; //生成附加的头结点 int i=0;

NODE* p=L; while(___(1)___) { p=p->next=___(2)___; p->data=___(3)___; i++; }

p->next=NULL; //把最后一个结点的指针域置空 p=L;

L=L->next; //使L指向链表的第一个带值的结点 delete p; }

~ ARRAY(){delete []v;} int size(){ return s;} int& operator()(int n); }; ___(1)___ operator()(int n) { // ()的运算符函数定义

if(___(2)___) {cerr<<\"下标越界!\"; exit(1);} return ___(3)___; }

(1) (2) (3)

4. 在下面一段类的定义中,需要填充的函数由注释内容给出了功能。

class Point //定义坐标点类 {

public:

int x,y; //点的横坐标和纵坐标 Point(){x=0;y=0;}

Point(int x0,int y0) {x=x0; y=y0;} int X(){return x;} int Y(){return y;} void

PrintP(){cout<<\"Point:(\"<class Line: public Point //利用坐标点类定义直线类 {

private:

class Point pt1,pt2; //直线的两个端点 public:

Line(Point pts, Point pte); //构造函数,分别用参数初始化对应的端点

double Dx(){return pt2.x-pt1.x;} double Dy(){return pt2.y-pt1.y;}

double Length(){ //计算直线的长度

(1) (2) return sqrt(___(1)___); (3) }; 3. 下面是一维数组类ARRAY的定义,ARRAY void PrintL(); //输出直线的两个端点和直线长与普通一维数组区别是:(a)用()而不是[]进展下标访问,度 (2)下标从1而不是从0开场,(c)要对下标是否越界进展}; 检查。 class ARRAY{ Line::Line(Point pts, Point pte) ___(2)___ int *v; //指向存放数组数据的空间 void Line::PrintL() int s; //数组大小 { public: cout<<\"1st \"; ARRAY(int a[], int n); pt1.PrintP();

实用文档.

.

if(n==1) x=1;

else x=s1(n-1)+n*n; return x; }

4. char* f8(char* str1, const char* str2)

(1) (2) { (3) int i=0,j=0; 四、理解问答题〔写出前两小题的程序运行结果和指 while(str1[i]) i++; 出后两小题的程序〔或函数〕所实现的功能。每题6分, while(str2[j]) str1[i++]=str2[j++] ; cout<<\"2nd \"; pt2.PrintP();

cout<<\"The Length of Line: \"<<___(3)___ <共24分〕 1. #include void main() { int x=5; switch(2*x-3) { case 4: cout< class A { int *a; public: A(int x=0):a(new int(x)){} ~A() {delete a;} int getA() {return *a;} void setA(int x) {*a=x;} }; void main() { A x1,x2(3); A *p=&x2; p->setA(x2.getA()+5); x1.setA(15+x1.getA()); cout<七、 单项选择题

str1[i]='\\0'; return str1; } 五、编程题〔每题6分,共12分〕 1. 编一程序求出满足不等式1+1/2+1/3+...+1/n≥5的最小n值。 2. 根据下面类中拷贝构造函数的原型写出它的类外定义。 class Array { int *a; //指向动态分配的整型数组空间 int n; //记录数组长度 public: Array(int aa[], int nn); //构造函数,利用aa数组长度nn初始化n, //利用aa数组初始化a所指向的数组空间 Array(Array& aa); //拷贝构造函数 Array& Give(Array& aa); //实现aa赋值给*this的功能并返回*this Array Uion(Array& aa); //实现*this和aa中的数组合并的 //功能,把合并结果存入临时对象并返回 int Lenth() {return n;} //返回数组长度 void Print() { //输出数组 for(int i=0; i八、 填空题实用文档.

.

1. cin 2. # 3. int、 double 5. a+i*sizeof(a[i]) 6. 继承 7. 函数 8. 队首 10. 公有和保护、私有

4. n+1

9. 删除

n=aa.n;

a=new int[n];

for(int i=0; i三、程序填充题 1. (1) int a[] (或int* a) (2) a[j+1]=a[j] (3) break

2. (1) is (3) v[n-1] (或*(v+n-1))

4. (1) Dx()*Dx()+Dy()*Dy()

(2) {pt1=pts;pt2=pte;} (或 :pt1(pts),pt2(pte){}) (3) Length()

四、理解问答题 1.

11 14 switch end. 2. 15 8

3. 求出1+22+32+...+n2的值。 4. 实现strcmp函数的功能,比较两个字符串str1和str2的大小,假设str1较大那么返回1,假设str2较大那么返回-1,假设两者相等那么返回0。

五、编程题

1. void main() {

int i=0; double s=0;

while(s<5) s+=double(1)/++i; cout<<\"n=\"<#include void main() {

int i; double s=0;

for(i=1; s<5; i++) s+=1.0/i; cout<<\"n=\"<//注意:此i-1的值为所求的n值 }

2.

Array::Array(Array& aa) {

如有侵权请联系告知删除,感谢你们的配合!

实用文档.

因篇幅问题不能全部显示,请点此查看更多更全内容

Top