(总分100,考试时间90分钟)
一、选择题
在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1. 下列关于队列的叙述中正确的是
    A) 在队列中只能插入数据    B) 在队列中只能删除数据
    C) 队列是先进先出的线性表    D) 队列是先进后出的线性表
2. 对于存储同样的一组数据元素而言
    A) 顺序结构比链接结构易于扩充空间
    B) 顺序结构与链接结构相比,更有利于对元素进行插入、删除运算
    C) 顺序结构占用整块空间,而链接结构不要求整块空间
    D) 顺序结构比链接结构多占存储空间
3. 算法的有穷性是指
    A) 算法程序的运行时间是有限的    B) 算法程序所处理的数据量是有限的
    C) 算法程序的长度是有限的    D) 算法只能被有限的用户使用
4. 下面的描述中,不属于软件危机表现的是
    A) 软件过程不规范    B) 软件质量难以控制
    C) 软件开发生产率低    D) 软件成本不断提高
5. 软件的      设计又称总体结构设计,其主要任务是建立软件系统的总体结构。
    A) 概要    B) 抽象    C) 逻辑    D) 规划
6. 下列叙述中,正确的是
    A) 用E-R图能够表示实体集之间一对一的联系、一对多的联系和多对多的联系
    B) 用E-R图只能表示实体集之间一对一的联系
    C) 用E-R图只能表示实体集之间一对多的联系
    D) 用E-R图表示的概念数据模型只能转换为关系数据模型
7. 结构化程序设计主要强调的是
    A) 程序的规模    B) 程序的效率
    C) 程序设计语言的先进性    D) 程序的易读性
8. 下面关于数据库系统的叙述中正确的是
    A) 数据库系统减少了数据冗余
    B) 数据库系统避免了一切冗余
    C) 数据库系统中数据的一致性是指数据类型的一致
    D) 数据库系统比文件系统能管理更多的数据
9. 层次型、网状型和关系型数据库的划分原则是
    A) 数据之间的联系方式    B) 记录长度
    C) 联系的复杂程度    D) 文件的大小
10. 有两个关系R和T如下:
     
      则由关系R得到关系T的操作是
      A) 选择    B) 投影    C) 交    D) 并

11. 下列叙述中错误的是
    A) 一个C语言程序只能实现一种算法    B) C程序可以由多个程序文件组成
    C) C程序可以由一个或多个函数组成    D) 一个C函数可以单独作为一个C程序文件存在
12. 按照C语言规定的用户标识符命名规则,不能出现在标识符中的是
    A) 大写字母    B) 连接符    C) 数字字符    D) 下划线
13. 以下选项中不属于字符常量的是
    A) "E"    B) 'E'    C) '\xCC'    D) '\072'
14. 以下定义语句中正确的是
    A) int a=b=0;                            B) char A=65+1, b='b'; 
    C) float a=1, * b=&a, * c=&b;       D) double a=0.0; b=1.1;
15. 设有定义:float x=123.4567; ,则执行printf("%f\n",(int)(x*100+0.5)/100.0)语句后的输出结果是
    A) 123.460000    B) 123.456700    C) 123.450000    D) 123
16. 设有定义:int m=0; 以下选项的4个表达式中与其他3个表达式的值不相同的是
    A) ++m    B) m+=1    C) m++ D) m+1
17. 若变量已正确定义,有以下程序段:
    int a=3, b=5, c=7; 
    if(a>b) a=b; c=a; 
    if(c!=a)c=b; 
    printf("%d, %d, %d\n", a, b, c); 
    其输出结果是
    A) 程序段有语法错误    B) 3,5,3    C) 3,5,5    D) 3,5,7
18. 若有定义:float x=1.5; int a=1, b=3, c=2; ,则正确的switch语句是
    A) switch(x)
     case 1.0:printf(" * \n"); 
    case 2.0:printf("* * \n"); 
    B) switch((int) x); 
     case 1:printf(" * \n"); 
    case 2:printf(" *  * \n"); 
    C) switch(a+b)
     case 1 :printf("  * \n"); 
    case 2+1:printf(" * * \n"); 
    D) switch(a+b)
     case 1 :printf(" * \n"); 
    case c:printf(" * * \n");
19. 设有以下程序段:
    int x=0,s=0; 
    while(!x!=0)s+=++x; 
    printf("%d", s); 
    则
    A) 运行程序段后输出0    B) 运行程序段后输出1
    C) 程序段中的控制表达式是非法的    D) 程序段执行无限次
