你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

2018年试题

2021/11/5 23:41:25

目录

一、程序阅读与理解(45分)

 二、简答题(60分)

三、算法设计(45分)


 

一、程序阅读与理解(45分)

1、程序执行时输入“1 2 3 4 5 6 7 8 9 0”,请写出执行后输出结果。

#include <stdio.h>
int main()
{
    int a[10], i;
    for (i = 0; i < 10; i++)
        scanf("%d", &a[i]);
    for (i = 9; i > 4; i--)
        printf("%d", *(a + i));
    return 0;
}

 2、程序执行时输入“9”,请写出执行后输出结果。

#include <stdio.h>
int main()
{
    int x, y;
    scanf("%d", &x);
    if (x >= 0)
        if (x > 0)
            y = 1;
        else
            y = 0;
    else
        y = -1;
    printf("x=%d,y=%d\n", x, y);
    return 0;
}

3、

#include <stdio.h>
void fun(int *x, int *y)
{
    printf("%d %d", *x, *y);
    *x = 3;
    *y = 4;
}
int main()
{
    int x = 1, y = 2;
    fun(&y, &x);
    printf("%d %d", x, y);
    return 0;
}

 4、

#include <stdio.h>
int main()
{
    char str[20] = "Welcome to SWUST!", *p = str;
    printf("%s\n", p + 10);

    return 0;
}

 5、程序执行时输入“5 9”,请写出执行后输出结果。

#include <stdio.h>
int main()
{
    int *p1, *p2, *p, a, b;
    scanf("%d %d", &a, &b);
    p1 = &a;
    p2 = &b;
    if (a < b)
    {
        p = p1;
        p1 = p2;
        p2 = p;
    }
    printf("a=%d,b=%d\n", a, b);
    printf("max=%d,min=%d\n", *p1, *p2);
    return 0;
}

 6、

#include <stdio.h>
int main()
{
    FILE *fp;
    int i, k = 0;
    fp = fopen("d1.data", "w");
    for (i = 1; i <= 5; i++)
        fprintf(fp, "%d", i + 5);
    fclose(fp);
    fp = fopen("d1.data", "r");
    fscanf(fp, "%d", &k);
    printf("%d\n", k);
    fclose(fp);
    return 0;
}

7、

#include <stdio.h>
int main()
{
    int n;
    void print_star();
    void print_message();
    print_star();
    print_message();
    print_star();
    return 0;
}
void print_star()
{
    printf("**********\n");
}
void print_message()
{
    printf("welcome to swust!\n");
}

 8、

#include <stdio.h>
int main()
{
    int i = 1, sum = 0;
    do
    {
        sum = sum + i;
        i++;
    } while (i <= 100);
    printf("%d\n", sum);

    return 0;
}

 9、

#include <stdio.h>
int main()
{
    int p[7] = {11, 13, 14, 15, 16, 17, 18}, i = 0, k = 0;
    while (i < 7 && p[i] % 2)
    {
        k = k + p[i];
        i++;
    }
    printf("%d", k);

    return 0;
}

 二、简答题(60分)

1、线性表的两种存储结构是什么,各有哪些优点与缺点?(8分)

2、有一个线性表L=(x,y,t,m,k,z,x),求ListLength(L)、ListEmpty(L)、GetElem(L,4,a)、LocateElem(L,x),ListInsert(L,4,z)和ListDelete(L,6)等基本运算的执行结果。(12分)

3、某二叉树的结点数据采用顺序存储,表示如下:

012345678910111213141516171819
EAFDHCGIB
  1. 试写出此二叉树的图形表示。(9分)
  2. 写出结点D的双亲结点及左、右子女。(3分)

4、设有一组初始记录关键字为(45,80,48,40,22,78),请构造一棵AVL树并给出构造过程。(12分)

5、在通信中,为了降低通信量,通常对通信的符号进行变长的编码。假设用于通信的电文仅由{o,p,q,r,s,t,u,v}8个字母组成,每个字母在电文中出现的概率分别为:0.06,0.18,0.03,0.07,0.31,0.05,0.21,0.09。请为这些字母设计哈夫曼编码,请给出构造的哈夫曼树结构。(16分)

三、算法设计(45分)

1、请用c语言写出在顺序串上实现二分查找的算法。(15分)

typedef struct 
{
    char key[MaxSize];
    int length;
} SqList;

2、请设计一个算法,用于判断单链表中元素是否是递增的。(15分)

3、设有如下的队列链式结构定义,请给出进队列enQueue(q,e)和出队列deQueue(q,e)的算法。(15分)

队列的链式定义如下:

typedef struct qnode
{
    ElemType data;
    Struct qnode *next;
}

队列结点的类型LiQueue定义如下:

typedef struct 
{
    QNode *front;
    QNode *rear;
}LiQueue