基础编程题(17~18)
17、猴子吃桃问题
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了,求第一天共摘了多少。
17.1、程序分析
- 实现思路:
假设第一天有n个桃子,既有如下分析:n1=n(n1为第一天桃子数)
日期 | 桃子数 |
---|---|
day1 | n1=n |
day2 | n2= n1/2 - 1 |
day3 | n3= n2/2 - 1 |
day4 | n4= n3/2 - 1 |
day5 | n5= n4/2 - 1 |
day6 | n6= n5/2 - 1 |
day7 | n7= n6/2 - 1 |
day8 | n8= n7/2 - 1 |
day9 | n9= n8/2 - 1 |
day10 | n10= n9/2 - 1 = 1 |
经分析可得数学表达式:ni = 2*n(i+1) + 2
17.2、代码实现
方法1:
public class Test {
public static void main(String[] args) {
int n=1; //第十天的桃子数
for(int i=0;i<9;i++) {
n = 2*n+2;
}
System.out.println("第一天共摘了" + n + "个桃子。");
}
}
方法2:
public class Test {
public static void main(String[] args) {
int days = 9;
int n1 = 0, n10 = 1; //定义第一天和第十天的桃子数
while (days > 0) {
n1 = (n10 + 1) * 2;
n10 = n1;
days--;
}
System.out.println("第一天共摘了" + n1 + "个桃子。");
}
}
18、两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
18.1、程序分析
18.2、代码实现
public class Test {
public static void main(String[] args) {
int i, j, k;
// 声明i,j,k分别为A,B,C的对手;
for (i = 'x'; i <= 'z'; i++) {
for (j = 'x'; j <= 'z'; j++) {
for (k = 'x'; k <= 'z'; k++) {
if (i == 'x' || j == i || k == 'x' || k == 'z' || k == i || k == j)
continue;
System.out.print("a----" + (char) i + ";b----" + (char) j + ";c----" + (char) k);
}
}
}
}
}