一起答
主观

●试题二

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

【说明2.1】

以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

【函数2.1】

void fun1(int a[])

{int i,j,k,r,x,m;

for(i=2;i<=n;i++)

{ (1) ;

k=1;r=i-1;

while(k<=r)

{m=(k+r)/2;

if(x[m])r=m-1;

else (2) ;

}

for(j=i-1;j>=k;j--)

a[j+1]=a[j];

 (3) ;

}

}

【说明2.2】

以下程序可以把从键盘上输入的十进制数(1ong型)以二~十六进制形式输出。

【程序2.2】

#include

main()

{char b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};

int c[64],d,i=0,base;

long n;

printf(″enter a number:′n″);

scanf(″%1d″,&n);

printf(″enter new basc:kn″);

scanf(″%d″,&base);

do

{c[i]= (4) ;

i++;n=n/base;

}while(n!=0);

printf("transmite new base:\n");

for(--i;i>=0;--i)

{ d=c[i];

printf("%c", (5) );

}

}

试题出自试卷《2011年程序员考试考前密卷(三)-下午试题》
参考答案
查看试卷详情
相关试题
  1. ●试题八

    阅读以下说明和Java代码,将解答写入答题纸的对应栏内。

    【说明】

    下面的程序中定义了两个方法求自然数1~100的和。具体如下:int sum1(int n);利用循环求1~n的和,int sum2(int n);利用递归方法求和1~n的和;在main()方法中调用这两个方法求1~100的和并显示。在程序的每条横线处填写一个适当的语句,使程序的功能完整。

    public class Sum{

    public static void main (1) 

    {

    //1.调用sum1(int n),求1~100的和

    //标准输出

     (2) ("1~100的和:"+sum1(100));

    //2.调用sum2(int n),求1~100的和

    //标准输出

     (2) ("1~100的和:"+sum2(100));

    }

    static int sum1(int n)

    {

    int result=0;

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

     (3) 

    retrun result;

    }

    static int sum2(int n)

    {

    if (4) 

    return 1;

    else

     (5) 

    }

    }

  2. ●试题七

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

    【说明】

    设计一个评选优秀教师和学生的程序,其类结构如图6所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。

    图6

    【程序】

    #include

    #include

    enum boolean{False,True};

    class base

    {

    protected:

    char name[8];

    public:

    void getname(){cout<<"姓名:";cin>>name;}

    void printname(){cout<<"姓名:"<

    virtual boolean isgood()=0;

    }

    class student: (1) 

    {

    int num;

    public:

    void getnum()

    {

    cout<<"考试成绩:";cin>>num;

    }

    boolean isgood(){return  (2) ;}

    };

    class teacher: (3)  public base

    {

    int num;

    public:

    void getnum()

    {

    cout<<"每年发表论文数:";cin>>num;

    }

    boolean isgood(){return (4)  ;}

    };

    void main()

    {

    base*p[50];

    student*pstud;

    teacher*ptech;

    char ch;

    int count=0;

    do

    {

    cout<<"输入教师(t)或学生(s):";

    cin>>ch;

    if(ch==′s′)

    {

    pstud=new student;

    pstud->getname();

    pstud->getnum();

    p[count++]=pstud;

    }

    else if(ch==′t′)

    {

    ptech=newteacher;

    ptech->getname();

    ptech->getnum();

    p[count++]=ptech;

    }

    else

    cout<<"输入错误"<

    cout<<"继续输入吗(Y/n)";

    cin>>ch;

    }while(ch==′y′);

    for(int i=0;i

    {

    if( (5) )∥若为优秀,则输出

    p[i]->printname();

    }

    }

  3. ●试题六

    阅读以下应用说明及Visual Basic部分程序代码,将应填入(n)处的字句写在答题纸的对应栏内。

    【说明】

    本应用程序是一个小写数字转换成大写格式的转换器,其运行窗口如图5所示。图5窗口中有两个标签(lblNumber和lblChinese)、两个文本框(txtNumber和txtChinese)和一个命令按钮(cmdChange)。当单击按钮cmdChange时,将文本框txtNumber中数字转换成中文大写,并显示在文本框txtChinese中。例如,在文本框txtNumber输入0076845,单击cmdChange按钮,将在文本框txtChinese中显示"柒万陆仟捌佰肆拾伍"。

    程序中调用的函数CChinse(Strdigit As String)的功能是先删除字符串的所有前导0,再调用函数Change(Strdigit As String),将数字字符串Strdigit转换成中文大写格式。

    为了防止用户在文本框txtNumber输入非数字形式的字符,程序将以空字符代替所输入的非数字有形字符。

    【程序】

    Private Function Transfer(Strdigit As String)As String

    ′完成小写向大写的转换,这段代码省略

    End Function

    Private Function CChinese(Strdigit As String)As String

    Dim intLen,intCounter As Integer

    intLen=Len(Strdigit)

    If intLen>0 Then

    intcounter=0

    Do′过滤数字串Strdigit的前导0

    intcounter=intcounter+1

    Loop Until Mid(Strdigit, (1) )

    intLen= (2) 

    Strdigit= (3) (Strdigit,intLen)

    CChinese=Transfer(Strdigit)

    End If

    End Function

    Private Sub cmdChange_Click()

    txtChinese.Text=CChinese( (4) )′调用Cchinese函数

    End Sub

    Private Sub txtNumber_KeyPress(KeyAscii As Integer)

    Select Case KeyAscii′根据输入字符的ASCⅡ码的值进行判断

    Case KeyAscii<32′保留输入的控制字符

    Case 48 To 57′保留输入的数字字符

    Case Else′其他情况以空字符代替

     (5) =0

    End Select

    End Sub

  4. ●试题五

    以下是与Visual Basic开发应用有关的5个问题。对每一个问题,请将解答填入答题纸的对应栏内。

    1.在Visual Basic中,工程文件、窗体文件和标准模块文件的扩展名是什么?请从下列选项中选择:

    prg、prj、exe、vbp、form、frm、win、fra、std、bas、vbs、vbm

    2.设某窗体上有一个命令按钮,其名称为CmdSave,运行时该按钮上显示有"保存(S)"字样的信息。为使热键Alt+S与该命令按钮相关联,应该对按钮CmdSave的Caption属性设置什么样的属性值?

    3.设某窗口内有一个图像框Imagel,以及两个命令按钮"放大"和"缩小"。单击"放大"按钮就会使该图像框的长和宽都放大10%;单击"缩小"按钮就会使该图像框的长和宽都缩小10%(该图像框的左上角不动)。请分别写出这两个命令按钮的单击事件过程中的程序代码。

    4.为使某个单选按钮初始时默认被选中,在开发时应怎样做?

    5.若有语句Tmpval=MsgBox("非法操作!",vbOKCancel+vbCritical,"提示"),请简要描述程序运行时弹出的消息框的主要特征。

  5. ●试题四

    【说明】

    下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。

    例如:若输入

    2857848328

    则应输出

    The max:8

    Total:4∥最大数出现次数

    The positions:1469

    【函数】

    #include

    #define M 10

    int fun(int*a,int*n,int pos[])

    {

    int i,k max=-32767;

     (1) 

    for(i=0;i

    if( (2) )max=a[i];

    for(i=0;i

    if( (3) )pos[k++]=i;

    *n=k;

    return max;

    }

    main()

    {

    int a[M],pos[M],i=0,j,n;

    printf("Enter 10 number:");

    for(i=0;i<M;i++)scanf("%d", (4) );

    j=fun( (5) );

    printf("The max:%d\n",j);

    printf("Total:%d",n);

    printf("The position:");

    for(i=0;i<n;i++)printf("%4d",pos[i]);

    printf("\n");

    }

  6. ●试题三

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

    【说明】

    本题给出四个函数,它们的功能分别是:

    1.int push(PNODE *top,int e)是进栈函数,形参top是栈顶指针的指针,形参e是入栈元素。

    2.int pop(PNODE *top,int *e)是出栈函数,形参top是栈顶指针的指针,形参e作为返回出栈元素使用。

    3.int enQueue(PNODE *tail,int e)是入队函数,形参tail是队尾指针的指针,形参e是入队元素。

    4.int deQueue(PNODE *tail,int *e)是出队函数,形参tail是队尾指针的指针,形参e作为返回出队元素使用。

    以上四个函数中,返回值为0表示操作成功,返回值为-1表示操作失败。

    栈是用链表实现的;队是用带有辅助结点(头结点)的单向循环链表实现的。两种链表的结点类型均为:

    typedef struct node{

    int value;

    struct node *next;

    }NODE,*PNODE;

    【函数1】

    int push(PNODE *top,int e)

    {

    PNODE p=(PNODE)malloc (sizeof(NODE));

    if (!p) return-1;

    p->value =e;

     (1) ;.

    *top=p;

    return 0;

    }

    【函数2】

    int pop (PNODE *top,int *e)

    {

    PNODE p=*top;

    if(p==NULL)return-1;

    *e=p->value;

     (2) ;

    free(p);

    return 0;

    }

    【函数3】

    int enQueue (PNODE *tail,int e)

    {PNODE p,t;

    t=*tail;

    p=(PNODE)malloc(sizeof(NODE));

    if(!p)return-l;

    p->value=e;

    p->next=t->next;

     (3) ;

    *tail=p;

    return 0;

    }

    【函数4】

    int deQueue(PNODE *tail,int *e)

    {PNODE p,q;

    if((*tail)->next==*tail)return -1;

    p=(*tail)->next;

    q=p->next;

    *e=q->value;

     (4) =q->next;

    if(*tail==q) (5) ;

    free(q);

    return 0;

    }

  7. ●试题二

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

    【说明2.1】

    以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。

    【函数2.1】

    void fun1(int a[])

    {int i,j,k,r,x,m;

    for(i=2;i<=n;i++)

    { (1) ;

    k=1;r=i-1;

    while(k<=r)

    {m=(k+r)/2;

    if(x[m])r=m-1;

    else (2) ;

    }

    for(j=i-1;j>=k;j--)

    a[j+1]=a[j];

     (3) ;

    }

    }

    【说明2.2】

    以下程序可以把从键盘上输入的十进制数(1ong型)以二~十六进制形式输出。

    【程序2.2】

    #include

    main()

    {char b[16]={′0′,′1′,′2′,′3′,′4′,′5′,′6′,′7′,′8′,′9′,′A′,′B′,′C′,′D′,′E′,′F′};

    int c[64],d,i=0,base;

    long n;

    printf(″enter a number:′n″);

    scanf(″%1d″,&n);

    printf(″enter new basc:kn″);

    scanf(″%d″,&base);

    do

    {c[i]= (4) ;

    i++;n=n/base;

    }while(n!=0);

    printf("transmite new base:\n");

    for(--i;i>=0;--i)

    { d=c[i];

    printf("%c", (5) );

    }

    }

  8. ●试题一

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

    【说明】

    下列流程图(如图4所示)用泰勒(Taylor)展开式

    sinx=x-x3/3!+x5/5!-x7/7!+…+(-1)n×x2n+1/(2n+1)!+…

    【流程图】

                                                                                 图4

    计算并打印sinx的近似值。其中用ε(>0)表示误差要求。