ZZULIOJ(1000~1049--Java题解)

目录

1.两个数相加

2.多项式求值

3.两个整数的四则运算

4.三位数的分离

5.整数幂

6.等差数列求和

7.鸡兔同笼

8.美元和人民币

9.平均分

10.求圆的周长和面积

11.圆柱体表面积

12.求绝对值

13.求两点之间的距离

14.求三角形的面积

15.计算时间间隔

16.银行汇率

17.判断正整数位数

18.奇数偶数

19.公园门票

20.两整数排序

21.三个整数的最大值

22.三个整数排序

23.大小写转换

24.计算字母序号

25.最大字符

26.字符类型判断

27.判断水仙花数

28.I love 闰年!

29.三角形判定

30.判断直角三角形

31.判断点在第几象限

32.员工薪水

33.五级制成绩

34.夏季促销

35.分段函数求值

36.某年某月有多少天

37.四则运算

38.绝对值最大

39.n个数求和

40.数列求和1

41.数列求和2

42.数列求和3

43.最大值

44.不及格率

45.数值统计

46.奇数乘积

47.对数表

48.阶乘表


选自ZZULIOJ中前48题,Java解析。

1.两个数相加

题目描述

计算两个整数的和。

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args){
        Scanner cin=new Scanner(System.in);
        int a=cin.nextInt(),b=cin.nextInt();
        System.out.println(a+b);
    }
}

2.多项式求值

题目描述

对用户输入的任一整数,输出以下多项式的值。

y=2x2+x+8

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args){
        Scanner cin=new Scanner(System.in);
        int x=cin.nextInt();
        System.out.println(2*x*x+x+8);
    }
}

3.两个整数的四则运算

题目描述

输入两个整数num1和num2,请你设计一个程序,计算并输出它们的和、差、积、整数商及余数。

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int a=cin.nextInt(),b=cin.nextInt();
        System.out.print(a+b+" ");
        System.out.print(a-b+" ");
        System.out.print(a*b+" ");
        System.out.print(a/b+" ");
        System.out.print(a%b+" ");
    }
}

4.三位数的分离

题目描述

从键盘输入一个任意的三位正整数,分别求出其个位、十位和百位上的数字。

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int x=cin.nextInt();
        System.out.print(x%10+" ");
        System.out.print((x/10)%10+" ");
        System.out.print((x/100)%10+" ");
    }
}

5.整数幂

题目描述

输入3个整数,输出它们的1次幂、2次幂和3次幂。

输入

输入3整数,用空格隔开。

输出

输出3行,每行3个整数,分别是它们的1次幂、2次幂和3次幂,每个整数占9列,不足9列左对齐。

样例输入

1 5 100

样例输出

1 1 1

5 25 125

100 10000 1000000

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a, b, c;
        while (sc.hasNext()) {
            a = sc.nextInt();
            b = sc.nextInt();
            c = sc.nextInt();
            System.out.println(String.format("%-9d%-9d%-9d", a, a*a, a*a*a));
            System.out.println(String.format("%-9d%-9d%-9d", b, b*b, b*b*b));
            System.out.println(String.format("%-9d%-9d%-9d", c, c*c, c*c*c));
        }
    }
}

6.等差数列求和

题目描述

给出三个整数,分别表示等差数列的第一项、最后一项和公差,求该数列的和。

输入

输入三个整数,之间用空格隔开。第1个数作为首项,第2个数作为末项,第3个数作为公差。

输出

输出占一行,包含一个整数,为该等差数列的和。

样例输入 Copy

2 11 3

样例输出 Copy

26

import java.util.Scanner;
 
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a, b, c;
        a = sc.nextInt();
        b = sc.nextInt();
        c = sc.nextInt();
        int sum=0;
        for(int i=a;i<=b;i+=c) sum+=i;
        System.out.println(sum);
    }
}

7.鸡兔同笼

题目描述

