《面向对象程序设计》课程作业._第1页
《面向对象程序设计》课程作业._第2页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1面向对象程序设计课程作业作业1:是非题1.头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。()2.程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程 序修改所带来的编译工作量。()填空题下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算 该数组各元素的和,并输出结果。函数sum计算数组元素之和。填充程序中不完整的部分。int sum(int ,int);void main()int ia5 = 2,3,6,8,10;sumOfArray = sum(ia,5); cout Sum of array: sumOfArray endl;int

2、sum(int array,int len)int iSum = 0;for(int i = 0;) return iSum;阅读理解题写出下列程序的运行结果:/ file1.cppstaticint i = 20;int x;static int g(i nt p)return i + p;void f(int v)x=g(v);/ file2.cpp#include extern int x;void f(int);2void main()int i=5;f(i);cout x;回答以下问题:1.程序的运行结果是什么样的?2.为什么文件file2.cpp中要包含头文件?3.在函数main(

3、)中是否可以直接调用函数g()?为什么?4.如果把文件file1.cpp中的两个函数定义的位置换一下,程序是否正确?为什么?5.文件file1.cpp和file2.cpp中的变量i的作用域分别是怎样的?在程序 中直接标出两个变量各自的作用域。编程题写一个函数,完成在链表末尾增加一个节点的操作。函数的原型为:Node * AddNode(Node * & head, int newData);其中,链表节点的定义如下:struct Node int data;/存放数据Node * next;/指向链表中的下一个节点;函数参数:函数的第一个参数head指向链表的第一个节点,如果链表为空,

4、则head的值为NULL第二个参数newData为要插入的新节点中存放的数 据。函数返回值: 当成功地插入新的节点时,函数返回指向新节点的指针,否 则,如果不能申请到内存空间,则返回NULL。Node * AddNode(Node *& head, int newData)/在这里写出函数的实现作业2:是非题1.在不同作用域中的变量可以同名。2.派生类的成员函数可以直接访问基类的所有成员。 填空题#include_A_void main()int a6=2,4,8,6,9,14;int x1=_ B_ ; /int x2=f1(a,6);coutx1 x2endl; int f1(in

5、t a, int n) int i,s=0; for(i=0;in;i+) s+=ai; return s;调用f1函数求出a中前4各元素之和。3改错题1.下面的函数将浮点型指针参数para所指向的值赋给一个局部指针变量pFloat所指向的空间,然后输出*pFloat的值。#include void func(float * para)float * pFloat; pFloat = para;cout pFloat;错误为: _改正方法为 : _2.下列程序片段对二维数组的每个元素赋值unsigned short SomeArray54;for (int i = 1; i=5; i+)for

6、 (int j = 1; j=4; j+) SomeArrayij = i+j;错误为: _改正方法为: _编程题写一个函数,找出给定字符串中小写字母字符的个数。函数的原型为:intCalcAlpha(char *str);函数参数 :str为所要处理的字符串; 函数返回值 :所给字符串中小写字母字符的个数int CalcAlpha(char *str) /在这里写上程序的实现作业3:是非题1.函数的参数和返回值类型可以是简单数据类型,也可以是指针、引用、数组和 类。2.如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同, 那么,这个函数自动继承基类中虚函数的特性。填空题#in

7、clude_ A_;int f2(int* a, int n)_ B_;for(i=1;in;i+)if(maxai) max=ai;return max;void main()int bMM=3,12,6,20,9,7,34,50,25,66;_ C_ ; /求出b4至b8之间的最大值并赋给x1D; /求出b0至b5之间的最大值并赋给x2 coutx1 x2endl;阅读理解题4二、valarray是C+的标准模板库中的一个类模板,类模板的每个实例类实现了 某个具体的数据类型的数组,如valarray是一个整型的数组类。该类的使用和一 般的数组非常类似,可以通过运算符来访问数组中的每个元素。

