// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css //目录导航 //生成目录索引列表

PTA实验四

如果对内容不太熟悉建议自行翻书或者百度
1.编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
输入格式:
从键盘中输入学生人数n
从键盘中输入第1个学生的成绩
从键盘中输入第2个学生的成绩
...
从键盘中输入第n个学生的成绩(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
输出格式:
显示及格总人数
显示不及格总人数
输入样例:
3
100
30
60
输出样例:
2
1

输入样例:
2
200
69
30
输出样例:
200invalid!
1
1
AC代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int sumgood=0;//及格总数
        int sumbad=0;//不及格总数
        int []score=new int[n+1];//我是从1开始输入的所以开了个n+1的数组
        for(int i=1;i<=n;i++){
            score[i]= in.nextInt();//输入每个成绩随后进行判断
            if(score[i]>100||score[i]<0){//判断输入的成绩是否符合标准
                System.out.println(score[i]+"invalid!");
                score[i]= in.nextInt();//不符合标准的就重新再输入一次
            }
            if(judge(score[i])==1){//调用判断的函数
                sumgood++;
            }
            else {
                sumbad++;
            }
        }
        System.out.println(sumgood);
        System.out.println(sumbad);
    }
    public static int judge(int k){//判断的函数
        if(k>=60){
            return 1;
        }
        else {
            return 0;
        }
    }
}

这个题总体来说比较简单,但是要注意不符合标准的数要重新输入,其他的都很简单

2.输入3个整数n、begin、end。
首先,使用如下代码:
for(int i=0;i<n;i++)
将从0到n-1的数字拼接为字符串str。如,n=12,则拼接出来的字符串为01234567891011
最后截取字符串str从begin到end(包括begin,但不包括end)之间的字符串,并输出。

输入样例:
10
5
8
1000
800
900
输出样例:
567
0330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533

AC代码:

import java.util.Scanner;

public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        StringBuilder str = new StringBuilder();
        while (in.hasNext())
        {
            int n,begin,end;
            n = in.nextInt();
            begin = in.nextInt();
            end = in.nextInt();
            str = new StringBuilder();
            for (int i = 0; i < n; i++)
            {
                str.append(i);
            }
            System.out.println(str.substring(begin, end));
        }
    }
}

这个题感觉只能自己去看书了,去看StringBuilder的相关知识

3.设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。

输入格式:
首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。
输出格式:
完成查找替换后的完整字符串
输入样例:
Although I am without you, I will always be ou you
ou
with
输出样例:
Although I am without you, I will always be with you

AC代码:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();//记住这里是nextLine,输入一行,不然遇空格会被自动隔断
        String a = in.nextLine();
        String b = in.nextLine();
        String[] sa = s.split(" ");//创建一个数组用来存放输入的s,并且按照空格将s分开
        List<String> list = Arrays.asList(sa);
        Collections.replaceAll(list, a, b);//将list里面的a全部换成b
        System.out.print(list.get(0));//因为有输出的格式要求,所以这里先输出第一个
        for (int i = 1; i < list.size(); i++) {
            System.out.print(" " + list.get(i));//按照格式要求输出
        }
        System.out.printf("\n");
    }
}

4.随机数-使用蒙特卡罗法计算圆周率的值
注意:
请使用jdk库中的Random对象来生成随机数。
使用Math类中的sqrt与pow函数来计算开根号与平方值。
让点(x,y)投在整个矩形中,x与y的取值范围为(-1≤x<1, -1≤y<1)。

输入格式:
随机数种子seed 投点个数n
注意:seed为long型,n为int型
输出格式:
计算出的值圆周率的值
输入样例:
2 100000
输出样例:
3.14684
AC代码:

import java.util.Random;//记住导入随机数的库 也可以直接导入java.util.*
import java.util.Scanner;
public class Main {
    public static void main (String [] args) {
        Scanner in = new Scanner(System.in);
        long seed = in.nextLong();
        int n = in.nextInt();
        in.close();
        Random random = new Random(seed);//根据随机数种子创建随机数
        int insideNum = 0;
        for (int i = 0; i < n; i++) {
            double x = random.nextDouble() *2 - 1;
            double y = random.nextDouble() *2 - 1;
            if (Math.pow(x, 2) + Math.pow(y, 2) <= 1) {
                insideNum++;//算概率
            }
        }
        System.out.println(4 * ((double) insideNum / n));//根据概率来算出Π
    }
}

5.统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数
输入格式:
通过键盘输入一行字符(任意字符)
输出格式:
统计一行字符串中的英文字母个数、空格个数、数字个数、其他字符个数
输入样例:
*rwrwewre2345asdJSJQI%^&(& &sdf YY( 2342-k'
输出样例:
字母个数:22
数字个数:8
空格个数:5
其他字符个数:10
AC代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s=in.nextLine();
        int alphabet=0,empty=0,num=0,other=0;//分别代表字母,空格,数字,其他
        char []arr=s.toCharArray();//将字符串对象中的字符转换为一个字符数组
        for(int i=0;i<arr.length;i++){//进行判断
            if((arr[i]>='A'&&arr[i]<='Z')||(arr[i]>='a'&&arr[i]<='z')){
                alphabet++;
            }
            else if(arr[i]==32){
                empty++;
            } else if (arr[i]>='0'&&arr[i]<='9') {
                num++;
            }
            else {
                other++;
            }
        }
        System.out.println("字母个数:"+alphabet);
        System.out.println("数字个数:"+num);
        System.out.println("空格个数:"+empty);
        System.out.print("其他字符个数:"+other);
    }
}
posted @ 2023-04-16 20:38  xihelhy  阅读(51)  评论(0)    收藏  举报