鸡和兔关在一个笼子里,鸡有2只脚,兔有4只脚,没有例外。已知现在可以看到笼子里m个头和n只脚,求鸡和兔子各有多少只?

输入

输入两个整数heads和feet,分别代表笼子里头的个数和脚的个数。(假设heads和feet都在合法的数据范围内)

输出

依次输出鸡和兔的只数。(数字为0的也要输出)

样例输入 Copy

12 40

样例输出 Copy

4 8

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int n,m;
        n=cin.nextInt();
        m=cin.nextInt();
        int x=(4*n-m)/2;
        System.out.print(x+" ");
        System.out.print(n-x);
    }
}

8.美元和人民币

题目描述

美元越来越贬值了,手上留有太多的美元似乎不是件好事。赶紧算算你的那些美元还值多少人民币吧。假设美元与人民币的汇率是1美元兑换6.5573元人民币,编写程序输入美元的金额,输出能兑换的人民币金额。

输入

输入一个实数,为美元的金额。

输出

输出能兑换的人民币的数值。输出保留2位小数。

样例输入 Copy

100

样例输出 Copy

655.73

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        double x=cin.nextDouble();
        final double op=6.5573;
        double ans=x*op;
        System.out.printf("%.2f",ans);
    }
}

9.平均分

题目描述

已知某位学生的数学、英语和计算机课程的成绩,求该生三门课程的平均分。

输入

输入三个整数,数据之间由空格隔开。

输出

输出占一行,包含一个实数,为三门课的平均分,保留两位小数。

样例输入 Copy

87 73 93

样例输出 Copy

84.33

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int a,b,c;
        a=cin.nextInt();
        b=cin.nextInt();
        c=cin.nextInt();
        double sum=a+b+c;
        System.out.printf("%.2f",sum/3);
    }
}

10.求圆的周长和面积

题目描述

输入圆的半径,求圆的周长和面积。 要求定义圆周率为如下宏常量

#define PI 3.14159

输入

输入半径r的值,为一实数。

输出

输出一行,包括周长和面积。数据之间用一个空格隔开,数据保留小数后面两位。

样例输入 Copy

3

样例输出 Copy

18.85 28.27

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        final double PI=3.14159;
        double r;
        r=cin.nextDouble();
        double x=2*PI*r;
        double y=PI*r*r;
        System.out.printf("%.2f %.2f",x,y);
    }
}

11.圆柱体表面积

题目描述

输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上。要求定义圆周率为如下宏常量

#define PI 3.14159

输入

输入两个实数,为圆柱体的底面半径r和高h。

输出

输出一个实数,即圆柱体的表面积,保留2位小数。

样例输入 Copy

42.1 71.6

样例输出 Copy

30076.14

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        final double PI=3.14159;
        double r,h;
        r=cin.nextDouble();
        h=cin.nextDouble();
        double x=2*PI*r*r+2*PI*r*h;
        System.out.printf("%.2f",x);
    }
}

12.求绝对值

题目描述

求实数的绝对值。

输入

输入一个实数。

输出

输出它的绝对值,结果保留两位小数

样例输入 Copy

-234.00

样例输出 Copy

234.00

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        double x;
        x=cin.nextDouble();
        if(x<0) x=-x;
        System.out.printf("%.2f",x);
    }
}

13.求两点之间的距离

题目描述

给定A(x1, y1), B(x2, y2)两点坐标,计算它们间的距离。

输入

输入包含四个实数x1, y1, x2, y2,分别用空格隔开,含义如描述。其中0≤x1,x2,y1,y2≤100。

输出

输出占一行,包含一个实数d,表示A, B两点间的距离。结果保留两位小数。

样例输入 Copy

1 1.5 2 2.5

样例输出 Copy

1.41

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        double x1,y1,x2,y2;
        x1=cin.nextDouble();
        y1=cin.nextDouble();
        x2=cin.nextDouble();
        y2=cin.nextDouble();
        double sum=Math.sqrt(Math.pow(x1-x2, 2)+Math.pow(y1-y2,2));
        System.out.printf("%.2f",sum);
    }
}

