前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【蓝桥杯省赛】冲刺练习题【填空题】倒计时【07】天

【蓝桥杯省赛】冲刺练习题【填空题】倒计时【07】天

作者头像
红目香薰
发布2022-11-29 21:08:43
发布2022-11-29 21:08:43
27700
代码可运行
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode
运行总次数:0
代码可运行

目录

1、报数游戏

2、不连续处断开

3、猜数字

4、反转串

5、第一个数字

附加、递归连续数

1、报数游戏

有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。

 Vector a = new Vector();  for(int i=1; i<=10; i++)  {undefined  a.add("第" + i + "个孩子");  }  for(;;)  {undefined  if(a.size()==1) break;  for(int k=0; k<2; k++)  ________________;  a.remove(0);  }  System.out.println(a);

 填写:

代码语言:javascript
代码运行次数:0
复制
a.add(a.remove(0)

结果:

代码语言:javascript
代码运行次数:0
复制
第4个孩子

2、不连续处断开

下列代码运行结果为:

12345 23456 89 23456789 即把一个串从数字不连续的位置断开。试完善之。

代码语言:javascript
代码运行次数:0
复制
		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);

结果:

代码语言:javascript
代码运行次数:0
复制
12345
23456
89

23456789

填写:(注意没有;)

代码语言:javascript
代码运行次数:0
复制
t = "" + s.charAt(i)
代码语言:javascript
代码运行次数:0
复制
package action;

public class demo2 {
	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 {
				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(;;)  {undefined  int m = (v1 + v2)/2;  System.out.println("我猜是:" + m);  System.out.println("1.猜得太大了");  System.out.println("2.猜得太小了");  System.out.println("3.猜中!");  System.out.print("请选择:");  int user = Integer.parseInt(scan.nextLine());  if(user==3) break;  if(user==1) _____________;  if(user==2) _____________;

 }

填空:

代码语言:javascript
代码运行次数:0
复制
v2=m-1

v1=m+1

4、反转串

我们把“cba”称为“abc”的反转串。 求一个串的反转串的方法很多。下面就是其中的一种方法,代码十分简洁(甚至有些神秘),请聪明的你通过给出的一点点线索补充缺少的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件下对应题号的“解答.txt”中即可。

 public static String reverseString(String x)  {undefined  if(x==null || x.length()<2) return x;  return ____________________ + x.charAt(0);

 }

填空:

reverseString(x.substring(1))+ x.charAt(0)

过程:

代码语言:javascript
代码运行次数:0
复制
reverseString("abcde")=reverseString("bcde")+a    =edcba

reverseString("bcde")=reverseString("cde")+b      =edcb

reverseString("cde")=reverseString("de")+c        =edc

reverseString("de")=reverseString("e")+d          =ed

5、第一个数字

以下的静态方法实现了:把串s中第一个出现的数字的值返回。 如果找不到数字,返回-1

例如: s = "abc24us43"  则返回2 s = "82445adb5"  则返回8 s = "ab"   则返回-1   

public static int getFirstNum(String s) {undefined  if(s==null || s.length()==0) return -1;  char c = s.charAt(0);  if(c>='0' && c<='9') return _____________;  //填空  return ___________________;  //填空 }

请分析代码逻辑,并推测划线处的代码。

答案写在 “解答.txt” 文件中

注意:只写划线处应该填的内容,划线前后的内容不要抄写。

结果:

代码语言:javascript
代码运行次数:0
复制
2

过程:

(例1):

代码语言:javascript
代码运行次数:0
复制
getFirstNum("abc24us43")=getFirstNum("bc24us43")    = 2 

getFirstNum("bc24us43")=getFirstNum("c24us43")      = 2

getFirstNum("c24us43")=getFirstNum("24us43")        =  2

(例2):

代码语言:javascript
代码运行次数:0
复制
getFirstNum("ab")=getFirstNum("a") = -1
代码语言:javascript
代码运行次数:0
复制
import java.util.Scanner;
 
public class Main {
	public static int getFirstNum(String s)
	{
		if(s==null || s.length()==0) return -1;//如果找不到数字,返回-1
		
		char c = s.charAt(0);
		if(c>='0' && c<='9') return c-'0';  //填空	//第一个出现的数字的值返回
		
		return getFirstNum(s.substring(1));  //填空	//递归,如果找不到,继续找
	}
	
    public static void main(String[] args) {
		System.out.println(getFirstNum("abc24us43"));
    }
}

附加、递归连续数

以下程序打印出0~9的数字,请补充缺少的代码。

public class MyTest {  public static void f(int begin, int end)  {  __________________;  System.out.println(begin);  f(begin+1, end);   }  public static void main(String[] args)  {  f(0,9);  }

}

填空:

代码语言:javascript
代码运行次数:0
复制
if(begin > end) return;
代码语言:javascript
代码运行次数:0
复制
package action;

public class demo2 {
	public static void f(int begin, int end) {
		if(begin > end) return;
		System.out.println(begin);
		f(begin + 1, end);
	}

	public static void main(String[] args) {
		f(0, 9);
	}

}

到这里,蓝桥的模型提基本上都练习过了,希望能对大家的比赛有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1、报数游戏
  • 2、不连续处断开
  • 3、猜数字
  • 4、反转串
  • 5、第一个数字
  • 附加、递归连续数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档