Java基础练习之流程控制(三)
17、3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。
public static void main(String[] args) { int day = 0; for (int x = 3000; x >= 5; x /= 2) { day++; } System.out.println("day=" + day); /* * 方法二: * day = 0; * for(int x=3000; x>=5; day++) { * x = x/2; * } * System.out.println(day); */ }
18、写出结果
public static void main(String []args){ int i = 0, j = 5; tp: for (;;){ i++; for(;;){ if(i > j--) break tp; } } System.out.println("i = " + i + ", j = "+ j); }
19、猜数字游戏
随机生成一个100以内的数,猜数字游戏:
从键盘输入数,如果大了提示,大了,如果小了,提示小了,如果对了,就不再猜了,并统计一共猜了多少次?
提示:随机数
import java.util.Random; Random rand = new Random(); int num= rand.nextInt(100);
代码1:
import java.util.Random; import java.util.Scanner; public class TestDoWhileLoop{ public static void main(String[] args){ //1、随机产生一个100以内的整数 Random rand = new Random(); //int num = rand.nextInt();//产生的是任意大小的整数 int num = rand.nextInt(100);//产生[0,100)的整数 //System.out.println(num); //2、键盘输入 Scanner input = new Scanner(System.in); //声明变量 int guess; int count = 0; do{ //循环体至少执行一次 System.out.print("请输入一个整数:"); guess = input.nextInt();//为变量赋值 count++;//输入一次,计数一次 if(guess>num){ System.out.println("大了"); }else if(guess < num){ System.out.println("小了"); }else{ System.out.println("猜对了"); } }while(guess != num); System.out.println("一共猜了:" + count + "次"); } }
代码2:
import java.util.Random; import java.util.Scanner; public class TestDoWhileLoop{ public static void main(String[] args) { Random rand = new Random(); int num= rand.nextInt(100); Scanner input = new Scanner(System.in); int count =0 ; do{ count++; System.out.println("请猜:"); int temp = input.nextInt(); if(temp<num){ System.out.println("小了"); continue; } if(temp>num){ System.out.println("大了"); continue; } if(temp == num){ break; } }while(true); System.out.println("总共猜了"+count+"次"); } }
20、打印1-100之间数,其中3、5、7的倍数不打印(continue)
public class TestContinue { public static void main(String[] args) { //打印1-100之间数,其中3、5、7的倍数不打印 for(int i=1; i<=100; i++){ if(i%3==0 | i%5==0 | i%7==0){ //跳过下面的打印语句,提前进入下一次循环,即i++语句 continue; } //下面这部分循环体语句,有些情况下需要跳过 System.out.println(i); } System.out.println("over"); } }
21、输入两个正整数m和n,求其最大公约数和最小公倍数
public static void main(String []args){ Scanner input = new Scanner(System.in); System.out.println("输入m:"); int m = input.nextInt(); System.out.println("输入n:"); int n = input.nextInt(); //获取m和n的较大值 int max = (m > n)? m : n; //获取m和n的较小值 int min = (m < n)? m : n; //求m和n的最大公约数 for(int i = min;i >= 1;i--){ if( m % i == 0 && n % i == 0){ System.out.println("m和n的最大公约数是:" + i); break; } } //求m和n的最小公倍数 for(int i = max;i <= m * n;i++){ if( i % m == 0 && i % n == 0){ System.out.println("m和n的最小公倍数是:" + i); break; } } }
22、已知学生成绩以100分为满分,共分5个等级:A,B,C,D,E
90~100为等级A,
80~89为等级B,
70~79为等级C,
60~69为等级D,
0~59为等级E。
要求定义一个成绩变量,当成绩变化时,可直接知道该成绩对应的等级。
例如:当成绩为100时,该学生的等级是A。
package myP101; public class LevelDemo{ //定义一功能,通过给定分数,获取该分数对应的等级。 public static void main(String[] args){ int num = 89; if(num>=90 && num<=100) System.out.println("level = A"); else if(num>=80 && num<=89) System.out.println("level = B"); else if(num>=70 && num<=79) System.out.println("level = C"); else if(num>=60 && num<=69) System.out.println("level = D"); else System.out.println("level = E"); } }
23、打印自然数的个数
1)打印1~100之间 6的倍数的个数
2)求出1~100之间,既是3又是7的倍数的自然数出现的次数?
public static void main(String[] args) { int count1 = 0,count2 = 0; for (int x = 1; x <= 100; x++) { if (x % 6 == 0){ count1++; } if(x % 3 == 0 && x % 7 == 0){ count2++; } } System.out.println("count1=" + count1); System.out.println("count2=" + count2); }
24、求调和级数中从第多少项开始值大于10
调和级数的第n项形式为:
1+1/2+1/3+…+1/n
public static void main(String[] args) { double sum = 0.0; int i = 1; while (true) { sum += 1.0 / i; if (sum > 10) { break; } i++; } System.out.println(i); }