14.求三角形的面积

题目描述

给出三角形的三条边,求三角形的面积。

输入

输入三角形的三条边长(实数),数据之间用空格隔开。

输出

输出三角形的面积,结果保留2位小数。

样例输入 Copy

2.5 4 5

样例输出 Copy

4.95

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        double a,b,c;
        a=cin.nextDouble();
        b=cin.nextDouble();
        c=cin.nextDouble();
        double s=(a+b+c)/2;
        double sum=Math.sqrt(s*(s-a)*(s-b)*(s-c));
        System.out.printf("%.2f",sum);
    }
}

15.计算时间间隔

题目描述

读入两个用“时:分:秒”表示的时间点,计算以秒为单位的时间间隔。

输入

输入有两行,每行是一个用“时:分:秒”表示的时间点。测试数据保证第二个时间点晚于第一个时间点。

输出

输出一个整数,表示时间间隔的秒数。

样例输入 Copy

08:00:00

09:00:00

样例输出 Copy

3600

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        String s1,s2;
        s1=cin.nextLine();
        String a1[]=s1.split(":");
        int x1=Integer.parseInt(a1[0]);
        int y1=Integer.parseInt(a1[1]);
        int z1=Integer.parseInt(a1[2]);
        s2=cin.nextLine();
        String a2[]=s2.split(":");
        int x2=Integer.parseInt(a2[0]);
        int y2=Integer.parseInt(a2[1]);
        int z2=Integer.parseInt(a2[2]);
        int sum=(z2-z1)+(y2-y1)*60+(x2-x1)*3600;
        System.out.println(sum);
    }
}

16.银行汇率

题目描述

设银行1年期定期存款年利率为2.25%,存款本金为capital元,试编程计算并输出n年后的本利之和。

(注: 目前银行活期存款的利息是按单利计息的。如果是定期存款,连本带息转入下一个存期,那么会继续计入定期的,相当于是复利。)

输入

输入一个正整数和一个实数,分别代表存款年数和存款本金。

输出

输出一个实数为n年后的本利之和,小数点后保留6位数字。

样例输入 Copy

2 100.0

样例输出 Copy

104.550625

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int n;
        double x;
        n=cin.nextInt();
        x=cin.nextDouble();
        double sum=Math.pow(1.0225,n);
        System.out.printf("%.6f",sum*x);
    }
}

 

17.判断正整数位数

题目描述

给定一个不多于5位的正整数,判断它是几位数,并输出。

输入

一个不多于5位的正整数。

输出

输出正整数的位数,单独占一行。

样例输入 Copy

111

样例输出 Copy

3

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int n;
        n=cin.nextInt();
        int sum=0;
        while(n>0)
        {
            sum++;
            n/=10;
        }
        System.out.printf("%d",sum);
    }
}

18.奇数偶数

题目描述

输入一个整数,判断该数是奇数还是偶数。

输入

输入整数n。

输出

如果该数是奇数就输出“odd”,偶数就输出“even”(输出不含双引号)。

样例输入 Copy

-3

样例输出 Copy

odd

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int n;
        n=cin.nextInt();
        if(n%2==0) System.out.printf("even");
        else System.out.printf("odd");
    }
}

19.公园门票

题目描述

某公园门票的票价是每人50元,一次购票满30张,每张可以少收2元。试编写自动计费系统程序。

输入

输入一个正整数,表示购票的数量。

输出

输出一个整数,表示用户实际需要支付的金额。

样例输入 Copy

30

样例输出 Copy

1440

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int n;
        n=cin.nextInt();
        if(n>=30) System.out.printf("%d",48*n);
        else System.out.printf("%d",n*50);
    }
}

20.两整数排序

题目描述

从键盘输入两个整数x,y,按从小到大的顺序输出它们的值。

输入

输入两个整数x,y。

