目录

1:A+B Problem

2:输出第二个整数

3:对于给定的一个字符串,统计其中数字字符出现的次数

4:递归求和

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

6:奇数求和

7:十六进制转十进制

8:数字统计

9:求10000以内n的阶乘

10:最高的分数

11:计算书费

12:整数的个数

13:整数的立方和

14:化验诊断

15:求分数序列和

16:求阶乘的和

17:打印完数

18:数组逆序重放

19:与7无关的数

20:骑车与走路


 

1:A+B Problem

描述

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);
		sc.close();
	}
}

2:输出第二个整数

描述

输入三个整数,把第二个输入的整数输出。

输入

只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。

输出

只有一行,一个整数,即输入的第二个整数。

样例输入

123 456 789

样例输出

456

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();
		int c = sc.nextInt();
		System.out.println(b);
		sc.close();
	}
}

3:对于给定的一个字符串,统计其中数字字符出现的次数

描述

对于给定的一个字符串,统计其中数字字符出现的次数

输入

输入数据有多行,第一行是一个整数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;
	}
}

4:递归求和

描述

递归是一种非常有效的程序设计方法,应用相当广泛,递归求和就是其中的一种。现在定义数列通项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) {
		int Sn = 0;
		int a;
		Scanner sc = new Scanner(System.in);
		System.out.println("输入n:");
		int n = sc.nextInt();
		for (int i = 0; i <= n; i++) {
			a = i * i;
			Sn = Sn + a;
		}
		System.out.println(Sn);
	}
}

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

描述

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 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();// 输入有几个输入字串。
		int[] id = new int[m];// 定义一个数组。
		sc.nextLine();// 遇到回车停止。
		for (int i = 0; i < m; i++) {
			String s = sc.nextLine();// 输入字符串。
			char s1 = s.charAt(0);// s1为字符类型,s1为输入字符串s的第一个字符。
			char s2[] = s.toCharArray();// 将字符串对象中的字符转换为一个字符数组s2。
			boolean c = true;// 赋值c为true.
			for (int t = 0; t < s.length(); t++) {
				if (s2[t] == ' ') {
					c = false;
				}
			}
			if ((s1 == '_' || (s1 >= 'a' && s1 <= 'z') || (s1 >= 'A' && s1 <= 'Z'))
					&& c) {
				id[i] = 1;
			} else
				id[i] = 0;
		}
		for (int n = 0; n < m; n++) {
			System.out.println(id[n]);
		}
	}
}

6:奇数求和

描述

计算非负整数 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);
		String s = sc.nextLine();
		String ss[] = s.split(" ");
		int m = Integer.parseInt(ss[0]); // String转为Int类型
		int n = Integer.parseInt(ss[1]); // String转为Int类型
		int Sn = 0;
		for (int i = m; i <= n; i++) {
			if (i % 2 == 1)
				Sn += i;
		}
		System.out.println(Sn);
	}
}

7:十六进制转十进制

描述

将十六进制数转换成十进制数

输入

第一行有一个整数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));
		}
	}
}

8:数字统计

描述

输入n个整数,统计每个数出现的次数.

输入

第一行是一个整数n(1<=n<=1000),接下来n行每行一个整数.

输出

第一行输出总共有多少个不同的整数.
接下来每行输出一个整数及这个整数出现的次数,用空格分隔.
输出的整数的顺序与它们在输入中第一次出现的顺序一致(即在输入中先出现的数,也会在输出中先出现)

样例输入

5
3
2
1
2

样例输出

3
2 3
3 1
1 1

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 ss = new StringBuffer();
		int count = 0;
		for (int i = 0; i < a; i++) {
			if (s[b[i]] > 0) {
				ss.append(b[i] + " " + s[b[i]] + "\n");//出现的数字+"空格"+出现次数
				s[b[i]] = 0;
				count++;
			}
		}
		System.out.println(count);//输出有多少个数
		System.out.println(ss);
	}
}

9:求10000以内n的阶乘

描述

求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 n = sc.nextInt();
		BigInteger p = new BigInteger("1");
		for (int i = 1; i < n + 1; i++) {
			p = p.multiply(new BigInteger(i + ""));
		}
		System.out.println(p);
	}
}

10:最高的分数

描述

孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗?

输入

输入两行,第一行为整数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 n = sc.nextInt();//输入数量
		int max = -1;
		for (int i = 0; i < n; i++) {
			int grade = sc.nextInt();//输入成绩
			if (grade > max)
				max = grade;
		}
		System.out.println(max);
	}
}

11:计算书费

描述

