计算机二级C语言选择题题库

近来为了准备二级,水了不少二级选择题,大概1000道左右,总结一下其中的一些错题,题解是刷题软件中的解释,可能会有一些重复。

 

 结果出来了,拿了个良,应该是选择题错的多了,,,二级水一水就行了,其实用处不大

 设表的长度为n。在下列算法中,最坏情况下时间复杂度最高的是

A)循环链表中寻找最大项

B)有序链表查找

C)堆排序

D)希尔排序

对长度为n的线性表排序,在最坏情况下,有序链表查找为O(n),循环链表中寻找最大项为O(1),堆排序需要比较的次数为O(nlog2n),希尔排序所需要的比较次数为O(n1.5

 

 

 设循环队列的存储空间为Q(1: 50),初始状态为 front=rear=50。经过一系列正常的操作后,front=rear-1。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为

A)0

B)1

C)50

D)49

 

 

该题中rear-front=rear-(rear-1)>0,则该循环队列中的元素个数为rear-front=rear-(rear-1)=1。因队列中只有1个元素,故寻找值最大的元素不需要进行比较,即比较次数为0。

 

 

 

 

 

 设顺序表的长度为16,对该表进行简单插入排序。在最坏情况下需要的比较次数为

A)60

B)30

C)15

D)120

对长度为n的线性表排序,在最坏情况下,简单插入排序需要比较的次数为n(n-1)/2。当表的长度为16,则在最坏情况下,简单插入排序所需要的比较次数为16*(16-1)/2=120。

 

 

 下面描述中正确的是

A)软件测试要确定错误的性质和位置

B)软件测试是软件质量保证的重要手段 

C)软件调试是为了改善软件的性能

D)软件调试的任务是发现并改正程序中的错误

 

软件测试是保证软件质量的重要手段,其主要过程涵盖了整个软件生命期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试,验证软件是否合格、能否交付用户使用等;软件测试的目的是为了发现错误而执行程序的过程;程序调试的任务是诊断和改正程序中的错误。

 

 

 

 数据库系统内部采用三级模式和模式间的二级映射,是为了提高数据库的逻辑独立性和

A)物理独立性

B)并发性

C)数据独立性

D)安全性

 

数据库系统中采用多级映射是为了提高数据的物理独立性。

 

 

 

 在家政服务管理系统中,实体服务员与实体客户间的联系是

A)1:1

B)1:N

C)M:N

D)N:1

 

 

实体服务员可以服务多名实体客户,实体客户可以由多名服务员服务,所以联系为M:N

 

 

 

 以下叙述正确的是

A)函数体内的定义语句和可执行语句允许任意交替出现

B)C语言中的语句之间必须用分号作为分隔符

C)C程序总是以main()作为程序执行的起始行

D)main()函数若不带参数,其后面的一对圆括号可省略

main()函数后面的括号告诉编译器这是一个函数,不可以省略;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面;C语言中的某些语句可以不用分号,例如if语句、宏定义。

 

 

 

 

 

 

 

 对于 if(表达式) ,以下说法正确的是

A)在“表达式”中不能出现非逻辑值

B)“表达式”的值必须是逻辑值

C)在“表达式”中必须出现变量

D)“表达式”的值可以是1

 

表达式的值不一定是逻辑值,存在非逻辑值,表达式可以是确定的值,即变量为非必需。

 

 

 

 设有定义:
int n = 1234;  
double x = 3.1415;
则语句: printf("%3d,%1.3f\n", n, x); 的输出结果是

A)123,3.142

B)123,3.141

C)1234,3.142

D)1234,3.141

 

函数printf()中,%md指输出带符号的十进制整数,给定最小宽度为m位,不足m位左端补空格,超过m位按实际位数输出;%.nf表示以小数的形式输出实数,小数占n位,对应题目,该题的输出结果应为1234,3.142

 

 

 

 

 

 

 

 

 

 

 有如下程序
#include <stdio.h>
int change(int* data)
{
    return (*data) ++;
}
main() 
{
    int data = 123;
    change(&data);
    printf("%d,", data);
    data = change(&data);
    printf("%d,", data);
    printf("\n");
}
程序运行后的输出结果是

A)123,124,

B)124,123,

C)123,123,

D)124,124,

 

函数change()为中先获取指针data指向的变量的数值并返回之后该数值再自增。函数为地址传参,形参与实参的变化保持同步,所以调用语句"change(&data);"执行完毕后,data的值为123+1=124,调用语句"data = change(&data);",函数change()将返回值赋值给data,返回的是变化之前的数据,所以输出结果仍然是124

 

 

 有下列程序
#include <stdio.h> 
main( )
{  
   char v[4][10]={"efg","abcd","mnopq","hijkl"},*p[4],t;  
   int i,j;
   for (i=0; i<4; i++)
      p[i] = v[i];
   for (i=0; i<3; i++)
      for (j=i+1; j<4; j++)
         if (*p[i] > *p[j])
         {  t = *p[i]; *p[i] = *p[j]; *p[j] = t;  }
   for (i=0; i<4; i++)
      printf("%s " , v[i]); 
}
程序执行后的输出结果是

A)mijkl hnopq ebcd afg 

B)afg ebcd hnopq mijkl

C)abcd efg hijkl mnopq

D)efg abcd mnopq hijkl

 

本题主要考查for循环语句。第一次循环将数组V赋值给了数组p,第二次循环实现了将指针所对应存储的首地址进行了升序排序,第三次循环将被重新赋值的数组v输出,所以经分析可知程序执行后的输出结果为“afg ebcd hnopq mijkl”。

 

 

 有下列程序
#include <stdio.h>
main( )
{  
   char v[5][10]={"efg","abcd","snopq","hijkl","xyz"};  
   printf("%s,%c,%s,%c,%s" , *v, **(v+3), v[4]+2, *(v[2]+4),v[1]+1); 
}
程序执行后的输出结果是

A)efg,h,z,q,bcd

B)efgabcdsnopqhijklxyz,h,z,q,bcd

C)efgabcdsnopqhijklxyz,d,zyz,w,bbcd

D)efg,d,zyz,w,bbcd

 

 

本题考查对指针的理解。*v存储的字符串为efg,**(v+3)存储的是字符串的首地址即“h”,v[4]+2存储的字符串为z,*(v[2]+4)存储的字符为q,v[1]+1存储的字符串为“bcd”。故程序执行后的输出结果为“efg,h,z,q,bcd”。

 

 

 若有宏定义 :#define A_RECT(W,H)  W*H 和以下程序段
     int x=5,y=6,area1,area2; 
     area1= A_RECT((x-1),(y+1));
     area2= A_RECT(x+3,y-1);
     执行上述程序段后,变量area1和area2的值分别是

