diff --git "a/01 \351\231\210\346\266\233/20230328 \347\273\203\344\271\2401.md" "b/01 \351\231\210\346\266\233/20230328 \347\273\203\344\271\2401.md" new file mode 100644 index 0000000000000000000000000000000000000000..809829b18ee0ed57007c16291664399c375e5c99 --- /dev/null +++ "b/01 \351\231\210\346\266\233/20230328 \347\273\203\344\271\2401.md" @@ -0,0 +1,124 @@ +# 作业 + +## 第一题 + +```java +/* +1、判断一个字符数据是否是数字字符 + +分析: + +1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 + +2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 + +3、判断完成之后,打印判断的结果。 +*/ +public class a { + public static void main(String[] args) { + char a = 'a'; + if( a>='0' && a<='9'){ + System.out.println(a+"是数字字符"); + }else{ + System.out.println(a+"不是数字字符"); + } + } +} +``` + +## 第二题 + +```java +/* +2、判断一个字符数据是否是字母字符 + +分析: + +1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + +2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符,因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + +3、判断完成之后,打印判断的结果。 +*/ + public static void main(String[] args) { + char a = '1'; + if( (a>='a' && a<='z') || (a>='A' && a<='Z') ){ + System.out.println(a+"是字母字符"); + }else{ + System.out.println(a+"不是字母字符"); + } + } +``` + +## 第三题 + +```java +/* +3、判断指定的年份是否为闰年,请使用键盘录入 + +分析: + +1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + +2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 +*/ + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + int a = scanner.nextInt(); + if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){ + System.out.println(a+"是闰年"); + }else{ + System.out.println(a+"不是闰年"); + } + } +``` + +## 第四题 + +```java +/* +4、判断一个数字是否为水仙花数,请使用键盘录入 + +水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, +*/ + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + int a = scanner.nextInt(); + String b = "" + a; + int a1 = a % 10 ; + int a2 = a / 10 % 10 ; + int a3 = a / 100 % 10 ; + int a4 = a1*a1*a1+a2*a2*a2+a3*a3*a3; + if (b.length() == 3 && a4 == a ){ + System.out.println("是水仙花数"); + }else{ + System.out.println("不是水仙花数"); + } + } +``` + +## 第六题 + +```java +/* +5、判断一个5位数字是否为回文数,使用键盘录入** + +五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321  23732  56665 +*/ +public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + int a = scanner.nextInt(); + String b = "" + a; + int a1 = a % 10 ; + int a2 = a / 10 % 10 ; + int a3 = a / 1000 % 10 ; + int a4 = a / 10000 % 10 ; + if(b.length() != 5){ + System.out.println("不是五位数"); + }else if(a1 == a4 && a2 == a3){ + System.out.println("是回文数"); + }else{ + System.out.println("不是回文数"); + } +} +``` \ No newline at end of file diff --git "a/01 \351\231\210\346\266\233/20230328 \347\273\203\344\271\2402.md" "b/01 \351\231\210\346\266\233/20230328 \347\273\203\344\271\2402.md" new file mode 100644 index 0000000000000000000000000000000000000000..95223a73ade28c709e601445c76438af2a15dd61 --- /dev/null +++ "b/01 \351\231\210\346\266\233/20230328 \347\273\203\344\271\2402.md" @@ -0,0 +1,62 @@ +# 知识点 + +运算符 + +## 题目1(训练) + +身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + +​ 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 + +​ 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 + +现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少? + +```java +public class a { + public static void main(String[] args) { + double a = 177 ; + double b = 165 ; + System.out.println("儿子身高"+((a+b)*1.08/2)+"CM"); + System.out.println("女儿身高"+(a*0.923+b)/2+"CM") ; + } +} +``` + + + +## 题目2(训练) + +红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么? + +```java +public class a { + public static void main(String[] args) { + int a = 21; + int b = 24; + if (a*2+3 == b*2){ + System.out.println("对"); + }else{ + System.out.println("错"); + } + } +} +``` + +## 题目3(综合) + +某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱? + +```java +public class a { + public static void main(String[] args) { + int a = 24+8+3; + int b = 16+8+3; + if ( a >= 30 && a * 0.8 < b){ + System.out.println("最少要花" + a*0.8 + "元"); + }else{ + System.out.println("最少要花" + b + "元"); + } + } +} +``` \ No newline at end of file diff --git "a/01 \351\231\210\346\266\233/20230331 Java\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/01 \351\231\210\346\266\233/20230331 Java\345\237\272\347\241\200\350\257\255\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..14da0ef200a96f6cf09b6a86a21312f091ea76ff --- /dev/null +++ "b/01 \351\231\210\346\266\233/20230331 Java\345\237\272\347\241\200\350\257\255\346\263\225.md" @@ -0,0 +1,276 @@ +# 巩固题 + +## 1、强制类型转换练习 + +(1)先声明两个byte类型的变量b1,b2,并分别赋值为10和20,求b1和b2变量的和,并将结果保存在byte类型的变量b3中,最后输出b3变量的值 + +```java +public class A1 { + public static void main(String[] args) { + byte b1 = 10; + byte b2 = 20; + byte b3 = (byte)(b1+b2); + System.out.println(b3); + } +} +``` + +(2)先声明两个short类型的变量s1,s2,并分别赋值为1000和2000,求s1和s2变量的和,并将结果保存在short类型的变量s3中,最后输出s3变量的值 + +```java +public class A1 { + public static void main(String[] args) { + short s1 = 1000; + short s2 = 2000; + short s3 =(short)(s1+s2); + System.out.println(s3); + } +} +``` + +(3)先声明1个char类型的变量c1赋值为'a',再声明一个int类型的变量num赋值为5,求c1和num变量的和,并将结果将结果保存在char类型的变量letter中,最后输出letter变量的值。 + +```java +public class A1 { + public static void main(String[] args) { + char c1 = 'a'; + int num = 5; + char letter = (char)((int)c1+5); + System.out.println(letter); + } +} +``` + +(4)先声明两个int类型的变量i1,i2,并分别赋值5和2,求i1和i2的商,并将结果保存在double类型的变量result中,最后输出result变量的值。如何得到结果2.5呢? + +```java +public class A1 { + public static void main(String[] args) { + int i1 = 5; + int i2 = 2; + double result = (double)i1/i2; + System.out.println(result); + } +} +``` + +![image-20211219161207200](02_Java基础语法扩展作业图片/image-20211219161207200.png) + + + +## 2、按步骤编写代码,效果如图所示: + +![](02_Java基础语法扩展作业图片/4.jpg) + +1. 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果 +2. 定义两个int类型变量a3和a4,分别赋值12,13,判断变量是否为奇数,拼接输出结果 + +```java +public class A1 { + public static void main(String[] args) { + int a1 = 10; + int a2 = 11; + int a3 = 12; + int a4 = 13; + System.out.println("a1是偶数吗?"+(a1%2==0?true:false)); + System.out.println("a2是偶数吗?"+(a2%2==0?true:false)); + System.out.println("a3是奇数吗?"+(a3%2==1?true:false)); + System.out.println("a4是奇数吗?"+(a4%2==1?true:false)); + } +} +``` + +## 3、计算时间 + +案例:为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时? + +![1557879127503](02_Java基础语法扩展作业图片/6.png) + +1. 定义一个int类型变量hours,赋值为89 + +2. 定义一个int类型变量day,用来保存89小时中天数的结果 + +3. 定义一个int类型变量hour,用来保存89小时中不够一天的剩余小时数的结果 + +4. 输出结果 + + ```java + public class A1 { + public static void main(String[] args) { + int hours = 89 ; + int day = hours/24 ; + int hour = hours%24; + System.out.println("为抵抗洪水,战士连续作战89小时:"); + System.out.println("98是"+day+"天"+hour+"小时"); + } + } + ``` + + + + + +## 4、案例:今天是周2,100天以后是周几? + +![1557879464870](02_Java基础语法扩展作业图片/7.png) + +1. 定义一个int类型变量week,赋值为2 +2. 修改week的值,在原值基础上加上100 +3. 修改week的值,在原值基础上模以7 +4. 输出结果,在输出结果的时候考虑特殊值,例如周日 + +```java +public static void main(String[] args) { + int week = 2; + if ((week+100)%7 == 0){ + System.out.println("今天是周2,100天以后是周日"); + }else{ + System.out.println("今天是周2,100天以后是周"+(week+100)%7); + } +} +``` + + + +## 5、案例:求三个整数x,y,z中的最大值 + +![1557879847378](02_Java基础语法扩展作业图片/8.png) + +1. 定义三个int类型变量,x,y,z,随意赋值整数值 +2. 定义一个int类型变量max,先存储x与y中的最大值(使用三元运算符) +3. 再次对max赋值,让它等于上面max与z中的最大值(使用三元运算符) +4. 输出结果 + +```java +public class A1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int x = sc.nextInt(); + int y = sc.nextInt(); + int z = sc.nextInt(); + System.out.println((x>y?x:y)>z?(x>y?x:y):z); + } +} +``` + +## 6、案例:判断今年是否是闰年 + +闰年的判断标准是: + +​ 1)可以被4整除,但不可被100整除 + +​ 2)可以被400整除 + +![1557902649882](02_Java基础语法扩展作业图片/9.png) + +1. 定义一个int类型变量year,赋值为今年年份值 +2. 定一个一个boolean类型变量,用来保存这个年份是否是闰年的结果 +3. 输出结果 + +```java +public class A1 { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int year = sc.nextInt(); + System.out.println(year + (((year%4==0)&&year%100!=0) || year % 400 == 0?"是":"不是") + "闰年"); + } +} +``` + +## 7、华氏度转摄氏度 + +案例:小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 + +![1557903785834](02_Java基础语法扩展作业图片/1557903785834.png) + +![1557903814057](02_Java基础语法扩展作业图片/1557903814057.png) + +1. 定义一个double类型变量hua,存储华氏温度80 +2. 定义一个double类型变量she,存储摄氏温度,根据公式求值 +3. 输出结果 + +```java +public class A1 { + public static void main(String[] args) { + double hua = 80; + double she = (hua-32)/1.8; + System.out.println("华氏度80.0°F转为摄氏度是"+she+"°C"); + } +} +``` + + + +# 拔高题 + +## 第一题 + +```java +如下代码的计算结果是: +int i = 1; +i *= 0.2; +i++; +System.out.println("i=" + i); + +// i=1 +``` + +## 第二题 + +```java +如下代码的运算结果是: +int i = 2; +i *= i++; + +int j = 2; +j *= j+1; + +int k = 2; +k *= ++k; + +System.out.println("i=" + i); +System.out.println("j=" + j); +System.out.println("k=" + k); + +// i=4 +// j=6 +// k=6 +``` + +## 第三题 + +```java +如下代码的运算结果是: +int a = 3; +int b = 1; +if(a = b){ + System.out.println("Equal"); +}else{ + System.out.println("Not Equal"); +} +// 报错 +``` + +## 第四题 + +```java +如下代码的运算结果是: +int a = 8, b = 3; +System.out.println(a>>>b); +System.out.println(a>>>b | 2); + +// 1 +// 3 +``` + +## 第五题 + +如何用最有效的的方法计算2乘以8 + +```java +public class A1 { + public static void main(String[] args) { + System.out.println(2*8); + } +} +``` diff --git "a/01 \351\231\210\346\266\233/20230401 \346\265\201\347\250\213\350\257\255\345\217\245\347\273\203\344\271\240.md" "b/01 \351\231\210\346\266\233/20230401 \346\265\201\347\250\213\350\257\255\345\217\245\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..6e38f1db9767d28dd11fd73060afbac99eaecc5a --- /dev/null +++ "b/01 \351\231\210\346\266\233/20230401 \346\265\201\347\250\213\350\257\255\345\217\245\347\273\203\344\271\240.md" @@ -0,0 +1,168 @@ +switch判断语句 + +## 题目1 + +模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果。 + +要求: + +​ 键盘录入三个整数,其中前两个整数代表参加运算的数据,第三个整数为要进行的运算(1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算),演示效果如下: + +​ 请输入第一个整数: 30 + +​ 请输入第二个整数: 40 + +​ 请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法): 1 + +​ 控制台输出:30+40=70 + +### 训练提示 + +1. 用户录入了数据之后,用什么知识点去判断加减乘除四种不同的操作? + +### 解题方案 + +1. 使用switch判断语句完成。 + +### 操作步骤 + +1. 使用键盘录入三个变量。 +2. 使用switch判断语句对第三个变量进行判断,匹配要执行的操作。 +3. 在每一个case中分别对第一个变量和第二个变量进行不同的操作。 + +```java +import java.util.Scanner; + +public class A1 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + System.out.println("请输入第一个整数"); + int a = scanner.nextInt(); + System.out.println("请输入第二个整数"); + int b = scanner.nextInt(); + System.out.println("请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法):"); + int c = scanner.nextInt(); + switch (c){ + case 1: + System.out.println(a+"+"+b+"=" + (a+b)); + break; + case 2: + System.out.println(a+"-"+b+"=" + (a-b)); + break; + case 3: + System.out.println(a+"*"+b+"=" + (a*b)); + break; + case 4: + System.out.println(a+"÷"+b+"=" + (a/b)); + break; + default: + System.out.println("不支持请重新输入"); + } + } +} +``` + +if判断语句 + +## 题目2(训练) + +李雷想买一个价值7988元的新手机,她的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新的优惠,把她的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,李雷要不要以旧换新?请在控制台输出。 + +### 训练提示 + +1. 用什么知识点能够对不同购买方式的价格做判断? + +### 解题方案 + +1. 使用if...else语句判断 + +### 操作步骤 + +1. 计算不使用以旧换新时的花费。 +2. 计算使用以旧换新时的花费。 +3. 使用if..else语句判断哪种方式更省钱,并输出结果 + +```java +public class A1 { + public static void main(String[] args) { + int a = 7988; + System.out.println(7988-1500>7988*0.8?"要以旧换新":"不要以旧换新"); + } +} +``` + +循环语句 + +## 题目3(训练) + +已知2019年是猪年,请在控制台输出从1949年到2019年中所有是猪年的年份。 + +### 训练提示 + +1. 1949到2019有很多年?逐个判断这么多年份肯定要用循环。 +2. 用什么条件来判断是否是猪年? + +### 解题方案 + +1. 使用for循环逐年判断,根据2019是猪年这个条件,使用if来判断其他是猪年的年份。 + +### 操作步骤 + +1. 定义for循环,1949到2019的年份是循环次数。 +2. 对每个年份逐个判断,如果年份和2019的差值是12的倍数,说明这年是猪年 +3. 打印符合条件的年份 + +```java +public class A1 { + public static void main(String[] args) { + for (int i =1949 ; i<=2019 ;i++){ + if(i%12==2019%12){ + System.out.println(i+"年是猪年"); + } + } + } +} +``` + + + +## 题目4(训练) + +有一个输出语句System.out.print("@")。使用这个语句,在控制台打印出一个五行的三角形,效果如下: +​ @ +​ @@ +​ @@@ +​ @@@@ +​ @@@@@ + +### 训练提示 + +1. 已知条件中只有一个@,如何产生多行的符号? +2. 每行的打印个数不同,循环的次数如何控制? + +### 解题方案 + +1. 使用for循环的嵌套完成。 + +### 操作步骤 + +1. 定义循环执行5次代表一共5行 +2. 定义内层循环执行i次代表每行打印的个数是i +3. 在内层循环中输出符号 +4. 每行结束之后执行换行操作 + +```java +public class A1 { + public static void main(String[] args) { + for (int i =1 ; i<=5 ;i++){ + for (int j =1 ; j<=i ;j++){ + System.out.print("@"); + } + System.out.println(); + } + } +} +``` + + + diff --git "a/01 \351\231\210\346\266\233/20230404 \346\225\260\347\273\204\344\275\234\344\270\232 A.md" "b/01 \351\231\210\346\266\233/20230404 \346\225\260\347\273\204\344\275\234\344\270\232 A.md" new file mode 100644 index 0000000000000000000000000000000000000000..423b4d4d21ad98b520c07595247cb203cb542908 --- /dev/null +++ "b/01 \351\231\210\346\266\233/20230404 \346\225\260\347\273\204\344\275\234\344\270\232 A.md" @@ -0,0 +1,113 @@ +## 编码题 + +**1.定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值** + +**操作步骤:** + +​ 1.定义5个元素数组 + +​ 2.可以使用初始化数组的两种方式之一为数组元素赋值 + +​ 3.遍历数组求数组中的最小值 + +```java +int[] a={4,12,31,123,34}; +int min = a[0]; +for (int i=0;ia[i]) { + min=a[i]; + } +} +System.out.println(min); +``` + +**2.需求:求出数组中索引与索引对应的元素都是奇数的元素** + +**分析:** + +​ 1、遍历数组 + +​ 2、判断索引是否是奇数(索引 % 2 != 0) + +​ 3、判断索引对应的元素是否是奇数(arr[索引] % 2 != 0) + +​ 4、满足条件输出结果 + +```java +int[] a={4,12,31,123,34}; +for (int i=0;i= 1 && e <= 60) { + arr[i] = e; + i++; + } else { + System.out.println("?"); + continue; + } +} +for (int i=0;i