(总分90,考试时间90分钟)
一、选择题
1. 对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为 。
A) log2n B) n/2 C) n D) n+l
2. 下列选项中,不是一个算法的基本特征的是( )。
A) 完整性 B) 可行性 C) 有穷性 D) 拥有足够的情报
3. 下列叙述中正确的是( )。
A.栈是“先进先出”的线性表
B.队列是“先进后出”的线性表
C.循环队列是非线性结构
D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构
4. “商品”与“顾客”两个实体集之间的联系一般是( )。
A) 一对一 B) 一对多 C) 多对一 D) 多对多
5. 常采用的两种存储结构是( )。
A) 顺序存储结构和链式存储结构
B) 散列方法和索引方式
C) 链表存储结构和数组
D) 线性存储结构和非线性存储结构
6. 下列叙述中正确的是 。
(A) 一个逻辑数据结构只能有一种存储结构
(B) 数据的逻辑结构属于线性结构,存储结构属于非线性结构
(C) 一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
(D) 一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
7. 下列关于二叉树的叙述中,正确的是( )。
A)叶子结点总是比度为2的结点少一个
B)叶子结点总是比度为2的结点多一个
C)叶子结点数是度为2的结点数的两倍
D)度为2的结点数是度为1的结点数的两倍
8. 对于长度为n的线性表,在最坏的情况下,下列各排序法所对应的比较次数中正确的是 。
A) 冒泡排序为n/2 B) 冒泡排序为n C) 快速排序为n D) 快速排序为n(n-1)/2
9. 设计程序时,应采纳的原则之一是( )。
A)程序的结构应有助于读者的理解 B)限制GOTO语句的使用
C)减少或取消注释行 D)程序越短越好
10. 数据流图中带有箭头的线段表示的是( )。
A.控制流 B.事件驱动
C.模块调用 D.数据流
11. 在E-R图中,用来表示实体的图形是( );
A) 矩形 B) 椭圆形 C) 菱形 D) 三角形
12. 数据处理的最小单位是( )。
A) 数据 B) 数据元素 C) 数据项 D) 数据结构
13. 有3个关系R、S和T,如下:
由关系R和S通过运算得到关系T,则所使用的运算为
A) 笛卡儿积 B) 交 C) 并 D) 自然连接
14. 简单的交换排序方法是( )。
A) 快速排序 B) 选择排序 C) 堆排序 D) 冒泡排序
15. c语言的基本单位是( )。
A) 函数 B) 过程 C) 子程序 D) 子函数
16. C语言规定,在一个C程序中,main()函数的位置( )。
A) 必须在系统调用的库函数之后 B) 必须在程序的开始
C) 必须在程序的最后 D) 可以在任意位置
17. 下列程序的输出结果是 。
#define A 100
main()
int i=0,sum=0;
do if(i=(i/2)*2)continue;
sum+=i;
while(++i<A);
print("%d\n",sum);
A) 2500 B) 2050 C) 4 D) 0
18. sizeof(char)是( )。
A) 一种函数调用 B) 一个整型表达式
C) 一个字符型表达式 D) 一个不合法的表达式
19. 若要求从键盘读入含有空格字符的字符串,应使用函数
A) getc() B) gets() C) getchar() D) scanf()
20. 出下列程序执行后的输出结果是 。
mare()
int m[][3]=1,4,7,2,5,8,3,6,9;
int i,k=2;
for(i]0;i<3;i++)
printf(("%d",m[k][i]);
A) 456 B) 258 C) 369 D) 789
21. 设有定义:intk=1,m=2;noat f=7;则下列选项中错误的表达式是( )。
A) k=k>=k B) -k++
C) k%int(f) D) k>=f>=m
22. 下列叙述中正确的是 。
A) break语句只能用于switch语句
B) 在switch语句中必须使用default
C) break语句必须与switch语句中的case配对使用
D) 在switch语句中不一定使用break语句
23. 若变量已正确定义为int型,要通过语句scanf("%d,%d",&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(代表一个空格符)( )。
A.1,2,3<回车> B.122<回车>
C.1,2,3<回车> D.1,2,3<回车>
24. 下列程序的输出结果是( )。
#include <stdio.h>
main ()
int a=3,b=2,c=1;
if (a<b)
if (b<O) c=0 ;
else c++;
printf ("%d\n",c);
A) 0 B) 2
C) 1 D) 3
25. 以下选项中,当x为大于1的奇数时,值为0的表达式是
A) x%2==1 B) x/2 C) x%21=0 D) x%2==0
26. 有如下程序:
#include<stdio.h>
main()
float x=2.0,y;
if(x<0.0) y=0.0;
else if(x<10.0)y=1.0/x;
else y=1.0;
printf("%f\n",y);
该程序的输出结果是( )。
A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000
27. 有以下程序,其中k的初值为八进制数
#include <stdio.h>
main()
intk=011;
printf("%d\n",k++);
程序运行后的输出结果是
A) 12 B) 11 C) 10 D) 9
28. 若有定义: “int a[2][3];”则对a数组的第i行第j列元素的正确引用为( )。
A) *(*(a+i)+j) B) (a+i)[j] C) *(a+i+j) D) *(a+i)+j
29. 设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是
A) ifx++); B) it(x>y&&y!=0);
C) if(x>0)x-- D) if(y<0);
else y++; else x++;
30. 以下能正确定义一维数组的选项是 。
A) int num[];
B) #define N 100
int num[N];
C) int num[0..100];
D) int N=100;
int num[N];
31. 有下列程序:
main()
int k=5,n=0;
do
switch(k)
case 1: case 3:n+=1;k--;break;
default:n=0;k--;
case 2: case 4;n+=2;k--;break;
printf("%d",n);
while(k>0 && n<5);
程序运行后的输出结果是( )。
A) 235 B) 0235 C) 02356 D) 2356
32. 下列合法的字符型常量是( )。
A) '\x13' B) '\081' C) '65' D) "\n\
33. 若有语句:char *line[5];,以下叙述中正确的是 。
(A) 定义line是一个数组,每个数组元素是一个基类型为char的指针变量
(B) 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
(C) 定义line是一个指针数组,语句中的*号称为间址运算符
(D) 定义line是一个指向字符型函数的指针
34. 若输入“abcdef”、“abdef”,以下程序的输出结果为( )。
#include<stdio.h>
#lnclude<string.h>
main()
int n;
char s1[20],s2[20],p1,*p2;
scanf("%s",s1);
scanf("%s",s2);
P1=s1;
p2=s2;
n=strcmp(p1,p2);
printf("%d\n",n);
A) -1 B) 0 C) "abcdef" D) "abdef\
35. 若有程序
fun(int a,int b)
static int c=0
c+=a+b;
retum c;
main()
int x=5,y=3,z=7,r;
r=fun((y,x+y),z);
r=fun(x,y);
printf("%d\n",r);
上面程序的输出结果 。
A) 23 B) 15 C) 19 D) 18
36. 若有定义: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");
37. 定义结构体数组:
struct stu
int num;
char name[20];
x[5];1,"L1",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU";
for(i=1;i<5;i++)
printf("%d%c",x[i].num,x[i].name[2]);
以上程序段的输出结果为( )。
A) 2A3N4A5U B) 1I2A3H4I C) 1A2N3A4U D) 2H3A4H5I
38. 有以下定义和语句
struct workers
int nnm;charname[20];charc;
struct
int day;int month;int year;s;
;
struct workers w,*pw;
pw=&w;
能给w中year成员赋1980的语句是
A) *pw.year=1980; B) w.year=1980;
C) pw->year=1980; D) w.s.year=1980;
39. 有以下程序:
int a=4;
int f(int n)
int t=0;static int a=5;
if(n%2) int a=6;t+=a++;
elseint a;7;t+=a++;
return t+a++;
main()
int s=a,i=0;
for(;i<2;i++)s+=f(i);
printf("%d\n",s);
程序运行后的输出结果是 。
A) 24 B) 28 C) 32 D) 36
40. 以下叙述中正确的是 。
A) 局部变量说明为static存储类,其生存期将得到延长
B) 全局变量说明为static存储类,其作用域将被扩大
C) 任何存储类的变量在未赋初值时,其值都是不确定的
D) 形参可以使用的存储类说明符与局部变量完全相同
二、填空题
41. 在面向对象方法中,类的实例称为 。
42. 为了便于对照检查,测试用例应由输入数据和预期的 两部分组成。
43. 在面向对象方法中, 是具有相似性质的对象的集合。
44. 衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准,其中 是度量一个模块功能强度的一个相对指标。
45. 以下程序运行后的输出结果是 。
int a=5;
fun(int b)
static int a=10;
a+=b++;
printf("%d",a);
main()
int c=20;
fun(c);
a+=c++;
printf("%d\\n",a);
46. 以下程序运行后的输出结果是 。
main()
char c;int n=100;
loat f=10;double x;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
47. 下列程序段的输出结果是 。
int n='c';
switch(n++)
default:printf("error");break;
case 'a': printf("good");break;
case 'c': printf("morning");
case 'd': printf("class");
48. 以下程序的运行结果是 。
#include <stdio.h>
long fib(int g)
switch(g)
case 0:return 0;
case 1:
case 2:return 1;
return(fib(g-1) +fib(g-2));
main( )
long k;
k=fib(5);
printf("k=%51d\n",k);
49. 用高级语言编写的程序称为 程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行。
50. 若定义#define PI 3.14159,则执行完下列程序后输出结果是 。
#define PI 3.14159;printf("PI=%f",PI);
51. 以下程序运行后的输出结果是 。
#include<stdio.h>
void fun(int *a)
a[0]=a[1];
main()
int a[10]=10, 9, 8, 7, 6, 5, 4, 3, 2, 1, i;
for(i=2; i>=0; i--) fun(&a[i]);
for(i=0; i<10; i++) printf("%d", a[i]);
printf("\n");
52. 若变量a,b已定义为int类型并分别赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句行: 。
53. 以下程序的输出结果是 。
#define PR(ar)printf("ar=%d”,ar)
main()
int j,a[]=1,8,3,7,6,13,17,15,*p=a+5;
for(j=3;j;j--)
switch(j)
case 1:
case 2:PR(*p++);break;
case 3:PR(*(--p));
54. 以下程序的输出结果是 。
#include <stdio.h>
#define MAX(x,y)(x),(y)?(x):(y)
main()
int a=5,b=2,c=3,d=3,t;
t=MAX(a+b,c+d)*10;
printf("%d\\n",t);
55. 若给fun函数的形参s传送字符串“∪∪6354'abc"(其中∪表示空格字符),则函数的返回值是 。
long fun(char s[])
long n; int sign;
for(;isspace(*s);s++);
sign=(*s=='-')? -1:1;
if(*s=='+'||*s=='-') s++;
for(n=0;isdigit(*s);s++)
n=10*n+( *s-'0');
return sign*n;