A)28  22

B)0  22

C)0  40

D)28  40

 

area1=(x-1)*(y+1)=4*7=28,area2=x+3*y-1=5+3*6-1=22。

 

 

 以下关于C语言文件系统的叙述中正确的是

A)fprintf()与fwrite()函数功能相同

B)fscanf()与fread()函数功能相同

C)文件以"r"方式打开后,可以存储文本类型的数据

D)以"w"或"wb"方式打开的文件,不可以从中读取数据

 

 

fscanf()函数用于从文件中读取数据;fread经常被用在对二进制文件的读入函数;fprintf()的功能是将内存中的数据转换成对应的字符,并以ASCII代码形式输出到文本文件中;函数fwrite()的功能是将数据写入二进制文件;"w"或"wb"方式代表写入文件数据,r以只读方式打开文本文件。r方式表示只读

 

 

 下列叙述中错误的是

A)算法的时间复杂度与实现算法过程中的具体细节无关

B)算法的时间复杂度与使用的程序设计语言无关

C)算法的时间复杂度与使用的计算机系统无关

D)对于各种特定的输入,算法的时间复杂度是固定不变的

 

算法的时间复杂度是指执行算法所需要的计算工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量,对于一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。

 

 

 循环队列的存储空间为 Q(1:50),初始状态为 front=rear=50。经过一系列正常的入队与退队操作后,front=rear=25,此后又插入一个元素,则循环队列中的元素个数为

A)26

B)1,或50且产生上溢错误

C)2

D)51

在循环队列中,当front=rear时,不能确定是队列满还是队列空,那么元素个数即为空或者满。然而此时插入了一个元素,若此时队列为空,在队列为空的状态下,又插入一个元素,所以最后该队列中元素个数为1;若此时队列为满,不能再进行入队运算,这种情况称为“上溢”,此时算法结束。

 

 若有C语言表达式 2+3*4+7/3,则以下选项中关于执行顺序的叙述,正确的是

A)先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9

B)先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5

C)先执行7/3得2,再执行3*4得12,再执行12+2得14,最后执行2+14得16

D)先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16

 

 

 设有定义:int  a=0,b=1;,以下表达式中,会产生“短路”现象,致使变量b的值不变的是

A)+a || ++b

B)a++ && b++

C)++a && b++

D)a++ || ++b

 

运算符"++"放在变量前面时,表示将变量+1,再参与其他操作,a++?&&?b++时,由于a值是0直接判定与运算结果为0,忽视b++的值,因此b值不发生改变。

 

 软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于开发阶段任务的是

A)软件开发计划

B)可行性研究

C)软件运行

D)软件集成测试

 

 

软件集成测试属于软件开发阶段的任务,软件开发计划和可行性研究属于定义阶段的任务,软件运行属于维护阶段的任务,

 

 

 软件测试的目的是

A)发现程序中的错误

B)修改程序中的错误

C)发现和修改程序中的错误

D)避免程序中的错误

 

软件测试的目的是为了发现错误而执行程序的过程。

 

 

 以下合法的字符常量是

A)'\068'

B)'\x6D'

C)'\0x41'

D)'\X51'

 

“\”后跟着三个数字,是表示一个ASCII码值等于这三位数字所组成的八进制数数值的字符,但是八进制数只能是由0-7这八个数字表示;转义字符中,用\xhh表示十六进制所代表的任意字符;十六进制的整型常量以0X或0x作为前缀,'\0x41'为整型常量。

 

 

 以下叙述中错误的是

A)函数的形参是局部变量

B)在一个函数内的复合语句中定义的变量在本函数范围内有效

C)在不同的函数中可以定义相同名字的变量

D)在一个函数内定义的变量只在本函数范围内有效

函数内的复合语句中定义的变量,只能在该复合语句中起作用,在复合语句以外,该变量不起作用。

 

 

 以下叙述中错误的是

A)实参的个数应与形参的个数一致

B)实参的类型应与形参的类型赋值兼容

C)形参可以是常量、变量或表达式

D)实参可以是常量、变量或表达式

 

实参可以是任意类型的数据;形参可以是变量,或缺省常量,不可以是表达式。

 

 

 以下叙述中正确的是

A)用static说明的变量是全局变量

B)系统默认auto变量的初值为0

C)用register说明的变量被强制保留在CPU的寄存器中

D)register变量不能进行求地址运算

 

全局变量(extern)和用static修饰的局部变量都是静态变量,该变量是在编译时给变量分配存储空间,所占用存储单元直到程序结束时才释放。而自动变量(auto)和寄存器变量(register)为动态局部变量,只在程序执行到定义它的函数或者语句块时才为其分配内存。

 

 

 

 

 循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素入队,此时队列中的元素个数为

A)1

B)26

C)2

D)50

 

 

在循环队列中,当front=rear时,不能确定是队列满还是队列空,那么元素个数即为空或者满。然而可以正常地插入了一个元素,所以此时队列为空,在队列为空的状态下,又插入一个元素,所以最后该队列中元素个数为1。

 

 

 

A)0

B)2

C)3

D)1

 

系统结构图的扇入指的调用一个给定模块的模块个数,本系统图中“功能3.1”模块上方连接的模块为“功能2”和“功能3”,所以系统结构图的最大扇入数为2。

 

 

 下面不属于对象主要特征的是

A)对象持久性

B)对象继承性

C)对象依赖性

D)对象唯一性

对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。

 有以下程序 
#include <stdio.h>
main()
{
  int a=1,b=2,c=3;
  char flag;
  flag = b>=2 && c<=3;
  switch(a)
  {
    case 1: switch(flag)
    { 
          case 0: printf("**"); break;
          case 1: printf("%%"); break;
    }
    case 0: switch(c)
    { 
          case 1: printf("$$"); break;
          case 2: printf("&&"); break;
          default : printf("##");
    }
  }
  printf("\n");
}
程序运行后的输出结果是

A)%##

B)%&&

C)**##

D)**$$

 

 

 下列算法中,最坏情况下时间复杂度最低的为

A)顺序查找法

B)快速排序

C)二分查找法

D)堆排序

 

