2011蓝桥杯java试题及部分参考答案

原创 2015年11月15日 00:05:57

考生须知:

考试时间为4小时。

本试卷包含两种题型:“代码填空”与“程序设计”。总计100分。

其中代码填空:3+3+4+6+7+9+10 = 42 

程序设计:14+17+27 = 58

填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不超过一条语句(即不能出现分号)。

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

编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。考生的程序只有能运行出正确结果的时候才有机会得分。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。

对每个题目,要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。

另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。

 

1. 代码填空 (满分3分)

计算蔬菜总价 

为了丰富群众菜篮子,平抑菜价,相关部分组织了蔬菜的调运。今某箱中有多个品种的蔬菜。蔬菜的单价(元/公斤)存放在price数组中,蔬菜的重量(公斤)存放在weight数组中。下面的代码计算该箱蔬菜的总价,试完善之。

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

	public static double getTotal(double[] price, double[] weight)
	{
		double x = 0;
		for(int i=0; i<price.length; i++)
		{
			____________________;
		}
		return x;
	}


 

2. 代码填空 (满分3分)

计算行程

低碳生活,有氧运动。骑自行车出行是个好主意。小明为自己的自行车装了个计数器,可以计算出轮子转动的圈数。在一次骑车旅行中,出发时计算器的示数为begin,到达目的地时的示数为end。下列代码计算了小明一共骑行了多远(单位:公里)。其中d表示小明自行车轮子的直径(单位:米)。

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

	public static double getDistance(int begin, int end, double d)
	{
		return (end-begin) * Math.PI * d * d _________; 
	}

此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730


 

3. 代码填空 (满分4)

反转的串

解决同一个问题往往有许多方法。小刚很喜欢别出心裁。一天他在纸上草草写了一段程序,实现了把串s中的内容反转后放入s2的功能。也就是说,s2最后的内容变成了“7654321”。

可惜草纸出现了一处污损,请补全缺失的部分。把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

		String s = "1234567";		
		String s2 = "";
		for(int i=0; i<s.length(); i++)
		{
			s2 = s.charAt(i) + __________;
		}
		System.out.println(s2);

此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730

 


4. 代码填空(满分6)

最近距离

已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离。

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

class MyPoint
{
	private double x;  // 横坐标
	private double y;  // 纵坐标
		
	public MyPoint(double x, double y)
	{
		this.x = x;
		this.y = y;
	}
	
	public static double distance(MyPoint p1, MyPoint p2)
	{
		double dx = p1.x - p2.x;
		double dy = p1.y - p2.y;		
		return Math.sqrt(dx*dx + dy*dy);
	}
	
	/*
	  lst中含有若干个点的坐标
	  返回其中距离最小的点的距离
	*/
	public static double getMinDistance(List<MyPoint> lst)
	{
		double r = ________________;
		int n = lst.size();
		for(int i=0; i<n; i++)
		{
			for(int j=i+1; j<n; j++)
			{
				MyPoint p1 = lst.get(i);
				MyPoint p2 = lst.get(j);
				
				double d = MyPoint.distance(p1,p2);
				if( d < r ) ______________;
			}
		}
		return r;		
	}
}

此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730



 

5. 代码填空 (满分7)

股票风险

股票交易上的投机行为往往十分危险。假设某股票行为十分怪异,每天不是涨停(上涨10%)就是跌停(下跌10%)。假设上涨和下跌的概率均等(都是50%)。再假设交易过程没有任何手续费。某人在开始的时候持有总价值为x的该股股票,那么100个交易日后,他盈利的可能性是多少呢?

以下程序通过计算机模拟了该过程,一般的输出结果在0.3左右。请填写缺失的代码。把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

int N = 10000;
	int n = 0;
	
	for(int i=0; i<N; i++)
	{
		double value = 1000.0;	
		for(int k=0; k<100; k++)
		{
			if(Math.random() > _______)
				value = value * 1.1;
			else
				value = value * 0.9;
		}
		if(____________) n++;
	}
	
	System.out.println(1.0*n/N);


此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730


 

6. 代码填空 (满分9)

猜数字

很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。

阅读分析代码,填写缺失的部分。把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.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.猜得太小了");
		System.out.println("3.猜中!");
		System.out.print("请选择:");
		int user = Integer.parseInt(scan.nextLine());
		if(user==3) break;
		if(user==1) _____________;
		if(user==2) _____________;
	}

此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730




 

7. 代码填空 (满分10)

基因牛

张教授采用基因干预技术成功培养出一头母牛,三年后,这头母牛每年会生出1头母牛, 生出来的母牛三年后,又可以每年生出一头母牛。如此循环下去,请问张教授n年后有多少头母牛?

以下程序模拟了这个过程,请填写缺失的代码。把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

public static class Cow 
{
	private int age;
	public Cow afterYear()
	{
		age++;
		return age > 2 ? new Cow() : ___________;
	}	
	
