一起答

2011年软件设计师考试考前密卷(四)-下午试题

  • 卷面总分:75分
  • 浏览次数:0
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:21次
  • 作答时间:150分钟
试卷简介
2011年软件设计师考试考前密卷(四)-下午试题:1.2011年软件设计师考试全真模拟试卷-下午试题,考前复习的好帮手!2. 每道题都配有答案解析,强化复习效
部分试题预览
  1. ●试题七

    【说明】

    下面是一个Applet程序,其功能是将完整的图像显示于Applet的区块中,然后可以通过拖动鼠标让图像随着鼠标拖动的轨迹而移动。

    程序运行结果如图5所示。

    图5

    import java.applet.*;

    import java.awt.*;

    /*

    */

    public class ex4_7 extends Applet{

    private Image iImg;

    private int xPos,yPos;

    public void init(){

    xPos = yPos =(1);

    iImg = getImage((2)"ex4_7.jpg");

    }

    public void paint(Graphics g){

    g.drawImage(iImg,xPos,yPos,(3));

    }

    public boolean(4)(Event e,int x,int y){

    xPos = x;

    yPos = y;

    (5);

    return true;

    }

    }

    ex4_7.html

    ex4_7

  2. ●试题六

    阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。

    【说明】

    源程序中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。

    ①定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。

    ②定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。

    ③完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。

    ④完成Money类成员函数float Money::TotalMoney(float fencelen, float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。

    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

    源程序文件test4.cpp清单如下:

    #include

     (1) 

    class Circle

    {

    private:

    float radius;

    public:

     (2) 

    float Circumference(){return 2 * PI * radius;}

    float Area(){return PI * radius * radius;}

    };

    class Money

    {

    private:

    float FencePrice;

    float ConcretePrice;

    public:

    Money(float f,float c);

    float TotalMoney(float fencelen, float conarea);

    };

    Money::Money(float f,float c)

    {

     (3) 

    }

    float Money::TotalMoney(float fencelen, float conarea)

    {

     (4) 

    }

    void main()

    {

    float radius,fence,concrete;

    cout.setf(ios::fixed);

    cout.setf(ios::showpoint);

    cout.precision (2) ;

    cout<< "Enter the radius of the pool: ";

    cin >>radius;

    cout<< "Enter the FencePrice: ";

    cin >>fence; 

    cout<< "Enter the ConcretePrice: ";

    cin >>concrete;    

    Circle Pool(radius);

    Circle PoolRim(radius + WIDTH);

    Money mon(fence,concrete);

    float totalmoney=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area() - Pool.Area()));

    cout<< "The total money is RMB "<< totalmoney<< endl;

    }

  3. ●试题五

    阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【程序5说明】

    设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用"()"括起来的各子树的列表(如有子树的话),各子列表间用","分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。

    本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。

    【程序5】

    #include

    #include

       B.h>

    #define M 3

    typedef struct node{char val;

    struct node*subTree[M];

    }NODE;

    char buf[255],*str=buf;

    NODE*d=NULL

    NODE*makeTree()/*由列表生成M叉树*/

    {int k;NODE*s;

    s= (1) ;

    s->val=*str++;

    for(k=0;ksubTree[k]=NULL;

    if(*str=′(′){

    k=0;

    do{str++;

    s->subTree[k]= (2) ;

    if(*str==′)′){str++;break;}

    k=k+1;

    }while( (3) );

    }

    return s;

    }

    void walkTree(NODE*t)/*由M叉树输出列表*/

    {int i;

    if(t!=NULL){

     (4) 

    if(t->subTree[0]==NULL)return;

    putchar(′(′);

    for(i=0;i

     (5) ;

    if(i!=M-1&&t->subTree[i+1]!=      NULL)

    putchar(′,′);

    }

    putchar(′)′);

    }

    }

    void main()

    {printf("Enter exp:");

    scanf("%s",str);

    d=makeTree();

    walkTree(d);putchar(′\n′);

    }

  4. ●试题四

    下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

    注意:部分源程序给出如下。

    请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。

    试题程序:

    #include

    #include

       C.h>

    #include

    #include

    #define N 10

    typedef struct ss

    {

    char num[10];

    int order;

    }STU;

    STU *fun(STU a[], int m)

    {

    STU b[N],*tt;

    int i,j,k;

     (1) ;

    for(i=0; i

    b[i]=a[i];

    for (k=0;k

    {

    for(i=j=0;i

    if ( (2) ) 

    j=i;

    tt[k]=b[j];

    b[j].order=0;

    }

    return (3) ;

    }

    outresult(STU a[],FILE *pf)

    {

    int i;

    for(i=0;i

    fprintf(pf,"No=%s Mark=%d\n",

    a[i].num,a[i].order);

    fprintf(pf,"\n\n");

    }

    main()

    {

    STU[N]={{"A01",80},{"A02",79},

    {"A03",66},{"A04",82},{"A05",87},

    {"A06",93},{"A07",78},{"A08",60},

    {"A09",85},{"A10",73}};

    STU *p_order;

    int i,m;

    clrscr();

    printf("*** The Origial data ***\n");

    outresult(a, stdout);

    printf("\nGive the numeber of the

    students who have better score:");

    scanf("%d",&m);

    while (m>10)

    {

    printf("\nGive the number of the

    studets who have better score:");

    scanf("%d",&m);

    }

    p_order=fun(a,m);

    printf("*** THE RESULT ***\n");

    printf("*** The top students ***\n");

    for(i=0; i

    printf(" %s  %d\n",

    p_order[i].num,p_order[i].order);

    free(p_order);

    }

  5. ●试题三

    根据题意回答以下问题:

    设某商业集团数据库中有3个实体集:一是"商店"实体集,属性有商店编号,商店名,地址等;二是"商品"实体集,属性有商品号,商品名,规格,单价等;三是"职工"实体集,属性有职工编号,姓名,性别,业绩等。商店与商品间存在"销售"联系,每个商店可以销售多种商品,每种商品也可以在多个商店和职工间存在"聘用"联系,每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工有聘期和月薪。

    问题:

    1.请根据题意完善下面ER图。

    2.将ER图转换成关系模型,并注明主键和外键。

    3.请写出要查出员工"小李"在三月份的销售业绩的关系代数式。

  6. ●试题二

    阅读以下说明和流程图(如图2所示),回答问题1和问题2,将答案写在答卷的对应栏内。

    【说明】

    本流程图实现从成绩文件生成学生成绩一览表。

    某中学某年级的学生成绩数据(分数)登录在成绩文件F0中,其记录格式见表2:

    由该成绩文件生成见表3的学生成绩一览表。生成的学生成绩一览表按学号升序排列。表中的名次是指该生相应课程在年级中的名次。

    流程图中的顺序文件F0是学生成绩文件,F0文件经处理1处理后产生顺序文件F,然后经过处理2至处理4对文件F进行处理和更新。在处理5中,仅对文件F的纪录进行学生成绩一览表的编排输出,不进行排序和增加名次等处理。

    【问题1】

    流程图中文件F的纪录格式设定为见表4形式:

    其中的①、②应定义为何种数据项?

    【问题2】

    简述处理2、处理3和处理4作何种处理,若有排序处理则需指明排序的键及序(升序或降序)。

    【流程图】

                                      图 3 

  7. ●试题一

    阅读下列说明、图1和图2,回答问题1、问题2和问题3。

    【说明】

    下面是某租车信息管理系统的介绍:该车库中备有若干车辆,每辆车有车号、车牌、车名、价格等属性。车库不定期地购买并注册新车供用户借用,也可将报废的旧车注销以停止租用。

    车库可为众多用户提供服务。每个用户在借车之前需注册姓名、地址等内容。每个用户最多可同时借3辆车。每辆车借期7天;若有一辆车超期,则不可再借其他车。一辆车超期一天罚款250元。若一辆车超期3周不归还,则发布通告。若用户借的车丢失,在罚款处理之前不能借车,每辆报失的车罚款该车目前市价(包括折旧)的1.2倍。注册新用户不受限制;而注销用户之前,该用户必须归还所有借的车,或者报失并接受罚款。

    【状态图1】

    【问题1】

    分析车辆的状态和事件,指出图1中的 (1) 、 (2) 、 (3) 、 (4) 分别是什么?

    【问题2】

    分析用户的状态和事件,指出图2中的 (5) 、 (6) 、 (7) 、 (8) 分别是什么?(注意,用户与车辆在状态图中的关系)。

    【问题3】

    指出UML中活动图的含义,并说明活动图和状态图的区别与联系。

    【状态图2】

    图2    用户的状态图