对长度为n的线性表排序,在最坏情况下,快速排序需要比较的次数为n(n-1)/2,堆排序需要比较的次数为O(nlog2n),顺序查找需要比较n次,希尔排序所需要的比较次数为O(n1.5)。

 

 

 循环队列的存储空间为 Q(1:50),初始状态为 front=rear=50。经过一系列正常的入队与退队操作后,front=rear=25,则循环队列中的元素个数为

A)49

B)0或50

C)26

D)25

 

在循环队列中,当front=rear时,不能确定是队列满还是队列空,那么元素个数即为空或者满。

 

 

 以下叙述正确的是

A)每个C程序文件都应当包含一个main函数

B)每个C程序都只能有一个main函数

C)C程序由函数组成,可以不包含main函数

D)每个C程序文件中的main函数都应当放在最前面

 

main函数可以放在程序的任何位置,不一定要放在程序的最前面,不论main函数放在什么位置,程序的执行却总是从main函数开始的;C语言程序的入口函数是main(),C语言程序中有且只有一个main函数。

 

 

 若有定义:int  a,b,c; 以下程序段的输出结果是
          a=11;  b=3;  c=0;
          printf("%d\n",c=(a/b,a%b));

A)3

B)1

C)0

D)2

 

C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。因此变量c的值为a%b即11%3=2。

 

 以下选项中,与表达式flag ? a*=2 : a/=3等价的是

A)flag!=1 ? a*=2 : a/=3

B)flag==0 ? a*=2 : a/=3

C)flag==1 ? a*=2 : a/=3

D)flag!=0 ? a+=a : a/=3

 

 

 有下列程序
#include <stdio.h>
void swap(int *a, int *b)
{  int *tp;
   tp = a;  a = b;  b = tp;
   printf("%d,%d,", *a, *b);
}
main( )
{  int i = 3, j = 7, *p = &i, *q = &j;
   swap(p, q);
   printf("%d,%d", *p, *q);
}
程序执行后的输出结果是

A)3,7,3,7 

B)3,7,7,3

C)7,3,7,3 

D)7,3,3,7 

 

swap函数是将输入的两个指针的指向进行交换,这种交换不影响值,所以指针指向为7,3,值为3,7。

 

 以下叙述中错误的是

A)当变量同名时,函数内的局部变量覆盖全局变量

B)C语言的寄存器变量位于内存,因此可以求地址

C)不借助指针,静态局部变量只能供定义它的函数使用

D)用extern说明变量是改变变量的作用域

 

 

循环变量,系统必须多次访问内存中的该单元,影响程序的执行效率。因此,C语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量.

 

 设有定义:
        typedef  struct data1{int  x, y;}   data2;
        typedef  struct {float  x, y;}   data3;
则以下选项不能作为类型名使用的是

A)data2

B)data1

C)struct data1

D)data3

类型名为系统或用户已定义的一种数据类型,它是函数执行过程中通过return语句要求返回的值的类型,又称为该函数的类型。程序中作为类型名应为“struct data1”,因此“data1”不能作为类型名使用。

 

 

 以下关于C语言文件的叙述中正确的是

A)C语言的源代码文件是二进制文件

B)C语言中只有“顺序存取”一种文件存取方式

C)文件由数据序列组成,其类型可以为二进制文件或文本文件

D)当数据按二进制形式输出到文件中时,数据需要经过转换

 

本题考查的是数据文件的有关概念。文件由数据流的形式组成,可以按数据存放的形式分为二进制文件和文本文件,C语言既能读写文本文件,又能读写二进制文件。

 

 设循环队列的存储空间为Q(1:m),初始状态为空。现经过一系列正常的入队与退队操作后,front=m-1,rear=m,此后再向该循环队列中插入一个元素,则队列中的元素个数为

A)m

B)m-1

C)2

D)1

 

在循环队列中,当排头指针指向m-1,尾指针指向m时,循环队列中有m-(m-1)=1个元素,而此后又插入一个元素,则循环队列中元素个数为2。 

 

 

某二叉树共有530个结点,其中度为2的结点有250个,则度为1的结点数为

A)251

B)249

C)29

D)30

 

二叉树具有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个,所以本题中度为0的结点是250+1=251个;在二叉树中,总结点数=叶子结点数+度为1的结点数+度为2的结点数,所以度为1的结点数为530-250-251=29个。

 

 

 

 

 在最坏情况下,堆排序的时间复杂度是

A)

 

B)

 

C)

 

D)

 

 

对长度为n的线性表排序,在最坏情况下,堆排序需要比较的次数为O(nlog2n)。

 

 下列叙述中正确的是

A)对象间的通信是靠方法调用 

B)对象具有封装性 

C)对象标识可以不唯一

D)对象是属性名和属性的封装体 

对象是由数据和容许的操作组成的封装体;对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好;对象之间是通过消息来进行合作交流的。

 

 有三个关系R,S和T如下图所示:

则由关系R和S得到关系T的运算是

A)交

B)并

C)自然连接

D)投影

C

 

 以下选项中不能在C语言程序中用作用户标识符的是

A)_3_14

B)Float

C)scanf

D)auto

Auto  scanf只是函数

 

 

 

 

 设有语句:printf("%2d\n",2010);,则以下叙述正确的是

A)指定的输出宽度不够,编译出错

B)程序运行时输出10

C)程序运行时输出2010

D)程序运行时输出20

 

printf()函数格式化字符串的一般形式为:[标志][输出最小宽度][精度][长度]类型。函数printf()中,%md指输出带符号的十进制整数,给定最小宽度为m位,不足m位左端补空格,超过m位按实际位数输出,所以该程序输出2010。

 

 

 

 以下选项中错误的是

A)printf("%c\n", 65);

B)printf("%d %c\n", 's','s');

C)printf("%c\n", 's'- 32);

D)printf("%s\n", 's');

 

%d可以作为输出字符和整型类型的格式,%c作为输出字符类型的格式,%s作为输出字符串类型的格式,printf("%s\n", 's');中,'s'是字符,不能用%s格式来输出。

 

 

 

 

 

 

 

 

 下列叙述中错误的是

A)循环链表是循环队列的存储结构

B)循环队列是队列的存储结构

C)二叉链表是二叉树的存储结构

D)栈是线性结构

 

循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置;循环链表是用不连续的存储单元存储数据,它有一个表头结点,队头指针指向表头结点,最后一个结点的指针域指向表头结点;二叉链表是树的二叉链表实现方式;栈是一种特殊的线性表。

 

 循环队列的存储空间为 Q(1:100),初始状态为 front=rear=100。经过一系列正常的入队与退队操作后,front=rear=99,则循环队列中的元素个数为

