★全国计算机等级考试等级考试真题库
C选项中,'abc'是字符串,字符常量只能是单个字符,不能是字符串;D选项中,以反斜线\开头的是转义字符。因此B选项正确。
22.以下叙述中正确的是
A) 转义字符要用双引号括起来,以便与普通的字符常量区分开 B) 字符常量在内存中占2个字节 C) 字符常量需要用单引号括起来 D) 字符常量是不能进行关系运算的 参考答案:C
【解析】B选项中,字符常量在内存中占1个字节;A选项中,转义字符是以反斜线\开头,后跟一个或几个字符;D选项中,字符常量可以进行关系运算,不能参与数值运算。因此C选项正确。
23.以下叙述中正确的是
A) 用户自己定义的函数只能调用库函数
B) 实用的C语言源程序总是由一个或多个函数组成 C) 不同函数的形式参数不能使用相同名称的标识符 D) 在C语言的函数内部,可以定义局部嵌套函数 参考答案:B
【解析】A选项中,\用户自己定义的函数只能调用库函数\描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。因此B选项正确。
24.以下叙述中正确的是
A) int* p1; int ** p2; int *p3;都是合法的定义指针变量的语句 B) 指针变量只能通过求地址运算符(&) 来获得地址值 C) 语句p=NULL;与p=\\0;是等价的语句
D) 语句p=NULL;执行后,指针p指向地址为0的存储单元 参考答案:A
【解析】B选项描述不正确,指针变量可以通过求地址运算符(&) 来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NULL;和p=0;或p='\\0';等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-\空\。因此A选项正确。
25.以下叙述中正确的是
A) 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同 B) 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息 C) 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL; D) 指针变量之间不能用关系运算符进行比较 参考答案:B
【解析】A选项描述不正确,指针变量的赋值只能赋予地址, 决不能赋予任何其它数据,否则将引起错误;C选项中,p=NULL;和p=0;是等价的;D选项中,指向同一数组的两指针变量进行关系运算可表示它们所值数组元素之间的关系。因此B选项正确。
6
★全国计算机等级考试等级考试真题库
26.以下叙述中正确的是
A) 一条语句只能定义一个数组
B) 每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 C) 数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 D) 在引用数组元素时,下标表达式可以使用浮点数 参考答案:B
【解析】A选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C选项中,数组说明符的一对方括号中可以是整型常量,可以是整型常量表达式;D选项中,在引用数组元素时,下标表达式必须是整型的。因此B选项正确。
27.以下叙述中正确的是 A) 数组下标的下限是1
B) 数组下标的下限由数组中第一个非零元素的位置决定 C) 数组下标的下限由数组中第一个被赋值元素的位置决定 D) char c1, c2, *c3, c4[40];是合法的变量定义语句 参考答案:D
【解析】数组下标的下限是0。因此D选项正确。
28.以下叙述中正确的是
A) 语句int a[8] = {0}; 是合法的
B) 语句 int a[] = {0};是不合法的,遗漏了数组的大小
C) 语句 char a[2] = {\是合法的,定义了一个包含两个字符的数组
D) 语句 char a[3]; a = \是合法的,因为数组有三个字符空间的容量,可以保存两个字符
参考答案:A
【解析】B选项中,如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数;C选项中,char a[2] = {\不合法,应为char a[2] = {'A', 'B'};;D选项中,用字符串方式赋值比用字符逐个赋值要多占1个字节,在该选项中应为3个字节。因此A选项正确。
29.下面选项中的程序段,没有编译错误的是 A) char* sp, s[10]; sp = \ B) char* sp, s[10]; s = \
C) char str1[10] = \ D) char mark[]; mark = \ 参考答案:A
【解析】本题考查字符数组的初始化以及指向字符串的指针,B选项不能直接将字符串赋值给数组名,C选项不能将两个字符数组直接互相赋值,D选项中不能这样定义char mark[],必须指定长度或者直接初始化。
30.以下叙述中正确的是
A) 字符串常量\的类型是:字符串数据类型
B) 有定义语句: char str1[] = \,数组str1将包含4个元素 C) 下面的语句用赋初值方式来定义字符串,其中,'\\0'是必须的
7
★全国计算机等级考试等级考试真题库
char str1[] = {'s', 't', 'r', '1', '\\0'};
D) 字符数组的每个元素可存放一个字符,并且最后一个元素必须是'\\0'字符 参考答案:C
【解析】本题考查字符数组的相关操作,B选项中数组str1包含了5个元素,其中有结尾符,A选项中str1的类型不是字符串类型,字符数组的最后一个元素可以不是'\\0'字符
31.以下叙述中正确的是
A) 字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 B) char ca[3][5] = {\是不合语法的 C) char ca[ ][5] = {\是不合语法的 D) char *ca[3] = {\是不合语法的 参考答案:A
【解析】本题考查字符串数组的相关知识,选项B、C、D都是合语法的。
32.以下叙述中正确的是
A) 两个字符串可以用关系运算符进行大小比较
B) 函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位) C) C语言本身没有提供对字符串进行整体操作的运算符
D) 当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 参考答案:C
【解析】本题考查字符串处理函数strlen、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
33.以下叙述中正确的是
A) 如果函数带有参数,就不能调用自己 B) 所有函数均不能接受函数名作为实参传入 C) 函数体中的语句不能出现对自己的调用 D) 函数名代表该函数的入口地址 参考答案:D
【解析】本题考查函数调用相关知识,B选项中函数可以接受函数名作为实参传入,引用函数名也是指针,C、A选项是错误的,因为递归函数就能调用自己。
34.以下叙述中正确的是
A) 局部变量不能被说明为static
B) 只有全局变量才有自己的作用域,函数中的局部变量没有作用域 C) 只有在函数内部定义的变量才是局部变量
D) 只要是用户定义的标识符,都有一个有效的作用域 参考答案:D
【解析】本题考查局部变量和全局变量作用域,B选项中局部变量也有作用域,C选项中,函数内部定义的也可能是全局变量,A选项错误,因为可以定义个静态局部变量。
35.下面选项中关于编译预处理的叙述正确的是
8
★全国计算机等级考试等级考试真题库
A) 预处理命令行必须使用分号结尾
B) 凡是以#号开头的行,都被称为编译预处理命令行 C) 预处理命令行不能出现在程序的最后一行 D) 预处理命令行的作用域是到最近的函数结束处 参考答案:B
【解析】本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A选项错误,预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件
36.以下叙述中正确的是
A) 使用typedef说明新类型名时,其格式是: typedef 新类型名 原类型名; B) 在程序中,允许用typedef来说明一种新的类型名 C) 使用typedef 说明新类型名时,后面不能加分号
D) 在使用typedef改变原类型的名称后,只能使用新的类型名 参考答案:B
【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A总新类型名应该在原类型名之后,C选项中后面要加分号,D选项中可以使用原类型名。
37.以下叙述中正确的是
A) 结构体类型中各个成分的类型必须是一致的
B) 结构体类型中的成分只能是C语言中预先定义的基本数据类型 C) 在定义结构体类型时,编译程序就为它分配了内存空间 D) 一个结构体类型可以由多个称为成员(或域) 的成分组成 参考答案:D
【解析】本题考查结构体类型,结构体类型中的成分可以是结构体,所以B选项错误,定义结构体时编译程序并不会给它分配内存空间,所以C选项错误,结构体中各个成分的类型可以是不一样的,所以A选项错误。
38.以下叙述中正确的是
A) 使用typedef定义新类型名后,新类型名与原类型名实际上是等价的 B) 结构体类型中的各个成分均不能是数组或指针
C) 结构体类型的变量,不能在声明结构体类型组成时一起定义
D) 元素为结构体类型的数组,只能在声明过结构体类型之后,单独进行定义 参考答案:A
【解析】本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,结构体类型中的成分可以是数组和指针,所以B选项错误,结构体类型的变量可以在声明结构体的时候一起定义,C选项错误,D选项中可以一起定义。
39.下面选项中关于位运算的叙述正确的是 A) 位运算的对象只能是整型或字符型数据 B) 位运算符都需要两个操作数
C) 左移运算的结果总是原操作数据2倍 D) 右移运算时,高位总是补0 参考答案:A
【解析】本题考查位运算。按位取反只需要一个操作数,所以B选项错误,左移一位是原操
9
★全国计算机等级考试等级考试真题库
作数的2倍,其他情况不是,比如左移两位就是原操作数的4倍,所以C选项错误,右移运算时,高位在某些情况下不是补0。
40.下面选项中关于\文件指针\概念的叙述正确的是 A) 文件指针是程序中用FILE定义的指针变量
B) 文件指针就是文件位置指针,表示当前读写数据的位置 C) 文件指针指向文件在计算机中的存储位置
D) 把文件指针传给fscanf函数,就可以向文本文件中写入任意的字符 参考答案:A
【解析】在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。文件指针不是文件位置指针,所以BC选项错误,D选项中不可以写入任意的字符。
10