一、实操题
1、求平均年龄
描述
班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
输入
第一行有一个整数 n(1≤n≤100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。
输出
输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。
参考答案:br />根据题目要求,我们需要先读取学生的数量n,然后读取每个学生的年龄,计算平均年龄并保留到小数点后两位。
解析:【喵呜刷题小喵解析】
首先,我们需要读取学生的数量n,可以通过`int n = Integer.parseInt(br.readLine());`实现,其中`br`是一个`BufferedReader`对象,可以从标准输入流中读取数据。
接着,我们需要读取每个学生的年龄,可以通过`int age = Integer.parseInt(br.readLine());`实现,依次读取n次。
然后,我们可以计算平均年龄,公式为:平均年龄 = (所有学生的年龄之和) / 学生数量。可以用一个变量`sum`来保存所有学生的年龄之和,每次读取一个年龄后将其累加到`sum`中,最后将`sum`除以n得到平均年龄。
最后,我们需要将平均年龄保留到小数点后两位,可以用格式化输出的方式实现,即`System.out.printf("%.2f\n", average);`,其中`%.2f`表示输出一个浮点数,保留两位小数。
需要注意的是,题目中要求输入和输出都需要使用标准输入/输出流,因此需要使用`BufferedReader`和`PrintWriter`对象来实现。同时,还需要注意输入数据的合法性,比如学生数量n的取值范围、学生年龄的取值范围等。
2、三角形判断
描述给定三个正整数,分别表示三条线段的长度,判断这三条线段能否构成一个三角形。
输入
输入共一行,包含三个正整数,分别表示三条线段的长度,数与数之间以一个空格分开。
输出
如果能构成三角形,则输出yes”,否则输出'no”。
参考答案:br />对于给定的三个正整数,分别表示三条线段的长度,我们需要根据三角形构成的条件进行判断。如果任意两边之和大于第三边,那么这三条线段可以构成一个三角形,输出"yes",否则不能构成三角形,输出"no"。
解析:【喵呜刷题小喵解析】
根据三角形构成的条件,任意两边之和大于第三边,任意两边之差小于第三边,就可以判断三条线段能否构成一个三角形。在这个问题中,我们只需要判断任意两边之和是否大于第三边即可。如果任意两边之和大于第三边,那么这三条线段可以构成一个三角形,否则不能构成三角形。因此,我们只需要编写一个简单的程序,读取输入的三个正整数,判断它们是否满足三角形构成的条件,然后输出相应的结果即可。
3、简单密码
描述
Julius Caesar曾经使用过一种很简单的密码。对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这样就得到了密文。比如字符A用F来代替。如下是密文和明文中字符的对应关系。
密文
ABCDEFGHIJKLMNOPQRSTUVWXYZ
明文
VWXYZABCDEFGHIJKLMNOPQRSTU
你的任务是对给定的密文进行解密得到明文。
你需要注意的是,密文中出现的字母都是大写字母。密文中也包括非字母的字符,对这些字符不用进行解码。
输入
一行,给出密文,密文不为空,而且其中的字符数不超过200。
输出
输出一行,即密文对应的明文。
参考答案:给定密文为:FGHIJKLMNOPQRSTUVWXYZ解密后的明文为:VWXYZABCDEFGHIJKLMNOPQRSTU
解析:【喵呜刷题小喵解析】:
根据题目描述,Julius Caesar使用的密码规则是将明文中的每个字符在字母表中向后移动5位得到密文。因此,对于密文中的每个字符,我们需要找到它在字母表中向前移动5位对应的字符,即得到明文中的字符。
根据题目给出的对应关系,我们可以得到以下映射关系:
A -> V
B -> W
C -> X
D -> Y
E -> Z
F -> A
G -> B
H -> C
I -> D
J -> E
K -> F
L -> G
M -> H
N -> I
O -> J
P -> K
Q -> L
R -> M
S -> N
T -> O
U -> P
V -> Q
W -> R
X -> S
Y -> T
Z -> U
根据这个映射关系,我们可以将密文中的每个字符映射到对应的明文字符,从而得到解密后的明文。
需要注意的是,题目中明确指出密文中出现的字母都是大写字母,因此解密时只需要考虑大写字母的映射关系。同时,题目中也指出密文中包括非字母的字符,对这些字符不用进行解码,因此在解密时可以直接保留。
4、分数矩阵
描述
我们定义如下矩阵:
1/1 1/2 1/3
1/2 1/1 1/2
1/3 1/2 1/1
矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。请求出这个矩阵的总和。
输入
输入包含多组测试数据。每行给定整数N(N<50000),表示矩阵为N*N。当N=0时,输入结束。
输出
输出答案,结果保留2位小数。
参考答案:对于N*N的矩阵,其总和为:当N为奇数时,总和为:(N*(N^2+1))/6当N为偶数时,总和为:(N*(N^2+2))/6
解析:【喵呜刷题小喵解析】:
对于N*N的矩阵,我们可以发现,每一行的元素和每一列的元素都是等差数列。而等差数列的和可以通过其首项、末项和项数来计算。在这个矩阵中,首项和末项都是1/N,项数是N。因此,每一行的和或每一列的和都是N*(2*1/N)/2=1。
然后,矩阵的对角线元素始终是1/1,即1。
所以,矩阵的总和就是所有行(或列)的和加上对角线的和。即N*1+N=2N。
但是,我们注意到,每个元素都被计算了两次(一次作为行元素,一次作为列元素)。因此,我们需要将总和除以2,得到N。
但是,题目要求的是N*N的矩阵的总和,所以我们需要将N再平方,即N^2。
但是,还有一个对角线元素1/1,即1没有被计算。所以,我们需要再加上1。
因此,N*N的矩阵的总和是N^2+1。
但是,当N为偶数时,中间的那个1/N被多算了一次(一次作为主对角线元素,一次作为副对角线元素)。因此,我们需要减去这个值。即N^2+1-1/N。
但是,我们注意到,1/N也被算作了行或列的元素和,所以我们需要再减去1/N。即N^2+2-2/N。
所以,当N为偶数时,N*N的矩阵的总和是(N^2+2)/2。
因此,当N为奇数时,N*N的矩阵的总和是N*(N^2+1)/6;当N为偶数时,N*N的矩阵的总和是N*(N^2+2)/6。
5、放大的X
描述
请你编程画一个放大的'X。
如3*3的x'应如下所示:
X X
X
X X
5*5的X如下所示:
X X
X X
X
X X
X X
输入
输入数据第一行是一个整数T,表示有T组测试数据。 接下来有T行,每行有一个正奇数n(3<=n<=79),表示放大的规格。
输出
对于每一个n打印一个规格为n*n放大的X,('X后面没有多余的空格)每组输出后面空一行。
参考答案:br />对于每一组测试数据,我们可以按照以下步骤来生成放大的'X':1. 首先,确定'X'的大小为n*n。2. 然后,根据'X'的大小,打印出对应的空格和'X'。3. 打印完一组数据后,换行。具体的Python代码如下:```pythonT = int(input().strip())for _ in range(T):n = int(input().strip())for i in range(n):for j in range(n):if i == 0 or i == n-1 or j == 0 or j == n-1:print('X', end=' ')else:print(' ', end=' ')print()print()```
解析:【喵呜刷题小喵解析】
首先,我们读取输入数据的第一行,即测试数据的组数T。然后,对于每一组测试数据,我们读取一个正奇数n,表示放大的规格。
接着,我们使用两个嵌套的for循环来打印出放大的'X'。外层循环控制行,内层循环控制列。在打印过程中,如果当前位置是'X'的四个边(即第一行、最后一行、第一列、最后一列),则打印'X',否则打印空格。
最后,我们打印一个换行符,表示打印完一组数据。对于每组测试数据,我们打印完后再打印一个换行符,表示数据之间的分隔。
6、镂空三角形
描述
把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果。在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果。
输入
每行包含一个字符和一个整数n(0<n<41),不同的字符表示不同的花纹,整数n表示等腰三角形的高。显然其底边长为2n-1。如果遇到@字符,则表示所做出来的样板三角形已经够了。
输出
每个样板三角形之间应空上一行,三角形的中间为空。显然行末没有多余的空格。
参考答案:根据题目描述,我们需要根据输入的字符和整数n来生成对应的等腰三角形。等腰三角形的底边长度为2n-1,而高即为n。根据字符的不同,三角形的花纹也会不同。当遇到@字符时,表示生成的样板三角形已经足够,可以停止生成。具体实现上,我们可以使用循环来根据输入的字符和整数n生成对应的三角形。首先,我们读入一行输入,如果输入的字符是@,则结束程序;否则,我们根据输入的字符和整数n生成对应的三角形,并在三角形中间留空一行。
解析:【喵呜刷题小喵解析】:
本题是一道简答题,主要考察对字符串和循环的理解和应用。根据题目描述,我们需要根据输入的字符和整数n来生成对应的等腰三角形,并在三角形中间留空一行。具体实现上,我们可以使用循环来根据输入的字符和整数n生成对应的三角形,并在三角形中间留空一行。
需要注意的是,题目中要求三角形的中间为空,因此在生成三角形时,我们需要在中间留空一行。另外,当遇到@字符时,表示生成的样板三角形已经足够,需要停止生成。
在编程实现时,我们可以使用字符串来表示三角形,根据输入的字符和整数n生成对应的字符串,并在需要的时候输出。需要注意的是,题目中要求行末没有多余的空格,因此在生成字符串时,需要保证行末没有多余的空格。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!