A)0或100

B)99

C)1

D)2

队满或队空

 

 软件设计中模块划分应遵循的准则是

A)高耦合高内聚

B)低耦合低内聚

C)内聚与耦合无关

D)低耦合高内聚

 

模块的内聚性越高,模块间的耦合性就越低,可见模块的耦合性和内聚性是相互关联的。因此,好的软件,应尽量做到高内聚,低耦合,即在软件设计中,模块划分应遵循高内聚低耦合的准则。

 

 

 

 

 下面属于白盒测试方法的是

A)错误推测法

B)等价类划分法

C)边界值分析法

D)基本路径测试

 

白盒测试的主要方法有逻辑覆盖、基本路径测试等。

 

 数据库系统的数据独立性是指

A)不会因为存储策略的变化而影响存储结构

B)不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序

C)不会因为某些存储结构的变化而影响其他的存储结构

D)不会因为数据的变化而影响应用程序

数据独立性是指程序不会因为数据的逻辑结构、存储结构与存取方式的改变而受到影响

 

 设有三张表,客户(客户号,姓名,地址),产品(产品号,产品名,规格,进价),购买(客户号,产品号,价格)。其中表客户和表产品的关键字(键或码)分别为客户号和产品号,则表购买的关键字为

A)客户号,产品号

B)客户号

C)客户号,产品号,价格

D)产品号

购买表是客户表与产品表的纽带表,所以其关键字应包括两个表的关键字。

 

 以下叙述中错误的是

A)由三种基本结构构成的程序是结构化程序

B)用C语言编写的是机器语言程序

C)用高级语言编写的程序称为“源程序”

D)由编译器编译生成的二进制代码称为“目标程序”

C语言是一门面向过程的计算机编程语言。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

 

 以下合法的用户标识符是 

A)I-max

B)_12315_

C)m$

D)2x

B

 

 以下叙述中错误的是

A)整型变量不能存放实数

B)实型变量可以精确存放整数

C)负整数在内存中以“补码”形式存放

D)无符号整数不可以是负数

 

在整型变量的空间不能存放一个实数,也不能在实型变量的空间存放一个整数。

 

 

  数据模型包括数据结构、数据完整性约束和

A)查询

B)数据类型

C)数据操作

D)关系运算

 

数据模型包括数据结构、数据完整性约束、数据操作。

 

 

 

 

 

 

 关于程序设计基本概念,以下叙述错误的是

A)计算机可以直接执行由任意高级语言编写的程序

B)高级语言都有与之对应的编译程序或解释程序

C)结构化算法可以解决任何复杂的问题

D)用任何一种计算机高级语言都可以把算法转换为程序

 

计算机只能识别机器语言,不能直接识别由高级语言编写的程序。

 

 关于程序中的注释,以下叙述正确的是

A)注释内容错误会导致编译出错

B)注释的内容必须放在/* 和 */之间

C)注释必须置于所说明的语句前或语句后

D)注释中间可以嵌套另一个注释

 

程序中,注释可以出现在程序的任何位置;注释中间不能嵌套另一个注释;注释的内容不影响程序编译。

 

 

指针时地址不能变值能变。

 

 循环队列的存储空间为Q(1:60),初始状态为空。经过一系列正常的入队与退队操作后,front=24,rear=25。循环队列中的元素个数为

A)1

B)60

C)59

D)2

循环队列中,rear指向队列中的队尾元素,front指向队头元素的前一个位置,在front指向的后一个位置和rear指向的位置之间,所有的元素均为队列中的元素。队列初始状态为空,当front=24,rear=25时,队列中共有25-24(尾指针-头指针)=1个元素。

 

 

 

 

 

 

 

 

 

 下面对软件特点描述正确的是

A)软件是一种逻辑实体,具有抽象性

B)软件在使用中存在磨损、老化问题

C)软件具有明显的制作过程

D)软件复制不涉及知识产权

 

 

软件有如下特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题。⑤软件复杂性高,成本昂贵。软件是人类有史以来生产的复杂度最高的工业产品。⑥软件开发涉及诸多的社会因素。

 

 

 

 在数据库管理系统提供的数据语言中,负责数据的查询、增加、删除和修改等操作的是

A)数据操纵语言

B)数据定义语言

C)数据控制语言

D)数据管理语言

 

 

数据操纵语言主要实现的是对数据库的操作功能,包括数据的查询、增加和修改等操作。

 

 

 以下叙述正确的是

A)链接程序把文件后缀为.c的源程序文件链接成文件后缀为.exe的可执行文件

B)C编译程序把文件后缀为.obj的二进制文件编译成文件后缀为.exe的可执行文件

C)C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.obj的二进制文件

D)C编译程序把文件后缀为.c的源程序文件编译成文件后缀为.exe的可执行文件

 

 

C语言源程序后缀名为.c,编译程序编译之后中生成一个后缀为.obj的目标程序,再经过连接之后才形成一个可执行的.exe可执行文件。

 

 

 

 

 

 

 

 算法应当具有的特性不包括

A)确定性

B)有穷性

C)可行性

D)美观性

 

算法的特性有:有穷性、确定性、可行性、有零个或多个输入、至少有一个输出

 

 

 以下不属于C语言整数的是

A)12f

B)-32

C)+20L

D)25u

 

F为float

12f

 

 

 

 库函数rand()的功能是产生一个在0~32767之间的随机数。若要用此函数随机产生一个0~99.99(2位小数)之间的数,以下能实现此要求的表达式是

A)(rand()%100)/100.0

B)(rand()%9000+1000.0)/100.0

C)(rand()%10000)/100.0

D)(rand()%10000)/100

 

 

在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关,通常为32767。而要产生浮点数,则需用“rand()/(double)(RAND_MAX); ”,若要产生0-10之前的浮点数,则修改为“rand() /(double)(RAND_MAX/10);”, 若要产生0-100之前的浮点数,则修改为“rand() /(double)(RAND_MAX/100);”。而在本题中,通过最后除的100.0来实现浮点数的转换。

 

 

C

 

 

 

 

 软件工程的三要素是

A)建模、方法和工具

B)建模、方法和过程

C)定义、方法和过程

D)方法、工具和过程

软件工程的包括3个要素,即方法、工具和过程。

 

 

 

 

 通常软件测试实施的步骤是

