当前位置 博文首页 > 生命不息 奋斗不止 | LINUX爱好者 世界因你的敲打而改变~~:百度

    生命不息 奋斗不止 | LINUX爱好者 世界因你的敲打而改变~~:百度

    作者:[db:作者] 时间:2021-06-10 21:13

      一、选择题:15 分 共 10 题
    1. 在排序方法中,关键码比较次数与记录地初始排列无关的是:
    A. Shell 排序 B. 归并排序 C. 直接插入排序 D. 选择排序
    2. 以下多线程对 int 型变量x的操作,哪几个需要进行同步:
    A. x=y;B. x++;C. ++x; D. x=1;
    3. 代码
    void func()
    {
    static int val;


    }
    中,变量 val 的内存地址位于:
    A.已初始化数据段 B.未初始化数据段 C.堆 D.栈
    4. 同一进程下的线程可以共享以下:

    A. stackB. data section C. register set D. thread ID

    5. TCP 和 IP 分别对应了 OSI 中的哪几层?
    A. Application layer
    B. Data link layer
    C. Presentation layer
    D. Physical layer
    E. Transport layer
    F. Session layer
    G. Network layer
    6. short a[100],sizeof(a) 返回?
    A. 2 B. 4 C. 100D. 200 E. 400
    7. 以下哪种不是基于组件的开发技术_____。

    A. XPCOMB. XP C. COM D. CORBA

    8. 以下代码打印的结果是(假设运行在 i386 系列计算机上):
    字串2
    struct st_t
    {
    int status;
    short *pdata;
    char errstr[32];
    };
    st_t st[16];
    char *p = (char *)( st[2].errstr + 32 );
    printf( "%d", ( p - (char *)(st) ) );
    A. 32 B. 114 C. 120 D. 1112
    选择 C,因为st[2]的起始地址比st[0]的起始地址高80位,
    st[2].errstr的起始地址比st[2]的起始地址高8位
    再加上32位就等于 120.
    9. STL 中的哪种结构是连续形式的存储:
    A. map B. set C. listD. vector
    10. 一个栈的入栈序列是 A,B,C,D,E,则栈的不可能的输出序列是:
    A. EDCBA B. DECBAC. DCEAB D. ABCDE
    二、简答题:20 分,共 2 题
    1. (5 分)重复多次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。
    导致 fp 所指的文件被多次释放, 导致不可预期的后果.
    5. 一个B类网的子网掩码是255.255.240.0,这个子网能拥有的最大主机数是:
    A. 240 B. 255C.4094 D. 65534
    6. 以下代码执行后,val的值是___:
    unsigned long val = 0;
    char a = 0x48;
    char b = 0x52;
    val = b << 8 | a;
    A 20992 B 21064 C 72 D 0
    选择 B,b 的十进制为 82,二进制为 101,0010
    b 左移 8 位为 101,0010,0000,0000
    a 的十进制为 72, 二进制为 100,1000
    b<<8 | a 为 21064
    7. 内存的速度远远高于磁盘速度,所以为了解决这个矛盾,可以采用:
    A 并行技术 B 虚存技术 C缓冲技术 D 通道技术
    9. 同一进程下的线程可以共享以下
    A. stackB. data section
    C. register set D. thread ID
    10. 以下哪种操作最适合先进行排序处理?
    A 找最大、最小值 B 计算算术平均值
    C 找中间值 D 找出现次数最多的值

    二、简答题:20 分,共 2 题
    1. (5 分)重复多次 fclose 一个打开过一次的 FILE *fp 指针会有什么结果,并请解释。
    考察点:导致文件描述符结构中指针指向的内存被重复释放,进而导致一些不可预期的异常。
    2. (15 分)下面一段代码,想在调用 f2(1) 时打印 err1,调用 f2(2) 时打印 err4,但是代码中有一些问题,请做尽可能少的修改使之正确。
    1 static int f1( const char *errstr, unsigned int flag ) {
    2   int copy, index, len;
    3   const static char **__err = { "err1", "err2", "err3", "err4" };
    4
    5   if( flag & 0x10000 )
    6    copy = 1;
    7   index = ( flag & 0x300000 ) >> 20;
    8
    9   if( copy ) {
    10     len = flag & 0xF;
    11     errstr = malloc( len );
    12     if( errstr = NULL )
    13       return -1;
    14     strncpy( errstr, __err[index], sizeof( errstr ) );
    15   } else
    16     errstr = __err + index;
    17 }
    18
    19 void f2( int c ) {
    20   char *err;
    21
    22   swtch( c ) {
    23   case 1:
    24     if( f1( err, 0x110004 ) != -1 )
    25       printf( err );
    26   case 2:
    27     if( f2( err, 0x30000D ) != -1 )
    28       printf( err );
    29   }
    30 }
    三、编程题:30 分 共 1 题
    1. 求符合指定规则的数。
    给定函数 d(n) = n + n 的各位之和,n 为正整数,如 d(78) = 78+7+8=93。 这样这个函数可以看成一个生成器,如 93 可以看成由 78 生成。
    定义数 A:数 A 找不到一个数 B 可以由 d(B)=A,即 A 不能由其他数生成。现在要写程序,找出 1 至 10000 里的所有符合数 A 定义的数。
    输出:
    1
    3


    四、设计题:35 分 共 1 题