面向对象程序设计课程作业及答案.docx
- 文档编号:24358397
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:27
- 大小:25.41KB
面向对象程序设计课程作业及答案.docx
《面向对象程序设计课程作业及答案.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计课程作业及答案.docx(27页珍藏版)》请在冰豆网上搜索。
面向对象程序设计课程作业及答案
《面向对象程序设计》课程作业及答案
中央电大理工部计算机教研室
作业1:
是非题
1.头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。
1.错
2.程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
4.对
填空题
下面是一个求数组元素之和的程序。
主程序中定义并初始化了一个数组,然后计算该数组各元素的和,并输出结果。
函数sum计算数组元素之和。
填充程序中不完整的部分。
________A__________
intsum(int[],int);
voidmain()
{
intia[5]={2,3,6,8,10};
B;
sumOfArray=sum(ia,5);
cout<<"Sumofarray:
"< } intsum(intarray[],intlen) { intiSum=0; for(inti=0;C;D) E; returniSum; } 答案: A#include BintsumOfArray; Ci Di++ EiSum+=array[i]; 阅读理解题 写出下列程序的运行结果: //file1.cpp staticinti=20; intx; staticintg(intp) { returni+p; } voidf(intv) 1 { x=g(v); } //file2.cpp #include externintx; voidf(int); voidmain() { inti=5; f(i); cout< } 回答以下问题: 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,intnewData); 其中,链表节点的定义如下: structNode{ intdata;//存放数据 Node*next;//指向链表中的下一个节点 }; 函数参数: 函数的第一个参数head指向链表的第一个节点,如果链表为空,则head的值为NULL。 第二个参数newData为要插入的新节点中存放的数据。 函数返回值: 当成功地插入新的节点时,函数返回指向新节点的指针,否则,如果不能申请到内存空间,则返回NULL。 Node*AddNode(Node*&head,intnewData) { //在这里写出函数的实现 2 } 答案: Node*AddNode(Node*&head,intnewData) { //申请新的节点空间 Node*newNode=newNode; if(newNode==NULL) returnNULL; //填充新节点的内容 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; } returnnewNode; } 作业2: 是非题 1.在不同作用域中的变量可以同名。 对 2.派生类的成员函数可以直接访问基类的所有成员。 2.错 填空题 #include ___________A_____________; voidmain() { inta[6]={2,4,8,6,9,14}; intx1=____B______;//调用f1函数求出a中前4各元素之和。 intx2=f1(a,6); cout< } intf1(inta[],intn) { inti,s=0; 3 for(i=0;i returns; } 答案: Aintf1(inta[],intn); Bf1(a,4) 改错题 1.下面的函数将浮点型指针参数para所指向的值赋给一个局部指针变量pFloat所指向的空间,然后输出*pFloat的值。 #include voidfunc(float*para) { float*pFloat; pFloat=para; cout< } 错误为: ______________________________________________________ 改正方法为: __________________________________________________ ______________________________________________________________ 答案 错误为: 没有给指针申请空间,就直接赋值 改正的方法为: 先为pFloat申请空间,再赋值。 2.下列程序片段对二维数组的每个元素赋值 unsignedshortSomeArray[5][4]; for(inti=1;i<=5;i++) for(intj=1;j<=4;j++) SomeArray[i][j]=i+j; 错误为: ______________________________________________________ 改正方法为: __________________________________________________ ______________________________________________________________ 答案 错误为: 访问数组元素的下标不对 改正的方法为: 将两个for循环的循环初始值改为0,循环结束条件分别改为i<5和j<4。 编程题 写一个函数,找出给定字符串中小写字母字符的个数。 函数的原型为: intCalcAlpha(char*str); 函数参数: str为所要处理的字符串; 4 函数返回值: 所给字符串中小写字母字符的个数 intCalcAlpha(char*str) {//在这里写上程序的实现 } 答案: intCalcAlpha(char*str) { //判断字符指针是否为空 if(str==NULL)return0; //记录小写字母字符个数的变量 intnum=0; //依次检查各个字符,如果是小写字母,则总数加1 for(inti=0;str[i]! =0x0;i++) if(str[i])>='a'&&str[i]<='z') num++; //返回数字字符个数 returnnum; } 作业3: 是非题 1.函数的参数和返回值类型可以是简单数据类型,也可以是指针、引用、数组和类。 3.错 2.如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。 5.对 填空题 #include ________A___________; intf2(int*a,intn) { ______B___________;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 课程 作业 答案