蓝桥杯2016年java C组真题及答案

一、题目

隔行变色 Excel表的格子很多,为了避免把某行的数据和相邻行混淆,可以采用隔行变色的样式。 
小明设计的样式为:第1行蓝色,第2行白色,第3行蓝色,第4行白色,…. 
现在小明想知道,从第21行到第50行一共包含了多少个蓝色的行。请你直接提交这个整数,千万不要填写任何多余的内容。

参考答案:

publicclass Question1{

 

   publicstaticvoidmain(String[]args) {

       intcount=0;

       for(inti=21;i<=50;i++){

            if(i%2!=0)count++;

        }

       System.out.println(count);

   }

}



二、题目

立方尾不变 
有些数字的立方的末尾正好是该数字本身。比如:1,4,5,6,9,24,25,…. 
请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。 
请提交该整数,不要填写任何多余的内容。

参考答案:

publicclass Question2 {

 

   publicstaticvoidmain(String[] args) {

       intcount=0;  

       for(inti=1;i<</span>10;i++){

              if(i==Math.pow(i,3)%10)

                  count++;

          }

         for(inti=10;i<</span>100;i++){

             if(i==Math.pow(i,3)%100)

              count++;

          }

 



          for(inti=100;i<</span>1000;i++){

              if(i==Math.pow(i,3)%1000)

                  count++;

          }

         for(inti=1000;i<</span>10000;i++){

             if(i==Math.pow(i,3)%10000)

              count++;

         }

         System.out.println(count);

   }

}



三、题目

无穷分数 无穷的分数,有时会趋向于固定的数字。 
请计算【图1.jpg】所示的无穷分数,要求四舍五入,精确到小数点后5位,小数位不足的补0 
请填写该浮点数,不能填写任何多余的内容。

参考答案:

publicclass Question3{

 

   publicstaticvoidmain(String[]args) {

         doublea=f(0);

         System.out.println(a);

   }

   publicstaticdoublef(doublex){

       while(x<</span>10){

           x=x+1.0/(f(x+1)+x+1);

       }

       return1.0/x;

   }

}



四、题目

循环节长度 
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。比如,11/13=6=>0.846153846153…..其循环节为[846153]共有6位。下面的方法,可以求出循环节的长度。 
请仔细阅读代码,并填写划线部分缺少的代码。

publicclass Question4{

 

   publicstaticvoidmain(String[]args) {

      intn=f(11,13);

      System.out.println(n);

   }

   publicstaticintf(intn,intm)

   {

       n = n % m; 

       Vector v =new Vector();

 

       for(;;)

       {

           v.add(n);

           n *=10;

           n = n % m;

           if(n==0)return0;

           if(v.indexOf(n)>=0)returnv.size();//填空

       }

   }

}



五、题目

格子中输出 stringInGrid方法会在一个指定大小的格子中打印指定的字符串。要求字符串在水平、垂直两个方向上都居中。 
如果字符串太长,就截断。如果不能恰好居中,可以稍稍偏左或者偏上一点。

参考答案:

publicclass Question5{

 

   publicstaticvoidmain(String[]args) {

        stringInGrid(20,4,"abcd1234");

   }

   publicstaticvoidstringInGrid(intwidth,intheight,String s)

   {

       if(s.length()>width-2)s = s.substring(0,width-2);

       System.out.print("+");

       for(inti=0;i2;i++)System.out.print("-");

       System.out.println("+");

 

       for(intk=1;k<(height-1)/2;k++){

           System.out.print("|");

           for(inti=0;i2;i++)System.out.print("");

           System.out.println("|");

       }

 

       System.out.print("|");

 

       String ff ="    "+s+"    "; //填空

       System.out.print(String.format(ff,"",s,""));

 

       System.out.println("|");

 

       for(intk=(height-1)/2+1;k1;k++){

           System.out.print("|");

           for(inti=0;i2;i++)System.out.print("");

           System.out.println("|");

       }  

 

       System.out.print("+");

       for(inti=0;i2;i++)System.out.print("-");

       System.out.println("+");   

   }

}



六、题目

奇妙的数字 
小明发现了一个奇妙的数字。它的平方和立方正好把0~910个数字每个用且只用了一次。你能猜出这个数字是多少吗? 
请填写该数字,不要填写任何多余的内容。分析:该数的平方数位数和加上立方和位数和正好是10位,我们可以人为的排除一部分不满足条件的

