逻辑题练习-if-for-数组

if-else练习:

9.已知小红同学有25元,她攒了几天钱之后发现自己的现在的钱比原来的2倍还多出10块。而小蓝同学有30元,他攒了几天钱之后发现自己的钱正好是原来的2倍。于是小胖说:小红和小蓝现在的钱一样多,请问,他说的对吗?  (这个题用不到if-esle分支, 只会用到+-*/ %等符号)

10.练习1: 判断-个四位数abcd是否等于(ab + cd) * (ab +cd)
举例说明2025=(20+ 25)*(20+ 25)

11.练习2:某小伙想定一份外卖, 商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?

12.练习3:接收用户输入的3个整数,并将它们的最大值作为结果输出
 

循环练习:


1.练习题: 鸡兔同笼问题(穷举法)
已知:鸡兔共35只,共94只脚,那么鸡和兔各几只?

2.练习题:求数字阶乘(for循环版)
需求:接收用户输入的数字,计算该数字的阶乘结果
已知:负数不可以有阶乘,0的阶乘结果是1,
5 ! = 5 x 4 x 3 x 2 x 1

3.练习题:打印100以内除了尾数为3,5,7的所有数


4.练习题:求质数:接收用户输入的数字,判断是否为质数
质数的概念:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,也称为素数
规定:1既不是质数,也不是合数

5.练习题:生成一个数组,每个空间里存储随机数,将这个数组的元素,
用冒泡排序降序排列,然后打乱顺序后输出。

6.练习题:打印1--1000以内所有的数字(用continue跳过完数)
完数:如果一个数等于其所有因子之和,我们就称这个数为"完数",比如6的因子为1,2,3 6 = 1 + 2 + 3,那么6就是一个完数

7.已知:斐波那契数列的前几个数分别为0,1,1,2,3,5…从第三项开始,每一项都等于前两项的和.请接收用户输入的整数n,求出此数列的前n项.

8.假设一个简单的ATM机的取款过程是这样的:
首先提示用户输入密码(password),最多只能输入三次,
超过3次则提示用户“密码错误,请取卡”结束交易。
如果用户密码正确,再提示用户输入取款金额(amount),
ATM机只能输出100元的纸币,一次取钱数要求最低100元,最高1000元。
若用户输入的金额符合上述要求,则打印输出用户取得钱数,
最后提示用户“交易完成,请取卡”,否则提示用户重新输入金额。
假设用户密码是111111,请编程实现。

9.公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?


10.有一个棋盘,有64个方格,在第一个方格里面放1粒芝麻重量是0.00001kg,第二个里面放2粒,第三个里面放4,求棋盘上放的所有芝麻的重量

https://www.cnblogs.com/0328dongbin/p/8798621.html

for循环练习2:

发黄金问题:

逻辑题练习-if-for-数组_第1张图片

按照页码查询数据案例

逻辑题练习-if-for-数组_第2张图片

数组+循环练习题:
1.定义一个String数组长度用Scanner的nextInt方法输入, 然后用Scanner的next()方法给此数组输入类似"a"  "b" 元素只包含一个小写字母的数据(还可以输入?)。
 只能输入小写字母和问号,如果不符合输入要求就提示"输入数据不符合要求,请重新输入",并用用Scanner的next()方法让用户重新输入。

2.输入完成后将数组中的所有?替换成小写字母,要求不能和原有数组中的元素重复

提示:字符串比较是否相等用String文件(类)类的equals方法,举例
     String s1="hello";    String s2="hello2";     System.out.println(s1.equals(s2));


import java.util.Arrays;
import java.util.Scanner;

public class StringArr {
    public static void main(String[] args) {
        //定义一个数组长度用nextInt方法输入
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入数组长度:");
        int length = sc.nextInt();
        String[] arr = new String[length];

        //用next()给数组赋值
        for (int i = 0; i < arr.length; i++) {
            System.out.println("请输入第" + (i + 1) + "个数据");
            String input = sc.next();

            //只能输入小写字母和问号
            while (!input.matches("[a-z?]")) {
                System.out.println("输入数据不符合要求,请重新输入");
                input = sc.next();
            }
            arr[i] = input;
        }

        System.out.println(Arrays.toString(arr));

        //定义一个方法,找出从a~z中第一个和原有数组中都不相同的字母
        String target = findDifferentWord(arr);

        //将数组中的所有?替换成小写字母
        for (int i = 0; i < arr.length; i++) {
            if (arr[i].matches("[?]")) {
                arr[i] = target;
            }
        }
        System.out.println(Arrays.toString(arr));
    }



