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);
}
}