diff --git "a/53 \345\221\250\345\216\232\350\276\260/20230328 \347\254\254\344\270\200\346\254\241\345\244\215\344\271\240\351\242\230.md" "b/53 \345\221\250\345\216\232\350\276\260/20230328 \347\254\254\344\270\200\346\254\241\345\244\215\344\271\240\351\242\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..b9f1e4d72b07094a0a05a241569cd2753d98936c --- /dev/null +++ "b/53 \345\221\250\345\216\232\350\276\260/20230328 \347\254\254\344\270\200\346\254\241\345\244\215\344\271\240\351\242\230.md" @@ -0,0 +1,335 @@ +# 知识点 + +运算符 + +## 题目1(训练) + +身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + +​ 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 + +​ 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 + +现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少? + +### 训练提示 + +1. 已知的父母身高如何用代码体现? + +2. 题目中的公式如何转化为代码? + +### 解题方案 + +1. 使用变量的定义和算术运算符完成本题 + +### 操作步骤 + +1. 定义小数变量代表父亲身高 + +2. 定义小数变量代表母亲身高 + +3. 通过儿子身高计算方式计算儿子身高 + +4. 通过女儿身高计算方式计算女人身高 + +#### Answer: + +```java +public class d1 { + public static void main(String[] args) { + int fa =177; + int ma = 165; + System.out.println("儿子与女儿的身高分别是:"+((fa+ma)*1.08/2)+"Cm、"+((fa*0.923+ma)/2)+"Cm"); + } +} +``` + + + +## 题目2(训练) + +红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么? + +### 训练提示 + +1. 用什么知识点来计算她们现在的钱有多少? +2. 如何对比两个人的钱数? + +### 解题方案 + +1. 使用赋值运算符和算术运算符计算各自的钱,使用比较运算符对比大小 + +### 操作步骤 + +1. 定义红茶妹妹原来的钱为整数变量 + +2. 定义绿茶妹妹原来的钱为整数变量 + +3. 使用赋值运算符和算术运算符计算其现有的钱 + +4. 使用比较运算符对数值做出比较 + +#### Answer + +```java +public class _20230329 { + public static void main(String[] args) { + int r=21,g=24; + int r1=r*2+3,g1=g*2; + String result= r1==g1? "结果一样多":"结果不一样多"; + System.out.println(result); + } +} +``` + +## 题目3(综合) + +某小伙想定一份外卖,商家的优惠方式如下: + +鱼香肉丝单点24元, + +油炸花生米单点8元, + +米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱? + +### 训练提示 + +1. 有两种购买方式,一种是不使用优惠价,另一种是使用优惠价。分别计算花费后,对两种方式的花费作对比。 + +### 解题方案 + +1. 使用算术运算符、赋值运算符和三元运算符联合完成本题 + +### 操作步骤 + +1. 使用算术运算符求出不使用优惠时的总价 +2. 使用三元运算符判断总价是否满足打折条件,并求出折后总价 +3. 使用算术运算符求出使用优惠价时的总价 +4. 使用三元运算符判断最终更合算的购买方式和花费 + +#### Answer: + +```java +import java.util.Scanner; + +public class _20230329 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("某小伙想定一份外卖,商家的优惠方式如下:\n" + + "\n" + + "鱼香肉丝单点24元,\n" + + "油炸花生米单点8元,\n" + + "米饭单点3元。订单满30元8折优惠。" + + "鱼香肉丝优惠价16元," + + "但是优惠价和折扣不能同时使用。" + + "\n那么这个小伙要点这三样东西,最少要花多少钱?" + + "\n" + + "\n"); + System.out.println("请输入要选择的订餐类型,选好之后输入订餐类型前的数字" + + "\n1、鱼香肉丝、油炸花生米、米饭各单点,使用订单满30元8折优惠" + + "\n2、鱼香肉丝使用优惠价,油炸花生米、米饭使用原价"+ + "\n"); + int fish = 24; + int peanut = 8; + int rice = 3; + int order = sc.nextInt(); + if (order == 1) { + System.out.println("你选择了套餐1,如果消费金额满30元将享受8折优惠"); + int price = (fish + peanut + rice); + if (price > 30) { + double priceDiscounts = price * 0.8; + System.out.println("你选择的套已满30元,所以可以享受8折优惠。优惠后的价格是"+priceDiscounts); + }else{ + System.out.println("你选择的套餐不满30元,所以无法享受8折优惠。你需要支付"+price+"元。"); + } + } else if (order == 2) { + System.out.println("你选择了套餐2,将单点鱼香肉丝"); + int fishDiscount = 16; + int price = (fishDiscount + peanut + rice); + System.out.println("你消费了"+price+"元。"); + } + } +} +``` + + + +**1、判断一个字符数据是否是数字字符 ** + +**分析:** + +​ 1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 + +​ 2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 + +​ 3、判断完成之后,打印判断的结果。 + +#### Answer: + +```java +import java.util.Scanner; + +public class d1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String str = "请输入1-9中的其中一个数字" ; + System.out.println(str); + int zf=sc.nextInt(); + if (zf<=9 & zf>=0){ + System.out.println("这个字符是数字字符"); + }else{ + System.out.println("这个字符不是数字字符"); + } + } +} +``` + + + +**2、判断一个字符数据是否是字母字符** + +**分析:** + +​ 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + +​ 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符,因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + +​ 3、判断完成之后,打印判断的结果。 + +#### Answer: + +```java +import java.util.Scanner; + +public class d1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String str = "请输入 a - z 或者 A - Z 之间 的任意一个字符" ; + System.out.println(str); + char zf=sc.next().charAt(0); + if ((zf<='z' & zf>='a')| zf>='A' & zf<='Z'){ + System.out.println("这个字符是字母字符"); + }else{ + System.out.println("这个字符不是字母字符"); + } + } +} +``` + + + +**3、判断指定的年份是否为闰年,请使用键盘录入** + +**分析:** + +​ 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + +​ 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + +#### Answer: + +```java +import java.util.Scanner; + +public class d1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String str = "请输入年份" ; + System.out.println(str); + int year = sc.nextInt(); + if ((year%4==0 & year%100!=0)|year%400==0) { + System.out.println(year+"年是闰年"); + }else + System.out.println(year+"年不是闰年"); + } +} + +``` + + + +**4、判断一个数字是否为水仙花数,请使用键盘录入** + +水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, + +**分析:** + +​ 如:153 ---> 1×1×*1 + 5*×5×*5 + 3×*3×3 = 153; 就是水仙花数 + +​ 1、首先需要提供一个需要判断的3位数字,因此需要一个数值 + +​ 2、判断的过程 + +​ a) 将3位数字的每一位上的数字拆分下来 + +​ b) 计算每位数字的3次幂之和 + +​ C) 用和值 和 原来的数字进行比较 + +​ D) 打印判断的比较结果即可 + +#### Answer: + +````java +import java.util.Scanner; + +public class _20230329 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("请输入一个三位数的数字"); + int num = sc.nextInt(); + int g = num%10; + int s = num/10%10; + int b = num/100; + int n = (g*g*g)+(s*s*s)+(b*b*b); + if(n==num){ + System.out.println(num+"是水仙花数"); + }else{ + System.out.println(num+"不是水仙花数"); + } + } +} +```` + + + +**5、判断一个5位数字是否为回文数,使用键盘录入** + +五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321  23732  56665 + +**分析:** + +​ 1、首先需要提供一个需要判断的5位数字,因此需要一个数值 + +​ 2、判断的过程 + +​ a) 将5位数字的万、千、十、个位数拆分出来 + +​ b) 判断比较万位和个位 、 千位和十位是否相等 + +​ 3、判断完成之后,打印判断的结果。 + +#### Answer: + +```java +import java.util.Scanner; + +public class d1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String str = "请任意输入一个5位数字"; + System.out.println(str); + int zf = sc.nextInt(); + int g = zf / 10000; + int s = zf / 1000 % 10; + int q = zf / 10 % 10; + int w = zf % 10; + if (g == w & s == q) { + System.out.println("这个字符是为回文数"); + } else { + System.out.println("这个字符不是为回文数"); + } + } +} +``` +