2022-2023面向对象程序复习题PTA

Posted 金石不渝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-2023面向对象程序复习题PTA相关的知识,希望对你有一定的参考价值。

2022-2023面向对象程序复习题PTA

7-1 jmu-Java-01入门-第一个PTA上Java程序

分数 10
作者 郑如滨
单位 集美大学
本题目要求读入若干对整数a和b,然后输出它们的和。

输入格式:
在一行中给出一对整数a和b。
以下输入样例只有两对,实际测试数据可能有多对值。

输出格式:
对每一组输入,如果a的绝对值>1000,输出|a|>1000,否则输出a+b的值。

输入样例:
18 -299
1001 -9
-1001 8
输出样例:
-281
|a|>1000
|a|>1000
代码长度限制
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);
        while(in.hasNextInt())
           int a = in.nextInt();
           int b = in.nextInt();
        if (Math.abs(a)>1000)
          System.out.println("|a|>1000");
        else
           System.out.println(a+b);
      
    


7-2 jmu-Java-05集合-01-ListIntegerStack

7-2 jmu-Java-05集合-01-ListIntegerStack
分数 10
作者 郑如滨
单位 集美大学
定义IntegerStack接口,该接口描述了一个存放Integer的栈的常见方法:

public Integer push(Integer item); //如item为null,则不入栈直接返回null。否则直接入栈,然后返回item。
public Integer pop(); //出栈,如栈为空,则返回null。
public Integer peek(); //获得栈顶元素,如栈顶为空,则返回null。注意:不要出栈
public boolean empty(); //如过栈为空返回true
public int size(); //返回栈中元素数量
定义IntegerStack的实现类ArrayListIntegerStack,内部使用ArrayList存储。该类中包含:

构造方法:
在无参构造方法中新建ArrayList或者LinkedList,作为栈的内部存储。
思考:查询JDK文档,尝试说明本题到底使用哪个List实现类最好。

方法:
public String toString() //用于输出List中的内容,可直接调用List的toString()方法。可用System.out.println(list)进行输出。

提示:

不建议使用top指针。最好直接复用List实现类中已有的方法。
pop时应将相应的元素从列表中移除。
main方法说明
建立ArrayIntegerStack对象
输入m个值,均入栈。每次入栈均打印入栈返回结果。
输出: 栈顶元素,输出是否为空,然后输出size.
输出栈中所有元素(调用其toString()方法)
输入x,然后出栈x次,每次均打印出栈的对象。
输出:栈顶元素,输出是否为空,输出size。注意:这里的输出栈顶元素,仅输出、不出栈。
输出栈中所有元素(调用其toString()方法)。注意:返回null,也要输出。
思考:
如果使用LinkedList来实现IntegerStack,怎么实现?测试代码需要进行什么修改?

输入样例
5
1 3 5 7 -1
2
输出样例
1
3
5
7
-1
-1,false,5
[1, 3, 5, 7, -1]
-1
7
5,false,3
[1, 3, 5]
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.LinkedList;
import java.util.Scanner;
 
interface IntegerStack
    public Integer push(Integer item); 
    public Integer pop();              
    public Integer peek();             
    public boolean empty();         
    public int size();               

class ArrayListIntegerStack implements IntegerStack
    LinkedList linkedList=new LinkedList();

    public Integer push(Integer item) 
        if (item==null)
            return null;
        
        linkedList.push(item);
        return item;
    

    public Integer pop() 
        if (linkedList.size()==0)
            return null;
        
        return (int)linkedList.pop();
    
    
    public Integer peek() 
        if (linkedList.size()==0)
            return null;
        
        return (int)linkedList.peek();
    

    public boolean empty() 
        return linkedList.isEmpty();
    

    public int size() 
        return linkedList.size();
    

    public String toString() 
        String s="";
        s+="[";
        int i=linkedList.size();
        if (i!=0)
            i--;
            for (;i>0;i--)
                s+=linkedList.get(i)+", ";
            
            s+=linkedList.get(i)+"]";
        else 
            s+="]";
        
 
        return  s;
    

public class Main 
    public static void main(String[] args) 
        Scanner sc=new Scanner(System.in);
        int num=sc.nextInt();
        ArrayListIntegerStack arrayListIntegerStack = new ArrayListIntegerStack();
        for (int i=0;i<num;i++)
            int number=sc.nextInt();
            System.out.println(arrayListIntegerStack.push(number));
        
        System.out.println(arrayListIntegerStack.peek()+","+arrayListIntegerStack.empty()+","+arrayListIntegerStack.size());
        System.out.println(arrayListIntegerStack.toString());
        int pop_num=sc.nextInt();
        for (int i=0;i<pop_num;i++)
            System.out.println(arrayListIntegerStack.pop());
        
        System.out.println(arrayListIntegerStack.peek()+","+arrayListIntegerStack.empty()+","+arrayListIntegerStack.size());
        System.out.println(arrayListIntegerStack.toString());
    


