面向对象程序设计课程作业及答案

  • 格式:doc
  • 大小:82.00 KB
  • 文档页数:16

下载文档原格式

  / 16
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象程序设计》课程作业及答案

中央电大理工部计算机教研室

作业1:

是非题

1. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。1. 错

2. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。4. 对

填空题

下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素的和,并输出结果。函数sum计算数组元素之和。填充程序中不完整的部分。

________A__________

int sum(int [],int);

void main()

{

int ia[5] = {2,3,6,8,10};

B ;

sumOfArray = sum(ia,5);

cout << "Sum of array:" << sumOfArray << endl;

}

int sum(int array[],int len)

{

int iSum = 0;

for(int i = 0; C ; D )

E ;

return iSum;

}

答案:

A #include

B int sumOfArray;

C i < len

D i++

E iSum += array[i];

阅读理解题

写出下列程序的运行结果:

//file1.cpp

static int i = 20;

int x;

static int g(int p)

{

return i + p;

}

void f(int v)

{

x=g(v);

}

//file2.cpp

#include

extern int x;

void f(int);

void main()

{

int i=5;

f(i);

cout << x;

}

回答以下问题:

1. 程序的运行结果是什么样的?

2. 为什么文件file2.cpp中要包含头文件

3. 在函数main()中是否可以直接调用函数g()?为什么?

4. 如果把文件file1.cpp中的两个函数定义的位置换一下,程序是否正确?为什么?

5. 文件file1.cpp和file2.cpp中的变量i的作用域分别是怎样的?在程序中直接标出两个变量各自的作用域。

答案:

1. 程序的运行结果:25

因为程序中需要利用cout对象进行输出,而cout是在C++标准I/O库iostream中定义的类ostream的一个对象。

2 在函数main()中不可以直接调用函数g(),因为g()是静态函数,只在它所在的文件内

可见。

3 如果把文件file1.cpp中的两个函数定义的位置换一下,程序不正确,因为C++规定所

有使用的变量和函数需要先声明,后使用。在函数f中用到了函数g,所以函数f不能出现在函数g的定义或声明之前。

文件file1.cpp中的变量i的作用域从它的定义开始到文件结束。File2.cpp中的变量i 的作用域从它的定义开始到main函数结束。

编程题

写一个函数,完成在链表末尾增加一个节点的操作。函数的原型为:

Node * AddNode(Node * & head, int newData);

其中,链表节点的定义如下:

struct Node {

int data; //存放数据

Node * next; //指向链表中的下一个节点

};

函数参数:函数的第一个参数head指向链表的第一个节点,如果链表为空,则head的值为NULL。第二个参数newData为要插入的新节点中存放的数据。

函数返回值:当成功地插入新的节点时,函数返回指向新节点的指针,否则,如果不能申请到内存空间,则返回NULL。

Node * AddNode(Node *& head, int newData)

{

//在这里写出函数的实现

}

答案:

Node * AddNode(Node * &head, int newData)

{

//申请新的节点空间

Node * newNode = new Node;

if (newNode == NULL)

return NULL;

//填充新节点的内容

newNode->data = newData;

newNode->next = NULL;

//插入到链表的结尾

if (head == NULL)

head = newNode;

else

{

//寻找链表的最后一个节点

Node *tail = head;

while(tail->next != NULL)

tail = tail->next;

//将新节点插入到最后

tail->next = newNode;

}

return newNode;

}

作业2:

是非题

1. 在不同作用域中的变量可以同名。对

2. 派生类的成员函数可以直接访问基类的所有成员。2. 错

填空题

#include

___________A_____________;

void main()

{

int a[6]={2,4,8,6,9,14};

int x1=____B______; //调用f1函数求出a中前4各元素之和。

int x2=f1(a,6);

cout<

}

int f1(int a[], int n)

{

int i,s=0;

for(i=0;i