团体程序设计天梯赛-10分题集-Java

L1-007 念数字 (10分)

输入一个整数,输出每个数字对应的拼音。当整数为负数时,先输出fu字。十个数字对应的拼音如下:

0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
输入格式:
输入在一行中给出一个整数,如:1234。

提示:整数包括负数、零和正数。

输出格式:
在一行中输出这个整数对应的拼音,每个数字的拼音之间用空格分开,行末没有最后的空格。如 yi er san si。

输入样例:
-600
输出样例:
fu liu ling ling
作者
翁恺
单位
浙江大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int i = sc.nextInt();
		if(i<0) {
    
    
			System.out.print("fu ");
		}
		String str = String.valueOf(Math.abs(i));
		String []a = {
    
    "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
		for(int k=0;k<str.length()-1;k++) {
    
    
			int s = str.charAt(k)-'0';
			System.out.print(a[s]+" ");
		}
		int s=str.charAt(str.length()-1)-'0';
		System.out.println(a[s]);	
	}
}

L1-008 求整数段和 (10分)

给定两个整数A和B,输出从A到B的所有整数以及这些数的和。

输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。

输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。

输入样例:
-3 8
输出样例:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int a,b,sum=0,count=0;
		a = sc.nextInt();
		b = sc.nextInt();		
		for(int i=a;a<=b;a++) {
    
    
			System.out.printf("%5d",a);//"%5d"是a向左对齐占5个字符输出
			count+=1;
			sum += a;
			if(count%5==0&&a!=b) {
    
    
				System.out.println();
			}
		}
		System.out.println("\nSum = "+sum);
	}
}

L1-010 比较大小 (10分)

本题要求将输入的任意3个整数从小到大输出。

输入格式:
输入在一行中给出3个整数,其间以空格分隔。

输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:
4 2 8
输出样例:
2->4->8

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int[] a = new int[3];
		for (int i = 0; i < 3; i++) {
    
    
			a[i] = sc.nextInt();
		}
		Arrays.sort(a);
		for (int j = 0; j < a.length - 1; j++) {
    
    
			System.out.print(a[j]+"->");
		}
		for (int j = 0; j < a.length; j++) {
    
    
			if(j==2) {
    
    
				System.out.print(a[j]);
			}
		}
	}
}

L1-013 计算阶乘和 (10分)

对于给定的正整数N,需要你计算 S=1!+2!+3!+…+N!。

输入格式:
输入在一行中给出一个不超过10的正整数N。

输出格式:
在一行中输出S的值。

输入样例:
3
输出样例:
9

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n, s = 1, sum = 0;
		n = sc.nextInt();
		if (n <= 10) {
    
    
			for (int i = 1; i <= n; i++) {
    
    
				s *= i;
				sum += s;
			}
			System.out.println(sum);
		} else {
    
    
			System.out.println("input error");
		}
	}
}

L1-018 大笨钟 (10分)

微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。不过由于笨钟自己作息也不是很规律,所以敲钟并不定时。一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那个整点数;如果过了整点,就敲下一个整点数。另外,虽然一天有24小时,钟却是只在后半天敲1~12下。例如在23:00敲钟,就是“当当当当当当当当当当当”,而到了23:01就会是“当当当当当当当当当当当当”。在午夜00:00到中午12:00期间(端点时间包括在内),笨钟是不敲的。

下面就请你写个程序,根据当前时间替大笨钟敲钟。

输入格式:
输入第一行按照hh:mm的格式给出当前时间。其中hh是小时,在00到23之间;mm是分钟,在00到59之间。

输出格式:
根据当前时间替大笨钟敲钟,即在一行中输出相应数量个Dang。如果不是敲钟期,则输出:

Only hh:mm. Too early to Dang.
其中hh:mm是输入的时间。

输入样例1:
19:05
输出样例1:
DangDangDangDangDangDangDangDang
输入样例2:
07:05
输出样例2:
Only 07:05. Too early to Dang.

import java.util.Scanner;

public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		String str=sc.nextLine();
		String[] a=str.split(":");
		int h=Integer.parseInt(a[0]);
		int m=Integer.parseInt(a[1]);

		if(h>=0&&h<12) {
    
    
			System.out.printf("Only %d:%d.  Too early to Dang.",h,m);
		}else if(h==12&&m==0) {
    
    
			System.out.printf("Only %d:%d.  Too early to Dang.",h,m);
		}else if(m==0) {
    
    
			if(h>12) {
    
    
				h=h-12;
				for(int i=0;i<h;i++) {
    
    
					System.out.print("Dang");
				}
			}
		}else {
    
    
			if(h>12)
				h=h-12;
			for(int i=0;i<=h;i++) {
    
    
				System.out.print("Dang");
			}
		}
	}
}

