Java基本语法(下): 程序流程控制

Java基本语法(下): 程序流程控制

主要讲解宋老师里面课后题(无答案的),以便后期复习使用。(可以私信我要文档资料)

代码题:

  1. 实现对三个整数进行排序,输出时按照从小到大的顺序输出。
public class Exer1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入第一个整数:");
        int num1 = scanner.nextInt();
        System.out.println("请输入第二个整数:");
        int num2 = scanner.nextInt();
        System.out.println("请输入第三个整数:");
        int num3 = scanner.nextInt();

        if (num1 >= num2) {
            if (num3 >= num1)
                System.out.println(num2 + "," + num1 + "," + num3);
            else if (num3 <= num2)
                System.out.println(num3 + "," + num2 + "," + num1);
            else
                System.out.println(num2 + "," + num3 + "," + num1);


        } else {
            if (num3 >= num2)
                System.out.println(num1 + "," + num2 + "," + num3);
            else if (num3 <= num1)
                System.out.println(num3 + "," + num1 + "," + num2);
            else
                System.out.println(num1 + "," + num3 + "," + num2);

        }
    }


}
  1. 编写程序,判断给定的某个年份是否是闰年
    闰年的判断规则如下:
    (1)若某个年份能被4整除但不能被100整除,则是闰年。
    (2)若某个年份能被400整除,则也是闰年。

提示:
if((year % 4 ==0 && year % 100 != 0) || year % 400 == 0){}

public class Exer2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = scanner.nextInt();
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println(year + "年是闰年");
        } else
            System.out.println(year + "年是不是闰年");
    }
}
  1. 要求用户输入两个数a和b,如果a能被b整除或者a加b大于1000,则输出a;否则输出b。
public class Exer3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个数a");
        int a = scanner.nextInt();
        System.out.println("请输入第二个数b");
        int b = scanner.nextInt();
        if(a % b == 0 || a + b > 1000){
            System.out.println("输出为"+a);
        }else
            System.out.println("输出为"+b);
    }
}
  1. 使用条件结构实现,如果用户名等于字符‘青’,密码等于数字‘123’,就输出“欢迎你,青”,否则就输出“对不起,你不是青”。
    提示:先声明两个变量,一个是char型的,用来存放用户名,一个是int型的,用来存放密码。
public class Exer4 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名");
        String s = scanner.next();
        char c = s.charAt(0);
        System.out.println("请输入密码");
        int pw = scanner.nextInt();
        if(c == '青' && pw == 123){
            System.out.println("欢迎你,青");
        }else
            System.out.println("对不起,你不是青");
    }
}
  1. 打印1-100之间13的倍数,使用for循环
public class Exer5 {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            if (i % 13 == 0)
                System.out.println(i);
        }
    }
}
  1. 使用双重循环打印20 * 8的矩形,使用for循环实现
public class Exer6 {
    public static void main(String[] args) {
        for (int i = 0; i < 8 ; i++) {
            for (int j = 0; j <20 ; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
  1. 用for循环计算1000以内偶数的和
public class Exer7 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 0; i <= 1000; i++) {
            if (i % 2 == 0) {
                sum += i;
            }
        }
        System.out.println("1000以内偶数的和为" + sum);
    }
}
  1. 输入长和宽,输出长方形,如:输入4和3, 将输出如下图形
    ####
    ####
    ####
public class Exer8 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入长");
        int i = scanner.nextInt();
        System.out.println("输入宽");
        int j = scanner.nextInt();
        for (int k = 0; k < j; k++) {
            for (int l = 0; l < i; l++) {
                System.out.print("#");
            }
            System.out.println();
        }
    }
}
  1. 输入高度,输出直角三角形。如:输入4, 将输出如下图形
    #
    ##
    ###
    ####
public class Exer9 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入高度");
        int i = scanner.nextInt();
        for (int j = i; j > 0; j--) {
            for (int k = 0; k < i - j + 1; k++) {
                System.out.print("#");
            }
            System.out.println();

        }

    }
}
  1. 输入高度,输出倒直角三角形。如:输入4, 将输出如下图形
    ####
    ###
    ##
    #