7-8 设计圆和圆柱体

分数 10
作者 殷伟凤
单位 浙江传媒学院
编写一个完整的Java Application 程序。包含类Circle、Cylinder、Main,具体要求如下。

(1)编写类Circle,表示圆形对象,包含以下成员
①属性:

  1. radius:私有,double型,圆形半径;
    ②方法:
  2. Circle(double radius), 构造方法,用参数设置圆的半径
  3. Circle(),构造方法,将圆形初始化为半径为0。
  4. void setRadius(double r):用参数r设置radius的值
  5. double getRadius():返回radius的值
  6. double getArea(),返回圆形的面积
  7. double getPerimeter(),返回圆形的周长
  8. public String toString( ),将把当前圆对象的转换成字符串形式,例如圆半径为10.0,返回字符串"Circle(r:10.0)"。
    (2)编写一个类Cylinder,表示圆柱形对象,包含以下成员
    ①属性:
  9. height:私有,double型,圆柱体高度;
  10. circle:私有,Circle类型,圆柱体底面的圆形;
    ②方法:
  11. Cylinder(double height,Circle circle), 构造方法,用参数设置圆柱体的高度和底面的圆形
  12. Cylinder(),构造方法,将圆柱体的高度初始化为0,底面圆形初始化为一个半径为0的圆形。
  13. void setHeight(double height):用参数height设置圆柱体的高度
  14. double getHeight():返回圆柱体的高度
  15. void setCircle(Circle circle):用参数circle设置圆柱体底面的圆形
  16. Circle getCircle():返回圆柱体底面的圆形
  17. double getArea(),重写Circle类中的area方法,返回圆柱体的表面积
  18. double getVolume(),返回圆柱体的体积
  19. public String toString( ),将把当前圆柱体对象的转换成字符串形式,例如半径为10.0,高为5.0,返回字符串"Cylinder(h:5.0,Circle(r:10.0))"。
    (3)编写公共类Main,在main()方法中实现如下功能
    输入一个整数n,表示有n个几何图形。
    对于每一个几何图形,先输入一个字符串,“Circle”表示圆形,“Cylinder”表示圆柱体。
    如果是圆形,输入一个浮点数表示其半径。要求计算其面积和周长并输出。
    如果是圆柱体,输入两个浮点数分别表示其半径和高度。要求计算其面积和体积并输出。

将以下代码附在自己的代码后面:

public class Main
public static void main(String args[])
Scanner input = new Scanner(System.in);
int n = input.nextInt();
for(int i = 0; i < n; i++)
String str = input.next();
if(str.equals(“Circle”))
Circle c = new Circle(input.nextDouble());
System.out.println(“The area of " + c.toString() + " is " + String.format(”%.2f",c.getArea()));
System.out.println(“The perimeterof " + c.toString() + " is “+ String.format(”%.2f”,c.getPerimeter()));
else if(str.equals(“Cylinder”))
Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
System.out.println(“The area of " + r.toString() + " is " + String.format(”%.2f",r.getArea()));
System.out.println(“The volume of " + r.toString() + " is " + String.format(”%.2f",r.getVolume()));




输入格式:
第一行输入一个整数n,表示有n个几何图形。
以下有n行,每行输入一个几何图形的数据。
每行先输入一个字符串表示几何图形的类型,“Circle”表示圆形,“Cylinder”表示圆柱体。
如果是圆形,输入一个浮点数表示其半径。
如果是圆柱体,输入两个浮点数分别表示其半径和高度。
输出格式:
如果是圆形,要求计算其面积和周长并输出。
如果是圆柱体,要求计算其面积和体积并输出。
注意,圆周率用Math.PI
输入样例:
在这里给出一组输入。例如:

4
Circle 10.0
Cylinder 10.0 10.0
Circle 1.1
Cylinder 1.1 3.4
输出样例:
在这里给出相应的输出。例如:

The area of Circle(r:10.0) is 314.16
The perimeterof Circle(r:10.0) is 62.83
The area of Cylinder(h:10.0,Circle(r:10.0)) is 1256.64
The volume of Cylinder(h:10.0,Circle(r:10.0)) is 3141.59
The area of Circle(r:1.1) is 3.80
The perimeterof Circle(r:1.1) is 6.91
The area of Cylinder(h:1.1,Circle(r:3.4)) is 96.13
The volume of Cylinder(h:1.1,Circle(r:3.4)) is 39.95
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.Scanner;
class Circle 
private double radius;
    public Circle()radius=0;//构造方法:将圆的半径初始化为0
    public Circle(double radius) 
        this.radius = radius;//构造方法:用参数设置圆的半径
    

    public void setRadius(double radius) 
        this.radius = radius;
    

    public double getRadius() 
        return radius;
    
   public double getArea()
        return Math.pow(radius,2)*3.1415926f;//返回圆形的面积
    
    public double getPerimeter()
        return 2*radius*3.1415926f;    //返回圆形的周长
    
    public String toString( )
        return "Circle(r:"+this.radius+")";
    