A)单元测试、集成测试、确认测试

B)单元测试、确认测试、集成测试

C)集成测试、单元测试、确认测试

D)确认测试、集成测试、单元测试

 

软件测试过程一般按4个步骤进行,即单元测试、集成测试、验收测试(确认测试)和系统测试。

 

 

 

 下面可以作为软件设计工具的是

A)系统结构图

B)甘特图

C)数据流程图(DFD图)

D)数据字典(DD)

 

 

 

常用的软件结构设计工具是系统结构图,也称为程序结构图;数据字典(DD)、数据流程图(DFD)是结构化分析方法的常用工具;甘特图是项目管理中的一种项目进度规划工具。

 

 

 

 逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是

A)关系模型

B)物理模型

C)实体-联系模型

D)谓词模型

 

逻辑模型,是指数据的逻辑结构。在数据库中,逻辑模型有关系、网状、层次,可以清晰表示个个关系。概念模型、逻辑模型、物理模型同属于面向数据库系统的模型。实体联系图(Entity Relationship Diagram),是指提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

 

 

 

 

 

 

 

 以下说法正确的是

A)C语言只接受十进制的数

B)C语言接受任何进制的数

C)C语言接受除二进制之外任何进制的数

D)C语言只接受八进制、十进制、十六进制的数

 

 

C语言只接受八进制、十进制、十六进制的数。

 

 

 若有定义: int a=1234, b=-5678; 用语句 printf("%+-6d%+-6d",a,b); 输出,以下正确的输出结果是

A)+-1234+-5678 (最前面和最后均无空格)

B)1234  -5678  (中间有两个空格,最后有一个空格)

C)+1234 -5678  (中间有一个空格,最后有一个空格) 

D) +1234 -5678 (最前面有一个空格,中间有一个空格) 

 

函数printf()中,%md指输出带符号的十进制整数,给定最小宽度为m位,不足m位左端补空格,超过m位按实际位数输出,%+-6d表示输出整型数,正负都带符号。所以输出结果为+1234 -5678 (中间有一个空格,最后有一个空格)。

 

 

 

 

 

 

 

 

 

 下列叙述中正确的是

A)循环队列是非线性存储结构

B)循环队列是链式存储结构

C)循环队列是线性逻辑结构

D)循环队列是线性结构

 

 

队列和线性表都是线性结构;所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用;在实际应用中,队列的顺序存储结构一般采用循环队列的形式。

 

 

 设某棵树的度为3,其中度为3,2,1的结点个数分别为3,0,4。则该树中的叶子结点数为

A)8

B)6

C)不可能有这样的树

D)7

 

在任意一棵树中,叶子结点个数n0=1+n2+2n3+3n4+…+(n-1)nn ,所以该树中n0=1+0+2*3=7。

 

 

 

 设有一个栈与一个队列的初始状态均为空。现有一个序列A,B,C,D,E,F,G,H。先分别将序列中的前4个元素依次入栈,后4个元素依次入队;然后分别将栈中的元素依次退栈,再将队列中的元素依次退队。最后得到的序列为

A)D,C,B,A,E,F,G,H

B)D,C,B,A,H,G,F,E

C)A,B,C,D,H,G,F,E

D)A,B,C,D,E,F,G,H

 

 

 

栈是按照“先进后出”或“ 后进先出”的原则组织数据的;所以入栈最早的最后出栈,最后入栈的最先出栈,所以前4个元素依次入栈后又出栈,退出顺序为D,C,B,A;队列是根据“先进先出”或“后进后出”的原则组织数据的,所以后4个元素依次入队后又退队,所以退队元素的顺序为E,F,G,H。

 

 

 

 

 下面不属于系统软件的是

A)操作系统

B)编译程序

C)数据库管理系统

D)杀毒软件

 

杀毒软件属于应用软件。

 

 

 

 sizeof( double ) 是

A)一个双精度表达式

B)不合法的表达形式

C)一个整型表达式

D)一个函数调用

 

 

sizeof为求字节数的运算符,操作的对象可以是类型说明符、数组名或者表达式,求得的结果为一个整数。

 

 

 

 

 以下说法正确的是

A)函数返回值可以是一个数组,同时返回多个值

B)函数返回值可以是一个指向函数的指针

C)函数可以返回另一个函数的整个函数体

D)函数返回值只能是基本数据类型的数值或指针

 

 

函数返回值可以整型、实型、字符型、指针和结构类型,也可以没有返回值;函数不可以返回另一个函数的整个函数体;在C语言中,一般情况下函数的返回值是通过函数中的return语句来实现的,每调用一次return语句只能从函数中返回一个值。

 

 

 

 

 

 

 

 

关于地址和指针,以下说法错误的是

A)p = f; 可以让函数指针p指向一个同类型的函数f

B)q = a; 可以让指针q指向一个同类型的数组a

C)指针变量可以赋NULL值

D)绝对不可以通过强制类型转换让char型指针指向double型变量

 

 

char型根据转化原则可以转化为double类型。

 

 

 有以下程序

    #include <stdio.h>
    void swap(int *a, int *b)
   {   int  t, *tp;
       t = *a; *a = *b; *b = t;
       tp = a;  a = b;  b = tp;
       printf("%d,%d,", *a,*b);
    }
    main( )
    {  int i=3, j=7, *p=&i, *q=&j;
       swap(p, q);
       printf("%d,%d,%d,%d", i, j, *p, *q);
    }
    程序执行后的输出结果是

A)7,3,7,3,7,3

B)3,7,7,3,7,3

C)3,7,3,7,3,7

D)3,7,3,7,7,3

 

main()函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap()函数,swap()函数接收两个整型指针变量a,b,然后使用整型变量t交换a、b所指向的值并输出,通过指针变量,这次交换改变了实参i、j的值,使得i=7,j=3;指针变量tp交换a和b的值,由于a、b的值是p,q值的拷贝,所以这次交换只改变了形参a,b的值,对实参p,q的值没有改变,所以此时a指向j,b指向i,函数最后输出*a和*b,所以输出3,7;由于swap()函数改变了p和q指向的值,但未改变p,q的值,所以main()函数输出i的值为7,j的值为3,*p的值为i,*q的值为j,所以程序输出:3,7,7,3,7,3。

 

 

 

 

 某二叉树共有150个结点,其中有50个度为1的结点,则

A)不存在这样的二叉树

B)该二叉树有49个叶子结点