20. 有以下程序
    #include<stdio.h>
    main()
        int n=2, k=0; 
    while(k++&&n++>2); 
    printf("%d%d\n", k, n); 
    
    程序运行后的输出结果是
    A) 0  2    B) 1  3    C) 5  7    D) 1  2
21. 若有定义:int x=0, * p=&x; ,则语句printf("%d\n",*p)的输出结果是
    A) 随机值    B) O    C) x的地址    D) p的地址
22. 以下叙述中错误的是
    A) C语句必须以分号结束    B) 复合语句在语法上被看作一条语句
    C) 空语句出现在任何位置都不会影响程序运行  D) 赋值表达式末尾加分号就构成赋值语句
23. 有以下程序:
    #include<stdio.h>
    int f(int x)
        int y; 
    if(x==0||x==1) return(3); 
    y=x* x-f(x-2);
    return y; 
    
    main()
       int z; 
    z=f(3);
    printf("%d\n", z); 
    
    程序的运行结果是
    A) 0    B) 9    C) 6    D) 8
24. 在C语言中,运算对象必须是整型数的运算符是
    A) %    B) \    C) %和\    D) **
25. 设有定义语句int(*f)(int); ,则以下叙述正确的是
    A) f是基类型为mt的指针变量
    B) f是指向函数的指针变量,该函数具有一个int类型的形参
    C) f是指向int类型一维数组的指针变量
    D) f是函数名,该函数的返回值是基类型为int类型的地址
26. 以下不能正确定义二维数组的选项是
    A) int a[2][2]=1, 2; B) int a[][2]=1, 2, 3, 4; 
    C) int a[2][2]=1, 2, 3; D) inta[2][]=1, 2, 3, 4
27. 若要求从键盘读入含有空格字符的字符串,应使用函数
    A) getc()    B) gets()    C) getchar()    D) scanf()
28. 以下程序运行后的输出结果是
    main()
         char c; int n=100; 
    float f=10; double x; 
    x=f*=n/=(c=50); 
    printf("%d%f\n",n, x); 
    
    A) 2 20.000000    B) 100, 20.000000    C) 2 40.000000    D) 100 40.000000
29. 以下叙述中错误的是
    A) 改变函数形参的值,不会改变对应实参的值
    B) 函数可以返回地址值
    C) 可以给指针变量赋一个整数作为地址值
    D) 当在程序的开头包含头文件“stdio.h”时,可以给指针变量赋NULL
30. 以下是if语句的基本形式:
    if(表达式)语句
    其中“表达式”      。
    A) 必须是逻辑表达式    B) 必须是关系表达式
    C) 必须是逻辑表达式或关系表达式    D) 可以是任意合法的表达式
31. 现有如下程序段:
    #include "stdio.h"
    main()
     int  a[5][6]=23, 3, 65, 21, 6, 78, 28, 5, 67, 25, 435, 76, 8, 22, 45, 7, 8, 34, 6, 78, 32, 4, 5, 67, 4, 21, 1; 
    int i=0, j=5; 
    printf("%d\n", *(&a[0][0]+2*i+j-2)); 
    则程序的输…结果是
    A) 78    B) 23    C) 21    D) 28
32. 下面程序的输出结果是
    #include< stdio.h>
    #include< string.h>
    main()
    char p1[20]="abc", *p2="ABC", str[50]="xyz"; 
    strcpy(str+2, strcat(p1, p2)); 
    printf("%s\n", str); 
    A) xyzabcABC    B) zabcABC    C) xyabcABC    D) yzabcABC
33. 有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母。
    #include<stdio.h>
    #include<ctype.h>
    void fun(char * p)
    inti=0:
    while(p[ij)
      if(p[i]=="&&islower(p[i-1]))p[i-1]=p[i-1]-'a'+'A';
    ++; 
    
    
    main()
    char s1[100]="ab cd EFG!";
    fun(s1); printf("%s\n", s1); 
    程序运行后的输出结果是
    A) ab cd EFG!    B) Ab Cd EFg!    C) aB cD EFG!    D) ab cd EFg!
34. 以下程序运行后的输出结果是
    void swap(int x, int y)
    int t; 
    t=x;x=y;y=t; 
    
    main()
    int a=15, b=16; 
    swap(a, b); printf("% d % d", a, b); 
    
    A) 15, 16    B) 16, 15    C) 15, 15    D) 16, 16