L1-022 奇偶分家 (10分)

给定N个正整数,请统计奇数和偶数各有多少个?

输入格式:
输入第一行给出一个正整N(≤1000);第2行给出N个非负整数,以空格分隔。

输出格式:
在一行中先后输出奇数的个数、偶数的个数。中间以1个空格分隔。

输入样例:
9
88 74 101 26 15 0 34 22 77
输出样例:
3 6

import java.util.Scanner;

public class Main {
    
    
	private static int ans1=0;
	private static int ans2=0;
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] a =new int[n];
		for(int i=0;i<a.length;i++) {
    
    
			a[i]=sc.nextInt();
		}
		for(int i=0;i<a.length;i++) {
    
    
			if(a[i]==0||a[i]%2==0) {
    
    
				ans1 +=1;
			}else {
    
    
				ans2 +=1;
			}
		}
		System.out.printf("%d %d",ans2,ans1);
	}
}

L1-028 判断素数 (10分)

本题的目标很简单,就是判断一个给定的正整数是否素数。

输入格式:
输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2
​31
​​ 的需要判断的正整数。

输出格式:
对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。

输入样例:
2
11
111
输出样例:
Yes
No

import java.util.Scanner;

public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		long n;
		int k;
		n = sc.nextLong();
		int[] a = new int[(int) n];
		for(int i=0;i<n;i++) {
    
    
			k=0;
			a[i]=sc.nextInt();
			if(a[i]==1) {
    
    
				System.out.println("No");
			}else {
    
    
				for(int j=2;j<=Math.sqrt(a[i]);j++) {
    
    
					if(a[i]%j==0) {
    
    
						k=1;
						j=a[i];
					}
				}
				if(k==0) {
    
    
					System.out.println("Yes");
				}else {
    
    
					System.out.println("No");
				}
			}
		}
	}
}

L1-031 到底是不是太胖了 (10分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 | 真实体重 − 标准体重 | < 标准体重×10%)。已知市斤是公斤的两倍。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。

输入格式:
输入第一行给出一个正整数N(≤ 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W ≤ 300;单位:市斤),其间以空格分隔。

输出格式:
为每个人输出一行结论:如果是完美身材,输出You are wan mei!;如果太胖了,输出You are tai pang le!;否则输出You are tai shou le!。

输入样例:
3
169 136
150 81
178 155
输出样例:
You are wan mei!
You are tai shou le!
You are tai pang le!

import java.util.Scanner;

public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] h = new int[n];
		int[] w = new int[n];
		for (int i = 0; i < n; i++) {
    
    
			h[i] = sc.nextInt();
			w[i] = sc.nextInt();
		}
		for (int i = 0; i < n; i++) {
    
    
			double[] bz = new double[n];
			bz[i] = (h[i] - 100) * 0.9 * 2.0;
			if (Math.abs(w[i] - bz[i]) < bz[i] * 0.1) {
    
    
				System.out.println("You are wan mei!");
			} else if (w[i] > bz[i]) {
    
    
				System.out.println("You are tai pang le!");
			} else {
    
    
				System.out.println("You are tai shou le!");
			}
		}
	}
}

L1-037 A除以B (10分)

真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。

输入格式:
输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。

输出格式:
在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。

输入样例1:
-1 2
输出样例1:
-1/2=-0.50
输入样例2:
1 -3
输出样例2:
1/(-3)=-0.33
输入样例3:
5 0
输出样例3:
5/0=Error

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		double a = sc.nextInt();
		double b = sc.nextInt();
		double c = a / b;
		if (b < 0) {
    
    
			System.out.printf("%.0f/(%.0f)=%.2f", a, b, c);
		} else if (b == 0) {
    
    
			System.out.printf("%.0f/%.0f=Error", a, b);
		} else {
    
    
			System.out.printf("%.0f/%.0f=%.2f", a, b, c);
		}
	}
}

L1-040 最佳情侣身高差 (10分)

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入格式:
输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出格式:
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

