【Java】练习题(1)

【Java】练习题(1)

01:A+B Problem

总时间限制: 1000ms 内存限制: 65536kB
描述
Calculate a + b
输入
Two integer a,b (0 ≤ a,b ≤ 10)
输出
Output a + b
样例输入

1 2

样例输出

3

代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int b = sc.nextInt();
		System.out.println(a + b);
	}

}

02:输出第二个整数

总时间限制: 1000ms 内存限制: 65536kB
描述
输入三个整数,把第二个输入的整数输出。
输入
只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。
输出
只有一行,一个整数,即输入的第二个整数。
样例输入

123 456 789

样例输出

456

代码

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		sc.nextInt();
		System.out.println(sc.nextInt());
		sc.nextInt();

	}
}

方法二:

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int a=in.nextInt();
		int b=in.nextInt();
		int c=in.nextInt();
		System.out.print(b);
	}
}

03:数字统计

总时间限制: 1000ms 内存限制: 65536kB
描述
对于给定的一个字符串,统计其中数字字符出现的次数
输入
输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
输出
对于每个测试实例,输出该串中数值的个数,每个输出占一行。
样例输入

2

asdfasdf123123asdfasdf

asdf111111111asdfasdfasdf

样例输出

6

9

代码

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		sc.nextLine();
		for (int i = 0; i < n; i++) {
			String s = sc.nextLine();
			System.out.println(count(s));
		}
	}

	static int count(String s) {
		int count = 0;
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
				count++;
			}
		}
		return count;
	}
}

方法二:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
    	int count=0;
    	int n=in.nextInt();
    	in.nextLine();
    	for (int i=1;i<=n;i++) {
    		String str=String.valueOf(i);
    		char arr[]=str.toCharArray();
    		for (int j=0;j<arr.length;j++)
    			if(arr[j]=='1')
    				count++;
    	}
    	System.out.println(count);
    }
}

04:递归求和

总时间限制: 1000ms 内存限制: 65536kB
描述
递归是一种非常有效的程序设计方法,应用相当广泛,递归求和就是其中的一种。现在定义数列通项An = n * n,给定一个整数n(1 <= n <= 1000),要你求前n项和Sn,即Sn = 1 * 1 + 2 * 2 + … + n * n。要求使用递归的方法进行计算。
输入
输入只有一行,包括一个整数n,表示要求的项数。
输出
输出只有一行,为一个整数Sn,表示对应的前n项和。
样例输入

7

样例输出

140

代码

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int sum = 0;
		for (int i = 1; i <= n; i++) {
			sum += i * i;
		}
		System.out.println(sum);
	}
}

方法二:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    	Scanner in=new Scanner(System.in);
    	int n=in.nextInt();
    	int sum=recursion(n);
    	System.out.println(sum);
    	in.close();
    }
    public static int recursion(int n) {
    	if(n==1)  return 1;
    	else      return n*n+add(n-1);
    }
}

05:判断是否为C语言的合法标识符

总时间限制: 1000ms 内存限制: 65536kB
描述
C语言中的合法标识符的定义为:以下划线或字母开头的字母数字串(含下划线)。
完成一个程序实现对输入的n个字符串进行判定,是否为C语言的合法标识符。如果是则输出1,不是则输出0
输入
输入的第一行为一个数字,表明有几个输入字串。
后面每一行为一个长度不超过80的字符串。
输出
对所有输入的字符串进行判断,是合法标识符则输出1,回车。否则输出0,回车。
样例输入

5

hello_world

my god

i

_stdio

008A

样例输出

1

0

1

1

0

代码

import java.util.Scanner;
 
 
public class Main {
    static int f(String s){
    if(s.length()==0)
        return 0;
    char c=s.charAt(0);
    if(!(c>='a'&&c<='z'||c>='A'&&c<='Z'||c=='_'))
        return 0;
    for(int i=1;i<s.length();i++){
        c=s.charAt(i);
        if(!(c>='a'&&c<='z'||c>='A'&&c<='Z'||c=='_'||c>='0'&&c<='9'))
            return 0;
    }
    return 1;
    }
    public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    int n=sc.nextInt();
    sc.nextLine();
    for(int i=0;i<n;i++){
        String s=sc.nextLine();
        System.out.println(f(s));
    }
    }
     
}

