nchu-software-oop-2022-1
nchu-software-oop-2022-1
- 7-1.身體質(zhì)量指數(shù)(BMI)測算
- 7-2.長度質(zhì)量計量單位換算
- 7-3 奇數(shù)求和
- 7-4 房產(chǎn)稅費(fèi)計算2022
- 7-5 游戲角色選擇
- 7-6 學(xué)號識別
- 7-8 巴比倫法求平方根近似值
- 7-9 二進(jìn)制數(shù)值提取
- 7-7 判斷三角形類型
7-1.身體質(zhì)量指數(shù)(BMI)測算
體重是反映和衡量一個人健康狀況的重要標(biāo)志之一,過胖和過瘦都不利于健康,BMI(身體質(zhì)量指數(shù))計算方法:體重(以千克為單位)除以身高(以米為單位)的平方。中國成人正常的BMI應(yīng)在18.5-24之間,如果小于18.5為體重不足,如果大于等于24為超重,大于等于28為肥胖。請編寫程序,測算身體狀態(tài)。
輸入格式:
兩個數(shù)值:體重(以千克為單位),身高(以米為單位),數(shù)值間以空格分隔。例如:65.5 1.75。
注意:體重的世界紀(jì)錄是727公斤,身高的世界紀(jì)錄是2.72米。輸入數(shù)據(jù)上限不得超過紀(jì)錄,下限不得小于等于0;
輸出格式:
輸入數(shù)值超出范圍 :輸出“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
思路:
輸入輸出題,注意數(shù)據(jù)限制條件即可。
實(shí)現(xiàn):
//身體質(zhì)量指數(shù)(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.長度質(zhì)量計量單位換算
長度、質(zhì)量的計量有多重不同的計算體系,有標(biāo)準(zhǔn)的國際單位制:千克與米,也有各個國家自己的計量方法如:磅、英寸;1磅等于0.45359237千克,1英寸等于0.0254米,請編寫程序?qū)崿F(xiàn)國際單位制與英制之間的換算。
輸入格式:
兩個浮點(diǎn)數(shù),以空格分隔,第一個是質(zhì)量(以千克為單位)、第二個是長度(以米為單位)。例如:0.45359237 0.0254。
輸出格式:
兩個浮點(diǎn)數(shù),以空格分隔,第一個是質(zhì)量(以磅為單位)、第二個是長度(以英寸為單位)。例如:1.0 1.0。
樣例輸入&輸出
input_1: 0.45359237 0.0254
output_1: 1.0 1.0
思路:
輸入輸出題,注意數(shù)據(jù)范圍,注意數(shù)據(jù)類型要轉(zhuǎn)換為float型
實(shí)現(xiàn):
//長度質(zhì)量計量單位換算 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 奇數(shù)求和
計算一個數(shù)列中所有奇數(shù)的和。
輸入格式:
十個整數(shù),以空格分隔。例如:1 2 3 4 5 6 7 8 9 0。
輸出格式:
輸入數(shù)列中所有奇數(shù)之和。例如:25。
樣例輸入&輸出
input_1: 1 2 3 4 5 6 7 8 9 0
output_1: 25
思路:
循環(huán)輸入十次,利用tmp接收輸入,為奇數(shù)時加入累加器ans;
判斷一個數(shù)字tmp是否為奇數(shù),可以利用 (tmp&1) == 1 計算;
也可以利用 (tmp%2)== 1 計算;
前者相對來說快那么一丟丟;
實(shí)現(xiàn):
//奇數(shù)求和 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 房產(chǎn)稅費(fèi)計算2022
房屋交易在日常生活中非常常見的事情,房屋交易時要額外支付各種稅費(fèi),按2022年房產(chǎn)交易新政策的規(guī)定買房人應(yīng)繳納稅費(fèi)包括:
1、契稅:首次購房評估額90平(含)內(nèi)1%、90平-144平(含)內(nèi)1.5%,超過144平或非首 次3%,買方繳納。
2、印花稅:房款的0.05%。
3、交易費(fèi):3元/平方米。
4、測繪費(fèi):1.36元/平方米。
5、權(quán)屬登記費(fèi)及取證費(fèi):一般情況是在200元內(nèi)。
輸入格式:
四個數(shù)據(jù),以空格分隔:
1、第幾次購房(整數(shù))
2、房款(整數(shù)/單位萬元)
3、評估價(整數(shù)/單位萬元)
4、房屋面積(浮點(diǎn)數(shù)/單位平方米)。
例如:1 100 100 90。
輸出格式:
契稅、印花稅、交易費(fèi)、測繪費(fèi)(以元為單位),以空格分隔。例如:10000.0 500.0 270.0 122.4
樣例輸入&輸出
input_1: 1 100 100 90
output_1: 10000.0 500.0 270.0 122.4
思路:
閱讀理解題(大概?
讀懂題意就行
實(shí)現(xiàn):
//房產(chǎn)稅費(fèi)計算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;//注意轉(zhuǎn)換為float類型即可System.out.println((float)a+" "+(float)b+" "+(float)c+" "+(float)d);}}7-5 游戲角色選擇
一款網(wǎng)游中包括4個種族:人類、精靈、獸人、暗精靈,每個種族包含三種角色:戰(zhàn)士、法師、射手。玩家新建人物時需要選擇種族和角色。請編寫角色選擇程序。
輸入格式:
兩個整數(shù):游戲種族、角色的選項(xiàng),以空格分隔。例如:1 2。
種族選項(xiàng)設(shè)定為:1、人類 2、精靈 3、獸人 4、暗精靈
角色選項(xiàng)設(shè)定為:1、戰(zhàn)士 2、法師 3、射手
輸出格式:
所選擇的種族、角色的名稱,以空格分隔。例如:人類 法師
若輸入數(shù)值超出選項(xiàng)范圍,輸出“Wrong Format”
樣例輸入&輸出
input_1: 1 2
output_1: 人類 法師
思路:
設(shè)置兩個數(shù)組預(yù)存要選擇的種族和職業(yè),之后取出即可
實(shí)現(xiàn):
//游戲角色選擇 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[] {"戰(zhàn)士","法師","射手"};int a, b;a = sc.nextInt();b = sc.nextInt();//checkif( (a<1) || (a>4) || (b<1) || (b>3) ){System.out.println("Wrong Format");return;}//注意數(shù)組下標(biāo)0開始System.out.println(arr_1[a-1] + " " + arr_2[b-1]);}}7-6 學(xué)號識別
學(xué)校的學(xué)號由8位數(shù)字組成,前兩位是入學(xué)年份(省略了20);第3、4位是學(xué)院編號,01代表材料學(xué)院,02代表機(jī)械學(xué)院,03代表外語學(xué)院,20代表軟件學(xué)院;第5、6位是學(xué)院內(nèi)部班級編號,最后兩位是班級內(nèi)部學(xué)號。如:18011103,入學(xué)年份是2018年,材料學(xué)院,11班,03號
輸入格式:
8位數(shù)字組成的學(xué)號。例如:18011103
注意:輸入學(xué)號不是8位或者學(xué)院編號不是01、02、03、20其中之一,屬于非法輸入
輸出格式:
學(xué)號每一項(xiàng)的完整說明。例如:
入學(xué)年份:2018年
學(xué)院:材料學(xué)院
班級:11
學(xué)號:03
注意:如非法輸入,輸出“Wrong Format"
樣例輸入&輸出
input_1: 18011103
output_1: 入學(xué)年份:2018年
學(xué)院:材料學(xué)院
班級:11
學(xué)號:03
思路:
設(shè)置一個數(shù)組預(yù)存學(xué)院,因?yàn)閷W(xué)院編號只有01, 02,03, 20,可以觀察出編號末尾不相同,因此可以以此作為數(shù)組索引;
判斷學(xué)號是否合法可采用Strng的內(nèi)置API實(shí)現(xiàn),關(guān)于這些移步: java String類(超詳細(xì)!)
輸出采用printf格式化輸出
實(shí)現(xiàn):
//學(xué)號識別 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[]{"軟件","材料","機(jī)械","外語"};System.out.printf("入學(xué)年份:20%s年\n" +"學(xué)院:%s學(xué)院\n" +"班級:%s\n" +"學(xué)號:%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
程序初始運(yùn)行時lastGuess可賦予一個最初的猜測值。當(dāng)由公式求得的nextGuess和lastGuess相差較大時,把nextGuess的值賦給lastGuess,繼續(xù)以上過程,直至nextGuess和lastGuess幾乎相同,此時lastGuess或者nextGuess就是平方根的近似值。
本題要求:nextGuess和lastGuess的差值小于0.00001時認(rèn)為兩者幾乎相同
輸入格式:
1、兩個浮點(diǎn)數(shù),以空格分隔,第一個是n,第二個是lastGuess最初的猜測值。例如:2 1。
2、若輸入的兩個數(shù)中包含負(fù)數(shù)或者lastGuess初始輸入為0,認(rèn)定為非法輸入
輸出格式:
1、輸出n的平方根近似值:lastGuess。例如:1.4142157
2、非法輸入時輸出:“Wrong Format”
樣例輸入&輸出
input_1: 2 1
output_1: 2 -1
思路:
輸入輸出題
坑點(diǎn):必須采用foat類型,不然會錯,因?yàn)閐ouble類型精度更高,PTA測試點(diǎn)為文本對比,之后一模一樣才正確;
連古巴比倫都知道兩個數(shù)相差小時可以看成近似相等,PTA為啥不行呢(惱
實(shí)現(xiàn):
//巴比倫法求平方根近似值 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 二進(jìn)制數(shù)值提取
在一個字符串中提取出其中的二進(jìn)制數(shù)值序列,。
輸入格式:
一個由0、1構(gòu)成的序列,以-1為結(jié)束符,非0、1字符視為正常輸入,但忽略不計,未包含結(jié)束符的序列視為非法輸入。例如:abc00aj014421-1
輸出格式:
將輸入的序列去掉非0、1字符以及結(jié)尾符的數(shù)據(jù)內(nèi)容,
注:結(jié)束符-1之后的0\1字符忽略不計。
例如:00011。
樣例輸入&輸出
input_1: abc00aj014421-1
output_1: 00011
思路:
如果是-1只會出現(xiàn)在末尾的話,那么這題就簡單了,直接判斷到String.length()-2即可;
但是這題-1會出現(xiàn)在中間或者不出現(xiàn),那么就是典型子串在主串的第一次出現(xiàn)位置,可以雙重循環(huán)暴力找,也可以利用 kmp 尋找,再或者利用Stirng內(nèi)置API自己構(gòu)造一個這樣的函數(shù)
kmp請移步:從頭到尾徹底理解KMP(2014年8月22日版)
實(shí)現(xiàn):
//二進(jìn)制數(shù)值提取 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 判斷三角形類型
輸入三角形三條邊,判斷該三角形為什么類型的三角形。
輸入格式:
在一行中輸入三角形的三條邊的值(實(shí)型數(shù)),可以用一個或多個空格或回車分隔,其中三條邊的取值范圍均為[1,200]。
輸出格式:
(1)如果輸入數(shù)據(jù)非法,則輸出“Wrong Format”;
(2)如果輸入數(shù)據(jù)合法,但三條邊不能構(gòu)成三角形,則輸出“Not a triangle”;
(3)如果輸入數(shù)據(jù)合法且能夠成等邊三角形,則輸出“Equilateral triangle”;
(3)如果輸入數(shù)據(jù)合法且能夠成等腰直角三角形,則輸出“Isosceles right-angled triangle”;
(5)如果輸入數(shù)據(jù)合法且能夠成等腰三角形,則輸出“Isosceles triangle”;
(6)如果輸入數(shù)據(jù)合法且能夠成直角三角形,則輸出“Right-angled triangle”;
(7)如果輸入數(shù)據(jù)合法且能夠成一般三角形,則輸出“General triangle”。
例如:00011。
樣例輸入&輸出
input_1: 50 50 50.0
output_1: Equilateral triangle
思路:
對三個邊按大小升序設(shè)置為a < b < c,非法數(shù)據(jù)則一定有(a+b)<= c;
等邊三角形有a = b = c ;
等腰三角形有a = b || b = c;
直角三角形有: pow(a,2) + pow(b,2) = pow(c,2);
注意點(diǎn):
在計算機(jī)中,對于浮點(diǎn)數(shù)的表示總是不精確的,當(dāng)判斷兩個數(shù)a,b是否相等時,應(yīng)該判斷abs(a-b)是否小于一個臨界值
實(shí)現(xiàn):
//判斷三角形類型 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;//輸入數(shù)據(jù)并升序處理for(int i=0;i<3;i++){arr[i] = sc.nextDouble();if (arr[i]<1 || arr[i]> 200) flag = true;}Arrays.sort(arr);//flag檢測數(shù)據(jù)是否在合法范圍內(nèi)if (flag){System.out.println("Wrong Format");return;}//無法構(gòu)成三角形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;//請看注意點(diǎn)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");}}總結(jié)
以上是生活随笔為你收集整理的nchu-software-oop-2022-1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寒假训练--训练赛2--Good Luc
- 下一篇: 基于ThinkPhp6+Vue+Elem