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相关推荐

  1. Gartner 2022 应用安全测试魔力象限

    <Gartner2022应用安全测试魔力象限>报告,由DaleGardner.MarkHorvath及DionisioZumerle三名作者共同撰写,完成时间:2022年3月24日. 1 ...

  2. 『金融帝国实验室』(Capitalism Lab)〔房地产DLC〕最新开发动态(2022.09.04)

    『金融帝国实验室』(Capitalism Lab)游戏开发商Enlight Software于2022.09.04在官方论坛(https://www.capitalism2.com/forum/vie ...

  3. Gartner2022应用安全测试魔力象限

    <Gartner2022应用安全测试魔力象限>报告,由DaleGardner.MarkHorvath及DionisioZumerle三名作者共同撰写,完成时间:2022年3月24日. 1 ...

  4. Latex出现错误:File ‘citesort.sty‘ not found.

    在使用latex(texlive)写论文时,发现latex报错 显示找不到citesort.sty这个宏包 此时只需要在texlive的文件夹目录下添加citesort文件夹,在文件夹中添加cites ...

  5. 部署oneapi HPC版本

    系列文章目录:超算HPC 部署oneapi Base版本 文章目录 系列文章目录:超算HPC 前言 一.offline脚本获取 二.开始部署 2.1 查看help 2.2 开始部署 2.3 modul ...

  6. 解释型语言生态中的供应链攻击与防御

    一. 背景介绍 许多现代网络应用依靠解释型编程语言,因为它们有丰富的库和包.像PyPI.Npm和RubyGems这样包管理器提供了一个集中的仓库,开发者可以搜索和安装代码包,以帮助开发.包管理器不仅使 ...

  7. Solidworks2022学习版 设置中文

    安装完是英文,网上搜了一圈,以下给出最直接的方法. 首先,去SW安装目录,我的是 E:\software\SolidWorks 2022 64bit\Setup\swwi\lang : 找到 chin ...

  8. 离开 Chrome 十年,我都有着怎样的思考!

    [CSDN 编者按]离开 Chrome 快 10 年了,这是作者的一篇回忆录,从加入 Chrome 团队从事 Linux 版本的 Chrome 开发,再到上线离开,期间都发生了哪些故事?为更贴近原文, ...

  9. 2022版 Tangible Software Solutions 功能齐全的源代码转换器

    2022版 Tangible Software Solutions 功能齐全的源代码转换器 Tangible Software Solutions 是功能齐全的源代码转换器,提供多个工具,自由选择和安 ...

  10. 2022,SCI一区(Advances in Engineering Software),Semantic Cluster Operator for SR and Its Applications

    ABSTRACT 本文针对遗传规划在符号回归中收敛性能低的问题,提出了一种新的算子 -- 语义聚类算子.陡峭收敛(steep convergence)的主要策略是缩小搜索空间,并使用语义聚类库对缩小的 ...

最新文章

  1. Jquery判断单选框是否选中和获取选中的值
  2. Ubuntu下找不到ttyUSB*问题解决
  3. CentOS7部署jar包
  4. TreeView 实现单选与多选!
  5. 安卓学习笔记10:常用布局 - 相对布局
  6. Netty工作笔记0022---NIO快速入门--编写客户端
  7. 怎么删除flash弹出的广告_电脑桌面老是弹出广告怎么办?一个无需下载软件即可屏蔽的方法...
  8. 两款工控控件对比评测:Iocomp和ProEssentials
  9. Java多线程学习笔记(三)——Future和FutureTask
  10. XP远程桌面连接网络无法验证解决办法
  11. 深度学习多卡配置_想要自己搭建深度学习的 gpu 集群,一些问题请教大家,万分感谢!...
  12. 学习编程到底用不用记笔记?
  13. 阿里云ECS的1M带宽能干嘛?
  14. 分享时刻—今日一收获
  15. Jackson Western印迹检测分析物丨比色免疫印迹
  16. scp(安全拷贝)和rsync(增量复制)
  17. mkv文件怎么转换成mp4?来看看这四种转换方式吧!
  18. Python也许很友好,但它也容易弄得一团槽
  19. 接口文档解决方案:knife4j
  20. 米家扫拖一体机器人重置键_米家扫拖一体机器人的使用感受和小建议

热门文章

  1. 如何使用渗透工具—nmap
  2. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(8月17日~8月23日.)...
  3. pcstory请在服务器修复游戏,【转载】云更新蘑菇pcstory4.3在各无盘平台下的使用与游戏配置的简单说明...
  4. 如何自学现代计算机科学(转)
  5. Ubuntu系统错误 没有公钥,无法验证下列签名: NO_PUBKEY 5F16B97C1AD28806
  6. 内网IP变更后,内网致信客户端不能正常打开WEB页面的OA
  7. python正则匹配汉字
  8. leaflet实现四色预警(仿echarts气泡图)(leaflet篇.41)
  9. 机器学习系列(11)_Python中Gradient Boosting Machine(GBM)调参方法详解
  10. 用Python Scrapy爬取某电影网站并存储入mysql