(总分89.5,考试时间90分钟)
一、选择题
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. 下列不属于软件工程的3个要素的是( )
A) 工具 B) 过程 C) 方法 D) 环境
7. 下面选项中不属于面向对象程序设计特征的是 。
(A) 继承性
(B) 多态性
(C) 类比性
(D) 封闭性
8. 下列所述中,是软件调试技术的是( )。
A) 错误推断 B) 集成测试 C) 回溯法 D) 边界值分析
9. 语句:printf("%d\n",12&012);的输出结果是( )。
A) 12 B) 8 C) 6 D) 012
10. 以下叙述中错误的是 。
(A) 算法正确的程序最终一定会结束
(B) 算法正确的程序可以有零个输出
(C) 算法正确的程序可以有零个输入
(D) 算法正确的程序对于相同的输入一定有相同的结果
11. 下列关于C语言的叙述中,正确的是
A) C语言中的注释不可以夹在变量名或关键字的中间
B) C语言中的变量可以在使用之前的任何位置进行定义
C) 在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D) C语言的数值常量中夹带空格不影响常量值的正确表示
12. 以下合法的赋值语句是 。
A) X=Y=100
B) D-;
C) X+Y;
D) C=int(A+B)
13. 有定义语句:int x,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面4组输入形式中错误的是 。
A) 11 12<回车> B) 11,12<回车>
C) 11,12<回车> D) 11,<回车>12<回车>
14. 设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A) 运行程序段后输出0 B) 运行程序段后输出1
C) 程序段中的控制表达式是非法的 D) 程序段执行无限次
15. 有以下程序
main()
Cham a='a' , b ;
printf("%c,",++a) ;
printf("%c\n",b=a++) ;
程序运行后的输出结果是 。
A) b,b B) a,b C) b,c D) a,c
16. 有以下程序
main()
int i,s=1;
for(i=1;i<50;i++)
if(!(i%5)&&! (i%3)) s+=i;
printf("%d/n",s);
程序的输出结果是
A) 409 B) 277 C) 1 D) 91
17. 有以下程序:
main()
int a, b, d=25;
a=d/10%9; b=a&&(-1);
printf("% d, % d\n", a, b) ;
程序运行后的输出结果是 。
A) 6, 1 B) 2, 1 C) 6, 0 (D) 2, 0
18. 下列程序的运行结果是( )。
main()
int x=1,y=3,a=0;
while(x++!=(y=1))
a+1;
if(y<x)break;
printf("%d,%d,%d\n”,x,y,a) ;
A) 2,3,2 B) 2,3,1 C) 1,3,3 D) 3,1,2
19. 以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是
A) if((a>b)&&(b>c))k=1;
else k=0;
B) if((a>b)‖(b>c))k=1;
else k=0;
C) if(a<=b)k=0;
else if(b<=c)k=1;
D) if(a>b)k=1;
else if(b>c) k=1;
else k=0;
20. 已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,以下不能将变量C中的大写字母转换为对应小写字母的语句是 。
A) c=(c-'A')%26+'a' B) c=c+32
C) c=c-'A'+'a' D) c=('A'+c)%26-'a'
21. 下列程序段的运行结果是( )。
#include<stdio.h>
void main()
char str[]="ABC",*p=str;
printf("%d\n",*(p+3) );
A) 67 B) 0 C) 字符'C'的地址 D) 字符'C'
22. 设有定义double a[10],*s=a;,以下能够代表数组元索a[3]的是
A) (*s)[3] B) *(s+3)
C) *s[3] D) *s+3
23. 下面能正确进行字符串赋值操作的是( )。
A) chars[5]="ABCDE"; B) chars[5]='A','B','C','D','E';
C) char*s;s="ABCDE"; D) char *s;scanf("%s",&s);
24. 若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是( )。
Struct stu
int i;
int name;
st,*p;
p=&st;
A) st.i B) *p.i C) (*p).i D) p->i
25. 在16位IBM-PC机上使用C语言,若有如下定义
struct data
int i;
char ch;
double f;
b;
则结构变量b占用内存的字节数是
A) 1 B) 2 C) 7 D) 11
26. 以下能正确定义二维数组的是 。
A) int a[][3]; B) int a[][3]=2*3;
C) int a[][3]=; D) int a[2][3]=1), 2, 3,4;
27. 下列二维数组初始化语句中,不正确的是( )。
A) intb[][2]=1,2,3,4,5,6,7; B) intb[3][5]=0,0,0;
C) intb[][4]=1,2,3,4,5,6; D) intb[3][2]=(1,2),(3,4),(5,6);
28. 以下叙述中错误的是( )。
A) 用户所定义的标识符允许使用关键字
B) 用户所定义的标识符应尽量做到“见名知意”
C) 用户所定义的标识符必须以字母或下划线开头
D) 用户定义的标识符中,大、小写字母代表不同标识
29. 若有定义:“int a [2][3];”则对a数组的第i行第j列元素的正确引用为( )。
A)*(*(a+i)+j) B)(a+i)[j] C)*(a+i+j) D)*(a+i)+j
30. 设有定义语句int(*f)(int);,则以下叙述正确的是 。
(A) f是基类型为int的指针变量
(B) f是指向函数的指针变量,该函数具有一个int类型的形参
(C) f是指向int类型一维数组的指针变量
(D) f是函数名,该函数的返回值是基类型为int类型的地址
31. 有以下程序
#include <stdio.h>
void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/
int t,i,j;
for(i=0;i<n-1;j++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]) t=a[i];a[i]:a[j];a[j]=t;
main()
int c[10]=1,2,3,4,5,6,7,8,9,0,i
fun(c+4,6);
for(i=0;i<10;++) printf("%d,",c[i]);
printf("\n");
程序的运行结果是
A) 1,2,3,4,5,6,7,8,9,0, B) 0,9,8,7,6,5,1,2,3,4,
C) 0,9,8,7,6,5,4,3,2,1, D) 1,2,3,4,9,8,7,6,5,0,
32. 若有定义: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((iht)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: pfintf(" * \n" );
case c: pfintf(" * * \n");
33. 设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为( )。
A) EOF B) 非0值 C) 0 D) NULL
34. 有以下程序:
#include <stdio.h>
main( )
intc = 35; printf( "% d \n" , e&c);
程序运行后输出结果是( )。
A) 0 B) 70 C) 35 D) 1
35. 以下程序运行后的输出结果是
#include<stdio.h>
#define PT 3.5;
#define S(x) PT*x*x;
main()
int a=1, b=2; printf("%4.1f\n", S(a+b));
A) 14.0 B) 31.5
C) 7.5 D) 程序有错,无输出结果
36. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,下列选项中不能表示 a[1]地址的表达式是( )。
A) p+1 B) a+1 C) a++ D) ++p
37. 以下选项中不能正确把cl定义成结构体变量的是( )。
A) typedef struct
int red;
int green;
int blue;
COLOR;
COLOR cl;
B) struct color cl
int red;
int green;
int blue;
C) struct color
int red;
int green;
int blue;
cl;
D) struct
int red;
int green;
int blue;
cl;
38. union dt
int a;char b;double c;
data;
以下叙述中错误的是
A) data的每个成员起始地址都相同
B) 变量data所占内存字节数与成员c所占字节数相等
C) 程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D) data可以作为函数的实参
39. 设intx=7,则~x的值是( )。
A) -8 B) -7 C) -1 D) 1
40. 在C语言中,下列关于文件操作的叙述正确的是( )。
A) 对文件操作必须先关闭文件 B) 对文件操作必须先打开文件
C) 对文件操作顺序没有统一规定 D) 以上全错
二、填空题
41. 在结构化设计方法中,数据流图表达了问题中的数据流与加工间的关系,并且每一个 实际上对应一个处理模块。
42. 算法的基本特征是可行性、确定性、 和拥有足够的情报。
43. 软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和 的设计来实现。
44. 对下列二叉树进行中序遍历的结果为 。
45. 在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是 。
46. 数据流图的类型有 和事务型。
47. 表示“整数x的绝对值大于5”时值为“假”的C语言表达式是 。
48. 以下程序运行后的输出结果是 。
main()
int x,a=1,b=2,c=3,d=4;
x=(a<B)?A:B; X=(A<C)?X:C; X=(D>x)?x:d;
printf("%d\n",x);
49. 已知字母A的ASCⅡ码为65。以下程序运行后的输出结果是 。
main()
char a,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
50. strcat函数的作用是 。
51. 以下程序的输出结果是 。
main()
int a=1,b=2;
a=a+b;b=a-b;a=a-b;
printf("%d,%d\n",a,b);
52. 下列程序的运行结果是 。
#define POWER(x) ((x)*(x))
main ()
int i=1;
printf("%d,%d",POWER(i++),i);
53. 下面程序的运行结果是 。
#include<stdio.h>
#define SlZE 12
main()
char s[SIZE];int i;
for(i=0;i<SIZE;i++) s[i]='A'+i+32;
sub(s,5,SIZE-1);
for(i=0;i<SIZE;i++)printf("%c",s[i]);
printf("\n");
sub(char *a,int t1,int t2)
char ch;
while(t1<t2)
ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;
54. 以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。
majn()
FILE *fp; char ch;
fp=fopen( );
ch=fgetc(fp);
whle(!feof(fp)) putchar(ch); ch=f8etc(fp);
putchar('\n'); fclose(fp);
55. 问题处理方案的正确而完整的描述称为 。