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

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

作业1:

是非题

1. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。1. 错 2. 程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。4. 对 填空题

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

________A__________ int sum(int [],int); void main() { }

int sum(int array[],int len) { }

int iSum = 0;

for(int i = 0; C ; D )

E ;

return iSum;

int ia[5] = {2,3,6,8,10}; B ; sumOfArray = sum(ia,5);

cout << \

答案:

A B C D E

#include int sumOfArray; i < len i++

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;

}

回答以下问题:

2

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为要插入的新节点中存放的数据。