输出

按从小到大的顺序输出它们的值。数据之间以空格间隔。

样例输入 Copy

20 16

样例输出 Copy

16 20

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int x,y;
        x=cin.nextInt();
        y=cin.nextInt();
        if(x>y) System.out.printf("%d %d",y,x);
        else System.out.printf("%d %d",x,y);
    }
}

21.三个整数的最大值

题目描述

从键盘输入三个整数x,y和z,求出其中最大的数。

输入

输入三个整数,用空格隔开。

输出

输出最大整数。

样例输入 Copy

20 16 18

样例输出 Copy

20

import java.util.Scanner;
import java.util.Arrays;
public class Main {
 
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        int a[]=new int[3];
        for(int i=0;i<3;i++) a[i]=cin.nextInt();
        Arrays.sort(a);
        System.out.printf("%d\n",a[2]);
    }
}

22.三个整数排序

题目描述

从键盘输入三个整数x,y和z,按从大到小的顺序输出它们的值。

输入

输入三个整数x,y和z。

输出

按从大到小的顺序输出它们的值。

样例输入 Copy

20 16 18

样例输出 Copy

20 18 16

import java.util.Scanner;
import java.util.Arrays;
public class Main {
 
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        int a[]=new int[3];
        for(int i=0;i<3;i++) a[i]=cin.nextInt();
        Arrays.sort(a);
        for(int i=2;i>=0;i--) System.out.printf("%d ",a[i]);
    }
}

23.大小写转换

题目描述

输入一个字符,若是小写字母,则变为大写输出,否则,原样输出。

输入

输入为一个字符。

输出

按题目要求输出一个字符,单独占一行。

样例输入 Copy

a

样例输出 Copy

A

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        String a=input.nextLine();
        char ch=a.charAt(0);
        if(ch>='a'&&ch<='z')
            ch=(char)(ch-32);
        System.out.println(ch);
    }
}

24.计算字母序号

题目描述

输入一个英文字母(可能是大写,也可能是小写),输出该字母在字母表中的序号(’a’和’A’的序号为1)。

输入

输入只有一个英文字母。

输出

输出一个整数,表示该字母在字母表的序号,输出单独占一行。

样例输入 Copy

D

样例输出 Copy

4

import java.util.Scanner;
public class Main {
 
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        String x=cin.nextLine();
        char ch=x.charAt(0);
        if(ch>='a'&&ch<='z') ch-=32;
        int y=ch-64;
        System.out.printf("%d\n",y);
    }
}

25.最大字符

题目描述

给你三个ASCII字符(不含空白字符:包括空格、制表符\t、回车换行符\n),找出其中最大的那个

输入

输入包含三个字符,之间有一个空格隔开。

输出

输出ASCII码最大的那个字符,占一行。

样例输入 Copy

a b c

样例输出 Copy

c

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        String x=cin.nextLine();
        char a=x.charAt(0),b=x.charAt(2),c=x.charAt(4);//1和3是空格
        if(a>b&&a>c) System.out.print(a);
        if(b>a&&b>c) System.out.print(b);
        if(c>b&&c>a) System.out.print(c);
    }
}

26.字符类型判断

题目描述

从键盘输入一个字符,判断该字符是否大写字母、小写字母、数字字符或其他字符。分别输出对应的提示信息。

输入

输入一个字符。

输出

如果该字符是大写字母,则输出“upper”;若是小写字母,则输出“lower”;若是数字字符,则输出“digit”;若是其他字符,则输出“other”。(输出不含双引号)。

样例输入 Copy

E

样例输出 Copy

upper

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        String x=cin.nextLine();
        char a=x.charAt(0);
        if(a>='A'&&a<='Z') System.out.printf("upper");
        else if(a>='a'&&a<='z') System.out.printf("lower");
        else if(a>='0'&&a<='9') System.out.printf("digit");
        else System.out.printf("other");
    }
}

27.判断水仙花数

题目描述