输入样例:
2
M 1.75
F 1.8
输出样例:
1.61
1.96

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] a = new String[n];
		double[] h = new double[n];

		for (int i = 0; i < n; i++) {
    
    
			a[i] = sc.next();
			h[i] = sc.nextDouble();
		}
		double[] b = new double[n];
		for (int i = 0; i < n; i++) {
    
    
			if (a[i].charAt(0) == 'M') {
    
    
				b[i] = h[i] / 1.09;
			}
			if (a[i].charAt(0) == 'F') {
    
    
				b[i] = h[i] * 1.09;
			}

		}
		for (double s : b) {
    
    
			System.out.printf("%.2f\n", s);
		}
	}
}

L1-041 寻找250 (10分)

在这里插入图片描述

对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。

输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。

输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。

输入样例:
888 666 123 -233 250 13 250 -222
输出样例:
5

import java.util.Scanner;
public class Main {
    
    
	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int x = 0;
		int ans = 0;
		while (x != 250) {
    
    
			x = sc.nextInt();
			ans += 1;
		}
		System.out.println(ans);
	}
}

L1-047 装睡 (10分)

你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。

输入格式:
输入在第一行给出一个正整数N(≤10)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。

输出格式:
按照输入顺序检查每个人,如果其至少一项指标不在正常范围内,则输出其名字,每个名字占一行。

输入样例:
4
Amy 15 70
Tom 14 60
Joe 18 50
Zoe 21 71
输出样例:
Tom
Zoe

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		String[] name = new String[n];
		int[] hx = new int[n];
		int[] mp = new int[n];
		for (int i = 0; i < n; i++) {
    
    
			name[i] = sc.next();
			hx[i] = sc.nextInt();
			mp[i] = sc.nextInt();
		}
		for (int i = 0; i < n; i++) {
    
    
			if (hx[i] > 20 || hx[i] < 15 || mp[i] < 50 || mp[i] > 70) {
    
    
				System.out.println(name[i]);
			}
		}
	}
}

L1-053 电子汪 (10分)

据说汪星人的智商能达到人类 4 岁儿童的水平,更有些聪明汪会做加法计算。比如你在地上放两堆小球,分别有 1 只球和 2 只球,聪明汪就会用“汪!汪!汪!”表示 1 加 2 的结果是 3。

本题要求你为电子宠物汪做一个模拟程序,根据电子眼识别出的两堆小球的个数,计算出和,并且用汪星人的叫声给出答案。

输入格式:
输入在一行中给出两个 [1, 9] 区间内的正整数 A 和 B,用空格分隔。

输出格式:
在一行中输出 A + B 个Wang!。

输入样例:
2 1
输出样例:
Wang!Wang!Wang!

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();
		for (int i = 0; i < a + b; i++) {
    
    
			System.out.print("Wang!");
		}
	}
}

L1-055 谁是赢家 (10分)

某电视台的娱乐节目有个表演评审环节,每次安排两位艺人表演,他们的胜负由观众投票和 3 名评委投票两部分共同决定。规则为:如果一位艺人的观众票数高,且得到至少 1 名评委的认可,该艺人就胜出;或艺人的观众票数低,但得到全部评委的认可,也可以胜出。节目保证投票的观众人数为奇数,所以不存在平票的情况。本题就请你用程序判断谁是赢家。

输入格式:
输入第一行给出 2 个不超过 1000 的正整数 Pa 和 Pb,分别是艺人 a 和艺人 b 得到的观众票数。题目保证这两个数字不相等。随后第二行给出 3 名评委的投票结果。数字 0 代表投票给 a,数字 1 代表投票给 b,其间以一个空格分隔。

输出格式:
按以下格式输出赢家:

The winner is x: P1 + P2
其中 x 是代表赢家的字母,P1 是赢家得到的观众票数,P2 是赢家得到的评委票数。