class Cylinder extends Circle
private double height;
private Circle circle;

    public Cylinder(double height, Circle circle) 
        this.height = height;
        this.circle = circle;//构造方法:用参数设置高度及圆形
    
    public Cylinder()this.height=0;//构造方法初始化高度为0

    public void setHeight(double height) 
        this.height = height;
    

    public void setCircle(Circle circle) 
        this.circle = circle;
    

    public double getHeight() 
        return height;
    
 public Circle getCircle() 
        return circle;
    
    public double getArea()
        return height*circle.getPerimeter()+circle.getArea()*2;//重写Circle类中的area方法,返回圆柱体的表面积
    
    public double getVolume()
        return circle.getArea()*height;
    
    public String toString( )
       return  "Cylinder(h:"+this.height+","+this.circle.toString()+")";//当前对象转换为字符串模式
    

public class Main
    public static void main(String args[]) 
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        for(int i = 0; i < n; i++) 
            String str = input.next();
            if(str.equals("Circle")) 
                Circle c = new Circle(input.nextDouble());
                System.out.println("The area of " + c.toString() + " is " + String.format("%.2f",c.getArea()));
                System.out.println("The perimeterof " + c.toString() + " is "+ String.format("%.2f",c.getPerimeter()));
             else if(str.equals("Cylinder")) 
                Cylinder r = new Cylinder(input.nextDouble(), new Circle(input.nextDouble()));
                System.out.println("The area of " + r.toString() + " is " + String.format("%.2f",r.getArea()));
                System.out.println("The volume of " + r.toString() + " is " + String.format("%.2f",r.getVolume()));
            
        
        input.close();
    


7-9 jmu-Java-06异常-02-使用异常机制处理异常输入

7-9 jmu-Java-06异常-02-使用异常机制处理异常输入
分数 10
作者 郑如滨
单位 集美大学
使用异常处理输入机制,让程序变得更健壮。

main方法:
输入n,创建大小为n的int数组。
输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。
使用Arrays.toString输出数组中的内容。
输入样例:
5
1
2
a
b
4
5
3
输出样例:
java.lang.NumberFormatException: For input string: “a”
java.lang.NumberFormatException: For input string: “b”
[1, 2, 4, 5, 3]
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

 
import java.util.Arrays;
import java.util.Scanner;
 
public class Main 
	public static void main(String[] args) 
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int []nums = new int[n];
		int len = 0;
		String input;
		while(len<n) 
			input = in.next();
			try 
				int lateNum = Integer.parseInt(input);
				nums[len++]= lateNum;
			catch (Exception e) 
				// TODO: handle exception
				System.out.println(e);
			
		
		System.out.println(Arrays.toString(nums));
	

 

7-10 较为复杂情况下的求和

分数 10
作者 abc618382
单位 河北科技大学
计算一个给定序列的整数和,序列中可能会混入无关的字母,求和的时候需要忽略。

输入格式:
输入为一行,元素直接使用空格分割。

输出格式:
输出为序列整数部分的和。

输入样例:
在这里给出一组输入。例如:

1 2 3 a 4 5
输出样例:
在这里给出相应的输出。例如:

15
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.Scanner;
public class Main 
    public static void main(String[] args) 
            int sum = 0;
            Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();        
        String[] split = s.split(" ");
       for (int i = 0; i < split.length; i++) 
      try               
      sum += Integer.parseInt(split[i]);
     catch (Exception e)             
          continue;
             
             
     System.out.println(sum);
    
    

7-11 编程题:判断闰年

分数 10
作者 abc618382
单位 河北科技大学
根据输入的正整数y所代表的年份,计算输出该年份是否为闰年
闰年的判断标准:

能够被4整除且不能被100整除的年份

或者能够被400整除的年份

输入格式:
输入n取值范围是 【1…3000】

输出格式:
是闰年,输出 yes

非闰年,输出 no

输入样例:
在这里给出一组输入。例如:

100
输出样例:
在这里给出相应的输出。例如:

no
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.Scanner;

public class Main 

	public static void main(String[] args) 
		int n;
		Scanner input=new Scanner(System.in);
		n=input.nextInt();
		if(n%4==0&&n%100!=0||n%400==0)
		
			System.out.println("yes");
		
		else
		
			System.out.println(JAVA面向对象程序设计_PTA题目集04-06总结分析

笔记总结计算机专业面向期末考试复习笔记专业课学习笔记课外算法与其他学习笔记

PTA OOP第一次总结性作业

软考面向对象程序设计复习指南

简述构造函数和析构函数的作用

«面向对象程序设计(java)»第三周学习总结 周强 201771010141