8、C+的标准模板库中还有一个模板函数abs(),其函数原型为:templatevalarray abs(const valarray & x);该函数的作用是将作为参数的数组x的每个元素的值取绝对值,并返回得到的新的数 组。如原来的数组为:4 -1 -3 0 -34将这个数组作为参数传递给函数abs后,函数返回的数组就变成:4 1 3 0 34要求:阅读下列程序,回答后面的问题。/*/#in elude #include /该头文件中定义了模板类valarray和模板函数abs()#defi ne ARRAY_SIZE 10typedef valarray INTVALARRAY;voi

9、d mai n()INTVALARRAY val_array(ARRAY_SIZE);/定义一长度为ARRAY_SIZE的数组对象/赋初始值for (int i = 0; i ARRAY_SIZE; i+)val_arrayi = -i;cout Size of val_array = val_array.size() n;cout The values of val_array before call ing abs():n;for (i = 0; i ARRAY_SIZE; i+)cout val_arrayi ;cout n;INTVALARRAY abs_array = abs(val

10、_array);cout The result of val_array after calli ng abs():n;for (i = 0; i ARRAY_SIZE; i+)cout abs_arrayi ;cout n;/*/问题1:写出程序的输出结果问题2:关于程序中的语句:INTVALARRAY val_array(ARRAY_SIZE);下列说法哪些是正确的,哪些是错误的?在下表相应的位置写上“对”或“错”题号ABCDE5对/错(A) 该语句定义了一个对象val_array,这个对象是类valarray的实例(B) 该语句说明了一个函数原型,函数的名字为val_array,参数为A

11、RRAY_SIZE函数的返回值类型为INTVALARRAY(C) 板类valarray一定有一个只带一个参数的构造函数(D) 模板类valarray一定有一个只带两个参数的构造函数(E)ARRAY_SIZE将作为参数传递给val_array的构造函数,初始化val_array对象问题3:( 出错误并写出正本小题共12分)下面是模板函数abs()的实现。这个实现中有错误,指 确的实现。注意:函数头是正确的,不要改变,所有的错误出现在函数体中。templatevalarray abs(const valarray& x)for(int i=0; ix.size(); i+) if(xi0)

12、 xi*=-1; return x;这个函数实现中有以下错误:(1)2)3)正确的函数实现应为:templatevalarray abs(const valarray& x)问题4:(本小题3分)从上面的程序中,你可以推断出,valarray模板类中至少 重载了哪个或哪些C+勺运算符?答:重载了 _运算符编程题6写一个函数,找出给定字符串中具有最大ASCII码勺字符。如字符串“world”中字符w具有最大的ASCII码。函数的原型为:charMaxCharacter(char *str);函数参数:str指向所要处理的字符串;函数返回值:如果str不空,则返回具有最大ASCII码的字符

13、,否则返回空 字符0 x0或0。char MaxCharacter(char *str)作业4:是非题1.函数重载既要求两函数参数对应的类型不同又要求参数个数不同。2.在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数, 才能具有多态的特征。编程题一、定义一个日期类Date,该类对象存放一个日期,可以提供的操作有:int GetYear () ;/取年份int GetMonth () ;/取月份int GetDay ( ) ;/取日子值void SetDate ( int year, int month, int day) ;/设置日期值下面是测试你所定义的日期类的程序:#in

14、clude #include“date.h”void main()Date d1(1999, 1, 14);/用所给日期定义一个日期变量Date d2;/定义一个具有缺省值的日期,缺省值为1980年1月1日Date d3(d1);/用已有日期x构造一个新对象d2.SetDate(1999,3,13);cout Date:;cout d1.GetYear() . d1.GetMonth() . d1.GetDay() endl;cout Date:;cout d2.GetYear() . d2.GetMonth() . d2.GetDay() endl;cout Date:;cout d3.GetYear() . d3.GetMonth() . d3.GetDay() endl;要求:7(1)写出日期类的完整定义,其中,三个Get函数写成内联函数形式,SetDate写成非内联函数形式。所有数据成员都定义为私有成员。注意构造函数 的三种形式。(2)写出程序的运行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论