From cc5f40cc12c4ad73ceece7e85fd724eb44990a80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=96=E5=BF=83=E5=A6=8D?= <2392642810@qq.com> Date: Tue, 28 Mar 2023 18:38:20 +0800 Subject: [PATCH 1/4] =?UTF-8?q?3.28=20=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230328 \345\244\215\344\271\240.md" | 261 ++++++++++++++++++ 1 file changed, 261 insertions(+) create mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230328 \345\244\215\344\271\240.md" diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230328 \345\244\215\344\271\240.md" "b/03 \350\265\226\345\277\203\345\246\215/20230328 \345\244\215\344\271\240.md" new file mode 100644 index 0000000..364c1ff --- /dev/null +++ "b/03 \350\265\226\345\277\203\345\246\215/20230328 \345\244\215\344\271\240.md" @@ -0,0 +1,261 @@ +# 知识点 + +运算符 + +## 题目1(训练) + +身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + +​ 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 + +​ 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 + +现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少? + +### 训练提示 + +1. 已知的父母身高如何用代码体现? + +2. 题目中的公式如何转化为代码? + +### 解题方案 + +1. 使用变量的定义和算术运算符完成本题 + +### 操作步骤 + +1. 定义小数变量代表父亲身高 + +2. 定义小数变量代表母亲身高 + +3. 通过儿子身高计算方式计算儿子身高 + +4. 通过女儿身高计算方式计算女人身高 + +```java +public class First { + public static void main(String[] args) { + int f=177,m=165; + double s=(f+m)*1.08/2,d=(f*0.923+m)/2; + System.out.printf("儿子的身高是"+s+"cm,女儿的身高是"+d+"cm"); + } +} +``` + + + +## 题目2(训练) + +红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么? + +### 训练提示 + +1. 用什么知识点来计算她们现在的钱有多少? +2. 如何对比两个人的钱数? + +### 解题方案 + +1. 使用赋值运算符和算术运算符计算各自的钱,使用比较运算符对比大小 + +### 操作步骤 + +1. 定义红茶妹妹原来的钱为整数变量 +2. 定义绿茶妹妹原来的钱为整数变量 +3. 使用赋值运算符和算术运算符计算其现有的钱 +4. 使用比较运算符对数值做出比较 + +```java +public class First { + public static void main(String[] args) { + int h=21,l=24; + int h1=h*2+3,l1=l*2; + String result= h1==l1? "结果一样多":"结果不一样多"; + System.out.println(result); + } +} +``` + +## 题目3(综合) + +某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱? + +### 训练提示 + +1. 有两种购买方式,一种是不使用优惠价,另一种是使用优惠价。分别计算花费后,对两种方式的花费作对比。 + +### 解题方案 + +1. 使用算术运算符、赋值运算符和三元运算符联合完成本题 + +### 操作步骤 + +1. 使用算术运算符求出不使用优惠时的总价 +2. 使用三元运算符判断总价是否满足打折条件,并求出折后总价 +3. 使用算术运算符求出使用优惠价时的总价 +4. 使用三元运算符判断最终更合算的购买方式和花费 + +### 参考答案 + +```java +public class First { + public static void main(String[] args) { + double order1 = (24+8+3)*0.8; + int order2=16+8+3; + if (order1>order2) { + System.out.println("方案一比较便宜,花费"+order1+"元"); + }else if(order1==order2){ + System.out.println("方案二和方案二是一个价格,花费"+order1+"元"); + }else{ + System.out.println("方案二比较便宜,花费"+order2+"元"); + } + } +} +``` + +**1、判断一个字符数据是否是数字字符 ** + +**分析:** + +​ 1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 + +​ 2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 + +​ 3、判断完成之后,打印判断的结果。 + +```java +public class Class02 { + public static void main(String[] args) { + Scanner num=new Scanner(System.in); + System.out.println("请输入1-9中的其中一个数字"); + int n=num.nextInt(); + if(0<=n & n<=9){ + System.out.println("这个字符是数字字符"); + }else{ + System.out.println("这个字符不是数字字符"); + } + } +} +``` + +**2、判断一个字符数据是否是字母字符** + +**分析:** + +​ 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + +​ 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符,因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + +​ 3、判断完成之后,打印判断的结果。 + +```java +public class Class02 { + public static void main(String[] args) { + Scanner num=new Scanner(System.in); + System.out.println("请输入a-z或者A-Z的其中一个字母"); + char e=num.next().charAt(0); + if(e>='a' & e<='z'){ + System.out.println("这个字符是字母字符"); + }else{ + System.out.println("这个字符不是字母字符"); + } + } +} +``` + +**3、判断指定的年份是否为闰年,请使用键盘录入** + +**分析:** + +​ 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + +​ 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + +```java +public class Class02 { + public static void main(String[] args) { + Scanner num=new Scanner(System.in); + System.out.println("请输入年份"); + int year=num.nextInt(); + if (year%4==0 & year%100!=0 | year/400==0){ + System.out.println("这个年份是闰年"); + }else{ + System.out.println("这个年份不是闰年"); + } + } +} +``` + +**4、判断一个数字是否为水仙花数,请使用键盘录入** + +水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, + +**分析:** + +​ 如:153 ---> 1×1×*1 + 5*×5×*5 + 3×*3×3 = 153; 就是水仙花数 + +​ 1、首先需要提供一个需要判断的3位数字,因此需要一个数值 + +​ 2、判断的过程 + +​ a) 将3位数字的每一位上的数字拆分下来 + +​ b) 计算每位数字的3次幂之和 + +​ C) 用和值 和 原来的数字进行比较 + +​ D) 打印判断的比较结果即可 + +```java +public class Class02 { + public static void main(String[] args) { + Scanner num=new Scanner(System.in); + System.out.println("请输入一个三位整数"); + int x= num.nextInt(); + int a=x%10; + int b=x/10%10; + int c=x/100; + if(a*a*a+b*b*b+c*c*c==x){ + System.out.println("这个数是水仙花数"); + }else{ + System.out.println("这个数不是水仙花数"); + } + } +} +``` + +**5、判断一个5位数字是否为回文数,使用键盘录入** + +五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321  23732  56665 + +**分析:** + +​ 1、首先需要提供一个需要判断的5位数字,因此需要一个数值 + +​ 2、判断的过程 + +​ a) 将5位数字的万、千、十、个位数拆分出来 + +​ b) 判断比较万位和个位 、 千位和十位是否相等 + +​ 3、判断完成之后,打印判断的结果。 + +```java +public class Class02 { + public static void main(String[] args) { + Scanner num=new Scanner(System.in); + System.out.println("请输入一个五位整数"); + int y= num.nextInt(); + int a=y%10; + int b=y/10%10; + int c=y/100%10; + int d=y/1000%10; + int e=y/10000; + if (a==e & b==d){ + System.out.println("这个数是回文数"); + }else{ + System.out.println("这个数不是回文数"); + } + } +} +``` + -- Gitee From df71d9bc77d85aed5729e3a2893ea43d99371754 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=96=E5=BF=83=E5=A6=8D?= <2392642810@qq.com> Date: Tue, 4 Apr 2023 21:45:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?4.4=20=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230404 \347\273\203\344\271\240.md" | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 "03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" "b/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" new file mode 100644 index 0000000..e8d2bc6 --- /dev/null +++ "b/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" @@ -0,0 +1,147 @@ +## 冒泡法 + +```java +int []arr={3,5,2,15,38,26,27}; +System.out.println("排序前"); +for (int n:arr){ + System.out.print(n+" "); +} +for (int i = 0; i < arr.length; i++) { + for (int j = 0; j < arr.length-1; j++) { + if (arr[j]>arr[j+1]) { + int temp=arr[j]; + arr[j]=arr[j+1]; + arr[j+1]=temp; + } + } +} +System.out.println(); +System.out.println("排序后"); +for (int n:arr){ + System.out.print(n+" "); +} +``` + +## 编码题 + +**1.定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值** + +**操作步骤:** + +​ 1.定义5个元素数组 + +​ 2.可以使用初始化数组的两种方式之一为数组元素赋值 + +​ 3.遍历数组求数组中的最小值 + +```java +int arr[]={5,2,3,4,1}; +int min=arr[0]; +int index=0; +for (int i = 0; i < arr.length; i++) { + if (min>arr[i]){ + index=i; + } +} +System.out.println("这个数组的最小值是"+arr[index]); +``` + +**2.需求:求出数组中索引与索引对应的元素都是奇数的元素** + +**分析:** + +​ 1、遍历数组 + +​ 2、判断索引是否是奇数(索引 % 2 != 0) + +​ 3、判断索引对应的元素是否是奇数(arr[索引] % 2 != 0) + +​ 4、满足条件输出结果 + +```java +int arr[]={5,2,3,4,1}; +int count=0; +System.out.println("索引值与对应元素都是奇数的数有:"); +for (int i = 0; i < arr.length; i++) { + if (i%2!=0 && arr[i]%2!=0){ + System.out.print(arr[i]+" "); + count++; + } +} +if(count==0){ + System.out.println("此条件没有符合的数字"); +} +``` + +**3.按要求在main方法中完成以下功能:** + +​ a. 定义一个长度为5的int型数组arr,提示用户输入5个1-60之间的数字作为数组元素 + +​ b. 生成2-10(范围包含2和10)之间的随机数num + +​ c. 遍历数组arr,筛选出数组中不是num倍数的元素并输出 + +​ **PS:输入的数组元素范围包括1和60,不需要代码判断** + +```java +Scanner sc = new Scanner(System.in); +Random r =new Random(); +int arr[]=new int[5]; +int count=0; +for (int i = 0; i < 5; i++) { + System.out.println("请输入第"+(i+1)+"个数字,要在1-60之间"); + arr[i]= sc.nextInt(); +} +int num=r.nextInt(8)+2; +System.out.print("是倍数的有:"); +for (int j = 0; j < arr.length; j++) { + if (arr[j]%num!=0){ + System.out.print(arr[j]+" "); + } +} +``` + +**4.有一个数组int[] arr = {9,1,3,4,54,56,23,22,20,43,45,78};,要求打印数组中能被6整除的元素。** + +```java +int arr[]={9,1,3,4,54,56,23,22,20,43,45,78}; +int count=0; +System.out.println("能被6整除的数有:"); +for (int i = 0; i < arr.length; i++) { + if(arr[i]%2==0){ + System.out.print(arr[i]+" "); + count++; + } +} +if (count==0){ + System.out.println("没有符合这个条件的数字"); +} +System.out.println(6%3); +``` + +**5.定义一个长度为20的数组,元素为20-40的随机数,要求判断指定元素在数组中出现的次**数,指定元素为键盘录入范围为20-40之间。 + +```java +Random r=new Random(); +int arr[]=new int[20]; +int count=0; +Scanner sc=new Scanner(System.in); +System.out.println("请输入指定数字,范围在20-40之间"); +int n= sc.nextInt(); +for (int i = 0; i < arr.length; i++) { + arr[i] = r.nextInt(21) + 20; + if (n == arr[i]) { + count++; + } +} +if(count==0){ + System.out.println("没有出现指定数字"); +}else{ + System.out.println("出现数字"+n+"出现了"+count+"次"); +} +``` + + + + + -- Gitee From f3e9cda48786036a0622db601e49be9b4f695ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=96=E5=BF=83=E5=A6=8D?= <2392642810@qq.com> Date: Tue, 4 Apr 2023 21:57:10 +0800 Subject: [PATCH 3/4] =?UTF-8?q?4.4=20=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230404 \347\273\203\344\271\240.md" | 1 - 1 file changed, 1 deletion(-) diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" "b/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" index e8d2bc6..8170b7b 100644 --- "a/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" +++ "b/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" @@ -116,7 +116,6 @@ for (int i = 0; i < arr.length; i++) { if (count==0){ System.out.println("没有符合这个条件的数字"); } -System.out.println(6%3); ``` **5.定义一个长度为20的数组,元素为20-40的随机数,要求判断指定元素在数组中出现的次**数,指定元素为键盘录入范围为20-40之间。 -- Gitee From 95f1b33bd3589e89f6178fc25a1b826257c5f630 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=96=E5=BF=83=E5=A6=8D?= <2392642810@qq.com> Date: Tue, 4 Apr 2023 21:58:33 +0800 Subject: [PATCH 4/4] =?UTF-8?q?4.4=20=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230404 \347\273\203\344\271\240.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" "b/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" index 8170b7b..1ace1d6 100644 --- "a/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" +++ "b/03 \350\265\226\345\277\203\345\246\215/20230404 \347\273\203\344\271\240.md" @@ -92,7 +92,7 @@ for (int i = 0; i < 5; i++) { System.out.println("请输入第"+(i+1)+"个数字,要在1-60之间"); arr[i]= sc.nextInt(); } -int num=r.nextInt(8)+2; +int num=r.nextInt(9)+2; System.out.print("是倍数的有:"); for (int j = 0; j < arr.length; j++) { if (arr[j]%num!=0){ -- Gitee