1. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小
    数点后两位,并将第三位四舍五入的是____
    A. x=x100+0.5/100.0; B.x=(int)(x100+0.5)/100.0;
    C. x=(x100+0.5)/100.0; D.x=(x/100+0.5)100.0;

    B
  2. 以下程序的输出结果是____

    #define SQR(X) X*X
    main()
    { int a=16, k=2, m=1;
    a/=SQR(k+m)/SQR(k+m);
    printf("d\n",a);
    }

    A.2
    B.9
    C.16
    D.1

    A
  3. 下列程序的运行结果是____

    #include <stdio.h>
    try()
    {
    static int x=3;
    x++;
    return (x);
    }
    main()
    {
    int i,x;
    for(i=0;i<=2;i++)
    x=try();
    printf("%d\n",x);
    }

    A.4
    B.3
    C.5
    D.6

    D
  4. 若给定如下定义:
    int a[3][4], p;
    则以下不能对指针p进行初始化的是____
    A.p=
    a; B.p=a[0];
    C.p=a; D.p=&a[0][0];

    C
  5. 19.(2分) 对一组数据(2,12,16,88,5,10)进行排序,若前3趟排序
    结果如下:
    第一趟排序结果:2,12,16,5,10,88
    第二趟排序结果:2,12,5,10,16,88
    第三趟排序结果:2,5,10,12,16,88
    则采用的排序方法可能是____
    A.冒泡排序 B.基数排序 C.归并排序 D.希尔排序

    A
  6. 一棵二叉树的前序遍历序列为1234567,它的中序遍历序列可能
    ____
    A. 1463572 B.4135627 C.3124567 D.1234567

    D
  7. 利用栈求表达式的值时,设立运算符栈OPEN。假设OPEN只有两个
    存储单元,则在下列表达式中,不会发生溢出的是____
    A.A-B(C-D) B.(A-B*C)-D C.(A-B)(C-D) D.(A-B)*C-D

    D
  8. 已知一棵有2011个结点的树,其叶结点个数是116,该树对应的
    二叉树中无右孩子的结点个数是____

    1896
    题目有问题,应添加假设先有左孩子才能有右孩子。

    图片说明

  9. 假设用下面语句申请了一块动态内存,并用指针变量指p向了它,
    用这块内存保存mn个整型元素,即作为一个二维动态数组来使用。下列方式
    中,通过p访问这个二维动态数组第i行第j列元素的正确方式是____
    p = (int ) malloc(mnsizeof(int));或者p = (int *) calloc(mn, sizeof(int));
    A.p[i*n+j]
    B.
    ((p+i)+j)
    C.p[j
    n+i]
    D.p[i][j]

    A
  10. 一棵高度为2的5阶B树中,所含关键字的个数最少是_____。

    5
    一棵高度为2的5阶B树,根结点只有到达5个关键字的时候才能产生分裂,成为高度为2的B树。
  11. 以下排序算法中,不稳定的是____
    A.直接插入排序
    B.冒泡排序
    C.希尔排序
    D.归并排序

    C
  12. 已知两个长度分别为m和n的升序链表,若将它们合并为一个长度
    为m+n的降序链表,则最坏情况下的时间复杂度是____
    A. O(m*n)
    B. O(max(m,n))
    C. O(m+n)
    D. O(min(m,n))

    B
    答案为B还是C并不严格,考研试卷上为B
  13. 一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到
    ____个不同的码字。
    A.214
    B.107
    C.215
    D.108

    D 叶子节点为108个,只有叶子节点可以编码
    赫夫曼树只有度为0和度为2的结点
  14. 下列编码中,___不是前缀编码。
    A.{10,110,1110,1111} B.{00,01,10,11}
    C.{0,10,110,111} D.{0,1,00,11}

    D
  15. 已知某省有50万考生,现需对其总成绩进行排序。下列排序方法
    中,____所需平均时间开销最少
    A.桶排序 B.快速排序 C.堆排序 D.归并排序

    A
    桶排序O(n+k)
    快速排序O(nlogn)
    堆排序O(nlogn)
    归并排序(nlogn)
  16. 以下不能正确赋值的是____
    A.char s1[10];s1="test"; B.char s3[20]= "test";
    C.char s4[4]={ ’t’,’e’,’s’,’t’} D.char s2[]={’t’,’e’,’s’,’t’};

    A
  17. 已知小根堆为8,15,10,21,34,16,12,删除关键字8之后
    需重建堆,在此过程中,关键字之间的比较次数是____

3
建好堆后8是作为的堆顶元素,如果删除8,把整颗已经建好的堆的最后一个元素(12)和8交换,然后在自上而下地进行调整(就是比较根节点和左右节点,如果有比根节点更小的就交换,然后就可以得到以元素16最为最后一个元素的堆)
  1. 已知关键字序列5,8,12,19,28,20,15,22是小根堆,插入关
    键字3,调整好后得到的小根堆是____。(请用逗号隔开)
    3,5,12,8,28,20,15,22,19
  2. 设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次
    通过栈S,一个元素出栈后即进队列Q,若6个元素出栈的序列是e2、e4、e3、
    e6、e5、e1,则栈S的容量至少应该是____.
    3