当前位置:网站首页 > Java基础 > 正文

java基础测试练习题



Java版基础练习题:

输入练习:

【问题描述】

【输入形式】

输入包含多组测试用例。
每组测试数据首先是一个正整数N,表示本组数据有N个整数。
请处理到文件结束。

【输出形式】

请计算每组数据的和,每组输出占一行。

【样例输入】

4 1 3 4 9 5 10 2 30 4 50

【样例输出】

17 96

代码段:

 

解释

其中需要注意的一点是,判断什么条件进行结束操作,这里采用的是hasNext(),结束,判断是否有输入,如果有输入返回True,否则返回false.

丑数:

【问题描述】

丑数的定义是这样的——
一个数,如果它分解后的素因子最多只有2、3、5、7四种,这个数则称为“丑数”。比如,前20个丑数是:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27。
现在你的任务是:给你一个数,你能判断是否是丑数吗?

【输入形式】

输入数据的第一行首先是一个整数C,表示测试数据的个数,然后是C组数据,每组测试数据包含一个整数n(1 <= n <= 2^31-1)。

【输出形式】

对于每组测试数据,如果n是丑数,则请输出“ Yes”,否则,请输出“No”.

【样例输入】

3 12 11

【样例输出】

Yes Yes No

代码段:

 

解释:

首先需要读懂题目,刚开始没有读懂题目,写的时候思路就错了,其中分解后的素因子最后只有2、3、5、7四种,是包含的意思,不是结合的次数;

判断数字是否能整除的前提是看余数是不是等于0,如果都能整除的话最后会变成1,这样结束条件就有了,只要不能整除的全部都不是丑数。

小黄车:

【问题描述】最近2年,以小黄车为代表的共享单车飞速发展,在某种意义上确实给大家带来了便利。

假设要行走的距离为L米,每次找车和开锁的一共时间是T1秒,每次停车和锁车的时间一共是T2秒,骑车的速度为V1米/秒,行走的速度为V2米/秒。

你现在是个小程序员了,请编程判断是骑车快还是走路快。

【输入形式】

【输出形式】

如果骑小黄车更快的话,请输出”Bike is OK!”;
如果走路更快的话,请输出”Walk is OK!”;
如果一样快,请输出”Both are OK!”;
每组数据输出一行。

【样例输入】

1 150 20 15 5 2

【样例输出】

Bike is OK!

代码段

 

解释

这个其实没有什么好解释的,单纯的小学数学。

字符三角形:

【问题描述】

我们学习了编程,通过对程序的控制,可以做一些有趣的输出。

比如,这个题目就是给定一个正整数N,请你输出一个由N行的*组成的三角形。

但是——为了图形的美观,我们希望输出的是一个等腰三角形!

具体规则如下:

第一行是1个*
第二行是3个*
第三行是5个*
......
依次类推,一直到第N行(第N行的开始没有空格)。

更多了解可以参见样例。

【输入形式】

输入数据第一行是一个正整数C,表示一共有C组测试用例。

接下来C行,每组数据占一行,是一个正整数N(1<=N<=40),N的含义见题目描述。

【输出形式】

对于每组数据给定的N,请按照要求输出由*组成的N行等腰三角形。

【样例输入】

2 3 5

【样例输出】

image-20210128103852992

代码段:

 

解释:

第一个for循环是控制最后输出几个三角形图案,第二个for循环时控制图案几层;

后两个循环每一次实现每行的图案;假如输出四行,

第一行先输出三个空格,再输出一个*;

第二行先输出输出两个空格,再输出三个*;

.......

成绩统计:

【问题描述】

2017年2月23号,文海中学信息学奥林匹克社团选拔考试顺利进行!本次选拔共有N位同学报名参加,现在,试卷已经批改完毕!刘老师想知道本次考试的平均分,以及高于平均分的人数有多少。现在就把这个任务交给喜欢编程的你吧~

​ 注:如果分数和平均分一样,也计算在内。

【输入形式】

输入数据首先是一个正整数C(C<=10),表示有C组测试用例。
每组测试用例占两行,首先一行是一个正整数N(1<N<=59),表示有N位同学参加选拔考试。接下来一行是N个整数Si(0<=Si<=100),表示N位考生的成绩。
【输出形式】

每组测试数据输出一行,分别是本次考试的平均成绩(结果保留2位小数)和高于平均分的人数,中间用空格隔开。

【样例输入】

2 5 30 40 50 60 70 8 77 88 11 22 33 44 55 66

【样例输出】

50.00 3 49.50 4

代码段:

 

成绩统计升级版:

【问题描述】 2017年12月23号,丁爸信奥培训班选拔考试顺利进行!

​ 考试结束后,助教老师帮忙计算了本次选拔考试的平均分,但是,粗心的丁爸却不小心把平均分弄丢了!

​ 现在,丁爸想请聪明的小朋友们再算一遍平均分。

​ 不过这次,丁爸不仅需要平均分,还希望大家帮忙计算本次考试的成绩偏离程java基础测试练习题度。

​ 注:“偏离程度”是指每个人的成绩与平均分差值的绝对值的总和。

【输入形式】输入数据第一行是一个正整数C(C<=10),表示有C组测试用例;

​ 每组测试用例占两行,首先一行是一个正整数N(1<N<=59),表示有N位同学参加选拔考试。

​ 接下来一行是N个整数Si(0<=Si<=100),表示N位考生的成绩。

【输出形式】每组测试数据输出一行,分别是本次考试的平均成绩(结果保留2位小数)和偏离程度(结果保留2位小数),中间用空格隔开。

