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);
}