蓝桥杯 代码填空题 训练 题目集(java)



(待续)



题目列表:

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值