PTA 实验一:JAVA语言基础刷题(一)
目录
7-2 jmu-Java-01入门-第一个PTA上Java程序
7-6 sdut-sel-for-1 RDMP音乐播放器(I)(分支、循环)
7-1 Hello World
写java代码,没有输入,屏幕输出“Hello World”
输入格式:
输出格式:
Hello World
输出样例:
Hello World
我的代码:
public class Main
{
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
7-2 jmu-Java-01入门-第一个PTA上Java程序
本题目要求读入若干对整数a和b,然后输出它们的和。
输入格式:
在一行中给出一对整数a和b。
以下输入样例只有两对,实际测试数据可能有多对值。
输出格式:
对每一组输入,如果a的绝对值>1000,输出|a|>1000,否则输出a+b的值。
输入样例:
18 -299
1001 -9
-1001 8
输出样例:
-281
|a|>1000
|a|>1000
我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextInt()){//采用hasNext循环
String str = scanner.nextLine();
String [] arr = str.split("\\s+");
int num1 = Integer.parseInt(arr[0]);
int num2 = Integer.parseInt(arr[1]);
if(Math.abs(num1) > 1000){
System.out.println("|a|>1000");
}else{
System.out.println(num1 + num2);
}
}
}
}
知识点1:java的输入语法:Scanner in=new Scanner(System.in);
输入double
import java.util.Scanner;//输入头文件
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
double d=in.nextDouble();
System.out.println(d);
}
}
输入整型
import java.util.Scanner;//输入头文件
public class Main {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int a = in.nextInt(); //调用in的nextInt函数来读入整型
int b = in.nextInt();
System.out.print(a+b+" ");
}
}
注意:in.nextInt() 函数只能接受 int 型,不能输入double或者long等其他类型的数字。
对于其他输入的函数同样,nextDouble(), nextLong(), nextShort(), nextByte(), 都只能输入对应类型的数据,输入其他类型会报错。
知识点2:java的\\s+的使用
正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f \n \r \t \v]
- \f -> 匹配一个换页
- \n -> 匹配一个换行符
- \r -> 匹配一个回车符
- \t -> 匹配一个制表符
- \v -> 匹配一个垂直制表符
方法1:String[] c = s.split(" ");
方法2:String[] c = s.split("\\s+");
假如我们输入的是:1 2 3 12 11这样的数据,换言之就是数字之间有多个空格的时候,方法1将会报错,而方法2正常排序运行。因为方法1只能匹配一个空格,而方法2可以匹配多个空格。
知识点3:java的split的使用——拆分字符串
知识点4:java的Integer.parseInt()和String.valueOf()
Integer.parseInt(string s)可以将提取好的“数字”组成的字符转化为int 型数据。
类似的,可以用,Byte,Short,Long,Float,Double类调用相应的类方法。
String.valueOf()可以将上述的数据类型转化为String对象
知识点5:JavaScript之Math数学运算相关函数:abs(x)—— 返回数的绝对值
JavaScript之Math数学运算相关函数_川少博客的博客-CSDN博客
7-3 求一个三位正整数各位数字之和
求一个三位正整数各位数字之和
输入格式:
输入一个三位的正整数
输出格式:
输出百十个位上各位数字的和
输入样例:
678
输出样例:
21
我的代码:
import java.util.*;
public class Main
{
public static void main(String arg[])
{
Scanner input=new Scanner(System.in);
int 三位数=input.nextInt();
int 个位,十位,百位;
个位=三位数%10;
十位=三位数%100/10;
百位=三位数/100;
System.out.println(个位+十位+百位);
}
}
7-4 二进制的前导的零
计算机内部用二进制来表达所有的值。一个十进制的数字,比如24,在一个32位的计算机内部被表达为00000000000000000000000000011000。可以看到,从左边数过来,在第一个1之前,有27个0。我们把这些0称作前导的零。
现在,你的任务是写一个程序,输入一个整数,输出在32位表达下它前导的零的个数。
输入格式:
一个整数,在32位的整数可以表达的范围内。
输出格式:
一个整数,表达输入被表达为一个32位的二进制数时,在第一个1之前的0的数量。
输入样例:
256
输出样例:
23
我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int result = 32;
if (a > 0) {
while (a > 0){
result--;
a /= 2;
}
}
else if (a < 0)
result = 0;
System.out.println(result);
}
}
7-5 JAVA-水仙花数
水仙花数是指一个N位正整数(7≥N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 要求编写程序,计算所有N位水仙花数。
输入格式:
输入一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
153
370
371
407
我的代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n= sc.nextInt();
sc.close();
int lb = (int)(Math.pow(10, n-1));
int ub = (int)(Math.pow(10, n));
int bites[] = new int[10];
for(int i=0;i<bites.length;i++) {
bites[i]=(int)Math.pow(i, n);
}
for(int i=lb;i<ub;i++) {
int num =i;
int result=0;
while(num!=0) {
result += bites[num%10];
num /= 10;
}
if(result==i)
System.out.println(i);
}
}
}
pow(x,y) 返回 x 的 y 次幂;
7-6 sdut-sel-for-1 RDMP音乐播放器(I)(分支、循环)
注意:这是在不使用数组的情况下完成的。
RDMP音乐播放器将存储5首歌曲,它们的名称将永远是“A”,“B”,“C”,“D”和“E”。RDMP有3个按钮,用户可以按下这些按钮来重新排列播放列表并播放歌曲。
最初,RDMP播放列表是“A, B, C, D, E”。3个控制按钮做以下工作:
•按钮1:将播放列表的第一首歌曲移动到播放列表的末尾。例如:“A, B, C, D, E”会变成“B, C, D, E, A”。
•按钮2:将播放列表的最后一首歌移动到播放列表的开始。例如,“A, B, C, D, E”会变成“E, A, B, C, D”。
•按钮3:交换播放列表的前两首歌。例如,“A, B, C, D, E”会变成“B, A, C, D, E”。1.
你需要编写一个程序来模拟一个可以按下5次按钮的RD音乐播放器。
输入格式:
输入1到3之间的5个数字,代表要采取的行动。
输出格式:
输出播放列表的正确顺序。
歌曲名称中间用逗号作分隔,最后一首歌名称之后没有逗号。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner y = new Scanner(System.in);
int m, x, n,i;
char a[] = {'A', 'B', 'C', 'D', 'E'};
char str ;
for (m = 1; m <= 5; m++) {
x = y.nextInt();
if (x == 1) {
str = a[0];
for (n = 0; n <= 3; n++) {
a[n] = a[n + 1];
}
a[4] = str;
}
else if(x == 2) {
str = a[4];
for (n = 3; n >= 0; n--) {
a[n + 1] = a[n];
}
a[0] = str;
}
else if (x == 3){
str = a[0];
a[0] = a[1];
a[1] = str;
}
}
for(i = 0;i <= 3;i++){
System.out.printf(a[i]+",");
}
System.out.println(a[4]);
}
}
7-7 java编程判断斐波那契数是质数
斐波那契数列(FibonacciSequence),又称黄金分割数列。因数学家列昂纳多·斐波那契(LeonardoFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34 ⋯
在数学上,斐波那契数列被以如下的递推形式定义:
F(1)=1,F(2)=1
F(n)=F(n−1)+F(n−2),(n≥3,n∈N)
素数也称为质数,是指在大于 1 的整数中,只能被 1 和其自身整除的数,2 是最小的质数。
我们想要知道斐波那契数列的第 n 项是否是一个素数,请你编写程序完成判断。
输入格式:
一行,一个整数 n(1≤n≤50)
输出格式:
一行,一个单词,如果 F(n) 是素数,输出true,反之输出false
输入样例1:
1
输出样例1:
false
输入样例2:
2
输出样例2:
false
输入样例3:
3
输出样例3:
true
//package shiyan01.demo01;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
boolean flag = true;
long a,b,x,count;
a = 1;
b = 1;
x = 1;
count = 0;
for (int i = 0; i < n - 2; i++) {
x = a + b;
a = b;
b = x;
}
//System.out.println(x);
double x1 = x;
for (int i = 2; i < Math.pow(x,0.5); i++) {
if(x%i==0) {
flag = false ;
break;
}
}
if(x==1) {
flag = false;
}
if(flag) {
System.out.println(true);
} else {
System.out.println(false);
}
}
}

我们下个文章见~