动力节点 Java 基础练习题(day09)

 

B站 av88459449 162P

问题

1. 计算1000以内所有不能被7整除的整数之和

2. 计算 1+2-3+4-5+6-7...+100 的结果

3. 从控制台输入一个正整数, 计算概述的阶乘. 例如输入5, 阶乘为 5*4*3*2*1

4. 从控制台接收一个正整数, 判断该数字是否为质数

质数: 在大于1的自然数中, 除了1和它本身以外不再有其它因数的自然数

5. 从键盘接收一个正整数, 该正整数作为行数, 输出以下图形

例如, 输入5, 打印图形

    *

   ***

  *****

 *******

*********

6. 小芳的妈妈每天给她2.5元钱, 她都会存起来, 每当这天是存钱的第5天或者5的倍数的话, 她就会花6元钱. 请问, 经过多少天, 小芳可以存到100元钱.

7. 一个数如果恰好等于它的因子之和, 这个数就是完数, 例如 6=1+2+3, 编程找出1000内的所有完数

8. 给一个不多于5位的正整数

要求:

* 求它是几位数

* 逆序打印出各位数字

 

对应作业

1.

public class Homework00 {
    public static void main(String[] args) {
        int result = 0;
        for (int i = 1; i <= 1000; i++) {
            if (i % 7 != 0) {
                result += i;
            }
        }
        System.out.println("结果是: "+result);
    }
}

2.

public class Homework01 {
    public static void main(String[] args) {
        int result = 1;
        for (int i = 2; i <= 100; i++) {
            if (i%2 == 0) {
                result += i;
            } else {
                result += i * -1;        // 这里老师用的写法是 result -= i;
            }
        }
        System.out.println("结果是: "+result);
    }
}

3.

import java.util.Scanner;

public class Homework02 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入您要计算的正整数: ");
        int input = s.nextInt();
        int result = 1;
        if (input > 0) {
            for (; input > 0; input--) {
                result *= input;
            }
        } else {
            System.out.println("您的输入似乎不正确");
            return;                                    // 这里我一开始用的 break , 不对哦
        }

        System.out.println("结果是: "+result);
    }
}

4.

import java.util.Scanner;

public class Homework03 {
    public static void main(String[] args) {
/*
    这题老师用了布尔标记, 在这边加一个 boolean isPrime = true
*/
        Scanner s = new Scanner(System.in);
        System.out.print("请输入您要判断的正整数: ");
        int input = s.nextInt();


        for (int i = 2; i < input; i++) {
            if (input % i == 0) {
                System.out.println(input+" 不是质数");
                return;
            }
        }

        System.out.println(input+" 是质数");
    }
}

5.

public class Homework04 {
    public static void main(String[] args) {
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请指定您要打印的行数: ");
        int line = s.nextInt();

        for (int i = 1; i <= line; i++) {
            for (int j = line - i; j > 0; j--) {
                System.out.print(" ");
            }
            for (int j = 1; j < i * 2; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

6.

public class Homework05 {
    public static void main(String[] args) {
        int day = 1;        // 因为 for 循环没有初始条件, 所以直接从 1 开始, 我一开始用的 0
        double total = 0;
        for (;; day++) {
/*
    老师用的是 while 循环
    写法如 while(total < 100)
*/
            total += 2.5;

            if (total >= 100) {
            /*
                这里要用 >= , 我一开始用了 >
                同时注意钱数的判断放在扣钱前面, 因为一旦存够, 条件就已经满足
            */
                System.out.println("这是第 "+day+" 天, 小芳存够了 100 元.");
                return;
            }

            if (day % 5 == 0) {
                total -= 6;
            }

        }

    }
}

7.

public class Homework06 {
    public static void main(String[] args) {
        System.out.println("1000以内的完数有: ");
        for (int i = 2; i <= 1000; i++) {        // 1 不是完数, 所以从 2 开始
            int sum = 0;
            for (int j = 2; j < i; j++) {        // 这里老师用了 j < i/2 , 测试了下, 确实可以
                if (i % j == 0) {
                    sum += j;
                    }

            }
            if (i == 1+sum) {
                System.out.println(i+" ");
            }
        }
    }
}

8.

public class Homework07 {
    public static void main(String[] args) {
        java.util.Scanner s = new java.util.Scanner(System.in);
        int input = s.nextInt();

        int w5 = input / 10000;
        int w4 = (input - w5 * 10000) / 1000;
        int w3 = (input - w5 * 10000 - w4 * 1000) / 100;
        int w2 = (input - w5 * 10000 - w4 * 1000 - w3 * 100) / 10;
        int w1 = input - w5 * 10000 - w4 * 1000 - w3 * 100 - w2 * 10;

        if (w5 > 0) System.out.println("五位数");
        else if (w4 > 0) System.out.println("四位数");
        else if (w3 > 0) System.out.println("三位数");
        else if (w2 > 0) System.out.println("两位数");
        else System.out.println("一位数");

        System.out.println(""+w1+(w2==0?"":w2)+(w3==0?"":w3)+(w4==0?"":w4)+(w5==0?"":w5));
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值