必做题: 1、设计类MathUtil,该类包含成员 int[][] a,要求: (1)编写构造函数:借助随机数,创建数组对象a,并向其中填入数据。要求:a的行数、每列的元素个数均基于随机数产生(均小于10),创建完数组对象后,向a中填入随机数产生的数据(数值均小于20); (2)编写int sum(),计算并输出a中所有数据的累加和。 (3)编写void showMe(),打印输出a中的所有元素,最后显示a中共有多少元素,以及累加和结果。要求:相同a[i]排成一行,不同a[i]分别排在不同行。 2、随机掷点法(蒙特卡罗法)计算圆周率 策略是:边长为2r的正方形面积为4*r*r,直径为2r的圆面积为π*r*r。向正方形中随机掷n个点(n足够大),假设有m个点位于圆中。则有:圆面积/正方形面积= 圆中的点数/正方形中的点数 =m/n。模拟时,令r=1,取圆、正方形的1/4,结合上述公式,容易得出:π=4*m/n。 选做题:(不计分) 3、给定如下两副扑克字符串s: 红桃A,红桃2,红桃3,红桃4,红桃5,红桃6,红桃7,红桃8,红桃9,红桃10,红桃J,红桃Q,红桃K; \n黑桃A,黑桃2,黑桃3,黑桃4,黑桃5,黑桃6,黑桃7,黑桃8,黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K; \n梅花A,梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K; \n方片A,方片2,方片3,方片4,方片5,方片6,方片7,方片8,方片9,方片10,方片J,方片Q,方片K; \n大王 小王 红桃A,红桃2,红桃3,红桃4,红桃5,红桃6,红桃7,红桃8,红桃9,红桃10,红桃J,红桃Q,红桃K; \n黑桃A,黑桃2,黑桃3,黑桃4,黑桃5,黑桃6,黑桃7,黑桃8,黑桃9,黑桃10,黑桃J,黑桃Q,黑桃K; \n梅花A,梅花2,梅花3,梅花4,梅花5,梅花6,梅花7,梅花8,梅花9,梅花10,梅花J,梅花Q,梅花K; \n方片A,方片2,方片3,方片4,方片5,方片6,方片7,方片8,方片9,方片10,方片J,方片Q,方片K; \n大王 小王 。 要求:模仿拖拉机方式洗牌(用抽取洗牌方式进行洗牌)、发牌,四个玩家,底牌埋8张。输出四个玩家所得的牌。 提示:用split()分离产生所有牌面的字符串数组; 【要求】1. 代码贴到文本框中 2. 上传程序运行截图 【评分标准】: 第1题(10分) 第2题(10分) 第3题(不计分,选做)
第1题
有下面代码import java.util.*; class Student { int age; String name; public Student(){} public Student(String name, int age){ this.name = name; this.age = age; } public int hashCode(){ return name.hashCode() + age; } public boolean equals(Object o){ if (o == null) return false; if (o == this) return true; if (o.getClass() != this.getClass()) return false; Student stu = (Student) o; if (stu.name.equals(name) && stu.age == age) return true; else return false; } } public class TestHashSet{ public static void main(String args[]){ Set set = new HashSet(); Student stu1 = new Student(); Student stu2 = new Student(“Tom”, 18); Student stu3 = new Student(“Tom”, 18); set.add(stu1); set.add(stu2); set.add(stu3); System.out.println(set.size()); } } 下列说法正确的是?
A、编译错误
B、编译正确,运行时异常
C、编译运行都正确,输出结果为3
D、编译运行都正确,输出结果为2
第2题
classA{
privateintx=1;
protectedinty=2;
publicintz=3;
publicintsumA(){return(x+y+z);
}
}
再通过继承与扩展定义子类B:
classBextendsA{
privateintb=4;
publicintsumB(){
ints=0;
s+=x;s+=y;s+=z;s+=b;
returns;
}
}
方法成员sumB()中错误的语句是()。
A、s+=x;
B、s+=y;
C、s+=z;
D、s+=b;
第3题
A、void A(){a=0; b=0; c=0; }
B、public void A(){ a=0; b=0; c=0;}
C、public int A (int x, int y, int z){ a=x; b=y; c=z; }
D、public A(int x,int y, int z) { a=x; b=y; c=z; }
第5题
一、填空: 1、含有纯虚函数的类称为______。 2、如果在类中定义了一个成员函数为______,则表明在该继承层次链条的派生类中有可能重新定义这个成员函数的实现,即它可能被派生类的同名函数所覆盖。 3、定义一个函数名为fun, 返回值为int, 没有参数的纯虚函数的定义是_____。 4、如果类包含了一个或多个______ ,则它是抽象类。 5、虚函数必须是类的______ 函数。 6、在面向对象的程序设计中,不同的对象可以调用相同名称的函数并导致完全不同的行为现象称为______ 。 7、成员函数有实函数、虚函数和______3 种。 8、动态联编的多态性由______支持。 9、 C++语言支持的两种多态性分别是______ 的多态性和运行时的多态性。 10、如果一个类至少有个纯虚函数,那么就称该类为______。 11、 抽象类不能定义对象。但可以声明抽象类的______转换类型。 二、选择题: (1)关于动态联编的下列叙述中,错误的是 A. 动态联编是以虚函数为基础的 B. 动态联编运行时确定所调用函数代码 C. 动态联编调用函数操作是指向对象的指针或对象引用 D. 动态联编是在编译时确定操作函数 (2)有以下类定义: class A public: virtual void fl0{ cout<<l; }; void f20{ b : public a public: . f1o{ } 若b为b类对象,p为a类指针,则下列选项正确的是( )。 a. 执行: p="&b;" p->f1();语句, 输出3 B. 执行: p=&b; p->f20);语句,输出4 C. 执行: p=&b; p->fl();语句,输出2 D. 执行: p=&b; p->f20);语句,输出1 (3)关于虚函数的描述中,_______是正确的。. A. 虚函数是一个静态成员函数 B. 虚函数是一个非成员函数 C. 虚函数既可以在函数说明时定义,也可以在函数实现时定义 D. 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 (4)下面4个选项中,_______是用来声明虚函数的。. A. virtual B. public C. using D. false (5)下列描述中,属于抽象类的性质是________。 A. 可以说明虚函数 B. 可以进行构造函数重载 C. 可以定义友元函数 D. 不能说明其对象 (6)要实现动态联编必须_______。 A. 通过成员名限定来调用虚函数 B. 通过对象名来调用虚函数 C. 通过派生类对象来调用虚函数 D. 通过对象指针或引用来调用虚函数 (7)在类中用来声明虚成员函数的关键字是_______。 A. virtual B. public C. protected D. private (8)以下哪个基类中的成员的数表示纯虚函数________。 A. virtual void t()=0; B. void tt(int)=0; C. virtual void t(int); D. virtual void t(in){ }; 三、编程题: 使用虚函数编写程序求球体和圆柱体的体积及表面积。由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类Circle作为基类。在Circle类中定义一个数据成员radius和两个虚函数area()和volume()。由Circle 类派生Sphere类和Column类。在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积。
第6题
下面的代码是用用Java语言的面向对象方式重新实现的教材的代码2.5 package cbsc.cha3; import java.util.Random; public class BinaryOperation_3_1 { static final int UPPER = 100; static final int LOWER = 0; private int left_operand=0, right_operand=0; private char operator='+'; private int value=0; private void construct (int left, int right, char op) { left_operand = left; right_operand = right; operator = op; if (op=='+'){ value = left + right; }else { value = left - right; } } // 实际产生对象的、方法 public BinaryOperation_3_1 generateAdditionOperation() { Random random = new Random(); int left, right, result; left = random.nextInt(UPPER+1); do { right = random.nextInt(UPPER+1); result = left + right; } while (result > UPPER); BinaryOperation_3_1 bop = new BinaryOperation_3_1(); bop.construct(left, right, '+'); return bop; } …… } 如果不在这个类中自己编写方法String asString(),打印该类的一个对象bop,即语句 System.out.println(bop); 的输出可能是什么?
A、cbsc.cha3.BinaryOperation_3_1@a09ee92
B、cbsc.cha3.BinaryOperation_3_1@30f39991
C、12+15
D、18+25=
E、15+16=31
第7题
Complex -a:int -b:int +Complex() +Complex(a:int,b:int) +setA(a:int):void +getA():int +setB(b:int):void +getB():int +add(a:int):Complex +add(other:Complex):Complex +subtract(a:int):Complex +subtract(other:Complex):Complex +toString():String 编写一个复数类Complex 构造方法: Complex() //将实部、虚部都置为0 Complex(int a,int b) //分别用a和b初始化实部与虚部 封装方法: setter和getter方法 //为实现信息隐藏 复数相加: public Complex add(int a) //将复数的实部加上a,返回一个新的复数对象。例如:(3+5i)+3=6+5i,最终 //返回 (6+5i)对象。 public Complex add(Complex other) //调用此方法的复数对象与参数中指定的other对象相加,返回一个新的复数对象。 //例如:(3+5i)+(2+i)=5+6i,最终返回的是(5+6i) 复数相减: public Complex subtract(int a) //将复数的实部减去a,返回一个新的复数对象。例如:(3+5i)-2=1+5i, //最终返回(1+5i)对象。 public Complex subtract(Complex other) //调用此方法的复数对象与参数中指定的other对象相减,返回一个新的复数对象。 //例如:(3+5i)-(2+i)=1+4i,最终返回的是(1+4i) 复数的输出: public String toString() //返回(a+bi)的样式
第8题
int a=1,b=2, c=3, t; while (a<c) {t="a;" a="b;" b="t;" c--;}> A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
第9题
选做题,二选一,从下面两道题目中选择一道作答即可。提交时,使用“代码语言”选择C语言,粘贴核心代码,并截图程序结果。 请只在作业提交系统里面,提交必要的作业文字介绍、截图、视频(给观看地址即可,要匿名)、核心代码(使用代码语言中的C语言格式)等。尽量不添加附件(因为附件下载很耗时,可能影响互评成绩)。 不需要提交发布的程序或者源工程。 选做题一:可以在这章实现的小蜜蜂游戏中,实现至少一项以下要求的功能: 实现更加复杂的敌人智能,在红白机版本的游戏中,敌人可能随机飞离队伍,向玩家投弹。这需要用到更加复杂的敌人运动控制策略,比如曲线而非直线运动实现多种敌人 目前版本敌人类型是一样的,尝试实现多种类型的敌人,比如有些敌人是boss,有更多的血量 添加玩家发射子弹的冷却时间 可以添加图片、音效以及UI界面来提升游戏体验效果 其他你认为可以改进或增加的功能 选做题二:请使用VS或者其他IDE调试下面的程序片段,看那行程序有问题,如何改正?请将有问题的行号写上,并给出解决办法。 #include <stdio.h> void Func(int); int main() { int s = 1.5; float f = 3.6 char c = 'a'; Func(3); int i = 1; while (i++) { if (i == 23) break; ++i; } int done = 0; if (done = 1) printf("OK!\n"); float average = 9 / 10; int t = 0.5; float r = 100 / t; i = 0; while (i < 3); printf("%d\t", i++); scanf("%c", &c); switch (c) { case 'A': printf("The score is 90~100\n"); case 'B': printf("The score is 80~90\n"); default: printf("Wrong input\n"); } unsigned short playerIDs[5] = { 101,102,103,104,105 }; for (int i = 0; i <= 5; i++) printf("player id is: %d\t", playerids[i]); return 0;>
第10题
A、int f()
B、int ClassA::f()
C、int f::ClassA()
D、ClassA::int f()
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!