    //找出从a~z中第一个和原有数组中都不相同的字母
    public static String findDifferentWord(String[] arr) {
        //定义一个字符串,从a-z
        String words = "abcdefghijklmnopqrstuvwxyz";

        for (int i = 0; i < words.length(); i++) {
            String target = String.valueOf(words.charAt(i));
            for (int j = 0; j < arr.length; j++) {
                if (target.equals(arr[j])) {
                    break;
                }
                if (j == arr.length - 1) {
                    return target;
                }
            }
        }
        //如果字符串数组的元素已经包含了从a~z的所有小写字母,则返回"!"
        return "!";
    }
}


10. 验证角谷猜想:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,
得到一个新的自然数后按照上面的法则继续计算,若干次后得到的结果必然为1。
要求:读入一个自然数,输出计算的步骤。
 

package chap4;

import java.util.Scanner;

/*
* 给一个自然数,偶数除以2,奇数则乘以3加1,得到一个新的自然数继续上面步骤计算
* */
public class Work10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数");
        int sum= scanner.nextInt();
        while(sum!=1){
            if (sum % 2 == 0) {
                System.out.print(sum);
                sum/=2;
                System.out.println("/"+2+"="+sum);
            }else if (sum%2 !=0){
                System.out.print(sum);
                sum=sum*3+1;
                System.out.println("*"+3+"+"+1+"="+sum);
            }
        }
    }
}

将一个任意位数的整数的每一位放入到一个数组中:

        int n=9586321;
        int[] a = new int[1];
        for(int i=0;;i++){
            a[i] = n%10;   //除以10取余数就是求个位
            n=n/10;        //将当前数字变小
            if(n<=0){
                break;
            }else{
                a=Arrays.copyOf(a,a.length+1);
            }
        }
        System.out.println(Arrays.toString(a));

三天打鱼两天晒网案例:

 * 2000 1 1 表示开始打鱼 三天打鱼两天晒网
 * 求输入一个年份 表示年月日是打鱼还是晒网

package qq;

import javax.swing.JOptionPane;
import java.util.Scanner;

/*
 * 2000 1 1 表示开始打鱼 三天打鱼两天晒网
 * 求输入一个年份 表示年月日
 * 是打鱼还是晒网
 * */

public class ThreeDaysFishing {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = scanner.nextInt();
        System.out.println("请输入月份");
        int month = scanner.nextInt();
        System.out.println("请输入日");
        int day = scanner.nextInt();

        //定义总天数并计算
        int totalDays;
        totalDays = calculateTotalDays(year, month, day);

        //判断这天是在打鱼还是晒网
        String fishingOrNet = isFishing(totalDays);

        //打印结果
        System.out.println(year + "年" + month + "月" + day + "日" + fishingOrNet);
    }

    
    
    //计算总天数
    private static int calculateTotalDays(int year, int month, int day) {
        int totalDays = 0;

        //计算年代表的天数
        for (int i = 2000; i < year; i++) {
            //如果是闰年,加366
            if ((i % 4 == 0 && i % 100 != 0 || i % 400 == 0)) {
                totalDays += 366;
            } else {//平年加365
                totalDays += 365;
            }
        }

        //计算月代表的天数
        for (int i = 1; i < month; i++) {
            switch (i) {
                case 4:
                case 6:
                case 9:
                case 11:
                    totalDays += 30;
                    break;
                //2月单独判断
                case 2:
                    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                        totalDays += 29;
                    } else {
                        totalDays += 28;
                    }
                    break;
                default:
                    totalDays += 31;
            }
        }

        //计算日代表的天数
        totalDays += day;
        return totalDays;
    }
    
    

    //根据总天数判断这一天在打鱼还是晒网
    private static String isFishing(int totalDays) {System.out.println(totalDays);
        if (totalDays % 5 == 0 || totalDays % 5 == 4) {System.out.println(totalDays % 5 == 0);
            return "这天在晒网";
        }
        return "这天在打鱼";
    }
}

水仙花数:

import java.util.Scanner;//2.

public class Flower {
    public static void main(String[] args) {

        //判断一个数是否是水仙花数
        int x=534;
        int h=x/100;
        int t=x%100/10;
        int o=x%10;
        System.out.println(h);
        System.out.println(t);
        System.out.println(o);

        //判断100-999之间所有的水仙花数
        for(int i=100;i<=999;i++){
            int hundreds=i/100;
            int ten=i%100/10;
            int one=i%10;
            System.out.println(i+": "+hundreds+"-"+ten+"-"+one);
        }

    }
}







你可能感兴趣的:(java基础,for循环)