方法二:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int[] result=new int[100];
        int n=in.nextInt();
        in.nextLine();
        for(int i=1;i<=n;i++) {
            String str=in.nextLine();
            char str2=str.charAt(0);
            char[] str3=str.toCharArray();
            boolean blk=true;
            for(int j=0;j<str.length();j++) {
                if(str3[j]==' ')
                    blk=false;
            }
            if((str2=='_'||(str2>='a'&&str2<='z')||(str2>='A'&&str2<='Z')) && blk)
                result[i]=1;
            else
                result[i]=0;
        }
        for(int i=1;i<=n;i++) {
            System.out.println(result[i]);
        }
        in.close();
    }
}

06:奇数求和

总时间限制: 1000ms 内存限制: 65536kB
描述
计算非负整数 m 到 n(包括m 和 n )之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35。

输入
两个数 m 和 n,两个数以一个空格分开,其中 0 <= m <= n <= 300 。
输出
输出一行,包含一个整数,表示m 到 n(包括m 和 n )之间的所有奇数的和
样例输入

7 15

样例输出

55

代码

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int sum = 0;
        int m = sc.nextInt();
        int n = sc.nextInt();
        for (int i = m; i <= n; i++) {
            if (i % 2 == 1) {
                sum += i;
            }
        }
        System.out.println(sum);
 
    }
 
 
}

07:十六进制转十进制

总时间限制: 1000ms 内存限制: 65536kB
描述
将十六进制数转换成十进制数
输入
第一行有一个整数T,表示共有T组数据
接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前没有多余的0
输出
输出共T行,每一行是一组数据的十进制表示,数字前不得有多余的0。
十进制数小于2^31
样例输入

4

A

F

FFFE

10001

样例输出

10

15

65534

65537

代码

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) {
            System.out.println(Integer.parseInt(sc.next(),16));
        }
 
    }
 
 
}

08:数字统计

总时间限制: 1000ms 内存限制: 100000kB
描述
输入n个整数,统计每个数出现的次数.
输入
第一行是一个整数n(1<=n<=1000),接下来n行每行一个整数.
输出
第一行输出总共有多少个不同的整数.
接下来每行输出一个整数及这个整数出现的次数,用空格分隔.
输出的整数的顺序与它们在输入中第一次出现的顺序一致(即在输入中先出现的数,也会在输出中先出现)
样例输入

5

2

3

2

1

2

样例输出

3

2 3

3 1

1 1

代码

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
 
public class Main {
 
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        Map<Integer, Integer> map = new LinkedHashMap<Integer, Integer>();
        for (int i = 0; i < n; i++) {
            int a = sc.nextInt();
            Integer v = map.get(a);
            if (v == null) {
                map.put(a, 1);
            } else {
                map.put(a, v + 1);
            }
        }
        System.out.println(map.size());
        for (Entry<Integer, Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }
}

方法二

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=new int[a];
        int[] s=new int[1000000];
        for (int i = 0; i < a; i++) {
            b[i] = cin.nextInt();
            s[b[i]]++;
        }
        StringBuffer sbf=new StringBuffer();
        int count=0;
        for (int i = 0; i < a; i++) {
            if(s[b[i]]>0){
                sbf.append(b[i]+" "+s[b[i]]+"\n");
                s[b[i]]=0;
                count++;
            }
        }
        System.out.println(count);
        System.out.println(sbf);
    }
}

09:求10000以内n的阶乘

总时间限制: 5000ms 内存限制: 655360kB
描述
求10000以内n的阶乘。

输入
只有一行输入,整数n(0<=n<=10000)。
输出
一行,即n!的值。
样例输入

100

样例输出

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

代码

import java.math.BigInteger;
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        BigInteger p=new BigInteger("1");
        for (int i = 1; i < a + 1; i++) {
            p=p.multiply(new BigInteger(i+""));
        }
 
        System.out.println(p);
 
    }
 
}

10:最高的分数

总时间限制: 1000ms 内存限制: 65536kB
描述
孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?
输入
输入两行,第一行为整数n(1 <= n < 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。
输出
输出一个整数,即最高的成绩。
样例输入

5

85 78 90 99 60

样例输出

99

代码


import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int max = -1;
        for (int i = 0; i < a; i++) {
            int n = sc.nextInt();
            if (n > max)
                max = n;
 
        }
        System.out.println(max);
 
    }
 
}

你可能感兴趣的:(Java上机练习题,java,开发语言,eclipse)