好文档 - 专业文书写作范文服务资料分享网站

2014年3月份全国计算机等级考试二级C语言选择题大全

天下 分享 时间: 加入收藏 我要投稿 点赞

在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double←float。

(16)D 【解析】在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。

(17)B 【解析】本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为\即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。

(18)B 【解析】对于do…while循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次i的值\再接着判断表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的值\。

(19)D 【解析】 if…else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x=0时,z=z+1。

(20)A 【 解析】本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。

(21)A 【解析】本题考查用于多分支选择的switch语句, 其一般形式为: switch(表达式) {

case常量表达式1: 语句1; case常量表达式2: 语句2; …

case常量表达式n: 语句n; default : 语句n+1; }

其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。 (22)D 【解析】在C语言中,定义一维数组的语句一般形式如下: 类型名数组名[常量表达式];

一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计

41

算有多少个数组元素。

(23)D 【解析】在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

(24)B 【解析】本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为\j<=i\而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。

(25)C 【解析】在C语言中,字符型数据在内存中的存储形式是ASCII码值。当需要以整型格式输出字符时,输出的也是ASCII码值。字符'A'和'D'的ASCII码值分别为65和68。 (26)D 【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

(27)B 【解析】 argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

(28)C 【解析】 p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。

29)C 【解析】函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void 型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。

(30)C 【解析】此题考查了指针引用一维数组元素的方法。*p+9因为运算符\的优先级高于\所以输出结果为p指向的元素1,然后加9,值为10。

(31)B 【解析】字符串连接函数strcat的调用形式如下:strcat(s1,s2)。此函数将s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。 (32)A 【解析】本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1=\如果想把\这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(str1,\或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,\字符数组1\必须写成数组名形式,如(str1),\字符串2\可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

(33)C 【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是

42

数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n 的值,输出n的值为61。 (34)A 【解析】在本题中,p和q同为指向字符类型数据的指针。*q 和p[0]同为字符型数据。选项B)、C)和D)都符合题目的要求;选项A)计算得出的是指针类型数据所占的内存字节数。 (35)A 【解析】循环开始前,指针t和s都指向字符串的起始位置,然后通过while循环判断t指向的位置是否为空,同时让t向右移动一位。while循环结束时,t自减1,此时t指向的位置是字符串的结束标志'\\0'处,故t-s的值是字符串的长度,并不包括结束标志。

(36)C 【解析】本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。

(37)D 【解析】通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的'\\0'是多余的,在C语言中,系统会自动在字符串的结尾处加上一个字符'\\0'作为串的结束标记。

(38)D 【解析】函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。 (39)C 【解析】带参数的宏定义命令行形式如下: #define 宏名(形参表) 替换文本 在编译的时候编译预处理程序用\替换文本\来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。

(40)A 【解析】本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。 选择题

在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的。 (1)算法的空间复杂度是指

A)算法程序的长度 B)算法程序中的指令条数 C)算法程序所占的存储空间 D)执行算法需要的内存空间

(2)在结构化程序设计中,模块划分的原则是

A)各模块应包括尽量多的功能 B)各模块的规模应尽量大 C)各模块之间的联系应尽量紧密

D)模块内具有高内聚度、模块间具有低耦合度 (3)下列叙述中,不属于测试的特征的是

A)测试的挑剔性 B)完全测试的不可能性 C)测试的可靠性 D)测试的经济性 (4)下面关于对象概念的描述中,错误的是

A)对象就是C语言中的结构体变量 B)对象代表着正在创建的系统中的一个实体 C)对象是一个状态和操作(或方法)的封装体 D)对象之间的信息传递是通过消息进行

43

(5)下列关于队列的叙述中正确的是

A)在队列中只能插入数据 B)在队列中只能删除数据 C)队列是先进先出的线性表 D)队列是先进后出的线性表

(6)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是 A)acbed B)decab A)n+1 B)n-1 (8)设有如下三个关系表 R

S B 1

C 3

T A B m 1 n

1

C 3 3

A m n

下列操作中正确的是

A) T=R∩S B) T=R∪S C) T=R×S D) T=R/S (9)下列叙述中,正确的是

A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 B)用E-R图只能表示实体集之间一对一的联系 C)用E-R图只能表示实体集之间一对多的联系 D)用E-R图表示的概念数据模型只能转换为关系数据模型 (10)下列有关数据库的描述,正确的是

A)数据处理是将信息转化为数据的过程 B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变

C)关系中的每一列称为元组,一个元组就是一个字段 D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 (11)C语言规定,在一个源程序中,main函数的位置

A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后

(12)以下叙述中错误的是

A)计算机不能直接执行用C语言编写的源程序 B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件

C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D)后缀为.obj和.exe的二进制文件都可以直接运行

(13)下列选项可以正确表示字符型常量的是

A)′\\r′ B)\ C)\ D)296

C)deabc D)cedba

D)n/2

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

C)2n

44

(14)以下叙述中正确的是

A)构成C程序的基本单位是函数 B)可以在一个函数中定义另一个函数 C)main()函数必须放在其他函数之前 D)C函数定义的格式是K&R格式

(15)设变量均已正确定义,若要通过scanf(\语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)

A) 10□X□20□Y<回车> D) 10X<回车> 20Y<回车>

(16)若有说明:int *p,m=5,n;,以下正确的程序段是

A)p=&n;scanf(\ B)p=&n;scanf(\ C)scanf(\ D)p=&n;*p=m;

(17)在执行下述程序时,若从键盘输入6和8,则结果为 main() { int a,b,s;

scanf(\ s=a if(a

printf(\ A)36 main() { int a,b,k;

scanf(\ k=a;

if(a

A)5 B)3 C)2 D)0

(19)在C语言中,函数返回值的类型最终取决于

A)函数定义时在函数首部所说明的函数类型 B)return语句中表达式值的类型 C)调用函数时主调函数所传递的实参类型 D)函数定义时形参的类型

(20)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的

B)64

C)48

D)以上都不对

(18)若执行下面的程序时,从键盘输入5和2,则输出结果是

B) 10□X20□Y<回车>C) 10□X<回车>20□Y<回车>

45

2014年3月份全国计算机等级考试二级C语言选择题大全

在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double←float。(16)D【解析】在ANSI标准中,long、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型
推荐度:
点击下载文档文档为doc格式
7uva280t55423gi8fm06
领取福利

微信扫码领取福利

微信扫码分享