计算机C语言考试试题带答案
  1). 关于C语言的变量,以下叙述中错误的是( )
  A.所谓变量是指在程序运行过程中其值可以被改变的量
  B.变量所占的存储单元地址可以随时改变
  C.程序中用到的所有变量都必须先定义后才能使用
  D.由三条下划线构成的符号名是合法的变量名
  正确答案:B
  答案解析:变量是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。
  2). 当变量c的值不为2、4、6时,值也为″真″的表达式是( )
in运算符的含义  A.(c==2)||(c==4)||(c==6)
  B.(c>=2 && c<=6)&& !(c%2)
  C.(c>=2 && c<=6)&&(c%2!=1)
  D.(c>=2 && c<=6) || (c!=3) || (c!=5)
  正确答案:D
  答案解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2 && c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。
  3). 在C语言中,函数返回值的类型最终取决于
  A.函数定义时在函数首部所说明的函数类型
  B.return语句中表达式值的类型
  C.调用函数时主调函数所传递的实参类型
  D.函数定义时形参的类型
  正确答案:A
  答案解析:在C语言中,应当在定义函数时指定函数值的类型,凡不加类型说明的函数,一律按整型处理。在定义函数时,对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数类型为主,即函数类型决定返回值的类型。
  4). C语言主要是借助以下哪种手段来实现程序模块化( )
  A.定义常量和外部变量
  B.使用丰富的数据类型
  C.使用三种基本结构语句
  D.定义函数
  正确答案:D
  答案解析:C语言用函数实现软件的模块化设计。
  5). 以下叙述中正确的是( )
  A.只有全局变量才有自己的作用域,函数中的局部变量没有作用域
  B.只要是用户定义的标识符,都有一个有效的作用域
  C.只有在函数内部定义的变量才是局部变量
  D.局部变量不能被说明为static
  正确答案:B
  答案解析:在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开始到源文件结束。因此只要用户定义的标识符,全部都有作用域。局部变量可以说明为auto、register以及static。
  6). 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的( )。
  A.连接码.
  B.关系码
  C.外码
  D.候选码
  正确答案:D
  答案解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的'所有候选键中选取一个作为用户使用的键称为主键或主码。
  7). 以下叙述中错误的是( )
  A.预处理命令行的最后不能以分号表示结束
  B.C程序对预处理命令行的处理是在程序执行的过程中进行的
  C.#define MAX 是合法的宏定义命令行
  D.在程序中凡是以″#″开始的语句行都是预处理命令行
  正确答案:B
  答案解析:预处理命令行是以″#″开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:# define 标识符 字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。
  8). 按照″后进先出″原则组织数据的数据结构是( )
  A.队列
  B.栈
  C.双向链表
  D.二叉树
  正确答案:B
  答案解析:栈是限定在一端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被の插入的元素,也是最先被删除的元素;栈底元素总是最先被の插入的元素,也是最后才能被删除的元素。即栈是按照″后进先出″(Last In First Out,简称LIFO)或″先进后出″(First In Last Out,简称FILO)的原则组织数据的。因此,栈也称为″后进先出表″或″先进后出″表。
  9). 以下程序段完全正确的是( )
  A.int k, *p=&k; scanf(″%d″, p);
  B.int *p; scanf(″%d″, p);
  C.int *p; scanf(″%d″, &p);
  D.int k, *p; *p=&k; scanf(″%d″, p);
  正确答案:A
  答案解析:选项B没有对指针进行初始化,无效指针。选项C错在没有对指针进行初始化,无效指针,并且在scanf(″%d″,&p)中无需再进行取地址操作。选项D,语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。
  10). 一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )
  A.一对一
  B.一对多
  C.多对一
  D.多对多
  正确答案:B
  答案解析:两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对一的联系和多对多的联系。由于一个宿舍可以住多个学生,所以它们的联系是一对多联系。
  11). 软件设计中划分模块的一个准则是( )
  A.低内聚低耦合
  B.高内聚低耦合
  C.低内聚高耦合
  D.高内聚高耦合
  正确答案:B
  答案解析:耦合性与内聚性是模块独立性的两个定性标准。一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
  12). 当把4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是( )。
  A.k%2
  B.k%2==1
  C.(k%2) !=0
  D.!k%2==1
  正确答案:A
  答案解析:整数k对2求余数的两个结果只能是0和1,所以选项A表示k除以2的余数,其结果是0或1。在选项B、C和D中包括算术求余运算符″%″,关系等于运算符 ″==″和关系不等于运算符″!=″以及逻辑非运算符″!″。而逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:!(逻辑″非″)、算术运算符、关系运算符、&&(逻辑″与″)、||(逻辑″或″)、赋值运算符。选项B含义是判断表达式k%2的结果是否等于1、选项C的含义是判断表达式k%2的结果是否不等于0,选项D含义是判断表达式!k%2的结果是否等于1,所以选项B、C和D的含义相同。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。