参考答案:

publicclass Question6 {

 

   publicstaticvoidmain(String[]args){

       f1();      

   }

   //暴力破解

   publicstaticvoidf1(){

       ints=0;

       intv=0;

       for(inti=40;i<</span>100;i++){

           s=(int)Math.pow(i,2);//四位数

               inta=s;

               intb=s/10;

               intc=s/100;

               intd=s/1000;

           v=(int)Math.pow(i,3);//六位数

           inte=v;

           intf=v/10;

           intg=v/100;

           inth=v/1000;

           intk=v/10000;

           intm=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)。

注意:需要你提交的是一个整数,不要填写任何多余的内容。

publicclass Question7{

 

   publicstaticvoidmain(String[]args) throws Exception {

       //用穷举法来试探1225+a*b+e*f-a-b-e-f==2015  (b=a+1,f=e+1)

       for(inti=1;i<</span>50;i++){

              for(intj=1;j<</span>50;j++){

                  if((1225+i*(i+1)+j*(j+1)-i-j-(i+1)-(j+1))==2015&&i

                      System.out.println(i+"*****"+j);

                  }

              }

          }

   }

}


· 

八、题目 
移动距离 
X
星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3… 
当排满一行时,从下一行相邻的楼往反方向排号。 
比如:当小区排号宽度为6时,开始情形如下:

1 2  3  4 5  6

12 11 109  8  7

13 14 1516  17 18....

 

我们的问题是:已知了两个楼号mn,需要求出它们之间的最短移动距离(不能斜线方向移动)

 

输入为3个整数wm n,空格分开,都在110000范围内

要求输出一个整数,表示mn两楼间最短移动距离。

参考答案:

publicclass Question8{

 

   publicstaticvoidmain(String[]args) {

       Scanner sc=newScanner(System.in);

       System.out.println("inputw:");

       intw=sc.nextInt();

       System.out.println("inputn:");

       intn=sc.nextInt();

       System.out.println("inputm");

       intm=sc.nextInt();

       int[][]a=newint[w][w];

            for(inti=0;i

                if(i==0){//第一行

                    for(intj=0;j

                        a[i][j]=j+1;

                   }

                }

                elseif(i%2!=0){//奇数行

                    intt=w*i+1;

                    for(intj=w-1;j>=0;j--){

                        a[i][j]=t++;

                    }

                }else{//偶数行(除过0)

                    intt=w*i+1;

                    for(intj=0;j

                        a[i][j]=t++;

                    }

                }

            }

            //打印

            for(inti=0; i <w; i++) {

               for(intj=0;j

                   System.out.print(a[i][j]+"\t");

               }

               System.out.println();

           }

           //求最短路径

            intx1=0,x2=0,y1=0,y2=0;

            for(inti=0;i

                for(intj=0;j

                    if(a[i][j]==n){

                        x1=i;

                        y1=j;

                    }

                    if(a[i][j]==m){

                        x2=i;

                        y2=j;

                    }

                }

            }        

            intdistance=Math.abs((x2-x1)+(y2-y1));

            System.out.println(distance);

   }

}



九、题目 
打印大X

小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。

为了便于比对空格,所有的空白位置都以句点符来代替。

 

要求输入两个整数mn,表示笔的宽度,X的高度。用空格分开(0保证n是奇数)

要求输出一个大X

 

例如,用户输入:

3  9

程序应该输出: 

再例如,用户输入: 
4 21
 
程序应该输出 

参考答案

publicclass Question9{

 

   publicstaticvoidmain(String[]args) {

       Scanner sc=newScanner(System.in);

       System.out.println("inputn:");

       intn=sc.nextInt();

       System.out.println("inputm:");

       intm=sc.nextInt();

     char[][]ch=newchar[n][m+n-1];

     //初始化方阵

     for(inti=0;i

         for(intj=0;j1;j++){

            ch[i][j]='.';   

         }

     }     

    //用“*”填充方阵

   for(inti=0;i

    for(intj=0,k=m+n-2;j<=k;j++,k--){

        if(j

           ch[i][j+i]='*';

        if(k>=n-1)

        ch[i][k-i]='*';

    }

   }

    //打印

       for(inti=0;i

            for(intj=0;j1;j++){

               System.out.print(ch[i][j]+"");             

            }

            System.out.println();

        }

   }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值