第章面向对象程序设计习题
《面向对象程序设计》第章
《面向对象程序设计》第10章在线测试剩余时间:59:57答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)1、关于没有被捕捉的异常正确的说法是()A、在catch块中没有处理的异常B、未被捕捉的异常必然导致系统崩溃C、如果一个异常没有被捕捉到,将调用terminate()函数终止程序运行D、忽略它2、关于catch(。
)的说法错误的是()A、catch(。
)可以捕捉所有类型的异常B、catch(。
)必须放在所有catch块的后面C、catch(。
)可以避免出现没有被捕捉的异常D、catch(。
)不能单独使用3、关于异常对象的说法正确的是()A、异常对象需要先建立,再抛出B、以传值方式传递异常对象时,抛出的是局部临时对象C、以引用方式传递异常对象时,抛出的是局部静态对象D、以指针方式传递异常对象时,抛出的是全局临时对象4、关于try, throw和catch使用的说明中,错误的是()A、throw必须在try块中B、每一个try块的后面一定要跟着catch块C、程序中catch块可以有多个D、throw抛出的异常与距它最近的cach匹配5、C++中异常处理的默认模式是()A、终止模式B、恢复模式C、挂起模式D、暂停模式第二题、多项选择题(每题2分,5道题共10分)1、处理程序中可预料的错误的方法有()A、根据函数返回值进行判断处理B、出现错误转向专门的错误处理程序C、异常处理D、没有办法2、异常处理的优点是()A、提高程序可读性B、程序的控制不会因产生异常而随意跳转C、正常处理代码和异常处理代码隐式分离D、与函数调用返回的控制方法一致3、下面与异常处理相关的关键字有()A、ThrowB、throwC、tryD、Try4、异常处理的执行过程是()A、程序执行try语句块内的保护段,如果发现异常则退出B、如果在try语句内的程序段抛出异常,程序控制转入try块后的catch块C、throw抛出的异常对象如果与catch子句异常类型的值一致,则执行对应的异常处理程序D、如果没有匹配的catch子句,自动调用terminate终止程序5、下面说法正确的是()A、函数声明void f(int i) throw ( int,char)说明函数f会引发int和char类型的异常B、函数声明void f(int i) throw ( ) 不会引发任何类型的异常C、函数声明void f(int i) throw ( )和void f(int i)是一样的D、函数声明void f(int i)说明该函数不会引发异常第三题、判断题(每题1分,5道题共5分)1、异常(Exception)是程序运行过程中,由于环境变化、用户操作失误以及其它方面的原因而产生的运行时不正常的情况.正确错误2、异常如果没有要求程序立即进行处理,将会引起程序错误甚至崩溃的现象。
面向对象程序设计习题
选择题1. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符2. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。
A. 内联函数B.重载函数C.递归函数D.函数模板3. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()4. 对于任一个类,用户所能定义的析构函数的个数至多为( )。
A. 0B. 1C. 2D. 任意个5. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。
A. 函数体B. 参数表C. 初始化表D. 初始化表或函数体6. 假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。
A. 带参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数7. 对于任一个类,用户所能定义的析构函数的个数至多为( )。
A. 0B. 1C. 2D. 任意个8. 用new运算符创建一维整型数组的正确语句是__________。
A. int *p=new a[10];B.int *p=new float[10];C. int *p=new int[10];D.int *p=new int[5]={1,2,3,4,5}9. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为()。
A. pb=b;B. pb=&b[0];C. pb=new int;D. pb=b[5];10. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符11. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。
A. 内联函数B.重载函数C.递归函数D.函数模板12. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()13. 用new运算符创建一维整型数组的正确语句是__________。
《面向对象程序设计》第1.7.9.11.12章在线测试
3、集合(set)属于( )
A、顺序容器 B、关联容器 C、前向容器
D、双向容器
4、多重集(multiset)属于( )
A、顺序容器 B、关联容器 C、前向容器
D、双向容器
5、映射(map)属于( )
A、顺序容器 B、关联容器 C、前向容器
D、双向容器
答案:AABBB
第二题、多项选择题(每题2分,5道题共10分)
第三题、判断题(每题1分,5道题共5分)
1、C++语言中,既允许单继承,又允许多继承。
正确
2、派生类的继承方式有两种,公有继承和私有继承。
错误
3、在公有继承中,基类中只有公有成员对派生类是可见的。
错误
4、析构函数不能被继承。
正确
5、多继承情况下,派生类的构造函数的执行顺序取决于定义派生时所指定的各基类的顺序。
D、多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果
第三题、判断题(每题1分,5道题共5分)
1、面向对象开发技术分三个阶段:面向对象分析,面向对象设计和面向对象实现。
C、提取运算符读取键盘输入的所有字符,包括空格 D、一个语句中可以使用多个提取运算符
第三题、判断题(每题1分,5道题共5分)
1、文件是指存储在存储器的数据的集合。计算机中的程序、数据、文档通常以文件方式存放。
正确
2、trunc与out参数的作用是相同的。
正确
3、cout通常与显示器相连,cin通常与键盘相连
2、在公有继承的情况下,基类成员在派生类中的访问权限( )
A、受限制 B、保持不变 C、受保护
D、不受保护
3、可以用 p.a 的形式访问派生类对象 p 的基类成员 a ,其中 a 是 ( )
面向对象程序设计模拟练习题(含答案)
面向对象程序设计模拟练习题(含答案)一、单选题(共50题,每题1分,共50分)1、下列关于JDK和JRE的说法中,错误的是()A、JDK是java开发核心组件,是用来编译解释java程序的核心组件B、JDK包括Java编译器、Java文档生成工具、Java打包工具等C、JRE是个单独的软件,所以安装JDK后,还需要单独安装JRED、JRE是java运行环境,用来支持java程序的运行正确答案:C2、下列File类的构造方法格式,错误的是()A、File(File parent)B、File(String pathname)C、File(String parent,String child)D、File(URI url)正确答案:A答案解析:A选项,正确的应该是File(File parent, String child)3、下列关于静态变量的描述中,错误的是()A、静态变量指的是被static修饰的变量B、静态变量是随着类的加载而加载C、静态变量可以被所有的实例对象共享D、静态变量同成员变量一样,都需要通过实例对象来调用正确答案:D答案解析:静态变量是通过“类名.变量名”“方式调用的。
4、下列对于Runtime的描述中,正确的是()A、每一个Java应用程序运行时都产生一个Runtime类实例B、Runtime实例可以将应用程序和运行环境相结合C、Runtime类有构造函数D、Runtime实例需要被创建后才可以通过getRuntime()方法获取正确答案:A答案解析:Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。
每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,可以通过getRuntime()方法获得一个Runtime实例。
5、下列关于LinkedList类的方法,不是从List接口中继承而来的是()A、toArray()B、pop()C、remove()D、isEmpty()正确答案:B答案解析:pop()方法表示移除并返回此列表的第一个元素,是LinkedList特有的方法。
第1-7章C++面向对象程序设计 作业参考答案
cout<<"long"<<max(a2,b2)<<endl;
cout<<"double"<<max(a3,b3)<<endl;//使用相同的函数名求不同类型数据的绝对值
return 0;
}
int max(int a,int b)
{int c;
一个类的内部数据结构和其所有成员函数的定义部分称为类的实现。
2.3公用public成员和私有private成员有何区别?
【解答】
私有private成员只能被该类中的其他成员访问,而程序中的其它代码是不能直接访问这些变量的。
公用public成员既可以被该类的其他成员访问,也可以被程序中的其它代码访问。类中的公用成员对外部代码是开放的,通常情况下,程序中的其它代码通过类的公用成员函数来访问类的私有成员。
方法:面向对象程序设计中的术语“方法”对应于对象的行为(能力),即它是实现对象所具有的功能操作的代码段。在C++程序中,方法即是类中定义的成员函数,它是该类对象所能执行的操作的算法实现。
消息:在面向对象的程序中,一个对象向另一个对象发出的请求称为消息。消息是要求某个对象执行其中某个功能操作的规格说明。程序中的所有对象通过消息传递实现相互协作,完成一些特定的任务。
{ Rectangle Rect(10,15);
cout<<"Area is:"<<Rect.area()<<endl;
}
第
3.1解释下列名词:
《面向对象程序设计》习题
《面向对象程序设计》习题一、单项选择题1、下面关于引用的说法错误的是( )。
A、引用是被引用对象的别名B、对引用的修改就是对被引用对象的修改,反之亦然C、引用不一定立即初始化D、引用不能建立数组2、用new运算符创建一个含有10个元素的一维整型数组的正确语句是( )。
A、int p = new int(10);B、int p = new int[10];C、int *p = new int [10];D、int *p = new int(10);3、下面是五条顺序出现的声明语句,非法的初始化语句是( )。
A、int i = –1;B、const int ic=i;C、const int *pc=⁣D、int *const cpi=⁣E、const int *const cpic= ⁣4、下列说法不正确的是( )。
A、在类中,成员的默认访问特性是私有的。
B、类封装了数据和操作。
C、类实质上是一种数据类型。
D、在类的定义中,必须包含private、public、protected三种存取方式对应得部分。
5、下列说法不正确的是( )。
A、在类中不能对所定义的数据成员进行初始化。
B、类的公有成员函数是类与外界的接口。
C、同一个类的两个对象占用相同的内存空间。
D、类实现数据隐藏。
6、下列程序段不会发生二义性的是( )。
A、int fun(double p){...;}B、int fun(float p){...;}float fun(float p){...;} float fun(unsigned p){...;}int x; int x;x=fun(0); x=fun(0);C、int fun(int i,int j=2){...;}D、int fun(int i=2,int j=2){...;}float fun(int i){...;} int fun(int *p){...;}cout<<fun(5); cout<<fun(5);7、关于以下程序段中语法错误的正确描述是( )。
面向对象程序设计习题三答案
《面向对象程序设计》习题三答案一、单项选择题(本大题共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、const M=10;B、const int M=20;C、const char ch;D、const bool mark=true;5、函数原型语句正确的是( B )。
A、int Function(void a)B、void Function (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、publicB、privateC、protectedD、friend11、每个类( C )构造函数。
A、只能有一个B、可以有公用的C、可以有多个D、只可有缺省的12、对类对象成员的初始化是通过构造函数中给出的( B )实现的。
C++面向对象程序设计课后习题答案1~14章
第一章1-5、#include <iostream> using namespace std;int main(){cout<<"This"<<"is";cout<<"a"<<"C++";cout<<"program.";return 0;}1-6、#include <iostream> using namespace std;int main(){int a,b,c;a=10;b=23;c=a+b;cout<<"a+b=";cout<<c;cout<<endl;return 0;}1-7#include <iostream> using namespace std;int main(){int a,b,c;int f(int x,int y,int z); cin>>a>>b>>c;c=f(a,b,c);cout<<c<<endl;return 0;}int f(int x,int y,int z){int m;if (x<y) m=x;else m=y;if (z<m) m=z;return(m);} 1-8、#include <iostream>using namespace std;int main(){int a,b,c;cin>>a>>b;c=a+b;cout<<"a+b="<<a+b<<endl;return 0;}1-9、#include <iostream>using namespace std;int main(){int a,b,c;int add(int x,int y);cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}int add(int x,int y){int z;z=x+y;return(z);}第二章2-3、#include <iostream>using namespace std;int main(){char c1='a',c2='b',c3='c',c4='\101',c5='\116'; cout<<c1<<c2<<c3<<'\n';cout<<"\t\b"<<c4<<'\t'<<c5<<'\n';return 0;}2-4、#include <iostream>using namespace std;int main(){char c1='C',c2='+',c3='+';cout<<"I say: \""<<c1<<c2<<c3<<'\"';cout<<"\t\t"<<"He says: \"C++ is veryinteresting!\""<< '\n';return 0;}2-7、#include <iostream>using namespace std;int main(){int i,j,m,n;i=8;j=10;m=++i+j++;n=(++i)+(++j)+m;cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n<<endl; return 0;}2-8、#include <iostream>using namespace std;int main(){char c1='C', c2='h', c3='i', c4='n', c5='a';c1+=4;c2+=4;c3+=4;c4+=4;c5+=4;cout<<"passwordis:"<<c1<<c2<<c3<<c4<<c5<<endl;return 0;}第三章3-2、#include <iostream>#include <iomanip>using namespace std;int main ( ){float h,r,l,s,sq,vq,vz;const float pi=3.1415926;cout<<"please enter r,h:";cin>>r>>h;l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;cout<<setiosflags(ios::fixed)<<setiosflags(ios:: right)<<setprecision(2);cout<<"l= "<<setw(10)<<l<<endl;cout<<"s= "<<setw(10)<<s<<endl;cout<<"sq="<<setw(10)<<sq<<endl;cout<<"vq="<<setw(10)<<vq<<endl;cout<<"vz="<<setw(10)<<vz<<endl;return 0;}3-3、#include <iostream>using namespace std;int main (){float c,f;cout<<"请输入一个华氏温度:";cin>>f;c=(5.0/9.0)*(f-32); //注意5和9要用实型表示,否则5/9值为0cout<<"摄氏温度为:"<<c<<endl;return 0;};3-4、#include <iostream>using namespace std;int main ( ){char c1,c2;cout<<"请输入两个字符c1,c2:";c1=getchar(); //将输入的第一个字符赋给c1c2=getchar(); //将输入的第二个字符赋给c2cout<<"用putchar函数输出结果为:"; putchar(c1);putchar(c2);cout<<endl;cout<<"用cout语句输出结果为:";cout<<c1<<c2<<endl;return 0;}3-4-1、#include <iostream>using namespace std;int main ( ){char c1,c2;cout<<"请输入两个字符c1,c2:";c1=getchar(); //将输入的第一个字符赋给c1c2=getchar(); //将输入的第二个字符赋给c2cout<<"用putchar函数输出结果为:"; putchar(c1);putchar(44);putchar(c2);cout<<endl;cout<<"用cout语句输出结果为:";cout<<c1<<","<<c2<<endl;return 0;}3-5、#include <iostream>using namespace std;int main ( ){char c1,c2;int i1,i2; //定义为整型cout<<"请输入两个整数i1,i2:";cin>>i1>>i2;c1=i1;c2=i2;cout<<"按字符输出结果为:"<<c1<<" , "<<c2<<endl;return 0;}3-8、#include <iostream>using namespace std;int main ( ){ int a=3,b=4,c=5,x,y;cout<<(a+b>c && b==c)<<endl;cout<<(a||b+c && b-c)<<endl;cout<<(!(a>b) && !c||1)<<endl;cout<<(!(x=a) && (y=b) && 0)<<endl;cout<<(!(a+b)+c-1 && b+c/2)<<endl; return 0;}3-9-1、#include <iostream>using namespace std;int main ( ){int a,b,c;cout<<"please enter three integer numbers:";cin>>a>>b>>c;if(a<b)if(b<c)cout<<"max="<<c;elsecout<<"max="<<b;else if (a<c)cout<<"max="<<c;elsecout<<"max="<<a;cout<<endl;return 0;}3-9-2、#include <iostream>using namespace std;int main ( ){int a,b,c,temp,max ;cout<<"please enter three integer numbers:";cin>>a>>b>>c;temp=(a>b)?a:b; /* 将a和b中的大者存入temp中*/max=(temp>c)?temp:c; /* 将a和b中的大者与c比较,最大者存入max */cout<<"max="<<max<<endl;return 0;}3-10、#include <iostream>using namespace std;int main ( ){int x,y;cout<<"enter x:";cin>>x;if (x<1){y=x;cout<<"x="<<x<<", y=x="<<y;}else if (x<10) // 1≤x<10{y=2*x-1;cout<<"x="<<x<<", y=2*x-1="<<y;}else// x≥10{y=3*x-11;cout<<"x="<<x<<",y=3*x-11="<<y;}cout<<endl;return 0;}3-11、#include <iostream>using namespace std;int main (){float score;char grade;cout<<"please enter score of student:"; cin>>score;while (score>100||score<0){cout<<"data error,enter data again.";cin>>score;}switch(int(score/10)){case 10:case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default:grade='E';}cout<<"score is "<<score<<", grade is "<<grade<<endl;return 0;}3-12、#include <iostream>using namespace std;int main (){long int num;intindiv,ten,hundred,thousand,ten_thousand,pla ce;/*分别代表个位,十位,百位,千位,万位和位数*/cout<<"enter an integer(0~99999):"; cin>>num;if (num>9999)place=5;else if (num>999)place=4;else if (num>99)place=3;else if (num>9)place=2;else place=1;cout<<"place="<<place<<endl;//计算各位数字ten_thousand=num/10000;thousand=(int)(num-ten_thousand*10000)/1 000;hundred=(int)(num-ten_thousand*10000-tho usand*1000)/100;ten=(int)(num-ten_thousand*10000-thousan d*1000-hundred*100)/10;indiv=(int)(num-ten_thousand*10000-thousa nd*1000-hundred*100-ten*10);cout<<"original order:";switch(place){case5:cout<<ten_thousand<<","<<thousand<<","< <hundred<<","<<ten<<","<<indiv<<endl;cout<<"reverse order:";cout<<indiv<<ten<<hundred<<thousand<<ten _thousand<<endl;break;case4:cout<<thousand<<","<<hundred<<","<<ten <<","<<indiv<<endl;cout<<"reverse order:";cout<<indiv<<ten<<hundred<<thousand<<en dl;break;case3:cout<<hundred<<","<<ten<<","<<indiv<<en dl;cout<<"reverse order:";cout<<indiv<<ten<<hundred<<endl;break;case 2:cout<<ten<<","<<indiv<<endl;cout<<"reverse order:";cout<<indiv<<ten<<endl;break;case 1:cout<<indiv<<endl;cout<<"reverse order:";cout<<indiv<<endl;break;}return 0;}3-13-1、#include <iostream>using namespace std;int main (){ long i; //i为利润floatbonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1; //利润为10万元时的奖金bon2=bon1+100000*0.075; //利润为20万元时的奖金bon4=bon2+100000*0.05; //利润为40万元时的奖金bon6=bon4+100000*0.03; //利润为60万元时的奖金bon10=bon6+400000*0.015; //利润为100万元时的奖金cout<<"enter i:";cin>>i;if (i<=100000)bonus=i*0.1;//利润在10万元以内按10%提成奖金else if (i<=200000)bonus=bon1+(i-100000)*0.075; //利润在10万元至20万时的奖金else if (i<=400000)bonus=bon2+(i-200000)*0.05; //利润在20万元至40万时的奖金else if (i<=600000)bonus=bon4+(i-400000)*0.03; //利润在40万元至60万时的奖金else if (i<=1000000)bonus=bon6+(i-600000)*0.015; //利润在60万元至100万时的奖金elsebonus=bon10+(i-1000000)*0.01; //利润在100万元以上时的奖金cout<<"bonus="<<bonus<<endl;return 0;}3-13-2、#include <iostream>using namespace std;int main (){long i;float bonus,bon1,bon2,bon4,bon6,bon10; int c;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;cout<<"enter i:";cin>>i;c=i/100000;if (c>10) c=10;switch(c){case 0: bonus=i*0.1; break;case 1: bonus=bon1+(i-100000)*0.075; break;case 2:case 3: bonus=bon2+(i-200000)*0.05;break;case 4:case 5: bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015; break;case 10: bonus=bon10+(i-1000000)*0.01;}cout<<"bonus="<<bonus<<endl;return 0;}3-14、#include <iostream>using namespace std;int main (){int t,a,b,c,d;cout<<"enter four numbers:";cin>>a>>b>>c>>d;cout<<"a="<<a<<", b="<<b<<", c="<<c<<",d="<<d<<endl;if (a>b){t=a;a=b;b=t;}if (a>c){t=a; a=c; c=t;}if (a>d){t=a; a=d; d=t;}if (b>c){t=b; b=c; c=t;}if (b>d){t=b; b=d; d=t;}if (c>d){t=c; c=d; d=t;}cout<<"the sorted sequence:"<<endl;cout<<a<<", "<<b<<", "<<c<<", "<<d<<endl; return 0;}3-15、#include <iostream>using namespace std;int main (){int p,r,n,m,temp;cout<<"please enter two positive integer numbers n,m:";cin>>n>>m;if (n<m){temp=n;n=m;m=temp; //把大数放在n中, 小数放在m中}p=n*m; //先将n和m的乘积保存在p中, 以便求最小公倍数时用while (m!=0) //求n和m 的最大公约数{r=n%m;n=m;m=r;}cout<<"HCF="<<n<<endl;cout<<"LCD="<<p/n<<endl; // p是原来两个整数的乘积return 0;}3-16、#include <iostream>using namespace std;int main (){char c;int letters=0,space=0,digit=0,other=0;cout<<"enter one line::"<<endl;while((c=getchar())!='\n'){if (c>='a' && c<='z'||c>='A' && c<='Z')letters++;else if (c==' ')space++;else if (c>='0' && c<='9')digit++;elseother++;}cout<<"letter:"<<letters<<", space:"<<space<<", digit:"<<digit<<", other:"<<other<<endl;return 0;}3-17、#include <iostream>using namespace std;int main (){int a,n,i=1,sn=0,tn=0;cout<<"a,n=:";cin>>a>>n;while (i<=n){tn=tn+a; //赋值后的tn为i个a 组成数的值sn=sn+tn; //赋值后的sn为多项式前i项之和a=a*10;++i;}cout<<"a+aa+aaa+...="<<sn<<endl;return 0;}3-18、#include <iostream>using namespace std;int main (){float s=0,t=1;int n;for (n=1;n<=20;n++){t=t*n; // 求n!s=s+t; // 将各项累加}cout<<"1!+2!+...+20!="<<s<<endl;return 0;}3-19、#include <iostream>using namespace std;int main (){int i,j,k,n;cout<<"narcissus numbers are:"<<endl;for (n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if (n == i*i*i + j*j*j + k*k*k)cout<<n<<" ";}cout<<endl;return 0;}3-20-1、#include <iostream>using namespace std;int main(){const int m=1000; // 定义寻找范围int k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;int i,a,n,s;for (a=2;a<=m;a++) // a是2~1000之间的整数,检查它是否为完数{n=0; // n用来累计a的因子的个数s=a; // s用来存放尚未求出的因子之和,开始时等于afor (i=1;i<a;i++) // 检查i是否为a 的因子if (a%i==0) // 如果i是a的因子{n++; // n加1,表示新找到一个因子s=s-i; // s减去已找到的因子,s的新值是尚未求出的因子之和switch(n) // 将找到的因子赋给k1,...,k10{case 1:k1=i; break; // 找出的笫1个因子赋给k1case 2:k2=i; break; // 找出的笫2个因子赋给k2case 3:k3=i; break; // 找出的笫3个因子赋给k3case 4:k4=i; break; // 找出的笫4个因子赋给k4case 5:k5=i; break; // 找出的笫5个因子赋给k5case 6:k6=i; break; // 找出的笫6个因子赋给k6case 7:k7=i; break; // 找出的笫7个因子赋给k7case 8:k8=i; break; // 找出的笫8个因子赋给k8case 9:k9=i; break; // 找出的笫9个因子赋给k9case 10:k10=i; break; // 找出的笫10个因子赋给k10}}if (s==0) // s=0表示全部因子都已找到了{cout<<a<<" is a 完数"<<endl;cout<<"its factors are:";if (n>1) cout<<k1<<","<<k2; // n>1表示a至少有2个因子if (n>2) cout<<","<<k3; // n>2表示至少有3个因子,故应再输出一个因子if (n>3) cout<<","<<k4; // n>3表示至少有4个因子,故应再输出一个因子if (n>4) cout<<","<<k5; // 以下类似if (n>5) cout<<","<<k6;if (n>6) cout<<","<<k7;if (n>7) cout<<","<<k8;if (n>8) cout<<","<<k9;if (n>9) cout<<","<<k10;cout<<endl<<endl;}}return 0;}3-20-2、#include <iostream>using namespace std;int main(){int m,s,i;for (m=2;m<1000;m++){s=0;for (i=1;i<m;i++)if ((m%i)==0) s=s+i;if(s==m){cout<<m<<" is a完数"<<endl;cout<<"its factors are:";for (i=1;i<m;i++)if (m%i==0) cout<<i<<" ";cout<<endl;}}return 0;}3-20-3、#include <iostream>using namespace std;int main(){int k[11];int i,a,n,s;for (a=2;a<=1000;a++){n=0;s=a;for (i=1;i<a;i++)if ((a%i)==0){n++;s=s-i;k[n]=i; // 将找到的因子赋给k[1]┅k[10]}if (s==0){cout<<a<<" is a 完数"<<endl;cout<<"its factors are:";for (i=1;i<n;i++)cout<<k[i]<<" ";cout<<k[n]<<endl;}}return 0;}3-21、#include <iostream>using namespace std;int main(){int i,t,n=20;double a=2,b=1,s=0;for (i=1;i<=n;i++){s=s+a/b;t=a;a=a+b; // 将前一项分子与分母之和作为下一项的分子b=t; // 将前一项的分子作为下一项的分母}cout<<"sum="<<s<<endl;return 0;}3-22、#include <iostream>using namespace std;int main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2; // 第1天的桃子数是第2天桃子数加1后的2倍x2=x1;day--;}cout<<"total="<<x1<<endl;return 0;}3-23、#include <iostream>#include <cmath>using namespace std;int main(){float a,x0,x1;cout<<"enter a positive number:"; cin>>a; // 输入a的值x0=a/2;x1=(x0+a/x0)/2;do{x0=x1;x1=(x0+a/x0)/2;}while(fabs(x0-x1)>=1e-5);cout<<"The square root of "<<a<<" is "<<x1<<endl;return 0;}3-24、#include <iostream>using namespace std;int main(){int i,k;for (i=0;i<=3;i++) // 输出上面4行*号{for (k=0;k<=2*i;k++)cout<<"*"; // 输出*号cout<<endl; //输出完一行*号后换行}for (i=0;i<=2;i++) // 输出下面3行*号{for (k=0;k<=4-2*i;k++)cout<<"*"; // 输出*号cout<<endl; // 输出完一行*号后换行}return 0;}3-25、#include <iostream>using namespace std;int main(){char i,j,k; /* i是a的对手;j是b的对手;k是c的对手*/for (i='X';i<='Z';i++)for (j='X';j<='Z';j++)if (i!=j)for (k='X';k<='Z';k++)if (i!=k && j!=k)if (i!='X' && k!='X' && k!='Z')cout<<"A--"<<i<<"B--"<<j<<" C--"<<k<<endl;return 0;}第四章4-1、#include <iostream>using namespace std;int main(){int hcf(int,int);int lcd(int,int,int);int u,v,h,l;cin>>u>>v;h=hcf(u,v);cout<<"H.C.F="<<h<<endl;l=lcd(u,v,h);cout<<"L.C.D="<<l<<endl;return 0;}int hcf(int u,int v){int t,r;if (v>u){t=u;u=v;v=t;}while ((r=u%v)!=0){u=v;v=r;}return(v);}int lcd(int u,int v,int h){return(u*v/h);}4-2、#include <iostream>#include <math.h>using namespace std;float x1,x2,disc,p,q;int main(){void greater_than_zero(float,float);void equal_to_zero(float,float);void smaller_than_zero(float,float);float a,b,c;cout<<"input a,b,c:";cin>>a>>b>>c;disc=b*b-4*a*c;cout<<"root:"<<endl;if (disc>0){greater_than_zero(a,b);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else if (disc==0){equal_to_zero(a,b);cout<<"x1="<<x1<<",x2="<<x2<<endl;}else{smaller_than_zero(a,b);cout<<"x1="<<p<<"+"<<q<<"i"<<endl;cout<<"x2="<<p<<"-"<<q<<"i"<<endl;}return 0;}void greater_than_zero(float a,float b) /* 定义一个函数,用来求disc>0时方程的根*/ {x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}void equal_to_zero(float a,float b) /* 定义一个函数,用来求disc=0时方程的根*/ {x1=x2=(-b)/(2*a);}void smaller_than_zero(float a,float b) /* 定义一个函数,用来求disc<0时方程的根*/ {p=-b/(2*a);q=sqrt(-disc)/(2*a);}4-3、#include <iostream>using namespace std;int main(){int prime(int); /* 函数原型声明*/int n;cout<<"input an integer:";cin>>n;if (prime(n))cout<<n<<" is a prime."<<endl;elsecout<<n<<" is not a prime."<<endl; return 0;}int prime(int n){int flag=1,i;for (i=2;i<n/2 && flag==1;i++)if (n%i==0)flag=0;return(flag);}4-4、#include <iostream>using namespace std;int main(){int fac(int);int a,b,c,sum=0;cout<<"enter a,b,c:";cin>>a>>b>>c;sum=sum+fac(a)+fac(b)+fac(c);cout<<a<<"!+"<<b<<"!+"<<c<<"!="<<sum<<e ndl;return 0;}int fac(int n){int f=1;for (int i=1;i<=n;i++)f=f*i;return f;}4-5、#include <iostream>#include <cmath>using namespace std;int main(){double e(double);double x,sinh;cout<<"enter x:";cin>>x;sinh=(e(x)+e(-x))/2;cout<<"sinh("<<x<<")="<<sinh<<endl; return 0;}double e(double x){return exp(x);}4-6、#include <iostream>#include <cmath>using namespace std;int main(){doublesolut(double ,double ,double ,double ); double a,b,c,d;cout<<"input a,b,c,d:";cin>>a>>b>>c>>d;cout<<"x="<<solut(a,b,c,d)<<endl;return 0;}double solut(double a,double b,double c,double d){double x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}4-7、#include <iostream>#include <cmath>using namespace std;int main(){void godbaha(int);int n;cout<<"input n:";cin>>n;godbaha(n);return 0;}void godbaha(int n) {int prime(int);int a,b;for(a=3;a<=n/2;a=a+2){if(prime(a)){b=n-a;if (prime(b))cout<<n<<"="<<a<<"+"<<b<<endl;}}}int prime(int m){int i,k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0) break;if (i>k) return 1;else return 0;}4-8、#include <iostream>using namespace std;int main(){int x,n;float p(int,int);cout<<"input n & x:";cin>>n>>x;cout<<"n="<<n<<",x="<<x<<endl;;cout<<"P"<<n<<"(x)="<<p(n,x)<<endl; return 0;}float p(int n,int x){if (n==0)return(1);else if (n==1)return(x);elsereturn(((2*n-1)*x*p((n-1),x)-(n-1)*p((n-2),x))/ n);}4-9、#include <iostream>using namespace std;int main(){void hanoi(int n,char one,char two,char three);int m;cout<<"input the number of diskes:"; cin>>m;cout<<"The steps of moving "<<m<<" disks:"<<endl;hanoi(m,'A','B','C');return 0;}void hanoi(int n,char one,char two,char three) //将n个盘从one座借助two座,移到three座{void move(char x,char y);if(n==1) move(one,three);else{hanoi(n-1,one,three,two);move(one,three);hanoi(n-1,two,one,three);}}void move(char x,char y){cout<<x<<"-->"<<y<<endl;}4-10、#include <iostream>using namespace std;int main(){void convert(int n);int number;cout<<"input an integer:";cin>>number;cout<<"output:"<<endl;if (number<0){cout<<"-";number=-number;}convert(number);cout<<endl;return 0;}void convert(int n){int i;char c;if ((i=n/10)!=0)convert(i);c=n%10+'0';cout<<" "<<c;}4-11、#include <iostream>using namespace std;int main(){int f(int);int n,s;cout<<"input the number n:";cin>>n;s=f(n);cout<<"The result is "<<s<<endl;return 0;}int f(int n){;if (n==1)return 1;elsereturn (n*n+f(n-1));}4-12、#include <iostream>#include <cmath>using namespace std;#define S(a,b,c) (a+b+c)/2#define AREA(a,b,c) sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c) -c))int main(){float a,b,c;cout<<"input a,b,c:";cin>>a>>b>>c;if (a+b>c && a+c>b && b+c>a)cout<<"area="<<AREA(a,b,c)<<endl; elsecout<<"It is not a triangle!"<<endl; return 0;}4-14、#include <iostream>using namespace std;//#define LETTER 1int main(){char c;cin>>c;#if LETTERif(c>='a' && c<='z')c=c-32;#elseif(c>='A' && c<='Z')c=c+32;#endifcout<<c<<endl;return 0;}4-15、#include <iostream>using namespace std;#define CHANGE 1int main(){char ch[40];cout<<"input text:"<<endl;;gets(ch);#if (CHANGE){for (int i=0;i<40;i++){if (ch[i]!='\0')if (ch[i]>='a'&& ch[i]<'z'||ch[i]>'A'&& ch[i]<'Z')ch[i]+=1;else if (ch[i]=='z'||ch[i]=='Z')ch[i]-=25;}}#endifcout<<"output:"<<endl<<ch<<endl;return 0;}4-16-1、#include <iostream>using namespace std;int a;int main(){extern int power(int);int b=3,c,d,m;cout<<"enter an integer a and its power m:"<<endl;cin>>a>>m;c=a*b;cout<<a<<"*"<<b<<"="<<c<<endl;d=power(m);cout<<a<<"**"<<m<<"="<<d<<endl; return 0;}4-16-2、extern int a;int power(int n){int i,y=1;for(i=1;i<=n;i++)y*=a;return y;}第五章5-1、#include <iostream>#include <iomanip>using namespace std;#include <math.h>int main(){int i,j,n,a[101];for (i=1;i<=100;i++)a[i]=i;a[1]=0;for (i=2;i<sqrt(100);i++)for (j=i+1;j<=100;j++){if(a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0; }cout<<endl;for (i=1,n=0;i<=100;i++){if (a[i]!=0){cout<<setw(5)<<a[i]<<" ";n++;}if(n==10){cout<<endl;n=0;}}cout<<endl;return 0;}5-2、#include <iostream>using namespace std;//#include <math.h>int main(){int i,j,min,temp,a[11];cout<<"enter data:"<<endl;for (i=1;i<=10;i++){cout<<"a["<<i<<"]=";cin>>a[i]; //输入10个数}cout<<endl<<"The original numbers:"<<endl;;for (i=1;i<=10;i++)cout<<a[i]<<" "; // 输出这10个数cout<<endl;;for (i=1;i<=9;i++) //以下8行是对10个数排序{min=i;for (j=i+1;j<=10;j++)if (a[min]>a[j]) min=j;temp=a[i]; //以下3行将a[i+1]~a[10]中最小者与a[i] 对换a[i]=a[min];a[min]=temp;}cout<<endl<<"The sorted numbers:"<<endl;for (i=1;i<=10;i++) // 输出已排好序的10个数cout<<a[i]<<" ";cout<<endl;return 0;}5-3、#include <iostream>using namespace std;int main(){int a[3][3],sum=0;int i,j;cout<<"enter data:"<<endl;;for (i=0;i<3;i++)for (j=0;j<3;j++)cin>>a[i][j];for (i=0;i<3;i++)sum=sum+a[i][i];cout<<"sum="<<sum<<endl;return 0;}5-4、#include <iostream>using namespace std;int main(){int a[11]={1,4,6,9,13,16,19,28,40,100};int num,i,j;cout<<"array a:"<<endl;for (i=0;i<10;i++)cout<<a[i]<<" ";cout<<endl;;cout<<"insert data:";cin>>num;if (num>a[9])a[10]=num;else{for (i=0;i<10;i++){if (a[i]>num){for (j=9;j>=i;j--)a[j+1]=a[j];a[i]=num;break;}}}cout<<"Now, array a:"<<endl;for (i=0;i<11;i++)cout<<a[i]<<" ";cout<<endl;return 0;}5-5、#include <iostream>using namespace std;int main(){ const int n=5;int a[n],i,temp;cout<<"enter array a:"<<endl;for (i=0;i<n;i++)cin>>a[i];cout<<"array a:"<<endl;for (i=0;i<n;i++)cout<<a[i]<<" ";for (i=0;i<n/2;i++) //循环的作用是将对称的元素的值互换{ temp=a[i];a[i]=a[n-i-1];a[n-i-1]=temp;}cout<<endl<<"Now,array a:"<<endl;for (i=0;i<n;i++)。
《VFP面向对象程序设计》课程习题集及参考答案
《VFP面向对象程序设计》课程习题集及参考答案2011年6月第一章数据库基本理论一、判断题1.数据处理的目的就是从原始数据中得到有用的信息。
A.对*B.错2.关系模型的结构可以看作是一个数据库的结构。
A.对*B.错3.数据库管理系统是数据库系统的核心。
A.对*B.错4. VFP 系统为用户提供了命令操作方式、菜单操作方式和程序操作方式。
A.对*B.错二、单选题1.将数据集中起来以一定的组织方式存放在计算机的外部存储器中,就构成了。
*A.数据库 B.数据集合 C.数据操作系统 D.数据库管理系统2.数据库系统的构成有数据库、计算机硬件系统、用户和。
A.操作系统B.文件系统C.数据集合*D.数据库管理系统3.数据库、数据库系统、数据库管理系统这三者之间的关系是。
*A. 数据库系统包含数据库和数据库管理系统B. 数据库管理系统包含数据库和数据库系统C. 数据库包含数据库系统和数据库管理系统D. 数据库系统就是数据库,也就是数据库管理系统4.关系数据库管理系统所管理的关系是。
A.一个DBF文件*B.若干个二维表C.一个DBC文件D.若干个DBC文件5.在关系数据库管理系统中,一个关系对应一个。
A.字段B.记录*C.数据表D.索引文件6.关系数据库管理系统存储与管理数据的基本形式是。
A.关系树*B.二维表C.结点路径D.文本文件7.数据库是按一定结构存储在一起的。
A.程序集合*B.数据集合C.运算式集合D.函数集合8.在有关数据库的概念中,若干记录的集合称为。
A.字段B.数据库C.数据项*D.数据表9.VFP6.0 DBMS是基于关系型数据模型的。
A.操作系统的一部分*B.操作系统支持下的系统软件C.一种编译程序D.一种操作系统10.在关系运算中,查找满足一定条件的元组运算称之为。
A.复制*B.选择C.投影D.关联11.如果要改变一个关系中属性的排列顺序,应使用的关系运算是。
A.重建B.选取*C.投影D.连接12.在有关数据库的概念中,若干记录的集合称为________。
面向对象程序设计课后习题答案
面向对象程序设计课后习题答案第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:每一个对象必须有一个名字以区别于其他对象。
需要用属性来描述它的某些特性。
有一组操作,每一个操作决定了对象的一种行为。
对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
JAVA语言与面向对象程序设计课后习题答案
JAVA语言与面向对象程序设计课后习题答案第1章面向对象软件开发概述1.简述面向过程问题求解和面向对象问题求解的异同。
试列举出面向对象和面向过程的编程语言各两种。
请问:面向过程问题解,以具体内容的解题过程为研究和同时实现的主体,其思维特点更吻合于计算机;面向对象的问题解,则就是以d对象‖为主体,d对象‖就是现实世界的实体或概念在计算机逻辑中的抽象化则表示,更吻合于人的思维特点。
面向过程的编程语言:c,pascal,foratn。
面向对象的编程语言:c++,java,c#。
2.详述对象、类和实体及它们之间的相互关系。
尝试从日常碰触至的人或物中抽象化出来对象的概念。
答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。
类是同种对象的集合与抽象。
类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。
如果类是抽象的概念,如d电视机‖,那么对象就是某一个具体的电视机,如d我家那台电视机‖。
3.对象存有哪些属性?什么就是状态?什么就是犯罪行为?二者之间有何关系?建有对象d学生‖,精义这个对象设计状态与犯罪行为。
答:对象都具有状态和行为。
对象的状态又称作对象的静态属性,主要指对象内部所涵盖的各种信息,也就是变量。
每个对象个体都具备自己专有的内部变量,这些变量的值标明了对象所处的状态。
行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。
学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;学生的行为:自我介绍、入学注册、选课、参加比赛等。
4.对象间存有哪三种关系?对象d班级‖与对象d学生‖就是什么关系?对象d学生‖与对象d大学生‖就是什么关系?答:对象间可能存在的关系有三种:包含、继承和关联。
对象d班级‖与对象d学生‖是包含关系。
对象d学生‖与对象d大学生‖是继承关系。
Java面向对象程序设计—习题和答案
4.11
1.被继承的类一般称为___________或___________,继承的类称为___________。
2.在继承中发生的强制类型转换为___________。
3.设有下面两个类的定义:
class Person {}
class Student extends Person {
AWT是随早期Java一起发布的GUI工具包,是所有Java版本中都包含的基本GUI工具包,其中不仅提供了基本的控件,并且还提供了丰富的事件处理接口。Swing是继AWT之后Sun推出的又一款GUI工具包。Swing建立在AWT 1.1的,也就是说AWT是Swing大厦的基石
6.适配器是指实现了一个或多个监听接口的类,适配器类为所有的事件处理方法都提供了空实现。实际开发中在编写监听器代码时不再直接实现监听接口,而是继承适配器类并重写需要的事件处理方法,这样就避免了大量编写不必要代码的情况
}
则顺序执行如下语句后输出结果为:()
Father a;
Child b;
A、我是父类B、我是子类
我是子类我是父类
C、我是父类D、我是子类
我是父类我是子类
5.什么时覆盖,它有什么优点
6.this和super的作用是什么
7.什么是动态绑定
答案:
1.超类、父类、子类
2.引用类型转换
3.B
4.A
5.子类其自身的方法中,若与继承过来的方法具有相同的签名,便构成了方法的覆盖(有的资料称之为方法的重写)。覆盖的主要优点是能够定义各子类的特有行为
public static void main(String[] args) {
String s = "C://myFile/a/b/c/d/a.text";
面向对象程序设计习题
5、下面关于私有继承方式的论述中错误的是()。A基类中的私有成员对其对象不可见B基类中的私有成员对其派生类不可见C基类中的公有成员对其派生类可见D基类中的保护成员对其派生类不可见
s3=s1+s2;
print(s3,2);
return 0;
}
void print(student b,int n)
{
cout<<b.x/n<<endl<<b.y/n<<endl<<b.z/n<<endl;
}
南开18秋学期(1703)《面向对象程序设计》在线作业-2 1、D 2、A 3、D 4、C 5、D一、单选题共35题,70分
D.fstream infile(d:\\file.dat, ios::in| ios::out);
答案:D
21.在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则()。A.完全相同B.完全不同
C.部分相同,部分不同D.以上都不对
答案:A
22.面向对象程序设计思想的主要特征中不包括( )。A.封装性B.多态性C.继承性D.功能分解,逐步求精
A.A(60)
B.SetNum(60)
C.ptr->SetNum(60)
D.ptr->n=60
答案:C
4.下面叙述错误的是( )。
A.派生类可以使用private派生
B.对基类成员的访问必须是无二义性的
C.基类成员的访问能力在派生类中维持不变
D.赋值兼容规则也适用于多继承的组合
答案:C
5.抽象类的作用主要是()。
delete []v
ARRAY::
《JAVA面向对象程序设计》练习题库B
D. Variant
【解析】A
5.在屏幕上显示的消息正确的语句是(选择一项)
A. System.out.println(“I am Java Expert”);
B. system.out.println(“I am Java Expert”);
C. System.Out.Println(“I am Java Expert”);
B.JPopupMenu
C.JMenu
D.JMenuBar
【解析】A
2.( )是对JMenu”文件”的有效声明。(选择二项)
A.JMenu mnufile = new JMenu(“文件”);
B
Mnufile.setText(“文件”);
C.JMenu mnufile = new JMenu(“文件”);
B.JPanel
C.JScrollPane
D.JTextArea
【解析】C
4.( )是用来生成文本框的Swing组件(选择一项)
A.JComponent
B.JTextField
C.Object
D.JTextArea
【解析】B
5.( )允许在任何时间点从一组选项中只选择一个选项。(选择一项)
A.JTextArea
Mnufile.setLabel(“文件”);
D.JMenu mnufile = new JMenu(“文件”);
Mnufile.setCaption(“文件”);
【解析】AB
3.以下菜单类中,( )是父类。(选择一项)
A.JCheckBoxMenuItem
B.JRadioButtonMenuItem
B.exists();
C++面向对象程序设计课后答案(谭浩强)
C++面向对象程序设计课后答案(1-4章)第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
《面向对象程序设计》习题答案2008-c++部分
(3) 静态成员属于 类 ,而不属于 对象 ,它由同一个类的所有对象共 同维护,为这些对象所共享。静态函数成员可以直接引用该类的 静态 数据 和函数成员,而不能直接引用 非静态数据成员 。对于公有的静 态函数成员,可以通过 类名 或 对象名 来调用;而一般的非静态函 数成员只能通过对象名来调用。 (4) 在实际程序设计中,一个源程序可划分为三个文件: 类声明文件 、类 实现文件 、 和 类的使用文件 。
面向对象程序设计习题
3-3 阅读程序题 (1) 以下是一个类中包含另一个类对象成员(类的组合) 的例子,试分析并给出以下程序的运行结果。
面向对象程序设计习题
void print() {cout<<“ 父 亲 的 年 龄 是 : "<<age<<endl; } Son &gets1() { cout<<"第一个"; return s1; } Son &gets2() { cout<<"第二个"; return s2; } }; void main() { Father f(10,5,38); f.print(); f.gets1().print(); f.gets2().print(); }
}
面向对象程序设计习题
void main() {
student stu[]={student("王红",18),student("吴伟",19),student("李丽",17)};
int i,min=0,max=0; for(i=1;i<3;i++) { if(compare(stu[max],stu[i])==-1) max=i; else if(compare(stu[max],stu[i])==1) min=i; } cout<<"最大年龄:"<<stu[max].get_age() <<",姓名:"<<stu[max].get_name()<<endl; cout<<"最小年龄:"<<stu[min].get_age() <<",姓名:"<<stu[min].get_name()<<endl;
java面向对象程序设计习题集
JA V A面向对象程序设计习题集主编姚骏屏目录引言 ....................................................... 错误!未定义书签。
第一章JA V A基础................................... 错误!未定义书签。
一、填空题.......................................... 错误!未定义书签。
二、判断题.......................................... 错误!未定义书签。
三、选择题.......................................... 错误!未定义书签。
四、程序阅读题.................................. 错误!未定义书签。
第二章控制结构................................... 错误!未定义书签。
一、选择题.......................................... 错误!未定义书签。
二、填空题.......................................... 错误!未定义书签。
三、判断题.......................................... 错误!未定义书签。
四、程序阅读题.................................. 错误!未定义书签。
五、编程题.......................................... 错误!未定义书签。
第三章字符串......................................... 错误!未定义书签。
一、选择题.......................................... 错误!未定义书签。
(完整版)UML习题汇总
UML习题汇总第一章面向对象设计与UML1.填空题(1) UML是面向对象技术领域内占主导地位的标准建模语言,它统一了过去相互独立的数十种面向对象的建模语言存在的局面。
.(2)类的定义要包含名字、属性、操作要素。
(3)面向对象程序的三大要素是封装、继承和多态(4)面向对象方法中的继承机制使类何以自动地拥有(复制)父类全部属性和操作。
(5)面向对象的系统分析要确立的三个系统模型是对象模型动态模型功能模型。
2。
选择题1。
如果想对一个类的意义进行描述,那么应该采用(C)(A)标记值(B)规格描述(C)注释(D)构造型2. 建立对象的动态模型的步骤有(A B C D)(A)准备脚本(B)确定事件(C)构造状态图(D)准备事件跟踪表3。
软件的开发模式有(A B C D)(A)瀑布模型(B)XP开发模型 (C)喷泉模型(D)构件开发模型4.下列关于类与对象的关系说法正确的是(A B C)(A)有些对象是不能被抽象成类的(B)类给出了属于该类的全部对象的抽象定义(C)类是对象集合的再抽象(D)类是用来在内存中开辟一个数据区,存储新对象的属性5。
(A)模型瀑布的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
(A)瀑布模型(B)增量模型(C)原型模型 (D)螺旋模型3.简答题1.试述对象和类的关系答:类是具有相同或相似结构、操作和约束规则的对象组成的集合,而对象是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象.类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。
类描述了一组有相同特性和相同行为的对象。
2.请简要叙述面向对象的概念.答:1.UML是一种语言。
2. UML是用来建模的。
3。
UML是统一的标准。
3.请简述面向对象设计的原则有哪些。
答:建模能够帮助我们按照实际情况或按我们需要的形式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章面向对象程序设计一.选择题1.下面有关类和对象的说法中,不正确的是【】。
A) 类是系统提供的一种数据类型B) 对象是类的实例C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类2.面向对象的特点主要概括为【】。
A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3.要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以【】。
A) 不使用任何修饰符B) 使用private修饰符C) 使用public修饰符D) 使用internal修饰符4.在C#中,【】访问修饰符修饰的字段只能由当前程序集访问。
A) private B) public C) protected D) internal5.类的字段和方法的默认访问修饰符是【】。
A) public B) private C) protected D) internal6.下列关于构造函数的描述中,不正确的是【】。
A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7.下列关于构造函数的描述中,【】是正确的。
A) 构造函数名必须与类名相同B) 构造函数不可以重载C) 构造函数不能带参数D) 构造函数可以声明返回类型8.下列的【】不是构造函数的特征。
A) 构造函数的函数名与类名相同B) 构造函数可以重载C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型9.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【】修饰符。
ClassA Aobj=new ClassA();();A) public B) public static C) private D) virtual10.在C#中,从属性的读写特性上来进行分类,可以划分为以下3种,除了【】。
A) 只读属性B) 只写属性C) 读写属性D) 不可读不可写属性11.在C#中,以下关于属性的描述中正确的是【】。
A) 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性B) 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏C) 要定义只读属性只需在属性名前加上readonly关键字D) C#的类中不能自定义属性12.以下类MyClass的属性count属于【】属性。
class MyClass{ int i;int count { get {r eturn i;}}}A) 只读B) 只写属性C) 读写D) 不可读不可写13.C#中的TestClass为一自定义类,其中有如下属性定义:public int Property{ …… }使用以下语句创建了该类的对象,并让变量obj引用该对象。
TestClass obj=new TestClass();那么,可通过【】方式访问类TestClass的Property属性。
A) MyClass. Property B) obj. PropertyC) TestClass. Property D) obj. Property()14.关于C#语言的方法,下列叙述正确的是【】。
A) 方法的定义不能嵌套,但方法的调用可以嵌套B) 方法的定义可以嵌套,但方法的调用不能嵌套C) 方法的定义和调用都不能嵌套D) 方法的定义和调用都可以嵌套15.以下所列的各方法头部中,正确的是【】。
A) void play(var a:Integer, var b:Integer)B) void play(int a, b)C) void play(int a, int b)D) Sub play(a as integer, b as integer) 16.在类A中定义了属性y:class A{ public int y{get { return 1; }set { }}}并试图通过下列代码来实现对属性y的访问:A b=new A();=2;int x=;对此,下列说法正确的是【】。
A) 属性y可读可写,因此变量x的值为2B) 属性y可读,但不可写,因此语句“=2;”是错误的C) 属性y可写,但不可读,因此语句“int x=;”是错误的D) 属性y可读可写,变量x的值为117.有以下类声明:public class Class1{private string _sData="OK!";privare string sData{set { _sData = value;}}}在Main函数中,在成功创建该类的对象obj后,以下【】语句是合法的。
A) obj. _sData="Hello!"B) obj. set;C) obj. sData="Hello!"D) (obj. sData);18.在类的定义中,类的【】描述了该类的对象的行为特征。
A) 字段B) 方法C) 属性D) 类名19.调用重载方法时,系统根据【】来选择具体的方法。
A) 参数的类型B) 参数的个数和类型C) 参数个数D) 方法的返回值类型20.下列关于方法重载的说法中,完全正确的是【】。
A) 重载方法的参数个数必须不同B) 重载方法必须具有不同的形参列表C) 重载方法必须具有不同的返回值类型D) 重载方法的参数类型必须不同21.关于静态成员,下列说法正确的是【】。
A) 同一个类中的静态成员,类实例化后,在不同的对象中形成不同的静态成员B) 在类实例化后,同类型的对象都共享类的静态成员,静态成员只有一个版本C) 在类定义时静态成员属于类,在类实例化后静态成员属于对象D) 在类实例化后静态成员已被实例化,因此不同的对象有不同的静态成员22.下列关于静态方法的说法,错误的是【】。
A) 静态方法不对特定实例进行操作,不与实例相关联B) 使用静态方法的语法格式:类名.静态方法(实参列表)C) 静态方法只能访问类中的静态成员,不能访问非静态成员D) 静态方法不能访问类中的静态成员23.已知:int a=100;void Func(ref int b) { …… }则下列函数调用正确的是【】。
A) Func(ref(10*a))B) Func(ref 10*a)C) Func(ref(a))D) Func(ref a)24.下面对方法中的ref和out参数说明错误的是【】。
A) ref和out参数传递方法相同,都是把实参的内存地址传递给形参,实参与形参指向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值B) ref是将实参传入形参,out只能用于从方法中传出值,而不能从方法调用处接受实参数据。
C) ref和out参数因为传递的是实参的地址,所以要求实参和形参的数据类型必须一致D) ref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式地转化为形参的类型25.设方法Max的签名为:public void Max(out int max, params int[] a),maxval是一个int型的值类型变量,arrayA是一个int型的数组对象,则下列调用该方法的语句中有错的是【】。
A) Max(maxval,4,5,3)B) Max(out maxval, 4, 5, 3)C) Max(out maxval, arrayA)D) Max(out maxval, 4, 5)26. 有以下类声明:class Class1{public static int Count = 0;public Class1(){Count++;}}在执行以下语句后,的值是【】。
Class1 o1 = new Class1();Class1 o2 = new Class1();A) 1B) 2C) 3D) 027.在类MyClass中有下列方法定义:public void test(params int[] arr) { ("使用params参数!"); }public void test(int x, int y) { ("使用两个整形参数!"); }请问上述方法重载有无二义性?若没有,则下列语句的输出为【】。
Myclass x=new MyClass();(0);(0,1);(0,1,2);A) 有语义二义性B) 使用params参数!使用params参数!使用params参数!C) 使用params参数!使用两个整形参数!使用params参数!D) 使用params参数!使用两个整形参数!使用两个整形参数!28.分析以下C#语句,注意类MyClass没有访问修饰符。
若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择【】。
namespace test{class MyClass{int i;}}A) private B) public C) protected D) internal29.C#中MyClass为一个自定义类,其中有以下方法定义:public void Hello() { …… }并使用以下语句创建了该类的对象obj,则可以访问类MyClass的Hello方法的语句是【】。
MyClass obj=new MyClass()A) ()B) obj:Hello()C) D) MyClass:Hello30.下列的关键字中可用于引用类的当前实例的是【】。
A) base B) this C) new D) override31.在C#中,以下有关索引器的参数个数的说法中正确的是【】。
A) 索引器只能有一个参数B) 索引器可以有多个参数C) 索引器可以没有参数D) 索引器至少要有两个参数32.委托声明的关键字是【】。
A) delegate B) sealed C) operator D) event33.以下语句的作用是【】。
public delegate void Hello(string s);A) 声明了一个名称为Hello的全局方法B) 声明了一个名称为Hello的函数原型C) 声明了一个名称为Hello的函数指针D) 声明了一个名称为Hello的委托类型34.有声明语句:delegate void TimeDelegate(string s),则以下可以和委托TimeDelegate绑定的方法是【】。
A) void f(){ }B) string f(){}C) void f(string a){ }D) string f(string a){ }35.声明一个委托类型:public delegate int myCallBack(int x); 则以下可以和委托myCallBack绑定的方法是【】A) void myCallBack(int x);B) int receive(int num);C) string receive(int x);D) 不确定的36.有以下部分C#代码,其中MyDelegate是一个【】。