春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:

“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。

现在要求输入一个三位数,判断该数是否是水仙花数,如果是,输出“yes”,否则输出“no”

输入

输入一个三位的正整数。

输出

输出“yes”或“no”。

样例输入 Copy

153

样例输出 Copy

yes

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        int n;
        n=cin.nextInt();
        int x=n%10,y=(n/10)%10,z=(n/100)%10;
        if((x*x*x+y*y*y+z*z*z==n)&&n>=100&&n<1000) System.out.printf("yes");
        else System.out.printf("no");
    }
}

28.I love 闰年!

题目描述

根据一个年份,判断是否是闰年。

输入

输入为一个整数,表示一个年份。

输出

如果是闰年,输出"Yes",否则输出"No"。输出单独占一行。

样例输入 Copy

2012

样例输出 Copy

Yes

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        int n;
        n=cin.nextInt();
        if((n%400==0)||((n%4==0)&&(n%100!=0))) System.out.printf("Yes");
        else System.out.printf("No");
    }
}

29.三角形判定

题目描述

给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。

输入

输入为三个int范围的正整数,中间有一个空格隔开。

输出

如果能构成三角形,输出"Yes",否则输出"No"

样例输入 Copy

3 4 5

样例输出 Copy

Yes

import java.util.Scanner;
public class Main {
    public static void main(String[] args)
    {
        Scanner cin=new Scanner(System.in);
        int x,y,z;
        x=cin.nextInt();
        y=cin.nextInt();
        z=cin.nextInt();
        if((x+y>z)&&(x+z>y)&&(y+z>x)&&(x-y<z)&&(x-z<y)&&(y-z<x)) System.out.printf("Yes");
        else System.out.printf("No");
    }
}

30.判断直角三角形

题目描述

输入三个正整数,判断用这三个整数做边长是否能构成一个直角三角形。

输入

输入三个正整数。

输出

能否构成直角三角形。如能输出:yes.若不能,输出:no。

样例输入 Copy

6 8 10

样例输出 Copy

yes

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        int a = cin.nextInt();
        int b = cin.nextInt();
        int c = cin.nextInt();
        if ((a * a + b * b == c * c) || (b * b + c * c == a * a) || (a * a + c * c == b * b)) {
            System.out.println("yes");
        }else{
            System.out.println("no");
        }
    }
}

31.判断点在第几象限

题目描述

从键盘输入2个整数x、y值,表示平面上一个坐标点,判断该坐标点处于第几象限,并输出相应的结果。

输入

输入x,y值表示一个坐标点。坐标点不会处于x轴和y轴上,也不会在原点。

输出

输出对应的象限,用数字1,2,3,4分别对应四个象限。>

样例输入 Copy

1 1

样例输出 Copy

1

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner cin = new Scanner(System.in);
        int x,y;
        x=cin.nextInt();
        y=cin.nextInt();
        if(x>0&&y>0) System.out.printf("1\n");
        else if(x<0&&y>0) System.out.printf("2\n");
        else if(x<0&&y<0) System.out.printf("3\n");
        else if(x>0&&y<0) System.out.printf("4\n");
    }
}

32.员工薪水

题目描述

某公司规定,销售人员工资由基本工资和销售提成两部分组成,其中基本工资是1500元/月,销售提成规则如下:

销售额小于等于10000元时,按照5%提成;

销售额大于10000元但小于等于50000元时,超出10000部分按照3%提成;

销售额大于50000元时,超出50000部分按照2%提成。

编写程序,根据销售额计算员工收入。

输入

输入一个整数表示销售额

输出

输出员工的薪水,保留2位小数。

样例输入 Copy

30000

样例输出 Copy

2600.00

import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        double n = cin.nextDouble();
        double x = 1500;
        double sum = 0;
        if(n <= 10000) sum = x + n * 0.05;
        else if(n <= 50000) sum = x + 10000 * 0.05 + (n - 10000) * 0.03;
        else sum = x + 10000 * 0.05 + 40000 * 0.03 + (n - 50000) * 0.02;
        System.out.printf("%.2f", sum);
    }
}

 

