软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷25

0
收藏   分享
  • 卷面总分:75分
  • 试卷类型:模拟考试
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:14次
  • 作答时间:150分钟
试卷简介
试卷预览
1

阅读以下函数说明和Java代码,将应填入(n)处的字句写在对应栏内。

 【说明】

 下面的程序先构造Point类,再顺序构造Ball类。由于在类Ball中不能直接存取类Point中的xCoordinate及yCoordinate属性值,Ball中的toString方法调用Point类中的toStrinS方法输出中心点的值。在MovingBsll类的toString方法中,super.toString调用父类Ball的toString方法输出类Ball中声明的属性值。

 【Java代码】

 //Point.java文件

 public class Point{

    private double xCoordinate;

    private double yCoordinate;

    public Point(){}

    public Point(double x,double y){

       xCoordinate=x;

       yCoordinate=y;

    }

    public String toStrthg(){

       return"("+Double.toString(xCoordinate)+","

       +Double.toString(yCoordinate)+")";

    }

    //other methods

 }

 //Ball.java文件

 public class Ball{

    private (1);//中心点

    private double radius;//半径

    private String color;//颜色

    public Ball(){}

    public Ball(double xValue, double yValue, double r){

       //具有中心点及其半径的构造方法

       center=(2);//调用类Point中的构造方法

       radius=r;

    }

    public Ball(double xValue, double yValue, double r, String c){

       //具有中心点、半径和颜色的构造方法

        (3);//调用3个参数的构造方法

       color=c;

    }

    public String toString(){

       return "A ball with center"+center.toString()

       +",radius "+Double.toString(radius)+",color"+color;

    }

    //other methods

  }

 class MovingBall (4) {

    private double speed;

    public MovingBall(){}

    public MoyingBall(double xValue, double yValue, double r, String c, double s){

        (5);//调用父类Ball中具有4个参数的构造方法

        speed=s;

    }

    public String toString(){

       return super.toString()+",speed"+Double.toString(speed);

    }

    //other methods

 }

 public class test{

    public static void main(String args[]){

       MovingBall mb=new MovingBall(10,20,40,"green",25);

       System.out.println(mb);

    }

 }

1

阅读下列函数说明和c代码,将应填入(n)处的字句写在对应栏内。

  【说明】

 所谓货郎担问题,是指给定一个无向图,并已知各边的权,在这样的图中,要找一个闭合回路,使回路经过图中的每一个点,而且回路各边的权之和最小。

 应用贪婪法求解该问题。程序先计算由各点构成的所有边的长度(作为边的权值),按长度大小对各边进行排序后,按贪婪准则从排序后的各边中选择边组成回路的边,贪婪准则使得边的选择按各边长度从小到大选择。

 函数中使用的预定义符号如下:

   #define M 100

   typedef struct{/*x为两端点p1、p2之间的距离,p1、p2所组成边的长度*/

      float x;

      int p1, p2;

   }tdr;

   typedef struct{/*p1、p2为和端点相联系的两个端点,n为端点的度*/

      int n, P1, p2;

   }tr;

   typedef struct{/*给出两点坐标*/

      float x,y;

   }tpd;

   typedef int tl[M];

   int n=10;

 【函数】

 float distance(tpd a,tpd b);/*计算端点a、b之间的距离*/

    void sortArr(tdr a[M], int m);

    /*将已经计算好的距离关系表按距离大小从小到大排序形成排序表,m为边的条数*/

    int isCircuit(tr[M], int i, int j);

    /*判断边(i, j)选入端点关系表r[M]后,是否形成回路,若形成回路返回0*/

    void selected(tr r[M], int i, int j);/*边(i,j)选入端点关系表r*/

    void course(tr r[M], tl 1[M]);/*从端点关系表r中得出回路轨迹表*/

    void exchange(tdr a[M], int m, int b);

    /*调整表排序表,b表示是否可调,即是否有边长度相同的边存在*/

    void travling(tpd pd[M], int n, float dist, t1 locus[M])

    /*dist记录总路程*/

    {

       tdr dr[M];/*距离关系表*/

       tr r[M];;/*端点关系表*/

       int i, j, k, h, m;/*h表示选入端点关系表中的边数*/

       int b;/*标识是否有长度相等的边*/

       k=0;

       /*计算距离关系表中各边的长度*/

       for(i=1;i<n;i++){

          for(j=i+1;j<=n;j++){

             k++;

             dr[k].x=(1);

             dr[k].p1=i;

         dr[k].p2=j;

      }

   }

   m=k;

   sortArr(dr,m);/*按距离大小从小到大排序形成排序表*/

   do{

      b=1;

      dist=0;

      k=h=0;

      do{

        k++;

        i=dr[k].p1;

        j=dr[k].p2;

        if((r[i].n<=1)&&(r[j].n<=1)){/*度数不能大于2*/

           if((2)){

             /*若边(i,j)加入r后形成回路,则不能加入*/

             (3);

             h++;

             dist+=dr[k].x;

           }else if((4)){

             /*最后一边选入r成回路,则该边必须加入且得到解*/

             selected(r,i,j);

             h++;

&n