第六届蓝桥杯省赛(java)C组试题及参考答案
2016-05-03 15:44
561 查看
一、题目
隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。
小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,….
现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。 请你直接提交这个整数,千万不要填写任何多余的内容。
参考答案:
二、题目
立方尾不变
有些数字的立方的末尾正好是该数字本身。 比如:1,4,5,6,9,24,25,….
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容。
参考答案:
三、题目
无穷分数 无穷的分数,有时会趋向于固定的数字。
请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0。
请填写该浮点数,不能填写任何多余的内容。
参考答案:
四、题目
循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位。 下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
五、题目
格子中输出 stringInGrid方法会在一个指定大小的格子中打印指定的字符串。 要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。 如果不能恰好居中,可以稍稍偏左或者偏上一点。
参考答案:
六、题目
奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。 你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。 分析:该数的平方数位数和加上立方和位数和正好是10位,我们可以人为的排除一部分不满足条件的
参考答案:
七、题目
加法变乘法
我们都知道:1+2+3+ … + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如: 1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015 就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
八、题目
移动距离
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3…
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
参考答案:
九、题目
打印大X
程序应该输出:
再例如,用户输入:
4 21
程序应该输出
参考答案
为了记住2015年5月31号在北京科技大参加蓝桥杯,所以写下此博文
隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。
小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,….
现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。 请你直接提交这个整数,千万不要填写任何多余的内容。
参考答案:
public class Question1 { public static void main(String[] args) { int count=0; for(int i=21;i<=50;i++){ if(i%2!=0) count++; } System.out.println(count); } }
二、题目
立方尾不变
有些数字的立方的末尾正好是该数字本身。 比如:1,4,5,6,9,24,25,….
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容。
参考答案:
public class Question2 { public static void main(String[] args) { int count=0; for(int i=1;i<10;i++){ if(i==Math.pow(i, 3)%10) count++; } for(int i=10;i<100;i++){ if(i==Math.pow(i, 3)%100) count++; } for(int i=100;i<1000;i++){ if(i==Math.pow(i, 3)%1000) count++; } for(int i=1000;i<10000;i++){ if(i==Math.pow(i, 3)%10000) count++; } System.out.println(count); } }
三、题目
无穷分数 无穷的分数,有时会趋向于固定的数字。
请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0。
请填写该浮点数,不能填写任何多余的内容。
参考答案:
public class Question3 { public static void main(String[] args) { double a=f(0); System.out.println(a); } public static double f(double x){ while(x<10){ x=x+1.0/(f(x+1)+x+1); } return 1.0/x; } }
四、题目
循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。 比如,11/13=6=>0.846153846153….. 其循环节为[846153] 共有6位。 下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public class Question4 { public static void main(String[] args) { int n=f(11,13); System.out.println(n); } public static int f(int n, int m) { n = n % m; Vector v = new Vector(); for(;;) { v.add(n); n *= 10; n = n % m; if(n==0) return 0; if(v.indexOf(n)>=0) return v.size();//填空 } } }
五、题目
格子中输出 stringInGrid方法会在一个指定大小的格子中打印指定的字符串。 要求字符串在水平、垂直两个方向上都居中。
如果字符串太长,就截断。 如果不能恰好居中,可以稍稍偏左或者偏上一点。
参考答案:
public class Question5 { public static void main(String[] args) { stringInGrid(20, 4, "abcd1234"); } public static void stringInGrid(int width, int height, String s) { if(s.length()>width-2) s = s.substring(0,width-2); System.out.print("+"); for(int i=0;i<width-2;i++) System.out.print("-"); System.out.println("+"); for(int k=1; k<(height-1)/2;k++){ System.out.print("|"); for(int i=0;i<width-2;i++) System.out.print(" "); System.out.println("|"); } System.out.print("|"); String ff = " "+s+" "; //填空 System.out.print(String.format(ff,"",s,"")); System.out.println("|"); for(int k=(height-1)/2+1; k<height-1; k++){ System.out.print("|"); for(int i=0;i<width-2;i++) System.out.print(" "); System.out.println("|"); } System.out.print("+"); for(int i=0;i<width-2;i++) System.out.print("-"); System.out.println("+"); } }
六、题目
奇妙的数字
小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。 你能猜出这个数字是多少吗?
请填写该数字,不要填写任何多余的内容。 分析:该数的平方数位数和加上立方和位数和正好是10位,我们可以人为的排除一部分不满足条件的
参考答案:
public class Question6 { public static void main(String[] args) { f1(); } //暴力破解 public static void f1(){ int s=0; int v=0; for(int i=40;i<100;i++){ s=(int)Math.pow(i, 2);//四位数 int a=s%10; int b=s/10%10; int c=s/100%10; int d=s/1000; v=(int)Math.pow(i, 3);//六位数 int e=v%10; int f=v/10%10; int g=v/100%10; int h=v/1000%10; int k=v/10000%10; int m=v/100000; if(a!=c&&a!=d&&a!=e&&a!=f&&a!=g&&a!=h&&a!=k&&a!=b&&b!=c&&b!=e&&b!=f&&b!=g&&b!=h&&b!=k&&b!=m &&c!=d&&c!=e&&c!=f&&c!=g&&c!=h&&c!=k&&c!=m&&d!=e&&e!=f&&e!=g&&e!=h&&e!=k&&e!=m&&f!=h&&f!=k&&f!=m &&f!=g&&g!=h&&h!=k&&k!=m&&m!=a&&(a+b+c+d+e+f+g+h+k+m==45)) { System.out.println(i); } } } }
七、题目
加法变乘法
我们都知道:1+2+3+ … + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015
比如: 1+2+3+…+10*11+12+…+27*28+29+…+49 = 2015 就是符合要求的答案。
请你寻找另外一个可能的答案,并把位置靠前的那个乘号左边的数字提交(对于示例,就是提交10)。
注意:需要你提交的是一个整数,不要填写任何多余的内容。
public class Question7 { public static void main(String[] args) throws Exception { //用穷举法来试探1225+a*b+e*f-a-b-e-f==2015 (b=a+1,f=e+1) for(int i=1;i<50;i++){ for(int j=1;j<50;j++){ if((1225+i*(i+1)+j*(j+1)-i-j-(i+1)-(j+1))==2015&&i<j){ System.out.println(i+"*****"+j); } } } } }
八、题目
移动距离
X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3…
当排满一行时,从下一行相邻的楼往反方向排号。
比如:当小区排号宽度为6时,开始情形如下:
1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 16 17 18.... 我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动) 输入为3个整数w m n,空格分开,都在1到10000范围内 要求输出一个整数,表示m n 两楼间最短移动距离。
参考答案:
public class Question8 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("input w:"); int w=sc.nextInt(); System.out.println("input n:"); int n=sc.nextInt(); System.out.println("input m"); int m=sc.nextInt(); int[][] a=new int[w][w]; for(int i=0;i<w;i++){ if(i==0){//第一行 for(int j=0;j<w;j++){ a[i][j]=j+1; } } else if(i%2!=0){//奇数行 int t=w*i+1; for(int j=w-1;j>=0;j--){ a[i][j]=t++; } }else{//偶数行(除过0) int t=w*i+1; for(int j=0;j<w;j++){ a[i][j]=t++; } } } //打印 for (int i = 0; i < w; i++) { for(int j=0;j<w;j++){ System.out.print(a[i][j]+"\t"); } System.out.println(); } //求最短路径 int x1=0,x2 = 0,y1=0,y2=0; for(int i=0;i<w;i++){ for(int j=0;j<w;j++){ if(a[i][j]==n){ x1=i; y1=j; } if(a[i][j]==m){ x2=i; y2=j; } } } int distance=Math.abs((x2-x1)+(y2-y1)); System.out.println(distance); } }
九、题目
打印大X
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。 为了便于比对空格,所有的空白位置都以句点符来代替。 要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数) 要求输出一个大X 例如,用户输入: 3 9
程序应该输出:
再例如,用户输入:
4 21
程序应该输出
参考答案
public class Question9 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("input n:"); int n=sc.nextInt(); System.out.println("input m:"); int m=sc.nextInt(); char[][] ch=new char [m+n-1]; //初始化方阵 for(int i=0;i<n;i++){ for(int j=0;j<m+n-1;j++){ ch[i][j]='.'; } } //用“*”填充方阵 for(int i=0;i<n;i++){ for(int j=0,k=m+n-2;j<=k;j++,k--){ if(j<m) ch[i][j+i]='*'; if(k>=n-1) ch[i][k-i]='*'; } } //打印 for(int i=0;i<n;i++){ for(int j=0;j<m+n-1;j++){ System.out.print(ch[i][j]+" "); } System.out.println(); } } }
为了记住2015年5月31号在北京科技大参加蓝桥杯,所以写下此博文
相关文章推荐
- spring核心容器
- JAVA 位操作学习
- 通过js把html标签转化为普通字符,再用java进行反转
- JAVA线程的创建与启动线程
- 对象序列化问题
- Struts+spring+Hibernate+Mysql--环境搭建
- 【JAVA】在线程里使用线程外的变量为什么一定要是final类型
- 利用java script获取两个日期区间内数组的方法
- eclipse mar整合lombok
- eclipse install gradle plugin used to create the gradle project
- java web学习路线
- Java多线程
- 77、Eclipse/MyEclipse怎么设置个性化代码注释模板
- spring security 如何安全退出
- 使用 Spring Data JPA 简化 JPA开发
- java判断字符串是否为数字或中文或字母
- eclipse+maven springMVC搭建
- Java中几种常见的排序方式
- java泛型(转自百度百科)
- Java类加载器与反射