C)该二叉树有51个叶子结点

D)该二叉树有50个叶子结点

 

在二叉树中,总结点数=叶子结点数+度为1的结点数+度为2的结点数,所以度为0和度为2的结点,共有150-50=100个,而二叉树又有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以度为0的结点个数加上度为2的结点个数之和一定是奇数,不可能是100。

 

 

 

 软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是

A)测试

B)编码       

C)设计     

D)需求分析        

 

 

 

软件定义阶段包括可行性研究初步项目计划以及需求分析;软件开发阶段的任务是:具体完成设计和实现定义阶段所定义的软件,通常包括总体设计、详细设计、编码和测试。

 

 

 

 下面属于黑盒测试方法的是   

A)基本路径测试       

B)判定覆盖            

C)条件覆盖

D)错误推测法   

 

 

黑盒测试方法主要有等价类划分法、边界值分析法和错误推测法。

 

 

 

 

 

 在数据库的数据模型中,面向数据在计算机中物理表示的是

A)物理模型

B)面向对象的模型

C)概念模型

D)数据模型

 

 

 

物理模型是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。所以面向数据在计算机中的物理表示为物理模型。

 

 

 

 若有定义 int a, b, c; 以下选项中的赋值语句正确的是

A)a + b = c;

B)a = (b == c) = 1;

C)(a = b) = c = 1;

D)a = (b = c) + 1;

 

赋值运算符的左侧必须为变量而不能是表达式。

 

树是一种简单的非线性结构。

 

 

 设循环队列的存储空间为Q(1: m),初始状态为 front=rear=m。经过一系列正常的操作后,front=1,rear=m。为了在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为

A)m-1

B)m

C)1

D)m-2

 

 

 

 

该题中1<m,即rear-front>0,则该循环队列中的元素个数为m-1。此在该队列中寻找值最大的元素,在最坏情况下需要的比较次数为m-1-1=m-2。

 

 

 

 

 

 设二叉树的后序序列为DGHEBIJFCA,中序序列为DBGEHACIFJ。则前序序列为

A)ABCDEFGHIJ

B)JIHGFEDCBA

C)GHIJDEFBCA

D)ABDEGHCFIJ

 

由于在后序遍历二叉树中访问根结点在最后,因此,后序序列中的最后一个结点为二叉树的根结点,即A为根结点,又由于在中序遍历中访问根结点的次序为居中,而访问左子树上的结点为居先,访问右子树上的结点为最后,因此在中序序列以根结点(A)为分界线,前面的子序列(DBGEH)一定在左子树中,后面的子序列(CIFJ)一定在右子树中。同样的道理对于已经划分出的子序列再进行如上操作,还原二叉树后再按前序遍历,得序列为ABDEGHCFIJ。

 

 

 

 
 某系统结构图如下图所示:

则该系统结构图的深度是

A)3

B)1

C)4

D)2

 

结构图中,深度表示控制的层数,根据总体结构图可以看出该图的深度为3。

 

 

 

 数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是

A)DBS就是DB,也就是DBMS

B)DB包括DBS和DBMS

C)DBMS包括DB和DBS

D)DBS包括DB和DBMS

数据库系统包括数据库和数据库管理系统。

 

 

 公司中有不同部门,而每个员工分属不同的部门,则实体部门与实体员工间的联系是

A)一对多

B)多对多

C)多对一

D)一对一

 

由题意及常识分析可知,一个部门有多个员工,所以部门与员工之间是一对多的关系。

 

 

 

 以下叙述正确的是

A)C程序的执行是从源文件的开头,一行一行向下执行,每行都会被执行到

B)每个C源文件都应当有一个主函数

C)C程序的执行一定是从主函数开始,从主函数结束

D)对于只包含表达式语句的程序段,执行顺序与书写顺序一致

 

条件语句中,不满足条件的不会被执行,C源文件不一定有主函数,C程序也不一定是先执行主函数,结束的地方也不一定是主函数。

 

 

 

 以下叙述正确的是

A)一个#include行可以包含多个文件,文件名用逗号分开

B)使用符号\可以将一条#include 命令写在多行里

C)一个#include行可以包含多个文件,且最后一个文件起作用

D)#include <stdio.h> 是C程序的一条语句

 

 

一个#include行只能有一个文件,#include <stdio.h> 成为编译预处理命令。

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 一个模块直接调用的下层模块的数目称为模块的

A)扇出数

B)扇入数

C)作用域

D)宽度

 

 

系统结构图的扇出指的是一个模块直接调用的其他模块数。

 

 

 数据库系统内部采用三级模式和模式间的二级映射,是为了提高数据库的物理独立性和

A)数据独立性

B)安全性 

C)并发性

D)逻辑独立性

 

数据库系统中采用多级映射是为了提高数据的物理独立性和逻辑独立性。

 

 

 

 将数据和操作置于对象统一体中的实现方式是

A)隐藏

B)封装

C)结合

D)抽象

 

对象是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的统一体。

 

 

 

 

 

 

 

 

 

 

 

 某二叉树中有n个叶子结点,则该二叉树中度为2的结点数为

A)n+1

B)n/2

C)n-1

D)2n

 

二叉树具有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。二叉树中有n个叶子结点,则该二叉树中度为2的结点数为n-1。

 

 

 

 下列叙述中错误的是

A)算法的时间复杂度与空间复杂度有直接关系

B)算法的空间复杂度与算法所处理数据的存储结构有直接关系

C)算法的时间复杂度与算法所处理数据的存储结构有直接关系

 

 

算法的时间复杂度是指执行算法所需要的计算工作量,与数据的存储结构有关;算法的空间复杂度是指执行这个算法所需要的内存空间;根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关

 

 

 

 

 

 E-R图中用来表示实体的图形是

A)椭圆形

B)矩形

C)菱形

D)三角形

 

 

E-R图中用矩形表示实体,椭圆表示属性,菱形表示联系。

 

 

 

 

 

 

 在关系表中,属性值必须是另一个表主键的有效值或空值,这样的属性是

A)候选键

B)主键

C)外键

 

 

一个属性不是本表的关键字,却是另外一个表的关键字,则称这个属性为外键。

 

 

 

 

 

 以下说法正确的是

A)赋值语句可以出现在源程序中的任意位置

B)赋值语句是一种可执行语句,应当出现在函数的可执行部分

C)赋值语句可以出现在函数外单独执行

D)赋值语句可以出现在函数中的任意位置

 

 

