nchu-software-oop-2022-1
nchu-software-oop-2022-1
- 7-1.身体质量指数(BMI)测算
- 7-2.长度质量计量单位换算
- 7-3 奇数求和
- 7-4 房产税费计算2022
- 7-5 游戏角色选择
- 7-6 学号识别
- 7-8 巴比伦法求平方根近似值
- 7-9 二进制数值提取
- 7-7 判断三角形类型
7-1.身体质量指数(BMI)测算
体重是反映和衡量一个人健康状况的重要标志之一,过胖和过瘦都不利于健康,BMI(身体质量指数)计算方法:体重(以千克为单位)除以身高(以米为单位)的平方。中国成人正常的BMI应在18.5-24之间,如果小于18.5为体重不足,如果大于等于24为超重,大于等于28为肥胖。请编写程序,测算身体状态。
输入格式:
两个数值:体重(以千克为单位),身高(以米为单位),数值间以空格分隔。例如:65.5 1.75。
注意:体重的世界纪录是727公斤,身高的世界纪录是2.72米。输入数据上限不得超过纪录,下限不得小于等于0;
输出格式:
输入数值超出范围 :输出“input out of range”。例如:-2 3或者125 5。
BMI小于18.5 :输出“thin”。
BMI大于等于18.5小于24 :输出“fit”。
BMI大于等于24小于28 :输出“overweight”。
BMII大于等于28 :输出“fat”。
样例输入&输出
input: -2 8
output: input out of range
思路:
输入输出题,注意数据限制条件即可。
实现:
//身体质量指数(BMI)测算
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double weight = sc.nextDouble();double height = sc.nextDouble();//checkif (weight>727 || weight<=0){System.out.println("input out of range");return;}if (height>2.72 || height<=0){System.out.println("input out of range");return;}//judgedouble tmp = weight / Math.pow(height,2);if( tmp < 18.5){System.out.println("thin");return;}if( tmp >= 24){if ( tmp >= 28){System.out.println("fat");return;}System.out.println("overweight");return;}System.out.println("fit");}
}
7-2.长度质量计量单位换算
长度、质量的计量有多重不同的计算体系,有标准的国际单位制:千克与米,也有各个国家自己的计量方法如:磅、英寸;1磅等于0.45359237千克,1英寸等于0.0254米,请编写程序实现国际单位制与英制之间的换算。
输入格式:
两个浮点数,以空格分隔,第一个是质量(以千克为单位)、第二个是长度(以米为单位)。例如:0.45359237 0.0254。
输出格式:
两个浮点数,以空格分隔,第一个是质量(以磅为单位)、第二个是长度(以英寸为单位)。例如:1.0 1.0。
样例输入&输出
input_1: 0.45359237 0.0254
output_1: 1.0 1.0
思路:
输入输出题,注意数据范围,注意数据类型要转换为float型
实现:
//长度质量计量单位换算
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double m = sc.nextDouble();double len = sc.nextDouble();System.out.println( (float)(m / 0.45359237) + " " + (float)(len / 0.0254) );}
}
7-3 奇数求和
计算一个数列中所有奇数的和。
输入格式:
十个整数,以空格分隔。例如:1 2 3 4 5 6 7 8 9 0。
输出格式:
输入数列中所有奇数之和。例如:25。
样例输入&输出
input_1: 1 2 3 4 5 6 7 8 9 0
output_1: 25
思路:
循环输入十次,利用tmp接收输入,为奇数时加入累加器ans;
判断一个数字tmp是否为奇数,可以利用 (tmp&1) == 1 计算;
也可以利用 (tmp%2)== 1 计算;
前者相对来说快那么一丢丢;
实现:
//奇数求和
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int tmp, ans=0;for (int i=1;i<=10;i++){tmp = sc.nextInt();if( (tmp & 1) == 1){ans += tmp;}}System.out.println(ans);}}
7-4 房产税费计算2022
房屋交易在日常生活中非常常见的事情,房屋交易时要额外支付各种税费,按2022年房产交易新政策的规定买房人应缴纳税费包括:
1、契税:首次购房评估额90平(含)内1%、90平-144平(含)内1.5%,超过144平或非首 次3%,买方缴纳。
2、印花税:房款的0.05%。
3、交易费:3元/平方米。
4、测绘费:1.36元/平方米。
5、权属登记费及取证费:一般情况是在200元内。
输入格式:
四个数据,以空格分隔:
1、第几次购房(整数)
2、房款(整数/单位万元)
3、评估价(整数/单位万元)
4、房屋面积(浮点数/单位平方米)。
例如:1 100 100 90。
输出格式:
契税、印花税、交易费、测绘费(以元为单位),以空格分隔。例如:10000.0 500.0 270.0 122.4
样例输入&输出
input_1: 1 100 100 90
output_1: 10000.0 500.0 270.0 122.4
思路:
阅读理解题(大概?
读懂题意就行
实现:
//房产税费计算2022
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int cnt = sc.nextInt();int value = sc.nextInt();int g = sc.nextInt();float s = sc.nextFloat();double a=0, b=0 ,c=0 ,d=0;if(cnt == 1){if(s <= 90) a = g * 0.01;else if(s <= 144) a = g * 0.015;else a = g * 0.03;}else {a = g * 0.03;}a *= 10000;b = value * 0.0005 * 10000;c = s * 3;d = s * 1.36;//注意转换为float类型即可System.out.println((float)a+" "+(float)b+" "+(float)c+" "+(float)d);}}
7-5 游戏角色选择
一款网游中包括4个种族:人类、精灵、兽人、暗精灵,每个种族包含三种角色:战士、法师、射手。玩家新建人物时需要选择种族和角色。请编写角色选择程序。
输入格式:
两个整数:游戏种族、角色的选项,以空格分隔。例如:1 2。
种族选项设定为:1、人类 2、精灵 3、兽人 4、暗精灵
角色选项设定为:1、战士 2、法师 3、射手
输出格式:
所选择的种族、角色的名称,以空格分隔。例如:人类 法师
若输入数值超出选项范围,输出“Wrong Format”
样例输入&输出
input_1: 1 2
output_1: 人类 法师
思路:
设置两个数组预存要选择的种族和职业,之后取出即可
实现:
//游戏角色选择
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] arr_1 = new String[] {"人类","精灵","兽人","暗精灵"};String[] arr_2 = new String[] {"战士","法师","射手"};int a, b;a = sc.nextInt();b = sc.nextInt();//checkif( (a<1) || (a>4) || (b<1) || (b>3) ){System.out.println("Wrong Format");return;}//注意数组下标0开始System.out.println(arr_1[a-1] + " " + arr_2[b-1]);}}
7-6 学号识别
学校的学号由8位数字组成,前两位是入学年份(省略了20);第3、4位是学院编号,01代表材料学院,02代表机械学院,03代表外语学院,20代表软件学院;第5、6位是学院内部班级编号,最后两位是班级内部学号。如:18011103,入学年份是2018年,材料学院,11班,03号
输入格式:
8位数字组成的学号。例如:18011103
注意:输入学号不是8位或者学院编号不是01、02、03、20其中之一,属于非法输入
输出格式:
学号每一项的完整说明。例如:
入学年份:2018年
学院:材料学院
班级:11
学号:03
注意:如非法输入,输出“Wrong Format"
样例输入&输出
input_1: 18011103
output_1: 入学年份:2018年
学院:材料学院
班级:11
学号:03
思路:
设置一个数组预存学院,因为学院编号只有01, 02,03, 20,可以观察出编号末尾不相同,因此可以以此作为数组索引;
判断学号是否合法可采用Strng的内置API实现,关于这些移步: java String类(超详细!)
输出采用printf格式化输出
实现:
//学号识别
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();if(!check(str)){System.out.println("Wrong Format");return ;}String[] tmp = new String[]{"软件","材料","机械","外语"};System.out.printf("入学年份:20%s年\n" +"学院:%s学院\n" +"班级:%s\n" +"学号:%s",str.substring(0,2),tmp[str.charAt(3)-'0'],str.substring(4,6),str.substring(6,8));}public static boolean check(String str){if(str.length() != 8) return false;if( str.substring(2,4).compareTo("01") == 0 ) return true;if( str.substring(2,4).compareTo("02") == 0 ) return true;if( str.substring(2,4).compareTo("03") == 0 ) return true;if( str.substring(2,4).compareTo("20") == 0 ) return true;return false;}
}
7-8 巴比伦法求平方根近似值
巴比伦法求n的近似值可以用以下公式:
nextGuess = (lastGuess+n/lastGuess)/2
程序初始运行时lastGuess可赋予一个最初的猜测值。当由公式求得的nextGuess和lastGuess相差较大时,把nextGuess的值赋给lastGuess,继续以上过程,直至nextGuess和lastGuess几乎相同,此时lastGuess或者nextGuess就是平方根的近似值。
本题要求:nextGuess和lastGuess的差值小于0.00001时认为两者几乎相同
输入格式:
1、两个浮点数,以空格分隔,第一个是n,第二个是lastGuess最初的猜测值。例如:2 1。
2、若输入的两个数中包含负数或者lastGuess初始输入为0,认定为非法输入
输出格式:
1、输出n的平方根近似值:lastGuess。例如:1.4142157
2、非法输入时输出:“Wrong Format”
样例输入&输出
input_1: 2 1
output_1: 2 -1
思路:
输入输出题
坑点:必须采用foat类型,不然会错,因为double类型精度更高,PTA测试点为文本对比,之后一模一样才正确;
连古巴比伦都知道两个数相差小时可以看成近似相等,PTA为啥不行呢(恼
实现:
//巴比伦法求平方根近似值
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);float n, lastGuess,nextGuess;n = sc.nextFloat();lastGuess = sc.nextFloat();if(lastGuess<=0 ||n<0){System.out.println("Wrong Format");return;}while(true){nextGuess = (float) ((lastGuess + n/lastGuess) / 2.0);if(Math.abs(nextGuess-lastGuess) >= 0.00001){lastGuess = nextGuess;}else break;}System.out.println(lastGuess+" ");}}
7-9 二进制数值提取
在一个字符串中提取出其中的二进制数值序列,。
输入格式:
一个由0、1构成的序列,以-1为结束符,非0、1字符视为正常输入,但忽略不计,未包含结束符的序列视为非法输入。例如:abc00aj014421-1
输出格式:
将输入的序列去掉非0、1字符以及结尾符的数据内容,
注:结束符-1之后的0\1字符忽略不计。
例如:00011。
样例输入&输出
input_1: abc00aj014421-1
output_1: 00011
思路:
如果是-1只会出现在末尾的话,那么这题就简单了,直接判断到String.length()-2即可;
但是这题-1会出现在中间或者不出现,那么就是典型子串在主串的第一次出现位置,可以双重循环暴力找,也可以利用 kmp 寻找,再或者利用Stirng内置API自己构造一个这样的函数
kmp请移步:从头到尾彻底理解KMP(2014年8月22日版)
实现:
//二进制数值提取
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String tmp;char[] st = new char[1000];int top = 0;tmp = sc.nextLine();int pos = findStr(tmp,"-1");if(pos == -1){System.out.println("Wrong Format");return;}for(int i=0;i<pos;i++){if (tmp.charAt(i)=='0' || tmp.charAt(i)=='1'){st[top++] = tmp.charAt(i);}}System.out.println(st);}//子串位置public static int findStr(String s1, String s2){int L = s2.length();int n = s1.length();for(int start = 0;start<n-L+1;start++){if(s1.substring(start,start+L).equals(s2)){return start;}}return -1;}
}
7-7 判断三角形类型
输入三角形三条边,判断该三角形为什么类型的三角形。
输入格式:
在一行中输入三角形的三条边的值(实型数),可以用一个或多个空格或回车分隔,其中三条边的取值范围均为[1,200]。
输出格式:
(1)如果输入数据非法,则输出“Wrong Format”;
(2)如果输入数据合法,但三条边不能构成三角形,则输出“Not a triangle”;
(3)如果输入数据合法且能够成等边三角形,则输出“Equilateral triangle”;
(3)如果输入数据合法且能够成等腰直角三角形,则输出“Isosceles right-angled triangle”;
(5)如果输入数据合法且能够成等腰三角形,则输出“Isosceles triangle”;
(6)如果输入数据合法且能够成直角三角形,则输出“Right-angled triangle”;
(7)如果输入数据合法且能够成一般三角形,则输出“General triangle”。
例如:00011。
样例输入&输出
input_1: 50 50 50.0
output_1: Equilateral triangle
思路:
对三个边按大小升序设置为a < b < c,非法数据则一定有(a+b)<= c;
等边三角形有a = b = c ;
等腰三角形有a = b || b = c;
直角三角形有: pow(a,2) + pow(b,2) = pow(c,2);
注意点:
在计算机中,对于浮点数的表示总是不精确的,当判断两个数a,b是否相等时,应该判断abs(a-b)是否小于一个临界值
实现:
//判断三角形类型
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);double[] arr = new double[3];boolean flag = false;//输入数据并升序处理for(int i=0;i<3;i++){arr[i] = sc.nextDouble();if (arr[i]<1 || arr[i]> 200) flag = true;}Arrays.sort(arr);//flag检测数据是否在合法范围内if (flag){System.out.println("Wrong Format");return;}//无法构成三角形if(arr[0] + arr[1] <= arr[2]){System.out.println("Not a triangle");return;}//等边三角形if(arr[0]==arr[1]&&arr[1]==arr[2]){System.out.println("Equilateral triangle");return;}//right判断是否为直角三角形,isosceles判断是否为等腰三角形boolean right = false, isosceles = false;//请看注意点if(Math.abs( Math.pow(arr[0],2) + Math.pow(arr[1],2) - Math.pow(arr[2],2)) <0.0000001 ) right = true;if(arr[0]==arr[1] || arr[1]==arr[2]) isosceles = true;//等腰直角三角形if(right && isosceles){System.out.println("Isosceles right-angled triangle");return;}//直角三角形if (right){System.out.println("Right-angled triangle");return;}//等边三角形if (isosceles){System.out.println("Isosceles triangle");return;}//一般路过普通三角形System.out.println("General triangle");}}
nchu-software-oop-2022-1相关推荐
- Gartner 2022 应用安全测试魔力象限
<Gartner2022应用安全测试魔力象限>报告,由DaleGardner.MarkHorvath及DionisioZumerle三名作者共同撰写,完成时间:2022年3月24日. 1 ...
- 『金融帝国实验室』(Capitalism Lab)〔房地产DLC〕最新开发动态(2022.09.04)
『金融帝国实验室』(Capitalism Lab)游戏开发商Enlight Software于2022.09.04在官方论坛(https://www.capitalism2.com/forum/vie ...
- Gartner2022应用安全测试魔力象限
<Gartner2022应用安全测试魔力象限>报告,由DaleGardner.MarkHorvath及DionisioZumerle三名作者共同撰写,完成时间:2022年3月24日. 1 ...
- Latex出现错误:File ‘citesort.sty‘ not found.
在使用latex(texlive)写论文时,发现latex报错 显示找不到citesort.sty这个宏包 此时只需要在texlive的文件夹目录下添加citesort文件夹,在文件夹中添加cites ...
- 部署oneapi HPC版本
系列文章目录:超算HPC 部署oneapi Base版本 文章目录 系列文章目录:超算HPC 前言 一.offline脚本获取 二.开始部署 2.1 查看help 2.2 开始部署 2.3 modul ...
- 解释型语言生态中的供应链攻击与防御
一. 背景介绍 许多现代网络应用依靠解释型编程语言,因为它们有丰富的库和包.像PyPI.Npm和RubyGems这样包管理器提供了一个集中的仓库,开发者可以搜索和安装代码包,以帮助开发.包管理器不仅使 ...
- Solidworks2022学习版 设置中文
安装完是英文,网上搜了一圈,以下给出最直接的方法. 首先,去SW安装目录,我的是 E:\software\SolidWorks 2022 64bit\Setup\swwi\lang : 找到 chin ...
- 离开 Chrome 十年,我都有着怎样的思考!
[CSDN 编者按]离开 Chrome 快 10 年了,这是作者的一篇回忆录,从加入 Chrome 团队从事 Linux 版本的 Chrome 开发,再到上线离开,期间都发生了哪些故事?为更贴近原文, ...
- 2022版 Tangible Software Solutions 功能齐全的源代码转换器
2022版 Tangible Software Solutions 功能齐全的源代码转换器 Tangible Software Solutions 是功能齐全的源代码转换器,提供多个工具,自由选择和安 ...
- 2022,SCI一区(Advances in Engineering Software),Semantic Cluster Operator for SR and Its Applications
ABSTRACT 本文针对遗传规划在符号回归中收敛性能低的问题,提出了一种新的算子 -- 语义聚类算子.陡峭收敛(steep convergence)的主要策略是缩小搜索空间,并使用语义聚类库对缩小的 ...
最新文章
- Jquery判断单选框是否选中和获取选中的值
- Ubuntu下找不到ttyUSB*问题解决
- CentOS7部署jar包
- TreeView 实现单选与多选!
- 安卓学习笔记10:常用布局 - 相对布局
- Netty工作笔记0022---NIO快速入门--编写客户端
- 怎么删除flash弹出的广告_电脑桌面老是弹出广告怎么办?一个无需下载软件即可屏蔽的方法...
- 两款工控控件对比评测:Iocomp和ProEssentials
- Java多线程学习笔记(三)——Future和FutureTask
- XP远程桌面连接网络无法验证解决办法
- 深度学习多卡配置_想要自己搭建深度学习的 gpu 集群,一些问题请教大家,万分感谢!...
- 学习编程到底用不用记笔记?
- 阿里云ECS的1M带宽能干嘛?
- 分享时刻—今日一收获
- Jackson Western印迹检测分析物丨比色免疫印迹
- scp(安全拷贝)和rsync(增量复制)
- mkv文件怎么转换成mp4?来看看这四种转换方式吧!
- Python也许很友好,但它也容易弄得一团槽
- 接口文档解决方案:knife4j
- 米家扫拖一体机器人重置键_米家扫拖一体机器人的使用感受和小建议
热门文章
- 如何使用渗透工具—nmap
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月17日~8月23日.)...
- pcstory请在服务器修复游戏,【转载】云更新蘑菇pcstory4.3在各无盘平台下的使用与游戏配置的简单说明...
- 如何自学现代计算机科学(转)
- Ubuntu系统错误 没有公钥,无法验证下列签名: NO_PUBKEY 5F16B97C1AD28806
- 内网IP变更后,内网致信客户端不能正常打开WEB页面的OA
- python正则匹配汉字
- leaflet实现四色预警(仿echarts气泡图)(leaflet篇.41)
- 机器学习系列(11)_Python中Gradient Boosting Machine(GBM)调参方法详解
- 用Python Scrapy爬取某电影网站并存储入mysql