public class Exer10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入高度");
        int i = scanner.nextInt();
        for (int j = 0; j < i; j++) {
            for (int k = 0; k < i - j ; k++) {
                System.out.print("#");
            }
            System.out.println();

        }

    }
}
  1. 打印1-100之间非13的倍数,使用continue语句
public class Exer11 {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            if (i % 13 == 0) {
                continue;
            }
            System.out.println(i);
        }
    }
}
  1. 输出从1到100之间所有不能被3整除的数;并输出这些整数的和
public class Exer12 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 100 ; i++) {
            if(i % 3 != 0){
                sum += i;
            }
        }
        System.out.println("和为"+sum);
    }
}
  1. 打印如下的图形:菱形2
    在这里插入图片描述
public class Exer13 {

    public static void main(String[] args) {
        //上半部分
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5 - i; j++) {
                System.out.print("*");
            }
            for (int j = 0; j < i; j++) {
                System.out.print("  ");
            }
            for (int j = 0; j < 5 - i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        //下半部分
        for (int i = 4; i > 0; i--) {
            for (int j = 0; j < 5 - i + 1; j++) {
                System.out.print("*");
            }
            for (int j = 0; j < i - 1; j++) {
                System.out.print("  ");
            }
            for (int j = 0; j < 5 - i + 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }
}
  1. 编写程序,打印100-200之间的质数
public class Exer14 {
    public static void main(String[] args) {
        for (int i = 100; i <= 200; i++) {
            boolean isFlag = true;
            for (int j = 2; j < Math.sqrt(i); j++) {
                //小优化:因为如果它不是质数,
                // 那么它一定可以表示成两个数(除了1和它本身)相乘,
                // 这两个数必然有一个小于等于它的平方根。只要找到小于或等于的那个就行了
                if (i % j == 0) {
                    isFlag = false;
                    break;
                }
            }
            if (isFlag) {
                System.out.println(i);

            }
        }
    }
}
  1. 山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。
    提示:
    (1) 用整型变量water表示水缸里的水“int water = 15;”。
    (2) 用整型变量l表示小和尚下山挑水的次数“int l = 0;”。
    (3) 分析循环条件(水少于50升),循环操作(水增加5升,挑水次数增加1)。
    (4) 套用while循环(或do-while循环)写出代码。
public class Exer15 {
    public static void main(String[] args) {
        int water = 15;
        int l = 0;
        while (true) {
            water += 5;
            l++;
            if (water >= 50) {
                break;
            }

        }
        System.out.println(l);
    }
}
  1. 生成13位条形码
    Ean-13码规则:第十三位数字是前十二位数字经过计算得到的校验码。
    例如:690123456789
    计算其校验码的过程为:
    ① 前十二位的奇数位和6+0+2+4+6+8=26
    ② 前十二位的偶数位和9+1+3+5+7+9=34
    ③ 将奇数位和与偶数位和的三倍相加26+34*3=128
    ④ 取结果的个位数:128的个位数为8
    ⑤ 用10减去这个个位数10-8=2
    所以校验码为2
    (注:如果取结果的个位数为0,那么校验码不是为10(10-0=10),而是0)
    实现上述代码的功能,计算验证码,输入12位条码,返回带验证码的条码。
    输入690123456789 输出6901234567892
public class Exer16 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入12位验证码");
        String s = scanner.next();

        char[] chars = s.toCharArray();
        int sum1 = 0;
        int sum2 = 0;
        for (int i = 0; i < chars.length; i++) {
            int num = (int) (chars[i] - '0');
            if ((i + 1) % 2 == 0)
                sum1 += num; // 偶数位
            else
                sum2 += num; // 奇数位

        }
        int lastNum = 10 - ((sum2 + sum1 * 3) % 10);
        if (lastNum == 10) {
            lastNum = 0;
        }
        String lastCode = s + lastNum;
        System.out.println(lastCode);
    }
}
  1. 实现判断一个4位整数,统计出此整数里面包含多少个偶数,多少个奇数的功能
