第章面向对象程序设计习题
面向对象程序设计习题库
面向对象程序设计习题库选择题1. 一个设计得好的面向对象系统具有( D)特征。
A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(C)。
A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象封装性、继承性、多态性D 封装性、易维护性、可扩展性、可重用性3. 关于C#程序的书写,下列不正确的说法是( D )。
A. 区分大小写B. 一行可以写多条语句C. 一条语句可写成多行D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法4. 关于C#语言的基本语法,下列哪些说法正确的是( C )A. C#语言使用using 来引用需要用到的命名空间;B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;C. C#语言中使用的名称严格区分大小写;D. C#中一条语句必须写在一行内;5 以下标识符中,正确的是(A )。
A._nNameB. typeofC. 6bD. x5#6.字符串连接运算符包括&和( A )。
A. +B. -C. *D. /7.拆箱是关于:( B )A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换8.装箱是关于:( A )A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换9.下列引用类型和值类型描述正确的是(A )。
A. 引用类型变量保存内存地址,值类型直接保存变量值B. 引用类型在变量中直接保存变量值,值类型保存内存地址C. 引用类型和值类型保存数据的方式相同D. .NET Framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:( A )A、通过类名调用B、通过实例化的对象调用C、在主方法中直接调用D、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(A )A、string类型B、double类型C、int类型D、char类型12.下列类型中为值类型的是( C )A. 字符串类型B. 树组类型C. 枚举类型D. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:( C )A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低14. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是__C__。
面向对象程序设计习题
⾯向对象程序设计习题选择题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. 关于C + +与C语言的关系描述中,(D)是错误的。
(A)C语言是C + +的一个子集 (B) C语言与C++是兼容的(C) C++对C语言进行了一些改进(D) C++和C语言都是面向对象的2. 下面关于对象概念的描述中,(B)是错误的。
(A )对象就是C语言的结构变量(B)对象代表着正在创建的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传递是通过消息进行的3. 下面关于类概念的描述中,(D)是错误的。
(A )类是抽象数据类型的实现(B )类是具有共同行为的若干对象的统一描述体(C)类是创建对象的样板(D)类就是C语言的结构类型4. 按照标识符的要求,(A )符号不能组成标识符。
(A )连接符 (B)下划线 (C)大小写字母 (D)数字字符5. 下列符号中,(C)不可作为分隔符。
(A), (B) : (C)? ( D);6. 在16位机中,int型字宽为(A)字节。
(A ) 2 ( B) 4 ( C) 6 (D) 87. 类型修饰符unsigned修饰(D)类型是错误的。
(A)char ( B) int (C) long int (D) float& 对于int *pa[5];的描述,(D)是正确的。
(A)pa是一个指向数组的指针,所指向的数组是5个int型元素(B)pa是一个指向某数组中第5个元素的指针,该元素是int变量(C)pa[5]表示某个数组的第5个元素(D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针。
9. 下列关于指针的运算中,(D)是非法的。
(A)两个指针在一定条件下,可以进行相等或不等的运算。
(B)可以有一个空指针赋值给某个指针。
(C)一个指针可以加上一个整数。
(D)两个指针在一定条件下,可以相加。
10. 指针可以用来表示数组元素,下列表示中( A )是错误的。
已知:int a[3][7];(A)*(a+1)[5] ( B) *(*a+3) (C) *(*(a+1)) (D) *(&a[0][0]+2)11. 下列表示引用的方法中,(A )是正确的。
《面向对象程序设计》第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特有的方法。
面向对象程序设计习题
第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();ClassA.M1();A) public B) public static C) private D) virtual10. 在C#中, 从属性的读写特性上来进行分类, 可以划分为以下3种, 除了【】。
《面向对象程序设计》习题
《面向对象程序设计》习题一、单项选择题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、关于以下程序段中语法错误的正确描述是( )。
《JAVA面向对象程序设计》练习题库B
第一章 Java 简介1. 下面( )是JDK中的Java运行工具.(选择二项)A. javacB. javamC. javaD. javar【解析】A C2. 选出在Java中有效的注释声明 (选择二项)A.//This is a commentB.*/This is a commentC./This is a commentD./*This is a comment*/【解析】AD3. 下面( )命令可用于编译Java程序.(选择一项)A. javaB. javacC. appletviewerD. javadoc【解析】B4. 下面( )数据类型可用于main()方法中传递的参数. (选择一项)A. StringB. IntegerC. BooleanD. Variant【解析】A5. 在屏幕上显示的消息正确的语句是(选择一项) 【解析】A6. Java编译器会将Java程序转换为 (选择一项)A. 字节码B. 可执行代码C. 机器代码D. 以上所有选项都不正确【解析】A7. Java源代码文件的扩展名为 (选择一项)A. .classB. .javaC. .comD. 以上所有选项都不正确【解析】B第二章 Java语言基础1. 在Java中,byte数据类型的范围是(选择一项)A. -32767~32768B. -32768~32767C. -127~128D. -128~127【解析】D2. 以下( )是合法的标识符(选择二项)A. Te1_numB. emp1C. 8678【解析】AB3. 下列代码的输出结果是(选择一项)【解析】A4. 以下关键字(选择一项)用于终止循环语句A. breakB. exitC. endD. terminate【解析】A5. 不论测试条件是什么,下列(选择一项)循环将至少执行一次.A. whileB. do-whileC. forD. for-each【解析】B6. 下列代码的输出结果是 (选择一项 )A.6A.6B.3C.1D.0【解析】A7. 编译运行下面的代码时会打印 (选择一项)D.数组超界【解析】C第三章面向对象的概念和Java实现(1)1. ( )是拥有属性和行为或方法的实体. (选择一项)A. 对象B. 类C. 方法D. 构造方法【解析】A2. 对象的特性在类中表示为变量,成为类的(选择一项)A. 对象B. 属性C. 方法D. 数据类型【解析】B3. ( )就是检验有关某个实体的所有可用信息的过程,以便标识与应用程序相关的信息. (选择一项)A. 抽象B. 封装C. 方法D. 构造方法【解析】A4. 如果类的方法没有返回值,该方法的返回类型应当是 (选择一项)A. nullB. voidC. staticD. public【解析】B5. ( )关键字表示它是一种类方法,且无需创建对象即可访问. (选择一项)A. voidB. staticC. returnD. public【解析】B6. 每个类都定义有( ) ,以便初始化其成员变量(选择一项)A. 方法B. main() 方法C. 构造方法D. 对象【解析】C第四章面向对象的概念和Java实现(2)1、()术语常常用来指代类。
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复习题库习题3.1---习题3.6
第三章面向对象程序设计一、选择题1.下列不属于面向对象编程的三个特征的是(B)A.封装B.指针操作C.多态性D.继承2.类所实现的接口以及修饰不可以是(D)A.publicB.abstractC.finalD.void3.下列类的定义,错误的是(D)A.public class test extends Object{……}B.final class operators{……}C.class Point{……}D.void class Point{……}4.关键字supper的作用是(D)A.用来访问父类被隐藏的成员变量B.用来调用父类中被重载的方法C.用来调用父类的构造函数D.以上都是5.关于对象的删除,下列说法正确的是(C)A.必须由程序员完成对象的清除B.java把没有引用的对象作为垃圾收集起来并释放C.只有当程序中调用System.gc()方法时才能进行垃圾收集D.java中的对象都很小,一般不进行删除操作。
二、填空题1.把对象实例化可以生成多个对象,使用____new_____运算符为对象分配内存空间。
2.java程序引入接口的概念,是为了弥补只允许类的____单继承____的缺憾。
3.java语言以___类____为程序的基本单位,它是具有某些共同特性实体的集合,是一种抽象的概念。
4.抽象方法只能存在于抽象类中。
抽象方法用关键字___abstract_____来修饰。
5.java语言中____Object___是所有类的根.6.在java中有一种叫做_____构造函数__的特殊方法,在程序中用它来对类成员进行初始化.7.new是___创建___对象的操作符.8.我们在java程序中,把关键字____super____加到方法名称的前面,来实现子类调用父类的方法9.在java程序里,同一类中重载的多个方法具有相同的方法名和_不同的____的参数列表.重载的方法可以有不同的返回值类型10.java语言通过接口支持__多重____继承,使类继承具有更灵活的扩展性11.java语言中,调用方法时,参数传递是___值___调用,而不是地址调用12.接口是一种只含有抽象方法或___常量___的一种特殊抽象类一、填空题1.在子类中使用关键字_______做前缀可调用被子类覆盖的父类中的方法。
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面向对象程序设计》练习题-参考答案
《JAV A语言程序设计》练习题 1一、单选择题1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为( )。
A. .javaB. .classC. .htmlD. .exe2、设x = 1 , y = 2 , z = 3 ,则表达式y+=z--/++x 的值是( )。
A. 3B. 3. 5C. 4D. 53、不允许作为类及类成员的访问控制符的是( )。
A. publicB. privateC. staticD. protected4、为AB 类的一个无形式参数无返回值的方法method 书写方法头,使得使用类名AB 作为前缀就可以调用它,该方法头的形式为( )。
A. static void method( )B. public void method( )C. final void method( )D. abstract void method( )5、给定java 代码如下,编译运行后,输出结果是( )(选择一项)。
public class test {static int i;public int aMethod() {i++;return i;}public static void main (String args[]) {Test test=new Test() ;test.aMethod () ;System.out.println (test.aMethod()) ;} }a) 0 b) 1 c) 2 d) 3二、填空题1、开发与运行Java程序需要经过的三个主要步骤为编辑源程序、编译生成字节码和解释运行字节码。
2、在Java 的基本数据类型中,char 型采用Unicode 编码方案,每个Unicode 码占用 2 字节内存空间,这样,无论是中文字符还是英文字符,都是占用 2 字节内存空间。
3、设x = 2 ,则表达式( x + + ) /3 的值是0 。
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();
java面向对象程序设计习题集
JA V A面向对象程序设计习题集主编姚骏屏目录引言 ....................................................... 错误!未定义书签。
第一章JA V A基础................................... 错误!未定义书签。
一、填空题.......................................... 错误!未定义书签。
二、判断题.......................................... 错误!未定义书签。
三、选择题.......................................... 错误!未定义书签。
四、程序阅读题.................................. 错误!未定义书签。
第二章控制结构................................... 错误!未定义书签。
一、选择题.......................................... 错误!未定义书签。
二、填空题.......................................... 错误!未定义书签。
三、判断题.......................................... 错误!未定义书签。
四、程序阅读题.................................. 错误!未定义书签。
五、编程题.......................................... 错误!未定义书签。
第三章字符串......................................... 错误!未定义书签。
一、选择题.......................................... 错误!未定义书签。
- 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) internal 5.类的字段和方法的默认访问修饰符是【】。
A) public B) private C) protected D) internal 6.下列关于构造函数的描述中,不正确的是【】。
A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7.下列关于构造函数的描述中,【】是正确的。
A) 构造函数名必须与类名相同B) 构造函数不可以重载C) 构造函数不能带参数D) 构造函数可以声明返回类型8.下列的【】不是构造函数的特征。
A) 构造函数的函数名与类名相同B) 构造函数可以重载C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型9.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【】修饰符。
ClassA Aobj=new ClassA();ClassA.M1();A) public B) public static C) private D) virtual 10.在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();b.y=2;int x=b.y;对此,下列说法正确的是【】。
A) 属性y可读可写,因此变量x的值为2B) 属性y可读,但不可写,因此语句“b.y=2;”是错误的C) 属性y可写,但不可读,因此语句“int x=b.y;”是错误的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(obj.sData);C) obj. sData="Hello!"D) Console.WriteLine(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.Count的值是【】。
Class1 o1 = new Class1();Class1 o2 = new Class1();A) 1 B) 2 C) 3 D) 027.在类MyClass中有下列方法定义:public void test(params int[] arr) { Console.Write("使用params参数!"); }public void test(int x, int y) { Console.Write("使用两个整形参数!"); } 请问上述方法重载有无二义性?若没有,则下列语句的输出为【】。
Myclass x=new MyClass();x.test(0); x.test(0,1); x.test(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) internal 29.C#中MyClass为一个自定义类,其中有以下方法定义:public void Hello() { …… }并使用以下语句创建了该类的对象obj,则可以访问类MyClass的Hello方法的语句是【】。
MyClass obj=new MyClass()A) obj.Hello() B) obj:Hello() C) MyClass.Hello D) MyClass:Hello 30.下列的关键字中可用于引用类的当前实例的是【】。
A) base B) this C) new D) override 31.在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绑定的方法是【】。