Bootstrap

Java循环之经典练习题

1.单循环练习

1.1 一张纸的厚度是0.01mm,折叠多少次,达到珠穆朗玛峰高度

		// 珠穆朗玛峰 8848米
		// 纸的厚度0.01mm
		// 折叠多少次,达到珠穆朗玛峰高度
		double h = 8848000;
		int i = 0;//次数
		double h1 = 0.01;//当前纸厚度
		while(h1<h) {
			h1 *= 2;
			i++;
		}
		System.out.println("折叠次数: "+i);	

1.2 猴子吃桃:猴子第1天摘了n个桃, 当天吃了一半加1个,

​ 第2天吃了一半加1个,…第9天吃完时剩下1个,设计程序,计算n的值

//思路:倒推--从第9天推到第1天
//第9天吃完后的桃子数
	int n = 1;
	for(int days = 9;days>=1;days--) {
		//n表示第days天吃之前的桃子数
		n = (n+1)*2;
	}
	System.out.println(n);

1.3 球从100米高的地方落下, 落下之后反弹, 反弹高度为原来的一半, 之后又落下/反弹
问: 第9次球落地时所走的路程

//思路:找到每次反弹高度的关系:1/2  路程等于所有反弹路径的2倍的累加和
	//定义高度
	double h = 100.0;
	//定义路程
	double s = h;
	for(int i= 1;i<=9;i++) {
		h = h/2; 
		s += h*2;
	}
	System.out.println(s);

**1.4 ** 有1对兔子,长到第3个月开始每个月都生一对兔子,小兔子长到第3个月开始每个月都生一对兔子…请设计程序,输入第10个月多少对兔子?

​ k n = k n-1 + kn-2

//斐波那契数列
//1 1 2 3 5 8...
//第3项开始,这个数是对应的前两项之和
int a = 1;
int b = 1;
//i表示第几项的项数
for(int i=3;i<=10;i++){
    //n表示第i项的数
	int n = a+b;
    //将第i-1项的值给a
    a = b;
    //将第i项的值给b
    b = n;
}
System.out.println(n);

2.循环嵌套

2.1 输出 1! + 2! + 3! + 4! + 5! + 6! +7!的结果

//第一步:实现7!
int s = 1;
for(int i =1;i<=7;i++){
    s*=i;
}
//第二步:实现多个数阶乘的和
int sum = 0;
for(int k=1;k<=7;k++){
    //s表示的是k!
    int s = 1;
    for(int i =1;i<=k;i++){
        s*=i;
    }
    sum += s;
}
System.out.println("结果为"+sum);

2.2 输出9*9乘法表

//例--第3行:3*1=1 3*2=6 3*3 =9
//i表示第1个乘数  j是第2个乘数
for(int i=1;i<=9;i++){
	for(int j=1;j<=i;j++){
		System.out.print(i+"*"+j+"="+i*j+" ");
	}
	System.out.println();
}
;