33.五级制成绩

题目描述

给定一个百分制成绩, 请根据百分制成绩输出其对应的等级。转换关系如下:

90分及以上为’A’,80~89为’B’, 70~79为’C’, 60~69为’D’,60分以下为’E’。

输入

一个百分制成绩(0~100的整数)。

输出

输出对应的等级。

样例输入 Copy

100

样例输出 Copy

A

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        double n = cin.nextDouble();
        if(n>=90) System.out.printf("A");
        else if(n>=80&&n<90) System.out.printf("B");
        else if(n>=70&&n<80) System.out.printf("C");
        else if(n>=60&&n<70) System.out.printf("D");
        else System.out.printf("E");
    }
}

34.夏季促销

题目描述

商场夏季促销,购物500元以下,不打折;购物500元(含)以上,95折;购物1000元(含)以上,9折;购物3000元(含)以上,85折;购物5000元(含)以上,8折。根据消费金额,确定用户实际需要支付的数目。

输入

输入一个实数,表示消费金额。

输出

输出一个实数,表示用户实际需要支出的数目,保留两位小数。

样例输入 Copy

5100

样例输出 Copy

4080.00

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int n=cin.nextInt();
        double sum=0.0;
        if(n<500) sum=n;
        else if(n>=500&&n<1000) sum=0.95*n;
        else if(n>=1000&&n<3000) sum=0.9*n;
        else if(n>=3000&&n<5000) sum=0.85*n;
        else if(n>=5000) sum=0.8*n;
        System.out.printf("%.2f\n",sum);
    }
}

35.分段函数求值

题目描述

已知:y是x的函数,

当x<-2时,y=7-2x;

当x>=-2,且x<3时,y=5-|3x+2|;

当x>=3时,y=3x+4

输入

任意输入一个整数x。

输出

输出为一个整数,即x对应的函数值。

样例输入 Copy

2

样例输出 Copy

-3

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int x=cin.nextInt();
        int y=0;
        if(x<-2) y=7-2*x;
        else if(x>=-2&&x<3) y=5-Math.abs(3*x+2);
        else if(x>=3) y=3*x+4;
        System.out.printf("%d\n",y);
    }
}

36.某年某月有多少天

题目描述

给你一个年份和月份,求该月有多少天

输入

一个年份(正整数),一个月份(1-12),中间有一个空格隔开

输出

该月的天数,单独占一行。

样例输入 Copy

2012 2

样例输出 Copy

29

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        int x,y;
        x=cin.nextInt();
        y=cin.nextInt();
        int[] a={0,31,28,31,30,31,30,31,31,30,31,30,31};
        if((x%400==0)||((x%4==0)&&(x%100!=0)))
            if(y==2) a[2]=29;
        System.out.printf("%d\n",a[y]);
    }
}

37.四则运算

题目描述

给你一个简单的四则运算表达式,包含两个实数和一个运算符,请编程计算出结果

输入

表达式的格式为:s1 op s2, s1和s2是两个实数,op表示的是运算符(+,-,*,/),也可能是其他字符。注意运算符两侧各有一个空格。

输出

如果运算符合法,输出表达式的值;若运算符不合法或进行除法运算时除数是0,则输出"Wrong input!"。最后结果小数点后保留两位。

样例输入 Copy

1.0 + 1.0

样例输出 Copy

2.00

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        double s1 = cin.nextDouble();
        String op = cin.next();
        char ch = op.charAt(0);
        double s2 = cin.nextDouble();
        double n = 0;
        switch(ch) 
        {
        case '+': 
            System.out.printf("%.2f", s1 + s2); 
            break; 
        case '-':
            System.out.printf("%.2f", s1 - s2);
            break;
        case '*':
            System.out.printf("%.2f", s1 * s2); 
            break;
        case '/':
            if(Math.abs(s2) > 1e-10)
                System.out.printf("%.2f", s1 / s2);
            else
                System.out.printf("Wrong input!\n");
            break;
        default:
            System.out.printf("Wrong input!\n");
        }
    }
}

