仅供参考,请勿ctrl+C/V提交oj
请你实现一个累加器。输入n个非负整数,输出他们的和。 1
输入格式:
输入包括两行。 第一行:包括一个整数n,表示总共有n个数。 第二行:包含n个整数。
输出格式:
输出n个数的和。
输入样例:
4
3 2 1 4
输出样例:
10
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int res=0;
for(int i=0;i<n;i++){
int t=in.nextInt();
res+=t;
}
System.out.println(res);
}
}
一年一度的升旗手选拔又要到了,学校要求每个班级选出一位同学做升旗手的候选人。因为升旗手对身高有严格的要求,所以班主任决定选班级里个子最高的同学(如果两位同学 一样高,则选任意一位)。你能很快地给老师答案么?
输入格式:
输入包括两行。 第一行:包括一个整数n,表示班级里共有n位同学。 第二行:包含n个三位数,表示每一位同学的身高。
输出格式:
输出身高最高的同学的身高。
输入样例:
4
130 125 129 140
输出样例:
140
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int res=0;
for(int i=0;i<n;i++){
int t=in.nextInt();
if(t>res)res=t;
}
System.out.println(res);
}
}
已知有一对兔子,每个月可以生一对兔子,而小兔子一个月后又可以生一对小兔子(比如:2月份出生的小兔子4月份可以生育)。也就是说,兔子的对数为:第一个月1对,第二个月2对,第三个月3对,第四个月5对…假设兔子的生育期为两年,且不死。那么问题来了,你能说出每个月的兔子数么?
输入格式: 输入一个数n,表示第n个月,1<=n<=24。
输出格式: 输出这个月兔子的数目。
输入样例:
4
输出样例:
5
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int[] res;
res=new int[n];
res[0]=1;
res[1]=2;
for(int i=2;i<n;i++){
res[i]=res[i-1]+res[i-2];
}
System.out.println(res[n-1]);
}
}
全国中小学生Scratch作品大赛拉开了序幕。每个参赛选手可以通过网络直接上传作品。本次比赛人人可做评委。每个网络评委可以通过网络对每一件作品进行打分。评分系统也是请程序高手设计的,能自动去掉一个最高分和一个最低分,求出平均分。
输入格式: 输入数据包括两行: 第一行为n,表示n个评委,n>2。 第二行是n个评委的打分,分数之间有一个空格。打分是可以带有小数部分的。
输出格式: 输出平均分,结果保留两位小数。
输入样例:
6
10 9 8 7.9 9 9.5
输出样例:
8.88
import java.io.*;
public class Main{
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
String sn = br.readLine();
int n=Integer.parseInt(sn);
double mn=100;
double mx=0;
double res=0;
double tmp;
String s=br.readLine();
String arr[]=s.split(" ");
double a[]=new double[n];
for(int i=0;i<n;i++){
a[i]=Double.parseDouble(arr[i]);
res+=a[i];
if(a[i]>mx)mx=a[i];
if(a[i]<mn)mn=a[i];
}
res-=mx+mn;
res=res/(n-2);
System.out.printf("%.2f",res);
} catch (IOException e) {
e.printStackTrace();
}
}
}
编写程序,验证一个字符串是否为回文串:是否从前读它和从后读它都是一样的。例如,mom,dad是回文串。该程序接收用户输入的字符串,判断是否为回文串,然后将判断的结果输出。
输入格式: 输入在一行中给出一个字符串。
输出格式: 如果输入的字符串为回文串,则输出yes;否则输出no。
输入样例:
在这里给出一组输入。例如:mom
输出样例:
在这里给出相应的输出。例如:yes
import java.io.*;
public class Main{
public static void main(String args[]){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
try{
String s=br.readLine();
StringBuffer buffer = new StringBuffer();
buffer.append(s);
buffer.reverse();
String s2=buffer.toString();
if(s.equals(s2))System.out.println("yes");
else System.out.println("no");
}catch (IOException e) {
e.printStackTrace();
}
}
}
###本题主要考察
使用Scanner处理输入
使用System.out.printf进行格式化输出
String常用方法与字符串常用操作
main###输入说明:
输入double,然后输入3个浮点数。输出:从左到右依次输出3个double
(均保留2位小数输出,宽度为5),格式依次为:右侧填充空格,左侧填充空格,直接输出
输入int,然后输入3个整数(以1个或多个空格分隔)。输出:将3个整数相加后输出。
输入str,然后输入3个字符串。输出:去除空格,然后倒序输出3个字符。
输入line,然后输入一行字符串。输出:转换成大写后输出。
如果输入不是上面几个关键词,输出:输出other。
###输出说明
choice=你输入选项
该选项对应的输出内容
###提示
可使用line.split("\\s+");将以1个或多个空格分隔开的字符串分割并放入字符串数组。
Scanner.nextLine与Scanner的其他next函数混用有可能出错。
输入样例:
double
1.578 3.0 3.14259
line
aaaaaaaaaa
int
1 2 3
str
321 654 987
line
dddddddddd
end
输出样例:
choice=double
1.58 , 3.00,3.14
choice=line
AAAAAAAAAA
choice=int
6
choice=str
987654321
choice=line
DDDDDDDDDD
choice=end
other
import java.io.*;
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
while(true){
String db=in.nextLine();
if(db.equals("double")){
String s=in.nextLine();
String []s1=s.split("\\s+");
float[] f=new float[3];
for(int i=0;i<3;i++){
f[i]=Float.parseFloat(s1[i]);
}
System.out.printf("choice=double\n");
System.out.printf("%-5.2f,",f[0]);
System.out.printf("%5.2f,",f[1]);
System.out.printf("%.2f\n",f[2]);
}else if(db.equals("int")){
String s=in.nextLine();
String []s1=s.split("\\s+");
int[] a=new int[3];
for(int i=0;i<3;i++){
a[i]=Integer.parseInt(s1[i]);
}
System.out.printf("choice=int\n");
System.out.printf("%d\n",a[0]+a[1]+a[2]);
}else if(db.equals("str")){
String s=in.nextLine();
String []s1=s.split("\\s+");
System.out.printf("choice=str\n");
System.out.printf("%s\n",s1[2]+s1[1]+s1[0]);
}else if(db.equals("line")){
String s=in.nextLine();
s=s.toUpperCase();
System.out.printf("choice=line\n");
System.out.println(s);
}else{
System.out.printf("choice=%s\n",db);
System.out.println("other");
break;
}
}
}
}
可以去秋游啦!同学们别提多高兴了!老师说,单独行动有点危险,那么我们还是结伴同行吧。结伴的规则是这样的:排在最前的一个人和排在最后的那个人结成同伴,排在第2个的与排在倒数第2个的结成同伴…依次类推,2个一组成同伴。好,请马上排出来吧!老师语音一落,同学们“唰唰唰”很快结伴好了,准备出发喽!
输入格式:
第一行是一个整数n,表明n个同学。(2<=n<=50,n为偶数) 。
第二行n个整数表明n个同学的学号,学号之间有一个空格。
输出格式:
共n/2行,每行二个整数,表明结伴同学的学号,两个学号之间有一个空格。
输入样例:
6
5 6 4 12 3 2
输出样例:
5 2
6 3
4 12
import java.io.*;
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=in.nextInt();
}
for(int i=0;i<n/2;i++){
System.out.printf("%d %d\n",arr[i],arr[n-i-1]);
}
}
}
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出很多苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
现在已知每个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。
输入格式:
包括三行数据。 第一行是一个整数n,表示有n个苹果。苹果至少有一个,不超过1000个。
第二行包含n个100到200之间(包括100和200)的整数(以厘米为单位)分别表示这n个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。
第三行是一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
输出格式:
一个整数,表示陶陶能够摘到的苹果的数目。
输入样例:
10
100 200 150 140 129 134 167 198 200 111
110
输出样例:
5
import java.io.*;
public class Main{
public static void main(String args[]){
try{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String sn=br.readLine();
int n=Integer.parseInt(sn);
int[] apple=new int[n];
String sapple=br.readLine();
String sapple2[]=sapple.split(" ");
for(int i=0;i<n;i++){
apple[i]=Integer.parseInt(sapple2[i]);
}
int cnt=0;
String sh=br.readLine();
int h=Integer.parseInt(sh);
h+=30;
for(int i=0;i<n;i++){
if(apple[i]<=h)cnt++;
}
System.out.println(cnt);
}catch(IOException e){
e.printStackTrace();
}
}
}
完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。
重复若干次这样的删除,得到最后的结果。
输入格式:
第一行包括一个整数n(1<=n<=100),表示数组元素的个数。
第二行输入n个数组元素,均为整数,用空格隔开。
第三行输入一个数k(1<=k<=100),表示要进行k次删除。
接下来k行,每行一个数x,表示要删除第x个元素。
输出格式:
输出经过k次删除后的数组,每两个元素之间用空格隔开。
输入样例:
10
1 2 3 4 5 6 7 8 9 10
4
3
2
4
6
输出样例:
1 4 5 7 8 10
import java.util.Scanner;
import java.io.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
int k=in.nextInt();
int cnt=0;
while(k>0){
k--;
cnt++;
int index=in.nextInt();
for(int i=index-1;i<n-cnt;i++){
a[i]=a[i+1];
}
}
for(int i=0;i<n-cnt-1;i++){
System.out.printf("%d ",a[i]);
}
System.out.printf("%d",a[n-cnt-1]);
}
}
输入n,然后连续输入n个身份证号。
然后根据输入的是sort1还是sort2,执行不同的功能。输入的不是sort1或sort2,则输出exit并退出。
输入sort1,将每个身份证的年月日抽取出来,按年-月-日格式组装,然后对组装后的年-月-日升序输出。
输入sort2,将所有身份证按照里面的年月日升序输出。 注意:处理输入的时候,全部使用Scanner的nextLine()方法,以免出错。
输入样例:
6
410425198309308225
320203197206115011
431227196108033146
330226196605054190
34080019810819327X
320111197112301539
sort1
sort2
e
输出样例:
1961-08-03
1966-05-05
1971-12-30
1972-06-11
1981-08-19
1983-09-30
431227196108033146
330226196605054190
320111197112301539
320203197206115011
34080019810819327X
410425198309308225
exit
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String strn=in.nextLine();
int n=Integer.parseInt(strn);
String []id=new String[n];
for(int i=0;i<n;i++){
id[i]=in.nextLine();
}
String []s1=new String[n];
for(int i=0;i<n;i++){
s1[i]=id[i].substring(6,14);
}
Arrays.sort(s1);
String op;
while(true){
op=in.nextLine();
if(op.equals("sort1")){
for(int i=0;i<n;i++){
System.out.printf("%s-%s-%s\n",s1[i].substring(0,4),s1[i].substring(4,6),s1[i].substring(6,8));
}
}else if(op.equals("sort2")){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(id[j].substring(6,14).equals(s1[i])){
System.out.printf("%s\n",id[j]);
break;
}
}
}
}else{
System.out.printf("exit\n");
break;
}
}
}
}
可以使用二维数组存储来存储线性方程组的系数与常数。比如,对于如下3元线性方程组
3x+y+z=1
6x+2y+z=-1
-2x+2y+z=7
可以使用二位数组存储
2 1 1 1
6 2 1 -1
-2 2 1 7
编写一个程序可以存储n元线性方程组
输入格式:
整数n,代表n元
n行、每行n+1列线性方程组的系数与常数。系数与常数为double型。
输出格式:
格式化输出二维数组。注意:使用Arrays.deepToString进行格式化输出。
依次输出n行线性方程组的系数与常数。系数以 ,分隔,系数与常数之间以 = 分隔,= 之间有两个空格。
输入样例:
3
2 1 1 1
6 2 1 -1
-2 2 1 7
输出样例:
[[2.0, 1.0, 1.0, 1.0], [6.0, 2.0, 1.0, -1.0], [-2.0, 2.0, 1.0, 7.0]]
2.0, 1.0, 1.0 = 1.0
6.0, 2.0, 1.0 = -1.0
-2.0, 2.0, 1.0 = 7.0
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
float [][]a=new float[n][n+1];
for(int i=0;i<n;i++){
for(int j=0;j<n+1;j++){
a[i][j]=in.nextFloat();
}
}
System.out.println(Arrays.deepToString(a));
for(int i=0;i<n;i++){
System.out.printf("%.1f",a[i][0]);
for(int j=1;j<n;j++){
System.out.printf(", %.1f",a[i][j]);
}
System.out.printf(" = %.1f\n",a[i][n]);
}
}
}
从键盘输入矩阵的行数N,和一个N×N阶的矩阵,编程输出它的转置矩阵。
输入格式:
首行为矩阵的行数(列数)N;
然后是N行N列组成矩阵的数据。每行内数据之间用空格隔开。
输出格式:
矩阵格式输出,每行内非尾部的每个数据后跟一个空格,行尾数据后不加空格,为换行符。
输入样例:
4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
输出样例:
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
import java.util.Scanner;
import java.io.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int[][] a=new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
a[i][j]=in.nextInt();
}
}
int [][]b=new int[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
b[i][j]=a[j][i];
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.printf("%d",b[i][j]);
if(j!=n-1)System.out.printf(" ");
else System.out.printf("\n");
}
}
}
}