	public static void showTotalCowNum(int n)
	{
		List<Cow> list = new ArrayList<Cow>();
		list.add(new Cow());

		for (int i = 0; i < n; i++)
		{
			int cowCount = list.size();
			for (int j = 0; j < cowCount; j++)
			{
				Cow cow = list.get(j).afterYear();
				if (cow != null)
				{
					________________; 
					list.add(cow);
				}
			}
		}
		System.out.println(n + "年后,共有:" + list.size());		
	}
}


此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730



 

8. 程序设计(满分14分)

在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:

1. 把每个单词的首字母变为大写。

2. 把数字与字母之间用下划线字符(_)分开,使得更清晰

3. 把单词中间有多个空格的调整为1个空格。

例如:

用户输入:

you and     me what  cpp2005program

则程序输出:

You And Me What Cpp_2005_program

用户输入:

this is     a      99cat

则程序输出:

This Is A 99_cat

 

我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。

假设用户输入的串长度不超过200个字符。

要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。

另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。


此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730


 

9. 程序设计(满分17分)

方阵的主对角线之上称为“上三角”。

请你设计一个用于填充n阶方阵的上三角区域的程序。填充的规则是:使用123.的自然数列,从左上角开始,按照顺时针方向螺旋填充。

例如:当n=3时,输出:

1 2 3

6 4

5

n=4时,输出:

1  2 3 4

9 10 5

8  6

7

n=5时,输出:

  1  2  3  4  5

 12 13 14  6 

 11 15  7

 10  8

  9

程序运行时,要求用户输入整数n3~20

程序输出:方阵的上三角部分。

要求格式:每个数据宽度为4,右对齐。

要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。

另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。

 

此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730



10. 程序设计(满分27分)

A、BCDEFGHI10名学生有可能参加本次计算机竞赛,也可能不参加。因为某种原因,他们是否参赛受到下列条件的约束:

   1. 如果A参加,B也参加;

   2. 如果C不参加,D也不参加;

   3. A和C中只能有一个人参加;

   4. B和D中有且仅有一个人参加;

   5. D、EFG中至少有2人参加;

   6. C和G或者都参加,或者都不参加;

   7. C、EGI中至多只能2人参加   

   8. 如果E参加,那么FG也都参加。

   9. 如果F参加,GH就不能参加

   10. 如果IJ都不参加,H必须参加

请编程根据这些条件判断这10名同学中参赛者名单。如果有多种可能,则输出所有的可能情况。每种情况占一行。参赛同学按字母升序排列,用空格分隔。

比如:

C D G J

就是一种可能的情况。

要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。

另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。

此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730

 



参考答案:

前面7个题目简单这里 略
8.
import java.util.Scanner;


public class Test8 {

	public String zhuanhua(String s) {
		
		boolean start=false;

		char[] b=s.toCharArray();
		String s1="";
		String s2="";
		String s3="";
		for(int i=0;i<b.length;i++){
			
			
			if(i>0&&b[i-1]==' '&&b[i]==' '){
				start=false;
			}
			if(i>0&&b[i-1]!=' '&&b[i]==' '){
				start=true;
			}
			if((b[i]==' '&&start)||b[i]!=' ')
			{
				s1+=b[i];
			}
		}
		//System.out.println(s1);
		char[] c=s1.toCharArray();
		if(c[0]>='a'&&c[0]<='z')
		{
			c[0]-='a'-'A';
			
		}
		s2+=c[0];
		for(int i=1;i<c.length;i++){
			if(c[i-1]==' '&&c[i]>='a'&&c[i]<='z'){
				c[i]-='a'-'A';
				s2+=c[i];
				continue;
			}
			s2+=c[i];
		}
		//System.out.println(s2);
		char[] d=s2.toCharArray();
		s3+=d[0];
		for(int i=1;i<d.length;i++){
			boolean m=((d[i-1]>='a'&&d[i-1]<='z')||(d[i-1]>='A'&&d[i-1]<='Z'))&&(d[i]>='0'&&d[i]<='9');
			boolean n=((d[i]>='a'&&d[i]<='z')||(d[i]>='A'&&d[i]<='Z'))&&(d[i-1]>='0'&&d[i-1]<='9');
			if(m||n){
				s3+="_";
			}
			
			s3+=d[i];
		}
		return s3;

	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		String s=sc.nextLine();
		System.out.println(new Test8().zhuanhua(s));

	}

}

9.
import java.util.Scanner;


public class Testtwo {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		System.out.println("put n!");
		int n=sc.nextInt();
		int k=1;
		int a[][]=new int[n][n];
		for(int i=0;i<n;i++)
		{
			for(int j=i	;j<n-1-i*2;j++)
			{
				a[i][j]=k;
				k++;
			}
			for(int j=i;j<n-i*2-1;j++)
			{
				a[j][n-1-i-j]=k;
				k++;
			}
			for(int j=i;j<n-2*i-1;j++)
			{
				a[n-1-i-j][i]=k;
				k++;
			}
		}
		if((n-1)%3==0)
			a[(n-1)/3][(n-1)/3]=k;
		for(int i=0;i<n;i++)
		{
			for(int j=0;j<n;j++)
			{
				if(a[i][j]==0)
					continue;
				if(a[i][j]<10)
				System.out.print(a[i][j]+"   ");
				else if(a[i][j]<100)
					System.out.print(a[i][j]+"  ");
				else 
					System.out.print(a[i][j]+" ");
			}
			System.out.println("");
		}
		
	}

}

