一起答

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

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

    【说明】

    下面是一个Applet程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示区和一个按钮,点击按钮,可以在文本区已有的文本基础上追加显示10条"Welcome to China"信息,并且文本区由滚动条控制文本的上下滚动。

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

    import javax.swing.*;

    import javA.awt.*;

    import javA.awt.event.*;

    /*

       code="ex5_6.class" width=800 height=400 >

                                                                                              图4

    */

    public class ex5_6 extends JApplet {

    JButton jb = new JButton("Add Text");

    JTextPane jtp = new JTextPane();

    public void init() {

    jb.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e){

    for(int i = 1; i< 10; i++)

     (1) + "Welcome to China!\n");

    }

    });

    Container cp = (2) ;

    cp.add(new JScrollPane(jtp));

    cp.add( (3) );

    }

    public static void main(String[]args) {

    ex5_6 obj5_6=new ex5_6();

    String str = obj5_6.getClass().toString();

    if(str.indexOf("class") !=-1)

    str = str.substring (6) ;

    JFrame. frm = new JFrame(str);

    frm.addWindowListener(new  (4) {

    public void windowClosing(WindowEvent we) {

    System.exit(0);

    }

    });

     (5) .add(ex5_6);

    frm.setSize(300, 400);

    frm.setVisible(true);

    }

    }

    ex5_6.html

    ex5_6

       code="ex5_6.class" width=800 height=400 >

  2. ●试题三

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

    【函数3说明】

    函数DeleteNode(Bitree*r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

    typedef struct Tnode{

    int data;/*结点的键值*/

    struct Tnode*Lchild,*Rchild;/*指向左、右子树的指针*/

    }*Bitree;

    在二叉查找树上删除一个结点时,要考虑三种情况:

    ①若待删除的结点p是叶子结点,则直接删除该结点;

    ②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;

    ③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s ,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。

    【函数3】

    int DeleteNode(Bitree*r,int e){

    Bitree p=*r,pp,s,c;

    while( (1) ){/*从树根结点出发查找键值为e的结点*/

    pp=p;

    if(e<p->data)p=p->Lchild;

    else p=p->Rchild;

    }

    if(!p)return-1;/*查找失败*/

    if(p->Lchild &&p->Rchild) { /*处理情况③*/

    s= (2) ;pp=p;

    while( (3) ){pp=s;s=s->Rchild;}

    p->data=s->data;p=s;

    }

    /*处理情况①、②*/

    if( (4) )c=p->Lchild;

    else c=p->Rchild;

    if(p==*r)*r=c;

    else if( (5) )pp->Lchild=c;

    else pp->Rchild=c;

    free(p);

    return 0;

    }

  3. ●试题四

    请补充函数fun(),该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入"Are you come from Sichuan?",则输入"are you come from sichuan?"。

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

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

    试题程序:

    #include

    #include

    #include

    char *fun(char tt[])

    {

    int i;

    for(i=0;tt[i];i++)

    {

    if((tt[i]>=′A′)&&(  (1) ))

     (2) ;

    }

    return ( (3) ) ;

    }

    main()

    {

    char tt[81];

    printf("\nPlease enter a string:");

    gets(tt);

    printf("\nThe result string is:\n%s",

    fun(tt));

    }

  4. ●试题五

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

    【说明】

    ①在类体中添加函数move(double ax, double ay)的定义,使得点的坐标x和y分别移动ax和ay个单位。

    ②在类定义外完成重载的两个构造函数CPosition()和CPosition(double dx, double dy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。

    ③完成函数double distance(double bx, double by)的定义,该函数返回*this和点(bx,by)的距离。

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

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

    #include

    #include

    class CPosition

    {

    public:

    CPosition();

    CPosition(double dx, double dy);

    double getx();

    double gety();

     (1) 

    double distance(double bx, double by);

    private:

    double x;

    double y;

    };

     (2) 

    {

    x=0; y=0;

    }

    CPosition::CPosition(double dx, double dy)

    {

    x=dx; y=dy;

    }

    double CPosition::getx()

    {

    return x;

    }

    double CPosition::gety()

    {

    return y;

    }

    double CPosition::distance(double bx, double by)

    {

     (3) 

    }

    void main()

    {

    double a,b;

    cout<< "Input x, y position of a point: ";

    cin >>a >>b;

    CPosition psA(a, b);

    cout<< "Input x, y position of another point: ";

    cin >>a >>b;

    cout<< "The distance is "<< psA.distance(a,b)<

    }

  5. ●试题二

    阅读以下说明和流程图,回答问题1至问题3,将解答填入答题纸的对应栏内。

    【说明】

    某城市电信局受理了许多用户申请在指定电话上开设长话业务。长话包括国内长途和国际长途。电信局保存了长话用户档案和长话业务档案。

    长话用户档案的记录格式为

    长话业务档案的记录格式为

    电话用户每次通话的计费数据都自动地记录在电信局程控交换机的磁带上。计费数据的记录格式为

    该电信局为了用计算机自动处理长话收费以提高工作效率,开发了长话计费管理系统。该系统每月能为每个长话用户打印出长话缴费通知单。长话缴费通知单的记录格式为

    流程图描述了该系统的数据处理过程。

    该系统每天对原始的计费数据进行分类排序,并确定每个通话记录的通话类型(市话/国内长途/国际长途),再根据话费单价文件算出每个通话记录应收取的话费。因此,形成的日计费文件中,增加了两个数据项:通话类型和话费。该系统每日对日计费文件进行累计(按电话号码和通话类型,对该类型的话费进行累计,得到该电话号码该通话类型的当月话费总计),形成月计费文件。

    月计费文件经过长话出账处理形成长话账单文件。长话账单文件的记录格式为

    长话账单文件经过处理5和处理6的处理后,就可以形成长话缴费通知单。

    【问题1】

     (1) 请说明流程图1中的文件F0、F1分别是哪个文件。

     (2) 处理1和处理5分别按照哪些数据项进行分类?

    【问题2】

    处理4能发现哪些错误(不需考虑设备故障错误)?

    【问题3】

    说明处理6的功能。

    【流程图】(如图3所示)

                                                                                         图 3

  6. ●试题一

    阅读以下算法说明和流程图,回答问题1和问题2。

    【算法说明】

    下面是一段插入排序的程序,将R[k+1]插入到R[1…k]的适当位置。R[0]=R[k+1];j=k;

    while (R[j]>R[0])

    {

    R[j+1]=R[j];j--;

    }

    R[j+1]=R[0];

    【流程图】

    【测试用例设计】

    (while循环次数为0、1、2次)

    【问题1】

    指出算法的流程图中 (1) ~ (3) 处的内容。

    【问题2】

    指出测试用例设计中 (4) ~ (9) 处的内容。