下面是一个图书的单价表:
计算概论 28.9 元/本
数据结构与算法 32.7 元/本
数字逻辑 45.6元/本
C++程序设计教程 78 元/本
人工智能 35 元/本
计算机体系结构 86.2 元/本
编译原理 27.8元/本
操作系统 43 元/本
计算机网络 56 元/本
JAVA程序设计 65 元/本
给定每种图书购买的数量,编程计算应付的总费用。

输入

输入第一行包含一个正整数k(0<k<100),表示有k组测试数据;接下来k行,每行包含一组测试数据。每组测试数据包含10个整数(大于等于0,小于等于100),分别表示购买的《计算概论》、《数据结构与算法》、《数字逻辑》、《C++程序设计教程》、《人工智能》、《计算机体系结构》、《编译原理》、《操作系统》、《计算机网络》、《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。

输出

对于每组测试数据,输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。

可用printf("%.2f\n", sum)来输出sum的值,并精确到小数点后两位。

样例输入

2
1 5 8 10 5 1 1 2 3 4
3 5 6 3 100 1 1 0 1 0

样例输出

2140.20
4427.80

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double[] p = { 28.9, 32.7, 45.6, 78, 35, 86.2, 27.8, 43, 56, 65 };
		int k = sc.nextInt();// 输入k组测试数据
		for (int i = 0; i < k; i++) {
			double sum = 0;
			for (int j = 0; j < 10; j++) { // 0<=购买数量<=100
				sum += p[j] * sc.nextInt();// 总价=各单价*各购买数量
			}
			System.out.printf("%.2f\n", sum);
		}
	}
}

12:整数的个数

描述

给定k(1< k < 100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。

输入

输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。

输出

输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现的次数。

样例输入

5
1 5 8 10 5

样例输出

1
2
1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int count1 = 0, count2 = 0, count3 = 0;
		int k = sc.nextInt();// 输入k组测试数据
		for (int i = 0; i < k; i++) {
			int n = sc.nextInt();// 输入k个正整数,每两个正整数用一个空格分开
			if (n == 1)
				count1++; // 1出现次数
			else if (n == 5)
				count2++; //
			else if (n == 10)
				count3++;
		}
		System.out.println(count1 + "\n" + count2 + "\n" + count3);// 按行依次输出1,5,10出现的次数
	}
}

13:整数的立方和

描述

给定一个正整数k(1<k<10),求1到k的立方和m。即m=1+2*2*2+…+k*k*k。

输入

输入只有一行,该行包含一个正整数k。

输出

输出只有一行,该行包含1到k的立方和。

样例输入

5

样例输出

225

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int Sn = 0;
		int k = sc.nextInt();// 输入正整数k
		for (int i = 1; i <= k; i++) {
			Sn += i * i * i;
		}
		System.out.println(Sn);
	}
}

14:化验诊断

描述

下表是进行血常规检验的正常值参考范围,及化验值异常的临床意义:

java小项目开发实例 java项目开发实例题_eclipse

给定一张化验单,判断其所有指标是否正常,如果不正常,统计有几项不正常。化验单上的值必须严格落在正常参考值范围内,才算是正常。正常参考值范围包括边界,即落在边界上也算正常。

输入 

java小项目开发实例 java项目开发实例题_System_02

输出

对于每组测试数据,输出一行。如果所有检验项目正常,则输出:normal;否则输出不正常的项的数目。

样例输入

2
female 4.5 4.0 115 37 200
male 3.9 3.5 155 36 301

样例输出

normal
3

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int k = sc.nextInt();// 输入正整数k,表示有k组测试数据
		for (int i = 1; i <= k; i++) {
			int n = 0;
			String sex = sc.next();// 测试者性别
			double WBC = sc.nextDouble();// 白细胞的值
			double RBC = sc.nextDouble();// 红细胞的值
			double HGB = sc.nextDouble();// 血红蛋白的值
			double HCT = sc.nextDouble();// 红细胞比积的值
			double PLT = sc.nextDouble();// 血小板计数的值
			if (WBC < 4.0 || WBC > 10.0) {
				n++;
			}
			if (RBC < 3.5 || RBC > 5.5) {
				n++;
			}
			if (PLT < 100 || PLT > 300) {
				n++;
			}
			if ("male".equals(sex)) {// 男
				if (HGB < 120 || HGB > 160) {
					n++;
				}
				if (HCT < 42 || HCT > 48) {
					n++;
				}
			} else {
				if ("female".equals(sex)) {// 女
					if (HGB < 110 || HGB > 150) {
						n++;
					}
					if (HCT < 36 || HCT > 40) {
						n++;
					}
				}
			}
			if (n == 0)
				System.out.println("normal");
			else
				System.out.println(n);
		}
	}
}

