.
笔试部分
一、填空题
1.已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为( )
A.GEDHFBCA B.DGEBHFCA
C.ABCDEFGH D.ACBFEDHG
【参考答案】B
2.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是( )
A.e3,e1,e4,e2 B.e2,e4,e3,e1
C.e3,e4,e1,e2 D.任意顺序
【参考答案】B
3.程序设计语言的基本成分是数据成分、运算成分、控制成分和( )
A.对象成分 B.变量成分 C.语句成分 D.传输成分
【参考答案】D
4.下列不属于软件工程的3个要素的是( )
A.工具 B.过程 C.方法 D.环境
【参考答案】D
5.将E-R图转换到关系模式时,实体与联系都可以表示成( )
A.属性 B.关系 C.键 D.域
【参考答案】B
.6.在深度为5的满二叉树中,叶子结点的个数为( )
A.32 B.31 C.16 D.15
【参考答案】B
7.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的在存储分配通常用( )
A.栈 B.堆 C.数组 D.链表
【参考答案】A
8.开发软件时对提高开发人员工作效率至关重要的是( )
A.操作系统的资源管理功能
B.先进的软件开发工具和环境
C.程序人员的数量
D.计算机的并行处理能力
【参考答案】B
9.数据处理的最小单位是( )
A.数据 B.数据元素 C.数据项 D.数据结构
【参考答案】C
10.下述关于数据库系统的叙述中正确的是( )
A.数据库系统减少了数据冗余
B.数据库系统避免了一切冗余
C.数据库系统中数据的一致性是指数据类型一致
D.数据库系统比文件系统能管理更多的数据
【参考答案】B
.11.以下程序的输出结果是( )
main()
{ int a=21,b=11;
printf(″%d\n″,--a+b,--b+a);
}
A.30 B.31 C.32 D.33
【参考答案】A
12.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是( )
A.x&&y B.x<=y
C.x||++y&&y-z D.!(x<y&! z||1)
【参考答案】D
13.设有程序段
int k=10;
while(k=0)k=k-1;
则下面描述中正确的是( )
A.while循环执行10次 B.循环是无限循环
C.循环体语句一次也不执行 D.循环体语句执行一次
【参考答案】C
14.以下程序的输出结果是( )
main()
{ int a,i;a=0;
for(i=1;i<5;i++)
{ switch(i)
{ case 0:
case 3:a+=2;
case 1:
case 2:a+=3;
default:a+=5;
}
}printf(″%d\n″,a);
}
A.31 B.13 C.10 D.20
【参考答案】A
15.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处应填入的语句是( )
#include <stdio.h>
main()
{ int a,b,t;
scanf(″%d%d″,&a,&b);
while(______)
{ if(a>b)
{t=a;a=b;b=t;}
printf(″%d%d\n″,a,b);
scanf(″%d%d″,&a,&b);
}
}
A.!a=b B.a!=b C.a==b D.a=b
【参考答案】B
.16.若有说明:int a[][4]={0,0};则下面不正确的叙述是( )
A.数组a的每个元素都可得到初值0
B.二维数组a的第一维大小为1
C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小
D.只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值
【参考答案】D
17.已知学生记录描述为
struct student
{ int no;
char name[20],sex;
struct
{ int year,month,day;
} birth;
};
struct student s;
设变量s中的“生日”是“1984年11月12日”,对“birth”正确赋值的程序段是( )
A.year=1984;month=11;day=12;
B.s.year=1984;s.month=11;s.day=12;
C.birth.year=1984;birth.month=11;birth.day=12;
D.s.birth.year=1984;s.birth.month=11;s.birth.day=12;
【参考答案】D
.18.有如下程序
int func(int a,int b)
{ return(a+b);}
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(″%d\n″,r);
}
该程序的输出的结果是( )
A.12 B.13 C.14 D.15
【参考答案】D
19.有如下定义
struct person{char name[9];int age;};
struct person class [10]={″John″,17,″paul″,19,″Mary″,18,″Adam″,16};
根据上述定义,能输出字母M的语句是( )
A.printf(″%c\n″,class[3].name);
B.printf(″%c\n″,class[3].name[1]);
C.printf(″%c\n″,class[2].name[1]);
D.printf(″%c\n″,class[2].name[0]);
【参考答案】D
.20.阅读下列程序,当运行函数时,输入asd af aa z67,则输出为( )
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
int fun(char *str)
{ int i,j=0;
for(i=0;str[i]!=′\0′;i++)
if(str[i]!=′ ′)str[j++]=str[i];
str[j]=′\0′;
}
main ()
{
char str[81];
int n;
clrscr();
printf(″Input a string:″);
gets(str);
puts(str);
fun(str);
printf(″%s\n″,str);
}
A.asdafaaz67 B.asd af aa z67 C.asd D.z67
【参考答案】A
.21.若有定义:char *st=″how are you″;下列程序段中正确的是( )
A.char a[11],*p;strcpy(p=a+1,&st[4]);
B.char a[11];strcpy(++a,st);
C.char a[11];strcpy(a,st);
D.char a[ ],*p;strcpy(p=&a[1],st+2);
【参考答案】A
22.请选出正确的程序段( )
A.int *p; B.int *s,k;
scanf(″%d″,p); *s=100;
… …
C.int *s,k; D.int *s,k;
char *p,c; char *p,e;
s=&k; s=&k;
p=&c; p=&c;
*p=′a′; s=p;
… *s=1;
…
【参考答案】C
23.下面四个选项中,均是合法整型常量的选项是( )
A.160 -0xffff 011 B.-0xcdf 01a 0xe
C.-01 986,012 0668 D.-0x48a 2e5 0x
【参考答案】A
.24.假定x和y为double型,则表达式x=2,y=x+3/2的值是( )
A.3.500000 B.3 C.2.000000 D.3.000000
【参考答案】D
25.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是( )
A.scanf(″%2d,%2d,%2d″,i,j,k);
B.scanf(″%d%d%d″,&i,&j,&k);
C.scanf(″%d,%d,%d″,&i,&j,&k);
D.scanf(″i=%d,j=%d,k=%d″,&i,&j,&k);
【参考答案】C
26.若执行下面的程序时,从键盘上输入5和2,则输出结果是( )
main()
{
int a,b,k;
scanf(″%d,%d″,&a,&b);
k=a;
if(a<b)k=a%b;
else k=b%a;
printf(″%d\n″,k);
}
A.5 B.3 C.2 D.0
【参考答案】C
.27.以下程序的输出结果是( )
main()
{
int x=1,y=3;
printf(″%d″,x++);
{ int x=0;x+=y*2;
printf(″%d,%d″,x,y);
}
printf(″%d,%d\n″,x,y);
}
A.1,6,3,1,3 B.1,6,3,6,3 C.1,6,3,2,3 D.1,7,3,2,3
【参考答案】C
28.请阅读以下程序
main()
{
int a=5,b=0,c=0;
if(a=b+c)printf(″* * *\n″);
else printf(″$$$\n″);
}
以上程序( )
A.有语法错不能通过编译
B.可以通过编译但不能通过连接
C.输出* * *
D.输出$$$
【参考答案】D
.29.设有如下定义
char *s[2]={″abcd″,″ABCD″};
则下列说法错误的是( )
A.s数组元素的值分别是″abcd″和″ABCD″两个字符串的首地址
B.s是指针数组名,它含有两个元素分别指向字符型一维数组
C.s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素
D.s数组的两个元素中分别存放了字符′a′和′A′的地址
【参考答案】C
30.有以下程序
struct STU
{ char num[10];float score[3];};
main()
{
struct STU s[3]={
{″20021″,90,95,85},
{″20022″,95,80,75},
{″20023″,100,95,90},
},*p=s;〖ZK)〗
int i;float sum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf(″%6.2f\n″,sum);
}
程序运行后的输出结果是( )
A.260.00 B.270.00 C.280.00 D.285.00
【参考答案】B
.