输入样例:
327 129
1 0 1
输出样例:
The winner is a: 327 + 1
鸣谢安阳师范学院软件学院李栋同学完善测试数据。

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 p1 = sc.nextInt();
		int p2 = sc.nextInt();
		int p3 = sc.nextInt();
		int k1 = 0, k2 = 0;
		if (p1 == 0) {
    
    
			k1 += 1;
		} else {
    
    
			k2 += 1;
		}
		if (p2 == 0) {
    
    
			k1 += 1;
		} else {
    
    
			k2 += 1;
		}
		if (p3 == 0) {
    
    
			k1 += 1;
		} else {
    
    
			k2 += 1;
		}
		if (a > b && p1 == 0 || p2 == 0 || p3 == 0) {
    
    
			System.out.println("The winner is a: " + a + " + " + k1);
		} else if (a < b && p1 == 0 && p2 == 0 && p3 == 0) {
    
    
			System.out.println("The winner is a: " + a + " + " + k1);
		} else {
    
    
			System.out.println("The winner is b: " + b + " + " + k2);
		}
	}
}

L1-061 新胖子公式 (10分)

根据钱江晚报官方微博的报导,最新的肥胖计算方法为:体重(kg) / 身高(m) 的平方。如果超过 25,你就是胖子。于是本题就请你编写程序自动判断一个人到底算不算胖子。

输入格式:
输入在一行中给出两个正数,依次为一个人的体重(以 kg 为单位)和身高(以 m 为单位),其间以空格分隔。其中体重不超过 1000 kg,身高不超过 3.0 m。

输出格式:
首先输出将该人的体重和身高代入肥胖公式的计算结果,保留小数点后 1 位。如果这个数值大于 25,就在第二行输出 PANG,否则输出 Hai Xing。

输入样例 1:
100.1 1.74
输出样例 1:
33.1
PANG
输入样例 2:
65 1.70
输出样例 2:
22.5
Hai Xing

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		double w = sc.nextDouble();
		double h = sc.nextDouble();
		double a = (w / (h * h));
		if (a > 25) {
    
    
			System.out.printf("%.1f\n", a);
			System.out.println("PANG");
		} else {
    
    
			System.out.printf("%.1f\n", a);
			System.out.println("Hai Xing");
		}
	}
}

L1-063 吃鱼还是吃肉 (10分)

在这里插入图片描述
在这里插入图片描述

国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。

现在你要根据小宝宝的身高体重,给出补充营养的建议。

输入格式:
输入在第一行给出一个不超过 10 的正整数 N,随后 N 行,每行给出一位宝宝的身体数据:

性别 身高 体重
其中性别是 1 表示男生,0 表示女生。身高和体重都是不超过 200 的正整数。

输出格式:
对于每一位宝宝,在一行中给出你的建议:

如果太矮了,输出:duo chi yu!(多吃鱼);
如果太瘦了,输出:duo chi rou!(多吃肉);
如果正标准,输出:wan mei!(完美);
如果太高了,输出:ni li hai!(你厉害);
如果太胖了,输出:shao chi rou!(少吃肉)。
先评价身高,再评价体重。两句话之间要有 1 个空格。

输入样例:
4
0 130 23
1 129 27
1 130 30
0 128 27
输出样例:
ni li hai! duo chi rou!
duo chi yu! wan mei!
wan mei! shao chi rou!
duo chi yu! shao chi rou!

import java.util.Scanner;
public class Main {
    
    

	public static void main(String[] args) {
    
    
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] xb = new int[n];
		int[] h = new int[n];
		int[] w = new int[n];

		for (int i = 0; i < n; i++) {
    
    
			xb[i] = sc.nextInt();
			h[i] = sc.nextInt();
			w[i] = sc.nextInt();
		}
		for (int i = 0; i < n; i++) {
    
    
			if (xb[i] == 1) {
    
    
				if (h[i] > 130) {
    
    
					System.out.print("ni li hai! ");
				} else if (h[i] == 130) {
    
    
					System.out.print("wan mei! ");
				} else {
    
    
					System.out.print("duo chi yu! ");
				}

				if (w[i] > 27) {
    
    
					System.out.print("shao chi rou!");
				} else if (w[i] == 27) {
    
    
					System.out.print("wan mei!");
				} else {
    
    
					System.out.print("duo chi rou!");
				}
			} else {
    
    
				if (h[i] > 129) {
    
    
					System.out.print("ni li hai! ");
				} else if (h[i] == 129) {
    
    
					System.out.print("wan mei! ");
				} else {
    
    
					System.out.print("duo chi yu! ");
				}

				if (w[i] > 25) {
    
    
					System.out.print("shao chi rou!");
				} else if (w[i] == 25) {
    
    
					System.out.print("wan mei!");
				} else {
    
    
					System.out.print("duo chi rou!");
				}
			}
			System.out.println();
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Bennettgxd/article/details/109517038