P148-P153 0147-0152_韩顺平Java_本章作业1-6

系列文章目录

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);  
	}
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值