public class Exer17 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        if (num > 1000 && num < 10000) {
            int i = 0;   // 偶数
            int j = 0;// 奇数
            while (num > 0) {
                int last = num % 10;
                if (last % 2 == 0) {
                    i++;
                } else {
                    j++;
                }
                num = num / 10;
            }
            System.out.println("EvenNum: " + i + ",oddNum: " + j);
        }
    }
}
  1. 开发一款软件,根据公式(身高-108)*2=体重,可以有10斤左右的浮动。来观察测试者体重是否合适。
public class Exer18 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入身高");
        int i = scanner.nextInt();
        System.out.println("请输入体重");
        int j = scanner.nextInt();
        if((i-108) * 2 < (j+10) && (i-108) * 2> (j-10))
            System.out.println("你的体重合适");
        else
            System.out.println("你的体重不合适");
    }
}

有3个整数,给出提示信息:
能否创建三角形;两边之和大于第三边 三个条件都要写
如果能构建三角形,提示是直角三角形还是等边三角形等腰三角形还是普通三角形;
最后输出三角形面积;

public class Exer19 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int max,min,mid;
        System.out.println("请输入第一条边的长度:");
        int a = scanner.nextInt();
        System.out.println("请输入第二条边的长度:");
        int b = scanner.nextInt();
        System.out.println("请输入第三条边的长度:");
        int c = scanner.nextInt();
        int sum = a+b+c;
        max = (a>b?a:b)>c?(a>b?a:b):c; //利用三目计算出最大值
        min = (a<b?a:b)<c?(a<b?a:b):c; //利用三目计算出最小值
        mid = sum - max - min;
        int p = sum/2;
        if(min + mid > max){
            System.out.println("能创建三角形");
            if(mid * mid + min * min == max * max && min == mid){
                System.out.println("是等腰直角三角形");
            }
            else if(mid * mid + min * min == max * max){
                System.out.println("是直角三角形");
            }
            else if (max == mid && max == min){
                System.out.println("是等边三角形");
            }else if(min == mid || mid == max)
                System.out.println("是等腰三角形");
            else
                System.out.println("普通三角形");
            double d = Math.sqrt(p*(p-a)*(p-b)*(p-c));//不知道怎么调精度。
            System.out.println("面积为"+d);
        }
        else
            System.out.println("不能创建三角形");
    }

}

最后送个爱心结束第2部分。

Alt

public class Heart {
	public static void main(String[] args) {
		// 分三个大部分 上中下
		for (int i = 0, k = 0; i < 14; i++) {// 打印行
			// 上部分 上分为 四个部分
			if (i < 3) {
				for (int j = 0; j < 5 - 2 * i; j++) {// 1、空心
					System.out.print(" ");
				}
				if (i == 2) {// 2、*
					for (int j = 0; j < 6 + 4 * i - 1; j++) {
						System.out.print("*");
					}
					for (int j = 0; j < 7 - 4 * i + 2; j++) {// 3、空心
						System.out.print(" ");
					}
					for (int j = 0; j < 6 + 4 * i - 1; j++) {// 4、*
						System.out.print("*");
					}
				} else {
					for (int j = 0; j < 6 + 4 * i; j++) {// 2、*
						System.out.print("*");
					}
					for (int j = 0; j < 7 - 4 * i; j++) {// 3、空心
						System.out.print(" ");
					}
					for (int j = 0; j < 6 + 4 * i; j++) {// 4、*
						System.out.print("*");
					}
				}
			} else if (i < 6) {// 中间
				for (int j = 0; j < 29; j++) {
					System.out.print("*");
				}
			} else {// 下部分 6
				if (i == 13) {
					for (int j = 0; j < 2 * (i - 6); j++) {// 打印空格
						System.out.print(" ");
					}
					System.out.print("*");
				} else {
					for (int j = 0; j < 2 * (i - 6) + 1; j++) {// 打印空格
						System.out.print(" ");
					}
					for (int j = 1; j < 28 - 4 * k; j++) {
						System.out.print("*");
					}
					k++;
				}
			}
			System.out.println();// 换行
		}

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值