系列文章目录
P114 0113_韩顺平Java_嵌套分支课后练习(出票系统)
P119|P120 0118|0119_韩顺平Java_switch课堂练习1,2(第二题、第三题)
P134|P135 0133|0134__韩顺平Java_多重循环练习1,2
P137 0136_韩顺平Java_空心金字塔
P142|P143 0141|0142_韩顺平Java_break课堂练习1,2
P148-P153 0147-0152_韩顺平Java_本章作业1-6
P170|P171 0169|0170_韩顺平Java_数组扩容2,数组缩减
P174 0173_韩顺平Java_冒泡代码实现
作业
作业1
思路分析
1. 定义 double money 保存 100000
2. 根据题的要求,我们分析出来有三种情况
money > 50000
money >=1000 && money <= 50000
money < 1000 此时以无法支付1000元,无法通过路口,退出循环
3. 使用多分支 if-elseif-else
4. while+break[money < 1000], 同时使用一个变量count来保存通过路口
代码
(1)自己写的(用了两个while,没有break,不符合题意)
代码如下:
package studyhan.demo1;
public class Hello{
public static void main(String[] args) {
double money = 100000;
int count = 0;
while (money > 50000){
money -= money*0.05;
count++;
}
while (money <= 50000 && money >= 1000){
money -= 1000;
count++;
}
System.out.println("经过的路口次数:"+ count);
}
}
结果如下:
(2)老师写的(whlie+if)
代码如下:
public class Homework01 {
//编写一个main方法
public static void main(String[] args) {
double money = 100000;//还有多少钱
int count = 0; //累积过的路口
while(true) { //无限循环
if(money > 50000) { //过路口
//money = money - money * 0.05;
money *= 0.95; //过了这个路口后,还有这么多钱
count++;
} else if(money >=1000) {
money -= 1000;
count++;
} else { //钱不够1000
break;
}
}
System.out.println("100000 可以过 " + count + " 路口..");
}
}
作业2
代码
自己写的
代码如下:
package studyhan.demo1;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
Scanner myscanner = new Scanner(System.in);
while (true) {
System.out.println("是否想判断整数?y/n");
String answer = myscanner.next();
if("n".equals(answer)){
break;
}
System.out.println("请输入一个整数");
int num = myscanner.nextInt();
if (num > 0) {
System.out.println("该数大于0");
} else if (num < 0) {
System.out.println("该数小于0");
} else {
System.out.println("该数等于0");
}
}
}
}
结果如下:
作业3
代码
自己写的
代码如下:
package studyhan.demo1;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
Scanner myscanner = new Scanner(System.in);
while (true) {
System.out.println("是否想判断是否为闰年?y/n");
String answer = myscanner.next();
if("n".equals(answer)){
break;
}
System.out.println("请输入一个年数");
int num = myscanner.nextInt();
if (num % 4 == 0 && num % 100 != 0 ||num % 400 == 0) {
System.out.println("该年是闰年");
} else {
System.out.println("该年不是闰年");
}
}
}
}
结果如下:
作业4
思路分析
代码
(1)自己写的(自定义了一个求整数立方的函数,Math.pow虽能求但是是double类型的)
代码如下:
package studyhan.demo1;
import java.util.Scanner;
public class Hello{
//定义一个求三次方的函数cube,Math.pow虽能求但是是double类型的
public static int cube(int number){
return number*number*number;
}
public static void main(String[] args) {
Scanner myscanner = new Scanner(System.in);
while (true) {
System.out.println("是否想判断一个整数是否为水仙花数?y/n");
String answer = myscanner.next();
if("n".equals(answer)){
break;
}
System.out.println("请输入一个整数:");
int num = myscanner.nextInt();
if(num / 100 >= 1 && num / 100 <= 9){
int num1 = cube(num / 100) + cube((num % 100) / 10)
+ cube((num % 100) % 10);
if(num1 == num){
System.out.println("该数是水仙花数" );
}else {
System.out.println("该数不是水仙花数" );
}
}else {
System.out.println("请输入一个三位整数!");
}
}
}
}
结果如下:
(2)老师写的
代码如下:
public class Homework04 {
//编写一个main方法
public static void main(String[] args) {
int n = 154;
int n1 = n / 100;
int n2 = n % 100 / 10;
int n3 = n % 10;
if(n1 * n1 * n1 + n2 * n2 * n2 + n3 * n3 * n3 == n) {
System.out.println(n + "是水仙花数");
} else {
System.out.println(n + "不是水仙花数");
}
}
}
作业5
答案:没有任何输出
作业6
代码
(1)自己写的
代码如下:
package studyhan.demo1;
public class Hello{
public static void main(String[] args) {
int min = 1, max = 100,count = 0;
for(int i = min;i <= max;i ++){
if(i % 5 != 0){
System.out.print(i + "\t");
count++;
if(count % 5 == 0){
System.out.println("");
}
}
}
}
}
结果如下:
(2)老师写的
代码如下:
public class Homework06 {
//编写一个main方法
public static void main(String[] args) {
int count = 0; //统计输出的个数
for(int i = 1; i <= 100; i++) {
if(i % 5 != 0) {
count++;
System.out.print(i + "\t");
//判断, 每满5个,就输出一个换行..
if(count % 5 == 0) {
System.out.println();
}
}
}
}
}
作业7
代码
(1)自己写的
代码如下:
package studyhan.demo1;
public class Hello{
public static void main(String[] args) {
int i = 97;
for(;i <= 122;i ++){
System.out.print((char)i + "\t");
}
System.out.println();
for(;i-1 >= 97;i--){ //i-1是因为上一个循环在结束时为123,故需要-1才是122(a)
System.out.print((char)(i-1-32) + "\t");
}
}
}
结果如下:
(2)老师写的
代码如下:
public class Homework07 {
//编写一个main方法
public static void main(String[] args) {
//输出小写的a-z以及大写的Z-A
//考察我们对 a-z编码和 for的综合使用
//思路分析
//1. 'b' = 'a' + 1 c = 'a' + 2
//2. 使用for搞定
for(char c1 = 'a'; c1 <= 'z'; c1++) {
System.out.print(c1 +" ");
}
System.out.println("============");
//灵活的使用,编程..
for(char c1 = 'Z'; c1 >= 'A'; c1--) {
System.out.print(c1 +" ");
}
}
}
作业8
思路分析
1. 1-1/2+1/3-1/4…..1/100 = (1/1)-(1/2)+(1/3)-(1/4)...1/100
2. 从上面的分析我们可以看到
(1) 一共有100数 , 分子为1 , 分母从1-100
(2) 还发现 当分母为奇数时,前面是 +, 当分母是偶数时,前面是-
3. 我们可以使用 for + 判断即可完成
4. 把结果存放到 double sum
5. 这里有一个隐藏的陷阱,要把 公式分子 1 写出1.0 才能得到精确的小数
代码
(1)自己写的
代码如下:
package studyhan.demo1;
public class Hello{
public static void main(String[] args) {
double sum = 0;
for(int i = 1;i <= 100;i ++){
sum += Math.pow(-1,i-1)*1/i; //不用写1.0原因是从左到右运算, Math.pow函数已返回double类型
}
System.out.println("和为:" + sum);
}
}
结果如下:
(2)老师写的
代码如下:
public class Homework08 {
//编写一个main方法
public static void main(String[] args) {
double sum = 0;
for(int i = 1; i <= 100; i++) {
//判断是奇数还是偶数,然后做不同的处理
if( i % 2 != 0) {//分母为奇数
sum += 1.0/i;
} else { //分母我偶数
sum -= 1.0/i;
}
}
System.out.println("sum=" + sum);
}
}
作业9
思路分析
1. 一共有100项相加
2. 每一项的数字在逐渐增加
3. 很像一个双层循环
i 可以表示是第几项,同时也是当前项的最后一个数
4. 使用 sum 进行累计即可
代码
(1)自己写的
①代码如下:
package studyhan.demo1;
public class Hello{
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i <= 100;i ++){
sum += i;
for(int j = 1;j < i && j > 0;j ++){ //内层循环递增
sum += j;
}
}
System.out.println("和为:" + sum);
}
}
结果如下:
②代码如下:
package studyhan.demo1;
public class Hello{
public static void main(String[] args) {
int sum = 0;
for(int i = 1;i <= 100;i ++){
sum += i;
for(int j = i - 1;j > 0;j --){ //内层循环递减
sum += j;
}
}
System.out.println("和为:" + sum);
}
}
结果如下:
(2)老师写的
代码如下:
public class Homework09 {
//编写一个main方法
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 100; i++) {
for(int j = 1;j <= i; j++) {//内层对1-i进行循环
sum += j;
}
}
System.out.println("sum=" + sum);
}
}