2011年全国软件大赛模拟题及参考答案(Java本科组)

浏览:
字体:
发布时间:2013-12-10 00:21:03
来源:
非官方标注答案,如有不妥,请指出。
2011 模拟 java 本科
注意:
本套模拟题主要模拟命题形式与考核范围。真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:
本试卷包含两种题型:“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。选手的程序必须是通用的,不能只对试卷中给定的数据有效。
 
1.      代码填空(满分2分)
在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。请完善以下代码:
public class MyTest
{
    public static void main(String[] args)
    {
        Vector a = new Vector();
        for(char i=A; i<=F; i++)  a.add("" + i);  
        for(int k=0; k<3; k++)
        {
            int d = ____________________________;
 (new Random()).nextInt(a.size());
            System.out.println(a.remove(d));
        }
    }
}
 
2.      代码填空(满分3分)
不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换为十进制。试完善之。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int n = 0;
for(int i=0; i<s.length(); i++)
{
     char c = s.charAt(i);
     if(c<0 || c > 2) throw new RuntimeException("Format error");
     n = ______________________; 3*n+(c-0)
}
System.out.println(n);
3.      代码填空(满分4分)
有如下程序,完成的功能为:找出数组中的最大元素。请填写程序的中空白,使程序运行正确。
 
public class test
{
    public static void main(String[] args) {
        int array[]={0,34,67,90,21,-9,98,1000,-78};
        System.out.println(new test().findMax (array, 0));
    }
    public int findMax(int array[],int index)
    {
        if(array==null || array.length==0)
        {
            return 0;
        }
        int max=array[0];
        if(index<array.length-1)
        {
             max=____________________ findMax(array,index+1);
        }
        if(max<array[index]) max= array[index];
  
        return max;
    }
}
 
4.      代码填空(满分5分)
电视台开宝箱节目:打进电话的人可以开启一个宝箱。箱子中有一件礼品。礼品是iphone的机率为1/12;是mp3 的机率为1/5;是洗衣粉的机率为1/2;剩余是KFC优惠券。
       每次打进电话,宝箱会重置。
       以下程序模拟了该抽奖过程。请填写缺失的部分。
    public static void main(String[] args)
{
        int i = (int) Math.random() * _____________; 60
        if (i < 5) {
            System.out.println("恭喜中了:iphone手机");
        }else if (i < 17) {
            System.out.println("恭喜中了:mp3");
        } else if (i < 47) {
            System.out.println("恭喜中了:洗衣粉");
        } else {
            System.out.println("恭喜中了:KFC优惠券");
        }
    }
 
5.      代码填空(满分6分)
下列代码求出一个二进制串中连续的1或连续的0出现的最大次数。请填缺失代码。
例如:s = “101100111100011”
则返回:4
又例如:s=”0111100000”
则返回:5
public static int getMaxContinuity(String s)
{
        int max_1 = 0;
        int max_0 = 0;    
        int n_1 = 0;  // 当前1连续的次数
        int n_0 = 0;  // 当前0连续的次数
      
        for(int i=0; i<s.length(); i++)
        {
            if(s.charAt(i)==0)
            {
                n_0++;
                ________; n_1=0
            }
            else
            {
                n_1++;
                _________; n_0 = 0
            }
          
            if(n_1 > max_1) max_1 = n_1;
            if(n_0 > max_0) max_0 = n_0;
        }
      
        return max_1>max_0? max_1 : max_0);
}
 
6.      代码填空(满分9分)
 
下列代码把16进制表示的串转换为3进制表示的串。试完善之。
例如:x=“5”
则返回:“12”
又例如:x=”F”
则返回:“120”
    private static int getRealValue(char x)
    {
        if(x>=0 && x<=9) return x-0;
        if(x>=a && x<=f) return x-a+10;
        if(x>=A && x<=F) return x-A+10;
        return 0;
    }
 
    public static String jin_zhi_16_3(String x)
    {
        int n = 0; // 累加真值
        for(int i=0; i<x.length(); i++)
        {
            n = _________ + getRealValue(x.charAt(i));  // 填空 16*n
        }
      
     &n
>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2023 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();