上传练习题答案的初心是监督我自己的Java训练and希望在大家没有思路的时候提供方法让大家获得柳暗花明又一村的感觉,而不是希望大家只一味地摘抄答案做重复而又毫无意义的事情。
T1.编程题:判断闰年
根据输入的正整数y所代表的年份,计算输出该年份是否为闰年
闰年的判断标准:
能够被4整除且不能被100整除的年份
或者能够被400整除的年份
输入格式:
输入n取值范围是 【1..3000】
输出格式:
是闰年,输出 yes
非闰年,输出 no
输入样例:
在这里给出一组输入。例如:
100
输出样例:
在这里给出相应的输出。例如:
no
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=in.nextInt();
if(n%4==0&&n%100!=0||n%400==0){
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
T2.给出一个月的总天数
编写程序,提示用户输入月份和年份,然后显示这个月的天数。
输入格式:
输入任意符合范围(1月~12月)的月份和(1900年~9999年)年份,且两个值之间空格分隔。
输出格式:
输出给定年份和月份的天数。
输入样例:
2 2000
输出样例:
29
import java.util.Scanner;
public class Main {
static void RUN(int m) {
if (m == 2) {
System.out.println("29");
}
else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
System.out.println("31");
} else {
System.out.println("30");
}
}
static void NORUN(int m) {
if (m == 2) {
System.out.println("28");
}
else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) {
System.out.println("31");
} else {
System.out.println("30");
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int m = in.nextInt();
int n = in.nextInt();
if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0) {
RUN(m);
} else {
NORUN(m);
}
}
}
T3.统计正数和负数的个数然后计算这些数的平均值
编写程序,输入未指定个数的整数,判断读入的正数有多少个,读入的负数有多少个,然后计算这些输入值得总和及平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以double型数据显示。
输入格式:
输入在一行中给出一系列整数,其间以空格分隔。当读到0时,表示输入结束,该数字不要处
输出格式:
在第一行中输出正整数的个数;
在第二行中输出负整数的个数;
在第三行中输出这些输入值的总和(不对0计数);
在第四行中输出这些输入值的平均值(double型数据)。
输入样例:
1 2 -1 3 0
输出样例:
3
1
5
1.25
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int zh = 0,fu = 0,sum =0,num =0;
while(true){
int n=in.nextInt();
if(n==0) break;
else if(n>0){
zh++;
}else{
fu++;
}
sum+=n;
num++;
}
if(zh+fu>0){
System.out.println(zh);
System.out.println(fu);
System.out.println(sum);
System.out.println((double)sum/num);}
}
}
T4.用foreach求数组之和
定义一个整型数组a, 数组长度通过键盘给出,使用foreach语句,求数组所有元素之和。
输入格式:
输入在第一行给出数组的长度
第二行给出数组每个元素的值,空格隔开
输出格式:
输出和的值
输入样例:
在这里给出一组输入。例如:
5
1 2 3 4 5
输出样例:
在这里给出相应的输出。例如:
15
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n,sum=0;
n=in.nextInt();
int []arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=in.nextInt();
for(int x:arr){
sum+=x;
}
System.out.println(sum);
}
}
T5.输出所有大于平均值的数
本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。
输入格式:
输入在第1行中给出一个正整数n(1≤n≤10),第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。
输出格式:
输出在第1行给出平均值,保留2位小数。在第2行输出所有大于平均值的数,每个数的后面有一个空格;如果没有满足条件的数,则输出空行。
如果输入的n不在有效范围内,则在一行中输出"Invalid."。
输入样例1:
10
55 23 8 11 22 89 0 -1 78 186
输出样例1:
在这里给出相应的输出。例如:
47.10
55 89 78 186
输入样例2:
0
输出样例2:
在这里给出相应的输出。例如:
Invalid.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
if(n>=1&&n<=10){
int i =0,sum =0;
int[] a=new int[n];
for(i=0;i<n;i++){
a[i]=in.nextInt();
sum+=a[i];
}
double are=(double) sum/n;
System.out.printf("%.2f\n",are);
for(i=0;i<n;i++){
if(a[i]>are){
System.out.printf("%d ",a[i]);
}
}
}else{
System.out.printf("Invalid.\n");
}
}
}