赋值语句是一种可执行语句,应当出现在函数的可执行部分。

 

 

 

 

 

 

 

 下列叙述中错误的是

A)循环队列是队列的存储结构

B)具有两个指针域的链表不一定是非线性结构

C)循环链表是循环队列的链式存储结构

D)具有两个指针域的链表不一定是线性结构

 

 

循环链表是另一种形式的链式存储结构,循环链表和循环队列是平级关系。

 

 

 

 

 

 

  下面选项中不是关系数据库基本特征的是

A)与行的次序无关

B)与列的次序无关

C)不同的列应有不同的数据类型

D)不同的列应有不同的列名

 

关系数据库中,不同列的数据类型没有必须相同或必须不相同的要求。

 

 

 

 

 下面不属于软件需求分析阶段工作的是

A)需求计划

B)生成需求规格说明书

C)需求评审

D)需求获取

 

 

 

需求分析阶段的工作,可以概括为四个方面:①需求获取,②需求分析,③编写需求规格说明书,④需求评审。

 

 

 

 

 下面对“对象”概念描述错误的是

A)对象是属性和方法的封装体       

B)一个对象是其对应类的实例

C)对象间的通信是靠消息传递            

D)对象不具有封装性   

 

对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。

 

 

 

 

 

 

 

 

 

 软件设计一般划分为两个阶段,两个阶段依次是

A)数据设计和接口设计

B)总体设计(概要设计)和详细设计

C)算法设计和数据设计

D)界面设计和结构设计

 

 

从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。

 

 

 

 结构化程序设计强调

A)程序的可复用性

B)程序的易读性

C)程序的效率

D)程序的规模

 

 

结构化程序设计主要强调的是程序简明清晰,易读易懂,程序必须是可以理解的。结构化程序设计的基本原则是“清晰第一,效率第二”。

 

 

 

 

 逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是

A)实体-联系模型

B)关系模型

C)谓词模型

D)物理模型

 

逻辑模型,是指数据的逻辑结构。在数据库中,逻辑模型有关系、网状、层次,可以清晰表示个个关系。概念模型、逻辑模型、物理模型同属于面向数据库系统的模型。实体联系图(Entity Relationship Diagram),是指提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

 

 

 

 

 

下列排序方法中,最坏情况下时间复杂度最低的是

A)堆排序

B)冒泡排序

C)希尔排序

D)快速排序

 

对长度为n的线性表排序,在最坏情况下,冒泡排序和快速排序需要比较的次数为n(n-1)/2,堆排序需要比较的次数为O(nlog2n),希尔排序所需要的比较次数为O(n1.5)。

 

 

 某二叉树的深度为7,其中有64个叶子结点,则该二叉树中度为1的结点数为

A)63

B)2

C)0

D)1

 

 

在满二叉树中,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点。而题目中的二叉树在第7层有27-1=64个结点,所以该二叉树为满二叉树,在满二叉树中不存在度为1的结点。

 

 

 在关系模型中,每一个二维表称为一个

A)关系

B)元组

C)主码(键)

D)属性

 

 

 

 

关系模型采用二维表来表示,一个二维表表示一个关系。

 

 

 

 

 

 

 

 

 

 

 

 以下说法错误的是

A)程序模块化的目的之一是提高程序编制的效率

B)程序模块化的目的之一是提高程序的执行速度

C)程序模块化的目的之一是提高调试程序的效率

D)程序模块化的目的之一是提高程序代码复用率

 

模块化程序的优点:(1)易于维护和复用,可以提高程序编制的效率。(2)易于分工合作。(3)易于模块化调试测试。模块化程序的副作用:(1)可能会降低程序运行效率。(2)设计的前期工作需要多花费时间。

 

 

 

 

 以下正确的转义字符是

A)'\X41'

B)'\x41'

C)'\0X41'

D)'\0x41'

 

 

转义字符中,\xhh表示十六进制所代表的任意字符,只有'\x41'是正确的转义字符。

 

 

 

 有如下程序段
      for (i=0; i<10; i++)
         if (i <= 5) break;
则循环结束后i的值为

A)10

B)1

C)5

D)0

 

 

i的初值为0,满足循环条件,在if语句中i小于5满足条件,所以执行break,跳出循环,i++不用执行,因此输出i的值为0。

 

 

 

 有如下形式的函数 
 int fun(int a[4][5], int *p[10], int n)
 {……}
调用函数之前需要对函数进行说明,即所谓的函数向前引用说明,以下对fun函数说明正确的是

A)int fun(int a[][], int *p[], int n);

B)int fun(int a[], int *p[], int n);

C)int fun(int b[][5], int *r[], int m);

D)int fun(int a[4][], int *p[10], int n);

 

函数向前引用说明中是对要定义的数据进行说明,而不是定义数据的具体数值,故函数向前引用说明中的符号和实际引用的不一样

 

C

 

 

 

 

 下列叙述中正确的是

A)双向链表既能表示线性结构,又能表示非线性结构

B)具有多个指针域的链表肯定是非线性结构

C)循环队列与循环链表都是线性结构

D)顺序存储结构只能表示线性结构

 

 

一个非空的数据结构满足以下两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构;能顺序存储的数据结构可以是线性结构也可以是非线性结构,例如树可以顺序存储数据,而树是非线性结构;双向链表是线性结构。

 

C

 

数据库系统中采用多级映射是为了提高数据的物理独立性和逻辑独立性。

 

 

 

 

 

 

 

 

 

 

 

 

 设某棵树的度为3,其中度为3,2,1的结点个数分别为3,0,4。则该树中的叶子结点数为

A)不可能有这样的树

B)8

C)6

D)7

 

 

在任意一棵树中,叶子结点个数n0=1+n2+2n3+3n4+…+(n-1)nn ,所以该树中n0=1+0+2*3=7。

 

 

 以下选项中,合法的C语言实数是

A)7.12E

B)E13

C)3.1e0.4

D).2e0

 

科学计数法中,e/E前后必须有数字并且后面的数字必须为整数。

 

 

 

 

 下列叙述中错误的是

A)算法的时间复杂度与问题规模无关

B)算法的空间复杂度与算法运行输出结果的数据量无关

C)算法的时间复杂度与计算机系统无关

D)算法的时间复杂度与空间复杂度没有必然的联系

 

 

