程序员

Java学习8:编程练习

2020-09-17  本文已影响0人  苦难_69e0

首先了解一个问题,应该怎么去编程?
1、解决一个问题的时候,可以先使用汉语描述思路。(养成好习惯)
2、复杂的问题可以“一步一步”去实现,没必要以下全部实现。
编程思想/思路都是一步一步分析,积累出来的。
编程最主要的就是写汉语思路。思路有了,代码就不远了。
把问题拆开,一个一个去解决一下。


练习题.png

第一题:
第一步:从1开始循环,循环到1000,先保证每一个数字都能取到。
第二步:在第一步的循环过程中,一个数字一个数字筛查,判断该数字是否是“不能被7整除的整数”。

public class Homework1{
    public static void main(String[] args){
        int sum = 0;
        for (int i = 1 ;i <=1000 ;i++ ){//从1循环到1000
            if(i%7!=0){//判断,如果i对7取余不等于0,求和
                sum = sum +i;//不能被7整除就累加/求和
            }
        }
        System.out.println("sum = " + sum);
    }
}

第二题:
有规律,除了1以外,奇数是减法,偶数是加法
第一种思路: 可以把所有的偶数求和,再把所有的奇数求和,然后偶数求和的结果减去奇数求和的结果再加上1
第二种思路:循环过程中,取出每个值,判断该数是偶数还是奇数,偶数是加,奇数就减。
这里我给出第二种思路的写法。

public class Homework2{
    public static void main(String[] args){
        int sum = 1;
        for (int i = 2 ; i <= 100 ; i ++){
            if(i % 2 == 0){//偶数
                sum +=i;
            }else{//奇数
                sum -=i;
            }
        }
        
        System.out.println("结果为:" + sum);
    }
}

第三题:
第一步:怎么在键盘上接收一个正整数
第二步:先不管乘法的事儿,先从输入的正整数取到1(逐次递减)

public class Homework3{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请输入一个正整数:");
        long jieCheng = 1;
        for ( int i = s.nextInt() ; i > 0 ; i-- ){
            jieCheng = jieCheng * i;
        }
        System.out.println("它的阶乘为:" + jieCheng);
    }
}

第四题:
重点题目: 主要练习,在外部打布尔标记
什么是因数?例如3*5=15 3和5都是15的因数
质数就是除了1和他本身就没有因数的数。

public class Homework4{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请输入一个正整数:");
        int num = s.nextInt();
        //可以考虑用一个布尔标记
        boolean zhiShu = true;//true表示是质数
        //判断该数字是不是质数
        for (int i = 2 ; i< num ;i++ ){
            if(num %i ==0){//余数是0表示不是质数,循环没必要执行了,为了效率,这里要终止循环
                zhiShu = false;
                break;
            }
        }
        System.out.println(num + (zhiShu ? "是" : "不是") + "质数");
    }
}

第五题:
空格的规律:第1行4个空格、第2行3个空格、第3行2个空格,第4行1个空格、第5行0个空格
星号的规律:第1行1个、第2行3个、第3行5个、第4行7个、第5行9个、行号 * 2 - 1

public class Homework5{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请输入一个正整数作为行数:");
        int rows = s.nextInt();
        for (int i = 1;i <= rows ;i++){//外循环控制总行数
            //在这里需要一行全部输出
            //输出空格以及“*”
            //输出空格循环
            for (int j = 0;j<rows - i ;j++ ){
                System.out.print(" ");
            }
            //输出星号循环
            for (int k = 0;k<i*2-1 ;k++ ){
                System.out.print("*");
            }
            //换行
            System.out.println();

        }
    }
}

第六题:
主要练习:while循环和
每一天都会得到2.5元
即使是花了6元,当天依然有2.5元的收入

public class Homework6{
    public static void main(String[] args){
        int day = 0;//天数的默认初始值为0
        double money = 0.0;
        while(true){
            day++;//天数加1
            money += 2.5;//钱数加2.5元
            if(day % 5 == 0 ){
                money -= 6.0;
            }
            //当money >= 100.0 的时候,循环结束
            if (money >= 100.0){
                break;
            }
        }
        System.out.println("小芳通过" + day + "天积攒了" + money + "元钱");
    }
}

第七题:
一个数如果恰好等于它的因子之和,这个数就是完数。
因子怎么找?
例如:10的因子怎么找
10 % 1 == 0
10 % 2 == 0
10 % 5 == 0
不算10本身
10的因子:1,2,5
1 + 2 + 5 = 8
10不是完数

public class Homework7{
    public static void main(String[] args){
        //第一步:先从1到1000,每个数字都取出来
        //1不属于完数,从2开始判断
        for (int i = 2;i <= 1000 ;i++ ){
            //第二步:在这里可以拿到i,那么此时应该判断i是否是一个完数
            //数字有了,接下来找这个数字的因子
            int sum = 0;
            for (int j = 1; j <= i / 2 ; j++ ){
                //假设这个数是6,j取到的值就是:1 2 3 4 5
                //但是实际上j只取了:1 2 3
                //取到一半就行
                if(i % j == 0){
                    //此时j就是因子。
                    //记得将因子j追加,累计。
                    sum += j;
                }
            }
            //以上for循环结束,表示:所有银子求和完毕了
            if (i == sum){
                //i是一个完数
                System.out.println(i);
            }
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读