38.绝对值最大

题目描述

输入3个整数,输出绝对值最大的那个数。

输入

输入包含3个int范围内的整数,用空格隔开。

输出

输出三个数中绝对值最大的数,单独占一行。若绝对值最大的数不唯一,则输出最先出现的那个。例如,若输入为1 -3 3,则输出为-3;若输入为1 3 -3则输出为3。

样例输入 Copy

1 2 -3

样例输出 Copy

-3

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int a,b,c;
        a=cin.nextInt();
        b=cin.nextInt();
        c=cin.nextInt();
        if(Math.abs(a)>=Math.abs(b)&&Math.abs(a)>=Math.abs(c)) System.out.printf("%d\n",a);
        else if(Math.abs(b)>=Math.abs(a)&&Math.abs(b)>=Math.abs(c)) System.out.printf("%d\n",b);
        else if(Math.abs(c)>=Math.abs(a)&&Math.abs(c)>=Math.abs(b)) System.out.printf("%d\n",c);
    }
}

39.n个数求和

题目描述

输入一个整数n和n个整数,输出这n个整数的和。

输入

输入有两行:第一行是一个正整数n,第二行是n个整数。

输出

输出一个整数,即n个数的和。输出单独占一行。

样例输入 Copy

3

7 3 2

样例输出 Copy

12

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        int sum=0;
        for(int i=0;i<n;i++) 
        {
            int x;
            x=cin.nextInt();
            sum+=x;
        }
        System.out.printf("%d\n",sum);
    }
}

40.数列求和1

题目描述

输入一个整数n,输出数列1+1/3+1/5+……前n项的和。

输入

输入只有一个正整数n。

输出

结果保留2位小数,单独占一行

样例输入 Copy

3

样例输出 Copy

1.53

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        double sum=0;
        double f=1;
        for(int i=0;i<n;i++) 
        {
           sum+=1/f;
           f+=2; 
        }
        System.out.printf("%.2f\n",sum);
    }
}

 

41.数列求和2

题目描述

输入一个整数n,输出数列1-1/3+1/5-……前n项的和。

输入

输入只有一个整数n。

输出

结果保留2为小数,单独占一行。

样例输入 Copy

3

样例输出 Copy

0.87

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        double sum=0;
        double f=1;
        double op=1;
        for(int i=0;i<n;i++) 
        {
           sum+=op/f;
           f+=2; 
           op=-op;
        }
        System.out.printf("%.2f\n",sum);
    }
}

42.数列求和3

题目描述

求1-2/3+3/5-4/7+5/9-6/11+...的前n项和,结果保留3位小数。

输入

输入正整数n(n>0)。

输出

输出一个实数,保留3位小数,单独占一行。

样例输入 Copy

5

样例输出 Copy

0.917

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        double sum=0;
        double f=1;
        double op=1;
        for(int i=1;i<=n;i++) 
        {
           sum+=(op*i)/f;
           f+=2; 
           op=-op;
        }
        System.out.printf("%.3f\n",sum);
    }
}

43.最大值

题目描述

输入一个整数n和n个整数,输出这n个整数的最大值。

输入

输入有两行:第一行是一个正整数n,第二行是n个整数。

输出

输出包含一个整数,即n个数中的最大值,单独占一行。

样例输入 Copy

4

3 7 5 6

样例输出 Copy

7

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        int x=cin.nextInt();
        int ans=x;
        for(int i=1;i<n;i++)
        {
            x=cin.nextInt();
            if(ans<x) ans=x;
        }
        System.out.println(ans);
    }
}

44.不及格率

题目描述

输入n和n个学生成绩(实数),输出不及格率。

输入

