package qf.Test.day3; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class day03 { private static void demo1() { //1、读入一个整数,表示一个人的年龄。 // 如果小于6岁,则输出“儿童”, // 6岁到13岁,输出“少儿” // 14岁到17岁,输出“青少年”; // 18岁到35岁输出“青年”; // 36岁到50岁,输出“中年” // 50岁以上输出“中老年”。 System.out.println("请输入年龄:"); Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); if (age <= 6) { System.out.println("儿童"); } else if (age <= 13) { System.out.println("少儿"); } else if (age <= 17) { System.out.println("青少年"); } else if (age <= 35) { System.out.println("青年"); } else if (age <= 50) { System.out.println("中年"); } else { System.out.println("中老年"); } } private static void demo2() { //计算销售总金额 //图书批发商店的某本书的零售价是26.5元/本, // 如果客户一次性购买100本以上(包括100本),则每本的价格打9折, // 如果客户一次性购买500本以上(包括500本),则每本的价格打8折并返回1000元给客户, // 请分别计算购买8本、150本、600本的应付金额是多少。要求购买书的数量从控制台输入。 float price = 26.5f; System.out.println("请输入要购买的数量:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); if (100 <= num) { price = (float) (price * 0.9); System.out.println("应付金额为:" + (price * num)); } else if (500 <= num) { price = (float) (price * 0.8); System.out.println("应付金额为:" + ((price * num) - 1000)); }else { System.out.println("应付金额为:" + (price * num)); } } private static void demo3() { //读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份是否是闰年: //.1 如果这个年份能够被4 整除,且不能被100 整除,则这一年是闰年。例如,1996 年是闰年,而相应的,1993 年就不是闰年。 //.2 要能被400 整除,也是闰年。例如,2000 年是闰年,1900 年不是闰年。 System.out.println("请输入年份:"); Scanner scanner = new Scanner(System.in); int year = scanner.nextInt(); if(year%4 == 0 && year%100 != 0 || year%400 == 0) { System.out.println(year + "是闰年"); } else { System.out.println(year + "不是闰年"); } } private static void demo4() { //代码如下,运行完成之后的结果是:10是偶数。横线处补全代码 // int a = 10; // if (____________) { // System.out.println(a + "是偶数"); // } int a = 10; if (true) { System.out.println(a + "是偶数"); } } private static void demo5() { //以下代码运行结果? //饿了么? boolean flag = false; int num = 10; if (flag){ num++; } num++; if(num < 11){ System.out.println("天生我材必有用"); if (num > 5){ System.out.println("千金散尽还复来"); } } System.out.println("饿了么?"); } private static void demo6() { //读入一个整数,如果是1~5 之间,则分别输出5个福娃的名字,否则输出“”。 System.out.println("请输入数字:"); Scanner scanner = new Scanner(System.in); int fuwa = scanner.nextInt(); switch(fuwa){ case 1: System.out.println("贝贝"); break; case 2: System.out.println("晶晶"); break; case 3: System.out.println("欢欢"); break; case 4: System.out.println("迎迎"); break; case 5: System.out.println("妮妮"); break; default: System.out.println("北京欢迎你"); break; } } private static void demo7() { //读入一个整数,输出对应季度。3-5月(春季)6-8月(夏季)9-11月(秋季)12-2月(冬季) System.out.println("请输入月份:"); Scanner scanner = new Scanner(System.in); int month = scanner.nextInt(); if (3 <= month && month <= 5){ System.out.println("春季"); }else if (6 <= month && month <= 8){ System.out.println("夏季"); }else if (9 <= month && month <= 11){ System.out.println("秋季"); }else if ((0 < month && month <= 2) || month == 12){ System.out.println("冬季"); }else{ System.out.println("月份不正确"); } } private static void demo8() { //以下代码运行结果为?简述原因? //输出40,不管if如何执行,最后都会把40赋值给b int a = 20; if (a == 20) { int b = 30; } int b = 40; System.out.println(b); } private static void demo9(){ //计算1+2+3+...+100 的和 int sum = 0; for(int i = 1;i <= 100;i++){ sum +=i; } System.out.println("1+2+3+...+100 的和为:" + sum); } private static void demo10(){ //计算计算1+3+5+...+99的和 int sum = 0; for(int i = 1;i <= 100;i++){ if(i%2 != 0){ sum +=i; } } System.out.println("1+3+5+...+99的和为:" + sum); } private static void demo11(){ //把10、11 两题用while 循环或do...while 循环改写。 int sum10 = 0,i = 1; while(i <= 100){ sum10 +=i; i++; } System.out.println("1+2+3+...+100 的和为:" + sum10); int sum11 = 0,m = 1; while(m <= 100){ if(m%2 != 0){ sum11 +=m; } m++; } System.out.println("1+3+5+...+99的和为:" + sum11); } private static void demo12(){ //读入一个小于10 的整数n,输出它的阶乘n。 System.out.println("请输入小于10的数字:"); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int factorial = 1; for(int i = 1;i <= num;i++){ factorial *= i; } System.out.println(num + "的阶乘为:" + factorial); } private static void demo13(){ //求100 以内所有能被3 整除但不能被5 整除的数字的和。 int num = 0; for(int i = 1;i <= 100;i++){ if(i%3 == 0 && i%5 != 0){ num += i; } } System.out.println("能被3整除但不能被5整除的数字的和为:" + num); } private static void demo14(){ //编程找出四位整数abcd 中满足 (ab+cd)(ab+cd)=abcd 的数 for(int i = 1000;i <= 9999;i++){ int ab = i/100; int cd = i%100; if((ab+cd) * (ab+cd) == i){ System.out.println("满足条件的数是:" + i); } } } private static void demo15(){ //输出99 乘法表。 for(int i = 1;i < 10;i++){ for(int j = 1;j <= i;j++){ System.out.print(j + "*" + i + "=" + (i*j) + "\t"); } System.out.println(); } } private static void demo16(){ //计算2000年1月1日到2008年1月1日相距多少天。(注意闰年) int day = 0; for(int year = 2000;year < 2008;year++){ if(year%4 == 0 && year%100 != 0 || year%400 == 0) { day += 366; } else { day += 365; } } System.out.println("2000年1月1日到2008年1月1日相距\t" + day + "天"); } private static void demo17() { //读入一个整数n,输出如下图形 //n = 3 // * // // *** // //***** //n = 4 // * // // *** // // ***** // //******* System.out.println("请输入数字:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for(int i = 1; i<=n; i++){ //输出n-i个空格 for(int j = 1; j<=n-i; j++){ System.out.print(" "); } //输出2*i-1个星 for(int j = 1; j<=2*i-1; j++){ System.out.print("*"); } //换行 System.out.println(); } } private static void demo18(){ //求水仙花数。 //提示:所谓水仙花数,是指一个三位数abc,如果满足a³+b³+c³=abc,则abc是水仙花数。 int num = 0; for(int i = 100;i <= 999;i++){ int a = i/100; int b = i/10%10; int c = i%10; int res = a*a*a + b*b*b + c*c*c; if(res == i){ num++; } } System.out.println("水仙花数为:" + num); } private static void demo19(){ // 写一个方法add,两个整数作为参数,返回这两个整数的和。 // public static int add(int a, int b){ // return a + b; // } System.out.println(day03.add(10,11)); } private static void demo20(){ //写一个方法,整数n作为参数,输出这个整数的所有因子 System.out.println("请输入整数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); System.out.println(day03.factor(n)); } private static void demo21(){ //写一个方法,整数n作为参数,输出1+2+3+...+n 的和。 System.out.println("请输入整数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); System.out.println(day03.sum(n)); } private static void demo22(){ //写一个函数,整数n作为参数,输出n个HelloWorld System.out.println("请输入整数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); for (int i = 0; i < n; i++){ day03.helloworld(); } } private static void demo23(){ //写一个函数,整数n作为参数,输出这个n是几位数 System.out.println("请输入整数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); jiwei(n); } private static void demo24(){ //验证哥德巴赫猜想:任何一个大于6的偶数,都能分解成两个质数的和。要求输入一个整数,输出这个数能被分解成哪两个质数的和。 //eg : 14 //14=3+11 //14=7+7 System.out.println("请输入整数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); if (n > 6 && n % 2 == 0) { for (int i = 3; i <= n/2; i+=2) { if (isPrime(i) && isPrime(n - i)) { System.out.println("这个数能被分解成\t" + i + "和" + (n - i) + "\t两个质数的和"); } } } else { System.out.println("输入的" + n + "不是大于6的偶数"); } } public static void main(String[] args) { demo24(); } //两数相加 public static int add(int a, int b){ return a + b; } //获取n的全部因子 public static String factor(int n) { List list = new ArrayList(); for (int i = 1; i < n; i++) { if (n % i == 0) { list.add(i); } } return list.toString(); } //输出1+2+3+...+n 的和 public static int sum(int n){ int sum = 0; for (int i = 1;i <= n;i++){ sum += i; } return sum; } //输出n个HelloWorld public static void helloworld(){ System.out.println("HelloWorld"); } //输出n是几位数 public static void jiwei(int n){ int w = 0; int num = n; do{ w++; n = n /10; }while(n!=0); System.out.println(num + "是" + w + "位数"); } //判断是否为质数 public static boolean isPrime(int n){ for(int i = 2; i <= Math.sqrt(n); i++){ if (n % i == 0){ return false; } } return true; } }