(待续)
题目列表:
1-----报数游戏
2-----不连续处断开
3-----猜数字
4-----反转串
5-----第一个数字
6-----递归连续数
7-----股票风险
8-----括号问题
9-----公倍数
10---孪生素数
11---拍7游戏
12---排列平方数
(由于文章太长,所以可以用ctrl+F键来搜索题目)
1.报数游戏
有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。
Vector a = new Vector();
for(int i=1; i<=10; i++)
{
a.add("第" + i + "个孩子");
}
for(;;)
{
if(a.size()==1) break;
for(int k=0; k<2; k++)
________________;
a.remove(0);
}
System.out.println(a);
结果:
[第4个孩子]
填写:
a.add(a.remove(0)
过程:
每一次把更新的序列的第一个和第二个丢到后面,然后接下来的第三个给删去…………
代码:
import java.util.Scanner;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Vector a = new Vector();
for(int i=1; i<=10; i++)
{
a.add("第" + i + "个孩子");//赋值
}
for(;;)
{
if(a.size()==1) break;//剩下最后一个孩子
//remove返回值为移除的元素,add把元素添加向量的末尾
for(int k=0; k<2; k++)//先把前面的两个元素放在后面
a.add(a.remove(0));//填空
a.remove(0);//再把第三个元素给删除了
}
System.out.println(a);
}
}
2.不连续处断开
下列代码运行结果为:
12345
23456
89
23456789
即把一个串从数字不连续的位置断开。试完善之。
String s = "12345234568923456789";
String t = "1";
for(int i=1; i<s.length(); i++)
{
if(s.charAt(i)==s.charAt(i-1)+1)
{
t += s.charAt(i);
}
else
{
System.out.println(t);
_____________________________;
}
}
System.out.println(t);
结果:
12345
23456
89
23456789
填写:
t += s.charAt(i)
代码如下:
import java.util.Scanner;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
String s = "12345234568923456789";
String t = "1";
for(int i=1; i<s.length(); i++)
{
if(s.charAt(i)==s.charAt(i-1)+1)//如果是连续的
{
t += s.charAt(i);//子串
}
else//如果是不连续,清除t字符串,为下一次做准备
{
System.out.println(t);
t=""+s.charAt(i);//填空
}
}
System.out.println(t);
}
}
3.猜数字
很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。
阅读分析代码,填写缺失的部分。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
System.out.println("请在心中想好一个数字(1~100),我来猜");
System.out.println("我每猜一个数字,你要告诉我是“猜大了”,“猜小了”,还是“猜中”");
Scanner scan = new Scanner(System.in);
int v1 = 1;
int v2 = 100;
for(;;)
{
int m = (v1 + v2)/2;
System.out.println("我猜是:" + m);
System.out.println("1.猜得太大了");
System.out.println("2.猜得太小了");
S