北语 15秋《面向对象程序设计》作业3满分答案
- 格式:pdf
- 大小:51.98 KB
- 文档页数:10
面向对象程序设计课后答案(完整版)第二章2-4#includeusing namespace std;Add(int a,int b);int main(){int x,y,sum;cout>x>>y;sum = add(x,y);cout >*p;p++;}p = p-20;for( i=0;i0) countp++;if(*p>age ;try{checkagescore(name,age);}catch( string){cout<<"exception :name is exit"<<endl;continue;}catch(int){cout<<"exception :age is not proper"<<endl;continue;}cout<<"name:"<<name<<" age :"< }return 0;}第三章3-1(1)A (2)C (3)B (4)C (5)C(6)B (7)B (8)C (9)C3-7(1)main()函数中p1.age = 30;语句是错误的。
age 是类的私有成员(2)构造函数应当给常数据成员和引用成员初始化,将构造函数改为:A(int a1,int b1):a(a1),b(b1){}或A(int a1 ):a(a1),b(a){}再将main中的A a(1,2); 改为A a(1);(3)(1)在Test 类中添加语句:void print();void Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}改为void Test::Print(){cout<<x<<"-"<<y<<"="<<x-y<<endl;}main函数中Init(38,15);改为:A.Init(38,15);Print();改为:A.Print();3-8(1)Constructing AConstructing BDestructing BDestructing A(2)double a,double bpoint & pp.x3-9class box{int len1,len2,len3;public:box(int l1,int l2,int l3){len1 = l1;len2 = l2; len3 = l3;} long volumn(){return len1*len2*len3;}};3-10class Test{int m1,m2;public:void Init(int a,int b){m1 = a;m2 = b;}void Pring(){cout<<m1<<" "<<m2<<endl;}};3-11略3-12}第四章4-6(1)D (2)D (3)D (4)D (5)B(6)D4-7(1)static int count = 0;这样初始化静态成员值是不对的将其改为static int count;在类外,main函数前加int Sample::count = 0;(2)#include//#includeusing namespace std;class Ctest{private:int x; const int y1;public:const int y2;Ctest(int i1,int i2):y1(i1),y2(i2) {y1 =10;//y1 为常量不能赋值x = y1;}int readme() const;};int Ctest::readme ()const{int i;i = x;x++; //常函数内不能改变成员值return x;}int main(){Ctest c(2,8);int i = c.y2;c.y2 = i;//y2为常量,不能改值i = c.y1;//y1私有,类外不能访问return 0;}将出错语句全部注释4-8(1)题中印刷错误,将class C构造函数改为: C(){cout<<"constructor C:";}运行结果为:constructor Aconstructor Bconstructor C(2)40(3)3434-9#include#includeclass Date{int year;int month;int day;public:Date(int y,int m,int d){year=y;month=m;day=d;}void disp(){cout<<year<<" "<<month<<" "<<day<<endl;}friend int count_day(Date &d,int k);friend int l(int year);friend int h(Date &d1,Date &d2);};int count_day(Date &d,int k){static int day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,3 1},{31,29,31,30,31,30,31,31,30,31,30,31}};// 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年int j,i,s;if(l(d.year))j=1;//闰年,取1else j=0;//非闰年,取0if(k)//K非0时{s=d.day;for(i=1;i<d.month;i++)//d.month为输入的月份s+=day_tab[j][i-1];}else//K为0时{s=day_tab[j][d.month]-d.day;for(i=d.month+1; i<=12; i++)s+=day_tab[j][i-1];}return s;//S为相差的天数}int l(int year){if(year%4==0&&year%100!=0||year%400==0) // 是闰年return 1;else // 不是闰年return 0;}int h(Date &d1,Date &d2){int days,day1,day2,y;if(d1.year<d2.year)//第一个日期年份小于第二个日期年份{days=count_day(d1,0);for(y=d1.year+1;y<d2.year;y++)if(l(y))//闰年。
北语15秋《面向对象程序设计》作业3满分答案一、单选题(共20 道试题,共100 分。
)1. 在16位计算机系统中,A.B.C.D.正确答案:A2. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()正确答案:C3. 设有定义“static int data[5][6];”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data[2][3]的地址为( )。
A. 115B. 124C. 130D. 160正确答案:D4. 题面见图片A.B.C.D.正确答案:B5. 题面见图片A.B.C.D.正确答案:A6. 采用重载函数的目的是()。
A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性正确答案:D7. 软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()。
A. 可维护性B. 可复用性C. 兼容性D. 正确性正确答案:D8. 以下正确的描述是()。
A. 不允许设置参数的默认值B. 设置参数的默认值只能在定义函数时设置C. 设置参数的默认值时,应该设置右边的参数D. 设置参数的默认值时,应该全部参数都设置正确答案:C9. 以下正确的描述是()。
A. 函数的定义可以嵌套,函数的调用不可以嵌套B. 函数的定义不可以嵌套,函数的调用可以嵌套C. 函数的定义和函数的调用均可以嵌套D. 函数的定义和函数的调用均不可以嵌套正确答案:B10. 题面见图片A.B.C.D.正确答案:A11. 题面见图片A.B.C.D.正确答案:B12. 设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为( )。
A. array数组首地址B. array数组中元素个数C. array数组中每个元素所占的字节数D. array数组占的总字节数正确答案:B13. 题面见图片A.B.C.D.正确答案:A14. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为()。
北航《语言程序设计》在线作业三单选题判断题一、单选题(共 10 道试题,共 40 分。
)1. 若有定义:int (*p)[3]; 则下列选项中,描述正确的是. p是一个指向整型变量的指针. p是一个指针数组名. p是一个指针,它指向一个含有3个整型元素的一维数组. 定义不合法-----------------选择:2. 表达式:10!=9的值是( ). true. 非零值. 0. 1-----------------选择:3. 以下叙述中错误的是. 对于oule类型数组,不可以直接用数组名对数组进行整体输入或输出. 数组名代表的是数组所占存储区的首地址,其值不可改变. 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息. 可以通过赋初值的方式确定数组元素的个数-----------------选择:4. 若有说明语句:int w=2,x=3,y=3,z=4;则表达式w>x?w:z>y?z:x的值是. 4. 3. 2. 1-----------------选择:5. 下面程序的输出结果是__________. min() { int x=10,y=3; printf("%",y=x/y);} . 0. 1. 3. 不确定的值-----------------选择:6. 给出说明语句:int =100,=40,=92; 则表达式(>)? + : +的值是( ).. 192. 1. 132. 100-----------------选择:7. 当执行以下程序时,( )。
#inlue<stio.h> voi min() { int ; while(=5) printf("% ",--); }. 循环体将执行5次. 循环体将执行0次. 循环体将执行无限次. 系统会死机-----------------选择:8. 已知:int x,,;下列选项中错误的if语句是______。
兰州大学《面向对象程序设计》15秋在线作业3满分答案《面向对象程序设计》15秋在线作业3一、单选题(共 13 道试题,共 52 分。
)1. C++对C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是()A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念答案:D2. 下面运算符中,不能被重载的运算符是面向对象编程A. <=B. -C. ?:D. []答案:C3. 函数重载是指A. 两个或两个以上函数取相同函数名,但形参的个数或类型不同B. 两个以上函数取相同的名字和具有相同的参数个数,但形参类型可不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同答案:A4. 有以下程序main() { char *p[]={"3697","2584"}; int i,j; long num=0; for(i=0;i<2;i++) {j=0; while(p[j]!='\0') { if((p[j]-‘0')%2)num=10*num+p[j]-'0'; j+=2; } } printf("%d\n"num); } 程序执行后的输出结果是()A. 35B. 37C. 39D. 3975答案:C5. 下面程序错误的语句是①#include ②void main() ③{ ④int*p=new int[1]; ⑤p=9;⑥cout <<*p<A. ④B. ⑤C. ⑥D. ⑦答案:B6. 若有如下类声明 class My Class { public: MyClass() {cout<<1;} }; 执行下列语句MyClass a,b[2],*P[2]; 以后,程序的输出结果是 ( )A. 11C. 1111D. 11111答案:B7. 表达式3.6-5/2+1.2+5%2的值是()A. 4.3B. 4.8C. 3.3D. 3.8答案:D8. 下列()的调用方式是引用调用A. 形参和实参都是变量B. 形参是指针,实参是地址值C. 形参是引用,实参是变量D. 形参是变量,实参是地址值答案:C9. 假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为A. AB(){}B. AB():a(0){}C. AB(intaa==0){a=aa}D. AB(intaa){}答案:C10. 执行下列语句段后,输出字符“*”的个数是() for (int i=50; i>1; i-=2)cout<<~*~;A. 24B. 25C. 26D. 50答案:B11. 从一个基类派生出的各个类的对象之间A. 共享所有数据成员,每个对象还包含基类的所有属性B. 共享部分数据成员,每个对象还包含基类的所有属性C. 不共享任何数据成员,但每个对象还包含基类的所有属性D. 共享部分数据成员和函数成员答案:C12. 有如下定义答案: int a[5]={1,3,5,7,9},*p=a; 下列表达式中不能得到数值 5 的是()A. a[2]B. a[3]C. *(p+2)答案:B13. 在关键字public后定义的成员为该类的A. 私有B. 公有C. 保护D. 任何答案:B《面向对象程序设计》15秋在线作业3二、多选题(共 2 道试题,共 8 分。
面向对象程序设计技术作业三一、填空题1、假定p所指对象的值为28,p+1所指对象的值为62,则*p++的值为28 。
2、假定p所指对象的值为28,p+1所指对象的值为62,则*++p的值为62 。
3、假定p所指对象的值为25,p+1所指对象的值为50,则执行”(*p)++;”语句后,p所指对象的值为26 。
4、假定p所指对象的值为25,p+1所指对象的值为50,则执行”*(p++);”语句后,p所指对象的值为50 。
5、假定a是一个指针数组,则a+I所指对象的地址比a地址大4*I 字节。
6、假定a是一个一维数组,则a [i]的指针访问方式为*(a+i)。
7、假定a是一个二维数组,则a[i][j]的指针访问方式为*(*(a+i)+j) 。
8、假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为a+4*j 。
9、假定一个二维数组为a[M][N],则a[i][j]对应的存储地址(以字节为单位)为a+4*i*N+4*j 。
10、假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为a+4i*N 。
11、假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大 4 字节。
12、假定a为一个字符数组名,则元素a[8]的字节地址为a+8 。
13、假定a为一个整型数组名,则元素a[4]的字节地址为a+16 。
14、假定一个结构类型的定义为”struct A{int a, b;short c;A * d;};”,则该类型的大小为14 字节。
15、假定一个结构类型的定义为”struct B{int a[8];char*b;};”,则该类型的大小为36 字节。
16、假定一个结构类型的定义为”struct D{int a;union{int b;double c;};D*d[3];};”,则该类型的大小为24 字节。
17、假定要动态分配一个类型为Worker的具有n个元素的数组,并由r 指向这个动态数组,则使用的语句为Worker *r=new Worker[n] 。
实验一熟悉VC++IDE开发环境一、实验目的1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。
2、掌握如何编辑、编译、连接和运行一个C++程序。
3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验要求1、分析下列程序运行的结果。
程序一:#include <iostream.h>int add(int x,int y=8);void main(){ int x=4;cout<<add(x)<<",";cout<<add(x,add(add(x,add(x))))<<endl;}int add(int x,int y){ return x+y;}//12,28程序二:#include <iostream.h>void main(){ int *p,i;i=5;p=&i;i=*p+10;cout<<"i="<<i<<endl;}//i=15程序三:#include <iostream.h>void main(void){ int i=10;int &r=i;r++;cout<<"i="<<i<<", r="<<r<<'\n';i=88;cout<<"i="<<i<<", r="<<r<<'\n';}//i=11,r=11i=88,r=88程序四:#include <iostream.h>int f(int i){ static int k=1;for(;i>0;i--)k +=i;return k;}void main(){ int i;for(i=0;i<5;i++)cout<<f(i)<<" ";}// 1 2 5 11 21程序五:#include <iostream.h>void func();int n=1;void main(){ static int a;int b= -9;cout <<"a:"<<a<<" b:"<<b<<" n:" <<n<<endl;b+=4;func();cout <<"a:"<<a<<" b:"<<b<<" n:"<<n<<endl;n+=10;func();}void func(){ static int a=2; int b=5;a+=2;n+=12;b+=5;cout <<"a:" <<a<<" b:" <<b<<" n:" <<n <<endl;}// a:0 b:-9 n:1a:4 b:10 n:13a:0 b:-5 n:13a:6 b:10 n:35实验二C++对C的扩充一、实验目的1、了解在面向对象程序设计过程中C++对C功能的扩充与增强,并善于在编写程序的过程中应用这些新功能。
北语15秋《C语言程序设计》作业3满分答案一、单选题(共10道试题,共100分。
)1.A.AB.BC.CD.D正确答案:A2.设有说明int(*ptr)[M];其中ptr是。
A.M个指向整型变量的指针B.指向M个整型变量的函数指针C.一个指向具有M个整型元素的一维数组的指针D.具有M个指针元素的一维指针数组,每个元素都只能指向整型量正确答案:C3.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是()。
A.p+1B.a+1C.a++D.++p正确答案:C4.在说明语句:int*f();中,标识符代表的是。
A.一个用于指向整型数据的指针变量B.一个用于指向一维数组的指针C.一个用于指向函数的指针变量D.一个返回值为指针型的函数名正确答案:D5.A.AB.BC.CD.D正确答案:D6.A.AB.BC.CD.D正确答案:A7.若int x,*pb;,则正确的赋值表达式是。
A.pb=&xB.pb=xC.*pb=&xD.*pb=*x正确答案:A8.A.AB.BC.CD.D正确答案:D9.A.AB.BC.CD.D正确答案:D10.对于类型相同的两个指针变量之间,不能进行的运算是。
A.<B.=C.+D.–正确答案:C。
《⾯向对象程序设计》习题三答案《⾯向对象程序设计》习题三答案⼀、单项选择题(本⼤题共25⼩题,每⼩题2分,共50分)1、⽤“>>”运算符从键盘输⼊多于⼀个数据时,各数据之间应使⽤( D )符号作为分隔符。
A、空格或逗号B、逗号或回车 C、逗号或分号D、空格或回车2、C++中声明常量得关键字就是( A )。
A、constB、externC、publicD、enum3、以下叙述中正确得就是( B )A、使⽤#define可以为常量定义⼀个名字,该名字在程序中可以再赋另外得值?B、使⽤const定义得常量名有类型之分,其值在程序运⾏时就是不可改变得?C、在程序中使⽤内置函数使程序得可读性变差D、在定义函数时可以在形参表得任何位置给出缺省形参值4、下列得符号常变量定义中,错误得定义就是( C )。
A、constM=10;B、constint M=20;C、const char ch; D、const bool mark=true;5、函数原型语句正确得就是( B )。
A、int Function(void a)B、voidFunction (int);C、int Function(a);D、void int(double a);6、在关键字private后⾯定义得成员为类得( A )成员。
A、私有B、公⽤C、保护 D、任何7、在⼀个类得定义中,包含有( C)成员得定义。
?A、数据B、函数 C、数据与函数D、数据或函数8、在类作⽤域中能够通过直接使⽤该类得( D )成员名进⾏访问、?A、私有 B、公⽤ C、保护D、任何9、在关键字public后⾯定义得成员为类得( B )成员。
A、私有B、公⽤C、保护D、任何10、类中定义得成员默认为( B )访问属性、A、public B、private C、protected D、friend 11、每个类( C )构造函数。
A、只能有⼀个B、可以有公⽤得C、可以有多个D、只可有缺省得12、对类对象成员得初始化就是通过构造函数中给出得( B )实现得。
北航15年《C++程序设计》在线作业试卷三一、单选题(共25 道试题,共100 分。
)1. 预处理命令在程序中都是以____符号开头的A. *B. #C. &D. @满分:4 分2. 通常拷贝构造函数的参数是______。
()A. 某个对象名B. 某个对象的成员名C. 某个对象的引用名D. 某个对象的指针名满分:4 分3. 程序中主函数的名字为____.A. mainB. MAINC. MainD. 任意标识符满分:4 分4. 假定变量b和pb定义为"int b[10], *pb=b;",要将24赋值给b[1]元素中,不正确的语句是.____A. *(pb+1)=24;B. *(b+1)=24;C. *++b=24;D. *++pb=24;满分:4 分5. switch语句能够改写为____语句。
A. forB. ifC. doD. while满分:4 分6. 对于拷贝初始化构造函数和赋值操作的关系,正确的描述是_____.A. 拷贝初始化构造函数和赋值操作是完全一样的操作B. 进行赋值操作时,会调用类的构造函数C. 当调用拷贝初始化构造函数时,类的对象正在被建立并被初始化D. 拷贝初始化构造函数和赋值操作不能在同一个类中被同时定义满分:4 分7. 考虑函数原型void test(int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是A. test(5);B. test(5,8);C. test(6,"#");D. test(0,0,"*");满分:4 分8. 在不考虑强制类型转换的情况下,关于类中常量成员函数的下列说法不正确的是A. 常量成员函数中不能修改本类中的非静态数据成员B. 常量成员函数中可以调用本类中的任何静态成员函数C. 常量成员函数的返回值只能是void或常量D. 若常量成员函数中调用虚函数f,那么函数f在本类中也一定是一个常量成员函数满分:4 分9. 以下说法中正确的是____.A. C++程序总是从第一个定义的函数开始执行B. C++程序总是从main函数开始执行C. C++程序总是从main函数开始执行D. C++程序中有调用关系的所有函数必须放在同一个程序文件中满分:4 分10. 类的析构函数是______时调用的。
0837一、BCABB DDCBA二、1、答:程序运行的输出结果是:1 2 6 24 1202、3、问题(1):Test3是SuperTest的子类(或SuperTest是Test3的父类,或继承关系)。
问题(2):super指对象的父类(或超类);this指使用它的对象本身(或对对象自己的引用)。
问题(3):程序的输出是:<\ p="">Hi, I am OliveNice to meet you!Age is 7My age is 7My parent"s age is 35<\ p="">4、答:问题(1):new FileOutputStream(“out.txt”)dout.writeInt( ‘0’ + i);dout.close( );new FileInputStream(“out.txt”)din.readInt( )din.close( );问题(2):常被用于读取与存储(读写或输入/输出)基本数据类型的数据。
问题(3):文件out.txt的内容是:0 1 2 3 4 5 6 7 8 9程序在控制台窗口输出:0,1,2,3,4,5,6,7,8,9,三、import java.io.DataOutputStream;import java.io.FileOutputStream;import java.io.IOException;public class TestSort {public static int MAXSIZE = 61;public static void sortInt(int[] arr) { // 采用选择法对一维数组进行排序for (int i = 0; i < arr.length - 1; i++) {int k = i;for (int j = i + 1; j < arr.length; j++)if (arr[j] < arr[k])k = j; // 用k记录最小值的下标if (k > i) { // 在外循环中实施交换arr[i] = arr[i] + arr[k];arr[k] = arr[i] - arr[k];arr[i] = arr[i] - arr[k];}}}public static void main(String args[]) {int score[] = new int[MAXSIZE];try {for (int i = 0; i < MAXSIZE; i++)score[i] = (int) (Math.random() * 100 + 0.5);sortInt(score);DataOutputStream dout = new DataOutputStream(new FileOutputStream(\"score.txt\"));for (int i = 0; i < MAXSIZE; i++) {dout.writeInt(score[i]);System.out.println(score[i]);}dout.close();// 结果保存到文件} catch (IOException e) {System.err.println(\"发生异常:\" + e);e.printStackTrace();}// try-catch结构处理异常}}。
北语 15秋《面向对象程序设计》作业3满分答案
一、单选题(共 20 道试题,共 100 分。
)
1. 在16位计算机系统中,
A.
B.
C.
D.
正确答案
:A
2. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()
B. strcap()
C. strcat()
D. strcmp()
正确答案
:C
3. 设有定义“static int data[5][6];”,设该数组在静态存储区中的起始地址为十进制的10 0,若每个int型数占4个字节,则数组元素data[2][3]的地址为( )。
A. 115
B. 124
C. 130
D. 160
正确答案
:D
4. 题面见图片
A.
B.
C.
D.
正确答案
:B
5. 题面见图片
A.
B.
C.
D.
正确答案
:A
6. 采用重载函数的目的是()。
A. 实现共享
B. 减少空间
C. 提高速度
D. 使用方便,提高可读性
正确答案
:D
7.
软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()。
A. 可维护性
B. 可复用性
C. 兼容性
D. 正确性
正确答案
:D
8. 以下正确的描述是()。
A. 不允许设置参数的默认值
B. 设置参数的默认值只能在定义函数时设置
C. 设置参数的默认值时,应该设置右边的参数
D. 设置参数的默认值时,应该全部参数都设置
正确答案
:C
9. 以下正确的描述是()。
A. 函数的定义可以嵌套,函数的调用不可以嵌套
B. 函数的定义不可以嵌套,函数的调用可以嵌套
C. 函数的定义和函数的调用均可以嵌套
D. 函数的定义和函数的调用均不可以嵌套
正确答案
:B
10. 题面见图片
A.
B.
C.
D.
正确答案
:A
A.
B.
C.
D.
正确答案
:B
12.
设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为( )。
A. array数组首地址
B. array数组中元素个数
C. array数组中每个元素所占的字节数
D. array数组占的总字节数
正确答案
:B
A.
B.
C.
D.
正确答案
:A
14. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为()。
A. intp=&m
B. int*p=&m
C. int&p=*m
D. int*p=m
正确答案
:B
15.
当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是( )。
A. 直接按系统设定的标准方式搜索目录
B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C. 仅仅搜索源程序所在目录
D. 搜索当前逻辑盘上的所有目录
正确答案
:A
16.
当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是( )。
A. 直接按系统设定的标准方式搜索目录
B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索目录
C. 仅仅搜索源程序所在目录
D. 搜索当前逻辑盘上的所有目录
正确答案
:B
17. 文件包含命令中被包含的文件的扩展名()。
A. 必须是.h
B. 不能是.h
C. 可以是.h或.cpp
D. 必须是.cpp
正确答案
:C
18. 题面见图片
A.
B.
C.
D.
正确答案
:C
19. 题面见图片
A.
B.
C.
D.
正确答案
:D
20. 题面见图片
A.
B.
C.
D.
正确答案
:A。