【样例输入】

2 4 1 2 3 4 5 1 3 6 7 13

【样例输出】

2.50 4.00 6.00 16.00

【样例说明】在第一组数据中,平均分是2.50,那么,四个人偏离平均分的程度分别为1.50, 0.50, 0.50, 1.50,

​ 所以,“偏离程度”为 1.5+0.5+0.5+1.5=4.00.

代码段:

 

解释:

在上一题的基础上再加一个for循环统计偏离度。

折中就好:

【问题描述】丁爸出去买东西最烦挑三拣四,一般都喜欢折中选择。所谓折中就是选择最接近平均值的那一个。这次他去菜场买鸡,面对卖家地上的一大堆鸡,他决定买重量最折中的那只,请你帮他选一下。

【输入形式】输入包含多组测试数据。

​ 每组数据第一行,包括一个正整数N(2<=N<=20),

​ 接下来有N行数据,每行包含N个正整数,表示每只鸡的重量(不超过200)

【输出形式】对于每组数据,请输出这组鸡的平均重量(保留两位小数)

​ 以及最接近平均值的那只鸡的行号和列号(行号和列号都是从1开始)。
​ 每组数据输出占一行。
​ 注意:行号和列号从1开始,如果有多只鸡相同接近平均值,那么输出排在最前面的一只

​ (即行号最小的那只,如果行号相同则取列号最小的那只)。

【样例输入】

2 2 3 8 9 2 1 4 7 18

【样例输出】

5.50 1 2

7.50 2 1

代码段:

(有点小毛病的)基础版

 

注意:这个代码测试用例有一个没有过,有一个范围内会造成数组越界;

所有用例全部过掉:原理相同

 

同学做的数组:

 

奋勇争先:

【问题描述】

在丁爸信奥培训班中,每一次的作业,大家都奋勇争先,想拿下第一名。

现在已知某次测验的每位同学的解题数量和罚时,希望你能够告诉老师谁是第一名。

【输入形式】

第一行是数据组数C,代表有C组测试实例。

每一组数据第一行为一个N,代表下面有N个人的成绩。

接下来N行,每一行依次给出名字Name,解题数量num和罚时time
( 1<=C<=10, 2<N<=1000, Name的长度最大为10, 1<=num<=10,
10<=time<= )

【输出形式】

每组测试数据输出一行,依次为第一名的名字、解题数量和罚时,中间用空格隔开。

【样例输入】

1 3 Bob 5 50 Alice 4 46 John 5 48

【样例输出】

John 5 48

代码段:考察点是结构体,或者类的运用

 

超级密码:

【问题描述】

上次设计的“高级密码”被你们激活成功教程了,一丁小朋友很不服气!

现在,他又设计了一套更加复杂的密码,称之为“超级密码”。

说实话,这套所谓的“超级密码”其实也并不难:

对于一个给定的字符串,你只要提取其中的数字,然后连在一起构成一个整数,再乘以刘一丁小朋友的幸运数字513,就是解密后的结果了~

比如,字符串“ads2d4,122”,提取后的整数是24122,然后乘以513,就能得到解密后的结果:。

注:题目保证解密后的结果在32位无符号整数范围。

【输入形式】

【输出形式】

请根据题目要求输出解密后的结果,每组数据输出一行。

【样例输入】

2 ads2d4,122 0023asdf2AA90

【样例输出】

代码段:考察点是字符串的运用

 

解释:

这题采用了StringBuilder;不了解的可以点击链接查看,采用遍历字符,是否在数字的ascii范围中;

其中要了解charAt()的转换格式(数字的ascii);

先遍历提取字符串中的数字,然后转换成整数,在相乘;

萌数的约数:

【问题描述】

一个数,如果他的素数因子只包括2,3,5,7,则称这个数为萌数,比如,下面这些数就是前20个萌数:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27。

【输入形式】

输入包含多组测试用例。
每个测试用例包含一个萌数n, 并且n在64位整数的范围( long long 类型,输入输出用%lld )。
如果n为0,则标志结束输入,不做处理。

【输出形式】

【样例输入】

 

【样例输出】

 

代码段:有点问题

 

解释:

遍历输入的数字,如果能被整除的就是数字的约数,但是在一个数非常大的时候,超过了CPU 的执行能力,会造成(感官上的)死循环;

解决版本:

 

解释:

该题需要采用约数个数定理:

对于一个大于1正整数n可以分解质因数:

img

则n的正约数的个数就是

img

其中a1、a2、a3…ak是p1、p2、p3,…pk的指数。

如:例题:正整数共有多少个 正约数?

解:将 分解质因数=24×33×53×71

由约数个数定理可知共有正约数(4+1)×(3+1)×(3+1)×(1+1)=160个。

先找出2幂的个数,然后再找出3幂的个数......

 

结束:

感谢各位看到最后,寒假训练,每天进步一点点!

如果有错误的地方,欢迎指正!

版权声明


相关文章:

  • java多线程基础总结2024-11-03 18:58:05
  • java语言程序设计基础篇原书第八版2024-11-03 18:58:05
  • Java项目基础2024-11-03 18:58:05
  • 编程基础java中的输入和输出2024-11-03 18:58:05
  • 游戏编程基础java2024-11-03 18:58:05
  • 人工智能基础java2024-11-03 18:58:05
  • java基础实战源码2024-11-03 18:58:05
  • Java基础数据类型的映射类2024-11-03 18:58:05
  • 崔希凡java基础2024-11-03 18:58:05
  • java框架基础项目2024-11-03 18:58:05