35. 有以下程序:
    #include <string.h>
    struct STU
          char name [10]; 
    int num; 
    
    void f(char  * name, int num)
        struct STU s[2]= " SunDan", 20044,  " Penghua", 20045; 
      num=s[0].num; 
     strcpy(name, s[0].name); 
     
    main()
       struct STU s[2]= "YangSan", 20041,  " LiSiGuo", 20042  , * p; 
   p=&s[1]; f(p->name, p->num); 
    printf(" % s % d\n", p-> name, p->num); 
    
     程序运行后的输出结果是
    A) SunDan 20042  B) SunDan 20044     C) LiSiGuo 20042    D) YangSan 20041
36. 以下程序的输出结果是
    #include<stdio.h>
    int a[3][3]=1, 3, 5, 7, 9, 11, 13, 15, 17, , *p; 
    main()
      p=(int *)malloc(sizeof(int)); 
    f(p, a); 
    printf("%d\n", *p); 
    free(p); 
    f(int *s, int p[][3])
      *s=p[1][1]; 
    A) 1    B) 7    C) 9    D) 13
37. 在C语言中,变量的隐含存储类别是
    A) auto    B) static    C) extem    D) 无存储类别
38. 以下选项中,能定义s为合法的结构体变量的是
    A) typedef struct ABC
       double a; 
          char b[10]; 
    s; 
    B) struct
    double a; 
    char b[10]; 
    s; 
    C) struct ABC
    double a; 
      char b[10]; 
     
    ABC s; 
    D) typedef ABC
    double a; 
      char b[10]; 
    
    ABC s;
39. 以下程序运行后的输出结果是
    #include< string.h>
    main()
       char m[20]= 'a', 'b', 'c', 'd', n[]="abe", k[]="abcde"; 
    strcpy (m+strlen (n), k); strcat (m, n); 
    prinff(" % d% d \n", sizeof(m), strlen (m)); 
    
    A) 20  11    B) 9  9    C) 20  9    D) 11  11
40. 以下程序的运行结果是
    #include <stdio.h>
    main()
    int a=1, b=2, c=3, x; 
    x=(a^b)&c; printf("%d\n", x); 
    A) 0    B) 1    C) 2    D) 3
二、填空题
1. 设有下列二叉树:
     
    对此二叉树,中序遍历的结果为      。

2. 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是      。
3. 数据库系统在三级模式之间提供了两层映射,这两层映射是      和模式/内模式映射。
4. 测试的目的是暴露错误,评价程序的可靠性;而      的目的是发现错误的位置并改正错误。
5. 关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、      和自定义完整性。
6. 已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是      。
    #include<stdio.h>
    main()
       char a, b; 
    a=getchar(); scanf("%d", &b); 
    a=a-'A'+'0'; b=b*2; 
    printf("% c % c\n", a, b); 
  
以下程序的定义语句中,x[1]的初值是  (7)  ,程序运行后输出的内容是  (8)  。
    #include<stdio.h>
    main()
           int x[]=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, *p[4], 1; 
    for(i=0; i<4; i++)
     p[i]=&x[2*i+1]; 
    printf("%d", p[i][0]); 
    
    printf("\n"); 
  
7. 
8. 
以下函数rotade的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变,请填空。
    #define N 4
    void rotade(int a[][N], int b[][N])
        int I, j; 
    for(I=0; I<N;I++)
      b[I][N-1]=  (9)  ;   (10)  =a[N-1][I];
9. 
10. 
11. 以下程序的运行结果是      。
    #include<stdio.h>
    main()
        int fun(); fun(); 
    fun()
    static int a[3]=0, 1, 2; 
    int i; 
    for(i=0; i<3; i++)a[i]+=a[i]; 
    for(i=0; i<3; i++)printf("%d, ", a[i]); 
    printf("\n");
以下程序的输出结果是      。
    int fun(int*x, int n)
    if(n==0) return x[0]; 
    else    return x[0]+fun(x+l, n-1); 
    
    main()
    int a[]=1, 2, 3, 4, 5, 6, 7; printf("%d\n", fun(a, 3));
12. 以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
    struct st
        char name[20]; double score; ; 
    main()
    struct st ex; 
    printf("ex size:%d\n", sizeof(      ));
以下程序的功能是从名为“filea. dat”的文本文件中逐个读入字符并显示在屏幕上,请填空。
    #include<stdio.h>
    main()
      FILE *fp; char ch; 
    fp=fopen(  (14)  ); 
    ch=fgetc(fp);
    while(  (15)  (fp))putchar(ch); ch=fgetc(fp); 
    putchar('\n'); fclose(fp); 
    
 

02-10 21:24