6-1 学生、大学生、研究生类
分数 20
全屏浏览题目
切换布局
作者 温彦
单位 山东科技大学
定义Student学生类,拥有学号、姓名、性别属性,提供构造函数,以及相应属性的get set函数,提供函数attendClass(String className)表示上课。
定义CollegeStudent大学生类继承自Student类,拥有新增属性专业,提供构造函数,提供新增属性的get和set函数
定义GraduateStudent研究生类继承自CollegeStudent类,拥有新增属性导师,提供构造函数,提供新增属性的get和set函数,提供函数doResearch() 表示做研究(打印xx is doing research)。main函数中对构造的类进行测试
输入描述:
学生类信息,学号、姓名、性别
大学生类信息,学号、姓名、性别、专业
研究生类信息,学号、姓名、性别、专业、导师输出描述:
学生类信息
大学生类信息
研究生类信息裁判测试程序样例:
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); int no = scan.nextInt(); String name = scan.next(); String sex = scan.next(); Student s = new Student(no, name, sex); s.print(); no = scan.nextInt(); name = scan.next(); sex = scan.next(); String major = scan.next(); CollegeStudent c = new CollegeStudent(no, name, sex, major); c.print(); no = scan.nextInt(); name = scan.next(); sex = scan.next(); major = scan.next(); String supervisor = scan.next(); GraduateStudent g = new GraduateStudent(no, name, sex, major, supervisor ); g.print(); g.doResearch(); scan.close(); } } /* 你的代码被嵌在这里*/
输入样例:
在这里给出一组输入。例如:
1 liu female 2 chen female cs 3 li male sc wang
输出样例:
在这里给出相应的输出。例如:
no: 1 name: liu sex: female no: 2 name: chen sex: female major: cs no: 3 name: li sex: male major: sc supervisor: wang li is doing research
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
class Student { private int id; private String name; private String sex; Student(int id,String name,String sex) { this.id = id; this.name = name; this.sex = sex; } public String getName() { return name; } public void attendClass(String className) { System.out.println(name+"is attending class"); } public void print() { System.out.print("no: "+id+"\n"+"name: "+name+"\n"+"sex: "+sex+"\n"); } } class CollegeStudent extends Student { private String major; CollegeStudent(int id,String name,String sex,String major) { super(id,name,sex); this.major = major; } public String getName() { return super.getName(); } public void print() { super.print(); System.out.print("major: "+major+"\n"); } } class GraduateStudent extends CollegeStudent { private String supervisor; GraduateStudent(int no,String name,String sex,String major,String supervisor) { super(no,name,sex,major); this.supervisor = supervisor; } public void print() { super.print(); System.out.print("supervisor: "+supervisor+"\n"); } public void doResearch() { System.out.println(super.getName()+" is doing research"); } }
6-2 图书和音像租赁
分数 15
全屏浏览题目
作者 温彦
单位 山东科技大学
图书和音像店提供出租服务,包括图书和DVD的出租。图书包括书名(String,一个词表示)和价格(double),DVD包括片名(String,一个词表示)。它们都是按天出租,但租金计算方式却不同,图书的日租金为图书价格的1%,DVD的日租金为固定的1元。构造图书和DVD类的继承体系,它们均继承自Media类,且提供方法getDailyRent()返回日租金,构造音像店类MediaShop,提供静态函数double calculateRent(Media[] medias, int days)。
在main函数中构造了Media数组,包含图书和DVD的对象,调用calculateRent方法得到并输出租金,保留小数点两位输入描述:
待租图书和DVD的数量
图书和DVD的详细信息
租借天数
输出描述:
总的租金
裁判测试程序样例:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Media[] ms = new Media[n]; for (int i=0; i<n; i++) { String type = sc.next(); if (type.equals("book")) { ms[i] = new Book(sc.next(), sc.nextDouble()); }else { ms[i] = new DVD(sc.next()); } } double rent = MediaShop.calculateRent(ms, sc.nextInt()); System.out.printf("%.2f", rent); } } /* 请在这里填写答案 */
输入样例:
5 book Earth 25.3 book Insights 34 dvd AI dvd Transformer book Sun 45.6 20
输出样例:
60.98
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
abstract class Media { abstract public double getDailyRent(); } class Book extends Media { private String name; private double price; Book(String name,double price) { this.name = name; this.price = price; } public double getDailyRent() { return price*0.01; } } class DVD extends Media { private String name; DVD(String name) { this.name = name; } public double getDailyRent() { return 1; } } class MediaShop { public static double calculateRent(Media[] m,int days) { double sum = 0; for(int i=0;i<m.length;i++) { sum+=m[i].getDailyRent(); } return sum*days; } }
6-3 Animal动物工厂
分数 20
全屏浏览题目
作者 sy
单位 西南石油大学
已知有如下Animal抽象类,请编写其子类Dog类与Cat类,另外再编写一个生产动物的Factory工厂类,具体要求如下。
已有的Animal抽象类定义:
abstract class Animal{ private String name; //名字 private int age; //年龄 public abstract void info(); //返回动物信息 public abstract void speak(); //动物叫 public Animal(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
需要你编写的Dog子类:
增加violence(凶猛程度)属性(int型),重写info和speak方法
info方法输出Dog的name、age和violence属性,输出格式样例为:该狗的名字是Mike,年龄是2岁,凶猛程度是78度 (注意:输出结果中没有空格,逗号为英文标点符号)
speak方法输出Dog 的叫声,输出格式样例为:旺旺
需要你编写的Cat子类:
增加mousingAbility(捕鼠能力)属性(int型),重写info和speak方法
info方法输出Cat的name、age和mousingAbility属性,输出格式样例为:该猫的名字是Kitty,年龄是4岁,捕鼠能力是88分 (注意:输出结果中没有空格,逗号为英文标点符号)
speak方法输出Cat 的叫声,输出格式样例为:喵喵
需要你编写的Factory工厂类:
Animal getAnimalByType(int type,String name, int age, int ownAttribute):根据传入的子类类型和属性值,返回一个Animal类型的上转型对象,type为1代表狗类,type为2代表猫类
已有的Main类定义:
public class Main { public static void main(String[] args) { Factory factory=new Factory(); Scanner input=new Scanner(System.in); int type=input.nextInt(); String name=input.next(); int age=input.nextInt(); int ownAttribute=input.nextInt(); Animal a=factory.getAnimalByType(type, name, age, ownAttribute); a.info(); a.speak(); System.out.println(a.getName()); System.out.println(a.getAge()); input.close(); } } /*请在这里填写你编写的Dog类、Cat类和Factory类 */
输入样例:
(本题的评分点与输入样例无关)
1 Mike 2 78
输出样例:
该狗的名字是Mike,年龄是2岁,凶猛程度是78度 旺旺 Mike 2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
class Dog extends Animal { private int violence; Dog(String name,int age,int v) { super(name,age); this.violence = v; } public void info() { System.out.println("该狗的名字是"+super.getName()+",年龄是"+super.getAge()+"岁,凶猛程度是"+violence+"度"); } public void speak() { System.out.println("旺旺"); } } class Cat extends Animal { private int mousingAbility; Cat(String name,int age,int m) { super(name,age); this.mousingAbility = m; } public void info() { System.out.println("该猫的名字是"+super.getName()+",年龄是"+super.getAge()+"岁,捕鼠能力是"+mousingAbility+"分"); } public void speak() { System.out.println("喵喵"); } } class Factory { public Animal getAnimalByType(int type,String name, int age, int ownAttribute) { Animal animal; if(type==1) { Animal dog = new Dog(name,age,ownAttribute); return dog; } else { Animal cat = new Cat(name,age,ownAttribute); return cat; } } }
6-4 Animal接口
分数 20
全屏浏览题目
作者 sy
单位 西南石油大学
已知有如下Animal抽象类和IAbility接口,请编写Animal子类Dog类与Cat类,并分别实现IAbility接口,另外再编写一个模拟器类Simulator调用IAbility接口方法,具体要求如下。
已有的Animal抽象类定义:
abstract class Animal{ private String name; //名字 private int age; //年龄 public Animal(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
已有的IAbility接口定义:
interface IAbility{ void showInfo(); //输出动物信息 void cry(); //动物发出叫声 }
需要你编写的Dog子类:
实现IAbility接口
showInfo方法输出Dog的name、age,输出格式样例为:我是一只狗,我的名字是Mike,今年2岁(注意:输出结果中没有空格,逗号为英文标点符号)
cry方法输出Dog 的叫声,输出格式样例为:旺旺
需要你编写的Cat子类:
实现IAbility接口
showInfo方法输出Cat的name、age,输出格式样例为:我是一只猫,我的名字是Anna,今年4岁(注意:输出结果中没有空格,逗号为英文标点符号)
cry方法输出Cat 的叫声,输出格式样例为:喵喵
需要你编写的模拟器类Simulator:
void playSound(IAbility animal):调用实现了IAbility接口类的showInfo和cry方法,并显示传入动物的名字和年龄
已有的Main类定义:
public class Main { public static void main(String[] args) { Scanner input=new Scanner(System.in); IAbility animal=null; int type=input.nextInt(); String name=input.next(); int age=input.nextInt(); if (type==1) animal=new Dog(name,age); else animal=new Cat(name,age); Simulator sim=new Simulator(); sim.playSound(animal); input.close(); } } /***请在这里填写你编写的Dog类、Cat类和Simulator类** */
输入样例:
(本题的评分点与输入样例无关)
第一个整数代表动物类型,1为狗类,2为猫类
1 Mike 2
输出样例:
我是一只狗,我的名字是Mike,今年2岁 旺旺 Mike 2
代码长度限制
16 KB
时间限制
4000 ms
内存限制
64 MB
class Dog extends Animal implements IAbility { Dog(String name,int age) { super(name,age); } public String getName() { return super.getName(); } public int getAge() { return super.getAge(); } public void showInfo() { System.out.println("我是一只狗,我的名字是"+super.getName()+",今年"+super.getAge()+"岁"); } public void cry() { System.out.println("旺旺"); } } class Cat extends Animal implements IAbility { Cat(String name,int age) { super(name,age); } public String getName() { return super.getName(); } public int getAge() { return super.getAge(); } public void showInfo() { System.out.println("我是一只猫,我的名字是"+super.getName()+",今年"+super.getAge()+"岁"); } public void cry() { System.out.println("喵喵"); } } class Simulator { public void playSound(IAbility animal) { animal.showInfo(); animal.cry(); if(animal instanceof Dog) { Dog dog = (Dog) animal; System.out.println(dog.getName()); System.out.println(dog.getAge()); } else { Cat cat = (Cat)animal; System.out.println(cat.getName()); System.out.println(cat.getAge()); } } }
6-5 软件外包公司
分数 15
全屏浏览题目
作者 刘凤良
单位 天津仁爱学院
有一家软件外包公司,可以外派开发人员,该软件公司有两个角色,普通开发人员和项目管理,它们有共同的属性"姓名","年龄" 普通开发人员有自己特有的属性"工作经验",他的工作内容是"开发项目",项目经理有自己特有的属性“项目管理经验”,他的工作内容是项目管理,对外的报价是普通开发人员每天 500 元,超过 60 天每天 400 元,项目经理每天 800 元,超过 60 天每天 600 元,有一家银行需要1名项目经理,2 名开发人员,现场开发 90 天,计算银行需要付给软件公司的总金额。
函数接口定义:
void work(); //工作内容 double calcMoney(int days); //计算开发 days 天所需金额
裁判测试程序样例:
import java.util.Scanner; public class Main { public static void main(String[] args) { Employee[] employees = new Employee[3]; Developer d1 = new Developer("小王", 23); Developer d2 = new Developer("小李", 22); Manager manager = new Manager("老张", 32); employees[0] = d1; employees[1] = d2; employees[2] = manager; //输入开发天数 Scanner input = new Scanner(System.in); int days = input.nextInt(); //计算所需金额 double totalMoney = 0; for (Employee employee : employees) { totalMoney += employee.calcMoney(days); } System.out.println("开发:" + days + "天,总共需要支付:" + totalMoney + "元!"); } } /* 请在这里填写答案 */
输入样例:
90
输出样例:
开发:90天,总共需要支付:126000.0元!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
abstract class Employee { private String name; private int age; Employee(String name,int age) { this.name = name; this.age = age; } public abstract void work(); //工作内容 public abstract double calcMoney(int days); //计算开发 days 天所需金额 } class Developer extends Employee { private String e; Developer(String name,int age) { super(name,age); } public void work() { System.out.println("开发项目"); } public double calcMoney(int days) { if(days>=0&&days<=60) return days*500; else return days*400; } } class Manager extends Employee { private String mg; Manager(String name,int age) { super(name,age); } public void work() { System.out.println("项目管理"); } public double calcMoney(int days) { if(days>=0&&days<=60) return days*800; else return days*600; } }
7-1 集体评分2
分数 10
全屏浏览题目
作者 王从银
单位 吉首大学
程序填空题。请补充以下代码,完成题目要求。(注意:需要提交完整代码) 有一个团队由5个人组成。他们每个人给指导老师一个分数,去掉最高分,去掉最低分,剩下的3个分数的平均分就是该团队对指导老师的评分。
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] grade = new int[5]; for(int i=0; i<grade.length; i++){ grade[i] = in.nextInt(); } RR rr = new RT(grade); double dd = rr.mark(); System.out.printf("%.2f",dd); } } interface RR{ double mark(); } class RT implements RR{ int[] grade; public RT(int[] grade){ this.grade = grade; } }输入格式:
在一行中给出5个不超过10的正整数(从小到大排列)。
输出格式:
输出集体评分,保留小数点后两位。
输入样例:
1 2 4 6 9
输出样例:
4.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int[] grade = new int[5]; for(int i=0; i<grade.length; i++){ grade[i] = in.nextInt(); } RR rr = new RT(grade); double dd = rr.mark(); System.out.printf("%.2f",dd); } } interface RR{ double mark(); } class RT implements RR{ int[] grade; public RT(int[] grade){ this.grade = grade; } public double mark() { double v = 0; for(int i=1;i<grade.length-1;i++) { v+=grade[i]; } return v/(grade.length-2); } }