10.
public class Testpailie {

	/**
	 * @param args
	 */
	public int zhuanhua1(String s) {
		int a=0;
		a=Integer.parseInt(s, 2);
		
		return a;

	}
	public String zhuanhua2(int a) {
		String s="";
		
		for(;a!=0;a=a/2)
			s+=a%2;
		//System.out.println(s);

		char[] b=s.toCharArray();
		String s1="";
		char k;
		for(int i=s.length()-1;i>=0;i--){
			k=(char) (74-i);
			if(b[i]=='1')
				
				s1+=k+" ";
			
		}
		return s1;

	}
	public void count() {
		Testpailie tp=new Testpailie();
		for(int count = 0;count<1024;count++){
			//1. 如果A参加,B也参加;
			boolean a1 = count/512%2==1?(count/256%2==1?true:false):true;
			//2. 如果C不参加,D也不参加;
			boolean a2= count/128%2==0?(count/64%4==0?true:false):true;
			//3. A和C中只能有一个人参加;
			boolean a3 = (count/512%2+count/128%2)<=1?true:false;
			//4. B和D中有且仅有一个人参加;
			boolean a4 = (count/256%2+count/64%2)<=1?true:false;
			//5. D、E、F、G、H 中至少有2人参加;
			boolean a5 = (count/4%2+count/8%2+count/16%2+count/32%2+count/64%2)>=2?true:false;
			//6. C和G或者都参加,或者都不参加;
			boolean a6 = count/128%2==1?(count/8%2==1?true:false):(count/8%2==0?true:false);
			//7. C、E、G、I中至多只能2人参加  
			boolean a7 = (count/2%2+count/8%2+count/32%2+count/128%2)<=2?true:false;
			//8. 如果E参加,那么F和G也都参加。
			boolean a8 = count/32%2==1?(count/8%4==3?true:false):true;
			//9. 如果F参加,G、H就不能参加
			boolean a9 = count/16%2==1?(count/4%4==0?true:false):true;      //a8和a9可以忽略
			//10. 如果I、J都不参加,H必须参加
			boolean a10 = count%4==0?(count/4%2==1?true:false):true;
			
			
			if(a1&&a2&&a3&&a4&&a5&&a6&&a7&&a8&&a9&&a10)
				{
				//System.out.println(count);
				System.out.println(new Testpailie().zhuanhua2(count));
				
				}
			
		}
	}
	public static void main(String[] args) {
		
		new Testpailie().count();

	}

}


此文由老猫整理,转载请注明出处:http://blog.csdn.net/nthack5730/article/details/49841613

更多有关老猫的文章:http://blog.csdn.net/nthack5730


版权声明:本文为博主原创文章,未经博主允许不得转载。更多请关注:http://blog.csdn.net/nthack5730 举报

相关文章推荐

Maven常见问题、异常、错误整理【持续更新】

之前也写过一篇与Maven相关的文章,这是第二篇对于Maven常见问题、常见异常的整理。 开一篇新的文章一个原因是自己更换了新的IDE【之前使用myEclipse,现在换成IDEA】,更重要的原因是新...

Maven常见异常及解决方法(本篇更新至16-4-12)

本篇文章记录了老猫在学习整合Maven和SSH过程中遇到的问题,有的问题能够解决,有的问题还不能解决。方法不一定适合所有的环境,但绝对是本人常遇到的常见异常,在这里做一个笔记和记录,也分享给大家,希望...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Delphi 2010学习笔记(3)---Use从句的语法---2011-01-18

Use从句的语法 一、  Use从句列出了所有使用到的单元的名称(不是源文件的名称)。Use从句出现在以下位置:      --> .dpr文件的工程名称之后。     --> ...

更改shell 的提示显示方式

问题:怎么把shell 的显示方式为 [username@host 完整工作目录]$ 改为[username@host 最后工作目录]$解决:在.bashrc 中加入 export PS1='[/u@...

PHP exec 函数 及 system,exec,passthru区别用法详解

exec     执行外部程式。           语法       :   string   exec(string   ...

Web开发者必知的10个职业常识

众所周知,Web开发行业的持续发展和需求的不断变化给开发人员提出了新的要求与挑战。就网站而言,用户期望网站内容能更加丰富多彩、页面更加美观并且能提供良好的用户体验。如果Web开发人员一直止步不前,那终...

​好的用户体验需要做到的5点要求

​在产品设计之初,用户体验就是产品的中心,由视觉上的设计到用户使用的体验,再由用户的行为到掌握用户的心理。能够做到这5点,或许能成为下一个伟大的产品。 如果你使用过的移动社交网络应用Path,我想你应...

第六届蓝桥杯省赛(java)C组试题及参考答案

一、题目 隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。 小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)