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

举报
红目香薰 发表于 2022/04/20 20:03:48 2022/04/20
【摘要】 ​   🙏🤗距离【第十三届蓝桥杯4月9日省赛】仅剩【07天】🤗🙏​📋今日题型:【填空题】📋⭐️🤗循环是一切暴力的基础,暴力基础,转起来。🤗⭐️🤗国一镇楼🤗​📋比赛题目与分数比例📋​确认范围:结果填空题5道,共计45分。程序设计题5道,共计105分。⭐️🤗刷题安排🤗⭐️日期题目类型题目数量3月25日循环63月26日超大数63月27日数组63月28日枚举63月29日递...

   🙏🤗距离【第十三届蓝桥杯4月9日省赛】仅剩【07天】🤗🙏

📋今日题型:【填空题】📋

⭐️🤗循环是一切暴力的基础,暴力基础,转起来。🤗⭐️

🤗国一镇楼🤗

📋比赛题目与分数比例📋

确认范围:

结果填空题5道,共计45分。

程序设计题5道,共计105分。

⭐️🤗刷题安排🤗⭐️

日期 题目类型 题目数量
3月25日 循环 6
3月26日 超大数 6
3月27日 数组 6
3月28日 枚举 6
3月29日 递归 6
3月30日 绘图 6
3月31日 深搜广搜 5
4月1日 动态规划 5
4月2日 填空题 5
4月3日 数学公式:查询准考证 5
4月4日 第十届省赛题 10
4月5日 第十一届省赛题 10
4月6日 第十二届省赛1套题 10
4月7日 第十二届省赛2套题 10
4月8日 经典题目练习 8
4月9日 9点考试

目录

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);

 填写:

a.add(a.remove(0)

结果:

第4个孩子

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)
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) _____________;

 }

填空:

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)

过程:

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” 文件中

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

结果:

2

过程:

(例1):

getFirstNum("abc24us43")=getFirstNum("bc24us43")    = 2 

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

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

(例2):

getFirstNum("ab")=getFirstNum("a") = -1
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);
 }

}

填空:

if(begin > end) return;
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);
	}

}

 



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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。