6-1 汽车类 (20 分)
编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为off,速度为0,speedUp和slowDown可以调整汽车的速度,每调用一次汽车速度改变10(加速增10,减速减10),汽车启动后才能加减速,加速上限为160,减速下限为0,汽车速度减为0后才能停止,给出汽车类的定义。 Main函数中构造一个汽车对象,并对该对象进行操作,各个操作的编号为:
1.start
2.stop
3.speedup
4.slowdown 操作完成后打印出汽车的状态和速度。
输入描述:
操作
输出描述:
汽车的状态和速度
裁判测试程序样例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
Car c = new Car();
for (int i=0;i<n;i++) {
int a = s.nextInt();
switch (a) {
case 1: c.start(); break;
case 2: c.stop(); break;
case 3: c.speedUp(); break;
case 4: c.slowDown(); break;
}
}
System.out.print(c.status + " ");
System.out.println(c.speed);
}
}
/* 你的代码被嵌在这里 */
输入样例:
在这里给出一组输入。例如:
8
1 3 3 4 3 4 4 2
输出样例:
在这里给出相应的输出。例如:
off 0
Accepted Code
class Car {
String status;
int speed;
public Car() {
status = "off";
speed = 0;
}
public void start() {
if (status.equals("off")) status = "on";
}
public void stop() {
if (speed == 0) status = "off";
}
public void speedUp() {
if (status.equals("on")) {
speed += 10;
if (speed >= 160) speed = 160;
}
}
public void slowDown() {
if (status.equals("on")) {
speed -= 10;
if (speed <= 0) speed = 0;
}
}
}
6-2 设计直线类 (20 分)
两点可以确定一条直线,请设计一个直线类Line,需要通过两个点Point对象来确定。
设计类Point,包含两个坐标值,提供必要的构造函数和其他辅助函数
设计类Line,包含两个点,提供必要的构造函数和其他辅助函数
为Line提供一个getLength方法返回直线的长度
在Main类的main方法中,读入2对Point的坐标,输出2对Point所表示的直线的长度,保留两位小数(可用System.out.printf)
裁判测试程序样例:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Point p1 = new Point(sc.nextDouble(),sc.nextDouble());
Point p2 = new Point(sc.nextDouble(),sc.nextDouble());
Line l = new Line(p1,p2);
System.out.printf("%.2f",l.getLength());
}
}
/* 请在这里填写答案 */
输入样例:
23.2 22.1 12.2 3.2
输出样例:
21.87
Accepted Code
class Point {
double x;
double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}
class Line {
Point p1;
Point p2;
double length;
public Line(Point p1, Point p2) {
this.p1 = p1;
this.p2 = p2;
length = 0.0;
}
public double getLength() {
double tmp = Math.pow(p1.y - p2.y, 2) + Math.pow(p1.x - p2.x, 2);
length = Math.pow(tmp, 0.5);
return length;
}
}
6-3 学生数统计 (20 分)
构造类Student,包含姓名,性别,年龄。提供必要的构造函数和其他成员函数。
提供静态函数getMaleCount,getFemaleCount,能够获得所有在main函数中构造的Student对象中男生和女生的数量。
main函数中先读取学生个数n,而后构造n个学生对象,最后分别打印其中男生和女生的人数。(输入的三个字段用空格分开,名字内部没有空格,性别用数字表示,1为男生,0为女生)
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=0;i<n;i++){
Student s = new Student(sc.next(),sc.nextInt(), sc.nextInt());
}
System.out.println("number of male students:" + Student.getMaleCount() );
System.out.println("number of female students:" + Student.getFemaleCount() );
}
}
/* 请在这里填写答案 */
输入样例:
5
LiuMing 0 20
FangDa 1 19
DaShan 0 20
ChenHuang 0 21
DeLi 0 20
输出样例:
number of male students:1
number of female students:4
Accepted Code
class Student {
String name;
int sex;
int age;
static int maleCount = 0;
static int femaleCount = 0;
public Student(String name, int sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
if (this.sex == 1) {
maleCount++;
} else if (this.sex == 0) {
femaleCount++;
}
}
public static int getMaleCount() {
return maleCount;
}
public static int getFemaleCount() {
return femaleCount;
}
}
7-1 设计BankAccount类 (20 分)
设计一个BankAccount类,这个类包括:
(1)一个int型的balance表时账户余额。
(2)一个无参构造方法,将账户余额初始化为0。
(3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。
(4)一个getBlance()方法,返回账户余额。
(5)一个withdraw()方法:带一个amount参数,并从账户余额中提取amount指定的款额。
(6)一个deposit()方法:带一个amount参数,并将amount指定的款额存储到该银行账户上。
提供main函数,构造一个账户对象,并对其进行存取款操作。
其中操作类型类型为1表示存款,2表示取款,每次操作后都打印余额
输入格式:
账户余额 操作个数 操作类型 操作金额
输出格式:
每次操作后的余额
输入样例:
在这里给出一组输入。例如:
0
4
1 100
1 200
2 100
2 100
输出样例:
在这里给出相应的输出。例如:
100
300
200
100
Accepted Code
import java.lang.*;
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
BankAccount ba = new BankAccount(sc.nextInt());
int n = sc.nextInt();
for(int i=0;i<n;i++){
int a = sc.nextInt();
switch (a) {
case 1:
ba.deposit(sc.nextInt());
System.out.println(ba.getBlance());
break;
case 2:
ba.withdraw(sc.nextInt());
System.out.println(ba.getBlance());
break;
}
}
}
}
class BankAccount {
int balance; //账户余额
public BankAccount() {
balance = 0;
}
public BankAccount(int balance) {
this.balance = balance;
}
public int getBlance() {
return balance;
}
public boolean withdraw(int amount) {
if (balance >= amount) {
balance -= amount;
return true;
}
return false;
}
public void deposit(int amount) {
balance += amount;
}
}