算法的复杂度主要包括时间复杂度和空间复杂度,算法的时间复杂度是指执行算法所需要的计算工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量,而算法所执行的基本运算次数与问题的规模有关。

 

 

 

 

 

 

 

 

 

 某带链栈的初始状态为 top=bottom=NULL,经过一系列正常的入栈与退栈操作后,top=10,bottom=20。该栈中的元素个数为

A)0

B)1

C)10

D)不确定

 

 

带链的栈是具有栈属性的链表,线性链表的存储单元是不连续的,所以链表中的元素存储在不连续的地址中,因此当top=10,bottom=20时,不能确定栈中元素的个数。

 

 

 

 

 

 

 

 

对长度为n的线性表排序,在最坏情况下,快速排序需要比较的次数为n(n-1)/2。当表的长度为15,则在最坏情况下,快速排序所需要的比较次数为15*(15-1)/2=105。

 

 

 

 

软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是

A)ERP系统

B)C编译程序

C)CAI软件

D)学籍管理系统

 

 

系统软件是计算机管理自身资源,提高计算机使用效率并服务于其他程序的软件。如操作系统,编译程序,汇编程序,网络软件,数据库管理系统等。CAI软件、ERP系统和学籍管理系统均不属于系统软件。

 

 

 

 

 

 

 

 

 下面属于对象基本特点的是

A)灵活性

B)方法唯一性

C)可修改性

D)多态性

 

 

 

对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。

 

 

 

 单元测试不应涉及的内容是

A)模块的接口

B)模块的局部数据结构

C)模块的出错处理功能

D)模块的执行路径 

 

单元测试主要针对模块的下列5个基本特性进行:①模块接口测试——测试通过模块的数据流。②局部数据结构测试。③重要的执行路径的检查。④出错处理测试。检查模块的错误处理功能。⑤影响以上各点及其他相关点的边界条件测试。

 

 

 

 

 循环队列的存储空间为Q(1:50)。经过一系列正常的入队与退队操作后,front=rear=25。后又成功地将一个元素退队,此时队列中的元素个数为

A)0

B)26

C)49

D)24

 

 

 

 

在循环队列中,当front=rear时,不能确定是队列满还是队列空,那么元素个数即为空或者满。然而可以正常地退出了一个元素,所以此时队列为满,在队列为满的状态下,又退出一个元素,所以最后该队列中元素个数为50-1=49个。

 

 

 设二叉树中有20个叶子结点,5个度为1的结点,则该二叉树中总的结点数为

A)46

B)不可能有这样的二叉树

C)44

D)45

 

 

二叉树又有如下性质:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以度为2的结点个数为20-1=19;在二叉树中,总结点数=叶子结点数+度为1的结点数+度为2的结点数,总结点数为20+5+19=44个。

 

 

 

 

 以下叙述错误的是

A)C语言提供了丰富的数据类型

B)C语言中提供了子程序的概念,可以和函数完成一样的功能

C)C语言是结构化程序设计语言,结构化程序由顺序结构、选择结构和循环结构三种基本结构组成

D)C语言允许对函数单独进行编译,可以实现模块化

 

C语言中没有子程序的概念。

 

 

 

 

 以下有关scanf函数的叙述中错误的是

A)scanf函数从输入字符流中按照格式控制指定的格式解析出相应数据,送到指定地址中

B)scanf函数有返回值,其值就是本次调用scanf函数时正确读入的数据项个数

C)在scanf函数中的格式控制字符串不会输出到屏幕上

D)在scanf函数的格式字符前既可以加入正整数指定输入数据所占的宽度,也可以对实数指定小数位的宽度

 

 

scanf函数的格式字符不能指定小数位的宽度。

 

 

 

 

 

 

 

 

 下面不属于对象主要特征的是

A)对象持久性

B)对象唯一性

C)对象继承性

D)对象依赖性

 

 

 

对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好

 

 

 

 下列算法中均以比较作为基本运算,则平均情况与最坏情况下的时间复杂度相同的是

A)在顺序存储的有序表中进行对分查找

B)在链式存储的有序表中进行查找

C)在顺序存储的线性表中寻找最大项

D)在顺序存储的线性表中进行顺序查找

 

 

在顺序表中查找最大值,一定是需要把所有数据元素依次进行比较,所以平均情况和最坏情况的比较次数都是n-1。

 

 

 

 

 

 下列叙述中正确的是

A)循环链表中至少有一个结点

B)循环链表是循环队列的链式存储结构

C)双向链表有两个头指针

D)双向链表有两个头结点

 

a

 

 

循环队列是队列的一种顺序存储结构;双向链表的每个结点有两个指针,一个称为左指针,用以指向其前件结点,另一个称为右指针,用以指向其后件结点;循环链表有一个表头结点,队头指针指向表头结点,最后一个结点的指针域指向表头结点。

 

 

  描述数据库中全体数据的全局逻辑结构和特征的是

A)内模式

B)外模式

C)用户模式

D)概念模式

 

 

概念模式用来描述数据库中的逻辑结构和特征。内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。外模式面向具体的应用程序,定义在逻辑模式之上,但独立于存储模式和存储设备,它是一个或几个特定用户所使用的数据集合(外部模型),是用户与数据库系统的接口,是概念模型的逻辑子集。用户模式就是让linux系统作为一个用户进程运行。

 

 

 

 

 算法时间复杂度的度量方法是

A)执行算法所需要的基本运算次数

B)算法程序的长度

C)执行算法所需要的时间

D)执行算法所需要的所有运算次数

 

算法的时间复杂度是指执行算法所需要的计算工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。

 

 

 下列叙述中正确的是

A)存储空间不连续的所有链表一定是非线性结构

B)带链的栈与队列是线性结构

C)结点中有多个指针域的所有链表一定是非线性结构

D)能顺序存储的数据结构一定是线性结构

 

栈与队列都是线性表,带链的栈与队列是线性结构;在线性表的链式存储结构中,存储数据结构的存储空间可以不连续;结点中有多个指针域的所有链表不一定是非线性结构,双向链表结点有两个指针域,但它是线性结构;能顺序存储的数据结构可以是线性结构也可以是非线性结构,例如树可以顺序存储数据,而树是非线性结构。

 

 

 下列叙述中错误的是

A)非线性结构中至少有一个根结点

B)非线性结构中可以没有根结点与叶子结点

C)有一个以上叶子结点的必定是非线性结构

D)有一个以上根结点的必定是非线性结构

 

一个非空的数据结构满足以下两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构

posted @ 2019-08-27 10:42  通信小九  阅读(5041)  评论(0编辑  收藏  举报