2016年java C组真题及答案

来源:互联网 发布:淘宝导航条怎么装修 编辑:程序博客网 时间:2024/06/16 15:58

一、题目

隔行变色 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时,开始情形如下:

6

12 11 109  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

 

例如,用户输入:

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


原创粉丝点击