输入的第一行是一个整数n,第二行是n个实数,用空格隔开。

输出

输出一个实数,表示不及格率,结果保留2位小数,单独占一行。

样例输入 Copy

8

98 45 86 79 56 75 90 70

样例输出 Copy

0.25

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        double sum=0;
        for(int i=1;i<=n;i++)
        {
            double x;
            x=cin.nextDouble();
            if(x<60) sum++;
        }
        sum/=n;
        System.out.printf("%.2f",sum);
    }
}

45.数值统计

题目描述

统计给定的n个数中,负数、零和正数的个数。

输入

输入的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个整数

输出

输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。

样例输入 Copy

6 0 1 2 3 -1 0

样例输出 Copy

1 2 3

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        int a=0,b=0,c=0;
        for(int i=0;i<n;i++)
        {
            int x;
            x=cin.nextInt();
            if(x>0) a++;
            else if(x<0) b++;
            else c++;
        }
        System.out.printf("%d %d %d\n",b,c,a);
    }
}

46.奇数乘积

题目描述

给你n个整数,求他们中所有奇数的乘积。

输入

第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。

输出

输出n个数中的所有奇数的乘积,占一行。

样例输入 Copy

5 2 5 4 6 7

样例输出 Copy

35

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        int sum=1;
        for(int i=0;i<n;i++)
        {
            int x;
            x=cin.nextInt();
            if(x%2!=0) sum*=x;
        }
        System.out.printf("%d\n",sum);
    }
}

47.对数表

题目描述

输入两个正整数m和n,输出m到n之间每个整数的自然对数。

输入

输入包括两个整数m和n(m<=n),之间用一个空格隔开。

输出

每行输出一个整数及其对数,整数占4列,对数占8列,右对齐,对数保留4位小数。

样例输入 Copy

2 4

样例输出 Copy

2 0.6931

3 1.0986

4 1.3863

import java.util.Scanner;

public class Main {
     public static void main(String[] args) {
         Scanner cin= new Scanner(System.in);
         int l=cin.nextInt();
         int r=cin.nextInt();
         for(int i =l;i<=r; i++)
             System.out.printf("%4d%8.4f\n", i, Math.log(i));
     }
} 

48.阶乘表

题目描述

输入一个正整数n(n<=20),输出1到n之间阶乘表。

输入

输入只有一个正整数n。

输出

输出1到n之间的阶乘表,格式见输出样例。每行两个数据,第一个数据占4列,第二个数据占20列,左对齐。

样例输入 Copy

5

样例输出 Copy

1 1

2 2

3 6

4 24

5 120

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner cin= new Scanner(System.in);
        int n=cin.nextInt();
        for(int i=1;i<=n;i++)
        {
            int m=i;
            long sum=1;
            for(int j=1;j<=m;j++) sum*=j;
            System.out.printf("%-4d%-20d\n",i,sum);
        }
    }
} 

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,CSP-J2021复赛有两道题目,分别是分糖果和小熊的果篮。 对于第一题分糖果,题目来源是CCF,难度为入门。根据给出的代码,这是一个基于循环的算法,通过遍历[l,r]区间内的数,计算数对n取模后的最大值。具体的实现细节可以参考引用中的代码。这道题目属于入门级别,比较简单。 第二题是关于小熊的果篮。给定一个长度为n的数组a,其中连续的相同元素被视为一个块,要求按照块的顺序输出每个块的头元素,并删除已输出的元素。具体的实现细节可以参考引用中的代码。这道题目需要使用双链表来处理,时间复杂度为O(n)。 综上所述,CSP-J2021复赛的题目包括分糖果和小熊的果篮,具体的解题思路和代码实现可以参考上述引用内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [[CSP-J 2021]比赛题解](https://blog.csdn.net/weixin_56550385/article/details/126811201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [新鲜出炉的 CSP-J 2021 复赛题目 题解](https://blog.csdn.net/qq_23109971/article/details/121024436)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值