15:求分数序列和

描述

有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。

输入

输入有一行:正整数n。

输出

输出有一行:分数序列的和(浮点数,精确到小数点后4位)。

可以printf("%.4f\n", a)输出浮点数并精确到小数点后4位。

样例输入

99

样例输出

160.4849

提示

最好在程序中使用双精度浮点数(double)记录求得的和。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 输入正整数n
		double a = 2, b = 1, sum = 0;
		for (int i = 0; i < n; i++) {
			sum += a / b;
			a = a + b;
			b = a - b;
		}
		System.out.printf("%.4f\n", sum);
	}
}

16:求阶乘的和

描述

给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)

输入

输入有一行,包含一个正整数n(1 < n < 12)。

输出

输出有一行:阶乘的和。

样例输入

5

样例输出

153

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 输入正整数n,(1 < n < 12)
		long sum = 0;
		if (n < 12 && n > 1)
			for (int i = 1; i <= n; i++) {
				sum += jiecheng(i);
			}
		System.out.println(sum);
	}

	static long jiecheng(int k) {
		long n = 1;
		for (int i = 1; i <= k; i++)
			n *= i;
		return n;
	}
}

17:打印完数

描述

一个数如果恰好等于它的因子之和,这个数就成为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是“完数”。编程序打印出1000之内(包括1000)所有的完数,并按如下格式输出其所有因子:
6 its factors are 1,2,3

输入

无输入

输出

输出1000以内所有的完数及其因子,每行一个完数。

public class Main {
	public static void main(String[] args) {
		for (int i = 2; i < 1001; i++) {// 打印出1000之内(包括1000)所有的完数
			if (ws(i)) {// 是完数
				System.out.println(i + " its factors are " + yz(i));
			}
		}
	}

	static Boolean ws(int a) {
		int sum = 1;
		for (int i = 2; i < a; i++) {
			if (a % i == 0) {
				sum += i;
			}
		}
		if (sum == a) {
			return true;
		}
		return false;
	}

	static String yz(int a) {
		StringBuffer s = new StringBuffer("1,");
		for (int i = 2; i < a; i++) {
			if (a % i == 0) {
				s.append(i + ",");
			}
		}
		return s.substring(0, s.length() - 1);// 返回String字符串
	}
}

18:数组逆序重放

描述

将一个数组中的值按逆序重新存放。例如,原来的顺序为8,6,5,4,1。要求改为1,4,5,6,8。

输入

输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。

输出

输出为一行:输出逆序后数组的整数,每两个整数之间用空格分隔。

样例输入

5
8 6 5 4 1

样例输出

1 4 5 6 8

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 输入元素个数n
		int[] b = new int[n];
		for (int i = 0; i < n; i++) {
			b[i] = sc.nextInt();
		}
		for (int j = 0; j < n; j++) {
			if (j == n - 1)
				System.out.print(b[n - j - 1]);
			else
				System.out.print(b[n - j - 1] + " ");
		}
	}
}

19:与7无关的数

描述

一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n < 100)的与7无关的正整数的平方和.

输入

输入为一行,正整数n(n < 100)

输出

输出一行,包含一个整数,即小于等于n的所有与7无关的正整数的平方和。

样例输入

21

样例输出

2336

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 输入n
		int sum = 0;
		for (int i = 1; i <= n; i++)
			if (!xg(i))// 如果不是7的相关数
				sum += i * i;
		System.out.println(sum);
	}

	static Boolean xg(int n) {
		if (n % 7 == 0)
			return true;
		String s = n + "";
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) == '7')
				return true;
		}
		return false;
	}
}

20:骑车与走路

描述

在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米.请判断走不同的距离去办事,是骑车快还是走路快.

输入

第一行为待处理的数据的数量n
其后每一行整数为一次办事要行走的距离,单位为米.

输出

对应每个整数,如果骑车快,输出一行"Bike";如果走路快,输出一行"Walk";如果一样快,输出一行"All".

样例输入

4
50
90
120
180

样例输出

Walk
Walk
Bike
Bike

import java.util.Scanner;
import java.util.ArrayList;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 输入待处理的数据的数量n
		double x, wt, bt;
		ArrayList<String> s = new ArrayList<String>();
		for (int i = 0; i < n; i++) {
			x = sc.nextInt();
			wt = (x / 1.2);
			bt = (x / 3.0) + 50;
			if (wt < bt)
				s.add("Walk");
			if (wt > bt)
				s.add("Bike");
			if (wt == bt)
				s.add("All");
		}
		Object[] obj = s.toArray();// 集合转为数组
		for (int j = 0; j < obj.length; j++)
			System.out.println(obj[j]);
	}
}