1、二级 C 语言笔试-283 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.有下列二叉树,对此二叉树前序遍历的结果为( )(分数:2.00)A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI2.在位运算中,操作数每左移两位,其结果相当于( )(分数:2.00)A.操作数乘以 2B.操作数除以 2C.操作数除以 4D.操作数乘以 43.若 w、x、y、z、m 均为 int 型变量,则执行下列的语句后 m 的值是( )w=2,x=3,y=4,z=5;m=(wx)?w:x;m=(mz)?m:z;m=(my)?
2、m:y;(分数:2.00)A.2B.3C.5D.44.下列不属于软件工程的 3 个要素的是( )(分数:2.00)A.工具B.过程C.方法D.环境5.两个或两个以上模块之间联系的紧密程度称为( )(分数:2.00)A.耦合性B.内聚性C.复杂性D.数据传输特性6.下列说法不正确的是( )(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等D.调用函数时,实参与形参的类型必须一致7.对于下列字符串,说明表达式 strlen(s) 值的是( )char s10=(a,/n,a,b,/t,c
3、;(分数:2.00)A.10B.1C.6D.78.下列不是合法的 C 语言语句是( )(分数:2.00)A.a=5B.int i;i+;C.;D.;9.下列叙述错误的是( )(分数:2.00)A.函数名是属于用户标识符,需符合 C 语言对标识符的规定B.形参只能是变量C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名D.函数中定义的变量可以与其他函数中的变量同名10.下列程序段中,不能正确赋值的是( )(分数:2.00)A.char*p,ch;p=scanf(“%c“,B.char*p;p=(char*)malloc(1);scanf(“%C“,p);C.char*p;*p=
4、getchar();D.char*p,ch;p=*p=getchar();11.下列选项中不是字符常量的是( )(分数:2.00)A./VB./x2aC.aD.“/0“12.若有说明:int a3=0,0;则不正确的叙述是( )(分数:2.00)A.数组 a 的每个元素的初值都是 0B.数组 a 的第一维大小为 1C.数组 a 的行数为 1D.只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 013.将 E-R 图转换到关系模式时,实体与实体间的联系可以表示成( )(分数:2.00)A.属性B.关系C.键D.域14.在 ASCII 代码表中每一个大写字母比它相应的小写字母的 AS
5、CII 码( )(分数:2.00)A.小 32B.小 64C.大 32D.大 115.若有定义:int a=4,b=5;float x=3.4,y=2.1;,则下列表达式的值为( )(float) (a+b)/2+(int)%(int)y(分数:2.00)A.5.5B.55C.5.500000D.55.0000016.有下列程序:main()int i,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j);printf(“/n“);程序运行后的输出结果是( )(分数:2.00)A.1*1=1 1*2=2 1*3=32*1=2 2*2=
6、43*1=3B.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9C.1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=917.算法的空间复杂度是指( )(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间18.下列程序的输出结果是( )#includestdio.hmain() int a=3,b=2,c=1;if(ab) if(b0) c=0;else c+;printf(“%d/n“,c);(分数:2.00)A.0B.2C
7、.1D.319.下列程序的功能是给 r 输入数据后计算半径为 r 的圆面积 s。程序在编译时出错。main()/* Beginning */int r; float s;scanf(“%d“,S=*r*r;printf(“s=%f/n“,s);出错的原因是( )(分数:2.00)A.注释语句书写位置错误B.存放圆半径的变量 r 不应该定义为整型C.输出语句中格式描述符非法D.计算圆面积的赋值语句中使用了非法变量20.下列程序的输出结果是( )main()int a,b,d=25;a=d/10%9;b=aprintf(“%d,%d/n“,a,b);(分数:2.00)A.6,1B.2,1C.6,0
8、D.2,021.不能与 dowhile(exp)语句中的(exp)等价的表达式是( )(分数:2.00)A.(!exp=0)B.(exp0exp0)C.(exp=0)D.(exp!=0)22.下列描述中正确的是( )(分数:2.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据和相关文档的集合23.要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,下列正确的程序段是( )(分数:2.00)A.while(ch=getchar()!=N)printf(“%c“,ch);B.while(ch=getcha
9、r()!=N) printf(“%c“,ch);C.while(ch=getchar()=N) printf(“%c“,ch);D.while(ch=getchar() =N)printf(%c,ch);24.若以“a+”方式打开一个已存在的文件,则下列叙述正确的是( )(分数:2.00)A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作B.文件打开时,原有文件内容不被删除,只能进行读操作C.文件打开时,原有文件内容被删除,只能进行写操作D.以上三种说法都不正确25.在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用(尖括号) 括起时,寻找被
10、包含文件的方式是( )(分数:2.00)A.仅仅搜索当前目录B.仅仅搜索源程序所在目录C.在标准目录下查找指定的文件D.先在源程序所在目录搜索,如查找不到,再按系统指定的标准目录查找26.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是( )(分数:2.00)A.整型表达式B.整型常量C.整型常量或整型表达式D.任何类型的表达式27.关系数据库管理系统能实现的专门关系运算包括( )(分数:2.00)A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表28.数据库技术的根本目标是要解决数据的( )(分数:2.00)A.存储问题B.共享问题C.安全问题D.保护
11、问题29.下列说法不正确的是( )(分数:2.00)A.C 语言程序是以函数为基本单位的,整个程序由函数组成B.C 语言程序的一条语句可以写在不同的行上C.C 语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写D.C 语言程序的每个语句都以分号结束30.若已包括头文件string.h且已有定义 char s118,s2=“ABCDE“和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是( )(分数:2.00)A.strcpy(s1,s2)B.strcpy(s1,“ABCDE“);C.s1=“ABCDE“;D.for(i=0;i6;i+)s1i=s2i;31
12、.数据的存储结构是指( )(分数:1.00)A.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式C.数据在计算机中的顺序存储方式D.存储在计算机外存中的数据32.根据下列的定义,能打印出字母 P 的语句是( )struct stu char name10;int age;stmct stu s10=“John“,11,“Paul“,12,“Mary“,11,“adam“,12:(分数:1.00)A.printf(“%c“,s3.name);B.printf(“%c“,s3.name1);C.printf(“%c“,s2.name11);D.printf(“%c“,s1.name0);3
13、3.有下列程序:main()inti;for(i=1;i=40;i+)if(i+ +%5=0)if(+i%8=0) printf(“%d“,i);printf(“/n“);执行后的输出结果是( )(分数:1.00)A.5B.24C.32D.4034.下列程序的运行结果为( )#includestdio.hmain()struc tdateint year,month,day;)today;printf(“%d/n“,sizeof(struct date);(分数:1.00)A.8B.6C.10D.1235.下列写法正确的是( )(分数:1.00)A.main()int i=3,j;j=5B.m
14、ain()int i=3;C.main()D.main();36.下列程序的运行结果是( )#includestdio.hmain()int x=5,a=1,b=2,c=5,d=0;if(ab)if(b!=3)if(!c)x=1;elseif(d) x=l;else x=-1;printf(“%d“,x);(分数:1.00)A.-1B.0C.1D.不确定的值37.下列程序的执行结果是( )#includestdio.hmain() int a,b,c;a=b=2;c=(a+) -1;printf(“%d,%d“,a,c);c+=-a+(+b);printf(“%d,%d“,a,c);(分数:1
15、.00)A.3,14,1B.3,14,2C.2,04,1D.2,14,138.若有定义 float a15,*p=a;,且数组 a 的首地址为 300H,则 p+13 所指向的数组元素的地址为 ( )(分数:1.00)A.334HB.30DHC.352HD.31AH39.设计数据库的存储结构属于( )(分数:1.00)A.需求分析B.概念设计C.逻辑设计D.物理设计40.下列叙述中不正确的是( )(分数:1.00)A.在 C 语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.在 C 的函数中,最好使用全局变量C.外部变量可以在函数之间传递数据D.自动变量实质上是一个函数内部
16、的局部变量二、填空题(总题数:15,分数:30.00)41.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_42.队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作 1。(分数:2.00)填空项 1:_43.在一个容量为 32 的循环队列中,若头指针 front=3,尾指针 rear=2,则该循环队列中共有个元素。(分数:2.00)填空项 1:_44.一棵二叉树第 6 层(根结点为第一层) 的结点最多为_个。(分数:2.00)填空项 1:_45.度为 10 的线性表进行冒泡排序,最坏情况下需要比较的次数为 1。(分数:2.00
17、)填空项 1:_46.若 a=1,b=2,则表达式!(x=a)(y=b)if(xy)if(y0)z=0;else z+=1;printf(“%d/n“,z);(分数:2.00)填空项 1:_49.在循环中,continue 语句与 break 语句的区别是: 1 语句只是结束本次循环,然后进行循环的条件判定。(分数:2.00)填空项 1:_50.若有定义:int a44=1,2,3,4,0,4,6,8,10,1,3,5,7,则初始化后,a22得到的初值是 1。(分数:2.00)填空项 1:_51.下列语句的输出结果是_。char s20=“aaaa“,*sp=s;puts(strcat(sp,
18、“AAAAA“);(分数:2.00)填空项 1:_52.下列程序的运行结果是_。#define POWER(x)(x)*(x) main()int i=1;printf(“%d,%d“,POWER(i+),i);(分数:2.00)填空项 1:_53.下列程序的输出结果是_。main()int i,sum;for(i=1;i7;i+)sum+=i;printf(“%d“,sum);(分数:2.00)填空项 1:_54.设有下列的程序段:char str=“Hello“;char*ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为_。(分数:2.00)填空项 1:_55.下列程序的
19、输出结果是_。#includestdio.hfun()static int a=0;a+=3;printf(“%d“,a);main()int cc;for(cc=1 ;cc5;cc+)fun();printf(“/n“);(分数:2.00)填空项 1:_二级 C 语言笔试-283 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.有下列二叉树,对此二叉树前序遍历的结果为( )(分数:2.00)A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHI D.ABCDEFHGI解析:解析 对二叉树的前序遍历是指:先访问根结点,然后访问左子
20、树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。2.在位运算中,操作数每左移两位,其结果相当于( )(分数:2.00)A.操作数乘以 2B.操作数除以 2C.操作数除以 4D.操作数乘以 4 解析:解析 本题主要考查左移、右移对数据值的影响,左移 n 位相当于乘以 2 的 n 次幂,右移 n 位相当于除以 2 的 n 次幂。3.若 w、x、y、z、m 均为 int 型变量,则执行下列的语句后 m 的值是( )w=2,x=3,y=4,z=5;m=(wx)?w:x;m=(mz)?m:z;m=(my)?m:y;(分数:2.00)A.2 B.3C.5D.4解析:解析
21、 条件表达式“a?b:c”的含义是:当 a 为真时,其值等于表达式 b 的值;当 a 为假时,其值等于表达式 c 的值。表达式运算过程:第 1 个表达式:w=2x=3 为真,所以返回 w 的值,即 m=w=2:第 2 个表达式:m=2z=5为真,所以返回 m 的值,即 m=2;第 3 个表达式:w=2y=4 为真,所以返回 m 的值,即 m=2。4.下列不属于软件工程的 3 个要素的是( )(分数:2.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3 个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成:过程支持软件开发的各个环节
22、的控制、管理。5.两个或两个以上模块之间联系的紧密程度称为( )(分数:2.00)A.耦合性 B.内聚性C.复杂性D.数据传输特性解析:解析 耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。6.下列说法不正确的是( )(分数:2.00)A.调用函数时,实参可以是表达式B.调用函数时,实参与形参可以共用内存单元 C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等D.调用函数时,实参与形参的类型必须一致解析:解析 本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给
23、形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。7.对于下列字符串,说明表达式 strlen(s) 值的是( )char s10=(a,/n,a,b,/t,c;(分数:2.00)A.10B.1C.6 D.7解析:解析 strlen(s)返回 s 字符串中字符的个数,若 s 是个数组,则返回数组元素的个数。8.下列不是合法的 C 语言语句是( )(分数:2.00)A.a=5 B.int i;i+;C.;D.;解析:解析 选项 A 是一个表达式,它后面没有分号结尾(C 语言中规定语句必须以分号结束) ,所以它不是语句;选项 B 用一
24、个花括号把几条语句括起来了,这是一个复合语句;选项 C 中只有一个分号,是一个空语句:选项 D 是个复合语句,也是一个空语句。9.下列叙述错误的是( )(分数:2.00)A.函数名是属于用户标识符,需符合 C 语言对标识符的规定B.形参只能是变量C.为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名 D.函数中定义的变量可以与其他函数中的变量同名解析:解析 本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域连函数体内,因而在不同函数体内定义的变量可以相同,不影响各个变量的使用。10.下列程序段中,不能正确赋值的是( )(分数:2.00)A.char*p,ch
25、;p=scanf(“%c“,B.char*p;p=(char*)malloc(1);scanf(“%C“,p);C.char*p;*p=getchar(); D.char*p,ch;p=*p=getchar();解析:解析 地址变量 p 指向的存储空间一定要明确,否则可能影响程序的正确性。11.下列选项中不是字符常量的是( )(分数:2.00)A./VB./x2aC.aD.“/0“ 解析:解析 C 语言规定,一个字符常量代表 ASCII 码字符集里的一个字符,在程序中用单引号括起来,以便区分。“/v”表示的是竖向跳格;“/x2a”表示的是两位+六进制数;“a”表示的是字符 a 对应的 ASCI
26、I码值。12.若有说明:int a3=0,0;则不正确的叙述是( )(分数:2.00)A.数组 a 的每个元素的初值都是 0B.数组 a 的第一维大小为 1C.数组 a 的行数为 1D.只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 0 解析:解析 本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。二维数组第一维的大小由下列规则确定:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加 1。13.
27、将 E-R 图转换到关系模式时,实体与实体间的联系可以表示成( )(分数:2.00)A.属性B.关系 C.键D.域解析:解析 将 E-R 图转换成指定 RDBMS 中的关系模式是数据库逻辑设计的主要工作。从 E-R 图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。14.在 ASCII 代码表中每一个大写字母比它相应的小写字母的 ASCII 码( )(分数:2.00)A.小 32 B.小 64C.大 32D.大 1解析:解析 本题考查大小写字母的 ASCII 码值的关系。大写字母比它相应的小写字母的 ASCII 码小32。15.若有定义:int a=4,b=5;float x=3.4
28、,y=2.1;,则下列表达式的值为( )(float) (a+b)/2+(int)%(int)y(分数:2.00)A.5.5B.55C.5.500000 D.55.00000解析:解析 在计算(float)(a+b) /2 时,由于通过强制类型转换将(a+b)转换成了 float 型,所以应先将 2 转换成 float 型,再进行计算,得 4.500000。在计算(int)x%(int)y 时,先将 x 和 y 通过强制类型转换成血型,再进行求余运算,得 1。又因为 4.500000 是 float 型,所以将 1 和它相加时,先将 1 换成 float 型,再计算,得到 5.500000。知
29、识扩展 类型转换的一般规则是:低级类型服从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:charintunsignedlongfloatdouble。16.有下列程序:main()int i,j;for(i=1;i4;i+)for(j=i;j4;j+)printf(“%d*%d=%d“,i,j,i*j);printf(“/n“);程序运行后的输出结果是( )(分数:2.00)A.1*1=1 1*2=2 1*3=32*1=2 2*2=43*1=3B.1*1=1 1*2=2 1*3=32*2=4 2*3=63*3=9 C.1*1=11*2=2 2*2=41*3=3 2*3=6 3
30、*3=9D.1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=9解析:解析 外层 for 循环的自变量 i 从 1 开始,每次循环后增 1,直到 i 等于 3 结束。对于外层循环自变量 i 的每一个值,内层循环的自变量 j 每次从 i 开始,每次循环后增 1,直到 j 等于 3 结束。所以在每次外循环开始后,内层循环在一行先打印 i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。17.算法的空间复杂度是指( )(分数:2.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间 解析:解析 一个算法的空间复杂
31、度,一般是指执行这个算法所需的存储空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间及算法执行过程中所需要的额外空间。18.下列程序的输出结果是( )#includestdio.hmain() int a=3,b=2,c=1;if(ab) if(b0) c=0;else c+;printf(“%d/n“,c);(分数:2.00)A.0B.2C.1 D.3解析:解析 本题考查 if 语句。第一个 if 语句,先判断条件,发现 ab 不成立,不再执行下列的语句,直接执行最后的 printf 输出语句,然后结束程序,整个过程 c 的值没有发生变化。19.下列程序的
32、功能是给 r 输入数据后计算半径为 r 的圆面积 s。程序在编译时出错。main()/* Beginning */int r; float s;scanf(“%d“,S=*r*r;printf(“s=%f/n“,s);出错的原因是( )(分数:2.00)A.注释语句书写位置错误B.存放圆半径的变量 r 不应该定义为整型C.输出语句中格式描述符非法D.计算圆面积的赋值语句中使用了非法变量 解析:解析 在 C 语言程序中,可以用一个符号名来代表一个常量,称为符号常量。这个符号名必须在程序中进行特别的“指定”,并符合标识符的命令规则。在本题中圆周率 是一个符号常量,但在程序中并没有指定其值,所以编译
33、器找不到其值就会报错。所以选项 D 正确。20.下列程序的输出结果是( )main()int a,b,d=25;a=d/10%9;b=aprintf(“%d,%d/n“,a,b);(分数:2.00)A.6,1B.2,1 C.6,0D.2,0解析:解析 算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2;当逻辑运算符“ B.while(ch=getchar()!=N) printf(“%c“,ch);C.while(ch=getchar()=N) printf(“%c“,ch);D.while(ch=getchar(
34、) =N)printf(%c,ch);解析:解析 while 循环的执行过程如下:计算 while 后面圆括号中表达式的值。当值为非 0 时,执行步骤:当值为 0 时,执行步骤。执行循环体一次。转去执行步骤。退出循环。在选项 A) 中,表达式 (ch=getchar()!=N表示输入的字符不等于 N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于 N,则退出循环。所以选项 A) 为正确答案。24.若以“a+”方式打开一个已存在的文件,则下列叙述正确的是( )(分数:2.00)A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进
35、行添加或读操作 B.文件打开时,原有文件内容不被删除,只能进行读操作C.文件打开时,原有文件内容被删除,只能进行写操作D.以上三种说法都不正确解析:解析 本题考查文件使用方式标识符,以“a+”方式打开一个已存在的文件,则表示保留文件中原有的数据,文件的位置指针在文件末尾,此时,可以进行追加或读操作。25.在“文件包含”预处理语句的使用形式中,当#include 后面的文件名用(尖括号) 括起时,寻找被包含文件的方式是( )(分数:2.00)A.仅仅搜索当前目录B.仅仅搜索源程序所在目录C.在标准目录下查找指定的文件 D.先在源程序所在目录搜索,如查找不到,再按系统指定的标准目录查找解析:解析
36、本题考查文件包含的知识点:格式 1:#include 文件名,预处理程序在标准目录下查找指定的文件;格式 2:#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录中寻找指定的文件,如查找不到,再按系统指定的标准目录查找。26.在 C 语言中,引用数组元素时,其数组下标的数据类型允许是( )(分数:2.00)A.整型表达式B.整型常量C.整型常量或整型表达式 D.任何类型的表达式解析:解析 在 C 语言中,引用数组元素时,其数组下标的数据类型可以是整型常量,也可以是整型表达式。27.关系数据库管理系统能实现的专门关系运算包括( )(分数:2.00)A.排序、索引、统计B.
37、选择、投影、连接 C.关联、更新、排序D.显示、打印、制表解析:解析 关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。28.数据库技术的根本目标是要解决数据的( )(分数:2.00)A.存储问题B.共享问题 C.安全问题D.保护问题解析:解析 在数据库系统中,需要对数据进行集中、统一的管理,以达到被多个应用程序共享的目标。29.下列说法不正确的是( )(分数:2.00)A.C 语言程序是以函数为基本单位的,整个程序由函数组成B.C 语言程序的一条语句可以写在不同的行上C.C 语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写 D.C 语言程序的每个语句都以分
38、号结束解析:解析 本题涉及 C 语言的 3 个基本知识点:C 语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数:C 语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不同的行上,或者一行也可以写多条语句;注释行虽然对程序的运行不起作用,但是它可以方便程序员阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。30.若已包括头文件string.h且已有定义 char s118,s2=“ABCDE“和 int i,现要将字符串 “ABCDE“赋给 s1,下列语句错误的是( )(分数:2.00)A.strcpy(s1,s2)B
39、.strcpy(s1,“ABCDE“);C.s1=“ABCDE“; D.for(i=0;i6;i+)s1i=s2i;解析:解析 数组名 s1 是代表 s1 数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量, 因此 sl=“ABCDE“的方法是错误的。31.数据的存储结构是指( )(分数:1.00)A.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式 C.数据在计算机中的顺序存储方式D.存储在计算机外存中的数据解析:解析 数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。32.根据下列的定义,
40、能打印出字母 P 的语句是( )struct stu char name10;int age;stmct stu s10=“John“,11,“Paul“,12,“Mary“,11,“adam“,12:(分数:1.00)A.printf(“%c“,s3.name);B.printf(“%c“,s3.name1);C.printf(“%c“,s2.name11);D.printf(“%c“,s1.name0); 解析:解析 本题主要考查按结构数组元素方式引用结构成员。字母 P 为“Paul”的第一个字母,是结构体 s1的 name 成员的第二个元素的值,即 s1.name0的值。33.有下列程序
41、:main()inti;for(i=1;i=40;i+)if(i+ +%5=0)if(+i%8=0) printf(“%d“,i);printf(“/n“);执行后的输出结果是( )(分数:1.00)A.5B.24C.32 D.40解析:解析 在 for 循环体中,首先判断自变量 i 能否被 5 整除,然后再自加两次,最后判断 i 能否被8 整除。当 for 循环执行到第 30 次时,i 的值为 30 能被 5 整除,然后 i 经过两次自加 1 运算,值变为32,能被 8 整除,故执行“printf(“%d“,i);语句,即输出 32。本题的答案为选项 C)34.下列程序的运行结果为( )#i
42、ncludestdio.hmain()struc tdateint year,month,day;)today;printf(“%d/n“,sizeof(struct date);(分数:1.00)A.8B.6 C.10D.12解析:解析 解答本题需要注意两个知识点:结构体变量的长度是其内部成员长度的总和,本题中,struct date 中包含 year、month、day 这 3 个整型变量,一个整型变量占 2 个字节;sizeof 是求所占字节数的运算符。35.下列写法正确的是( )(分数:1.00)A.main()int i=3,j;j=5B.main()int i=3;C.main()
43、D.main(); 解析:解析 本题考查语句的基本构成。选项 A 中 i=5 后面少了一个分号;选项 B 中少了“”;选项 C不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号;选项 D 正确,是一个空语句。36.下列程序的运行结果是( )#includestdio.hmain()int x=5,a=1,b=2,c=5,d=0;if(ab)if(b!=3)if(!c)x=1;elseif(d) x=l;else x=-1;printf(“%d“,x);(分数:1.00)A.-1 B.0C.1D.不确定的值解析:解析 本题考查 if else 语句。第 1 个 if 语句,先判断
44、条件,发现 ab 条件成立,执行下列的语句;第 2 个汀语句,先判断条件,发现 b!=3 条件成立,执行下列的语句;第 3 个汀语句,先判断条件,c=5,则!c 条件不成立,执行与其配对的 else 语句:第 4 个 if 语句,先判断条件,d=0,条件不成立,则 x=-1,结束循环。37.下列程序的执行结果是( )#includestdio.hmain() int a,b,c;a=b=2;c=(a+) -1;printf(“%d,%d“,a,c);c+=-a+(+b);printf(“%d,%d“,a,c);(分数:1.00)A.3,14,1 B.3,14,2C.2,04,1D.2,14,1
45、解析:解析 本题主要考查自加运算符(+、-)的使用。前缀变量“+i、-i”,在使用 i 之前,先使 i 的值加 1 或者减 1,再使用此时的表达式的值参与运算:后缀变量“i+、i-”,先使用此时的表达式的值参与运算,在使用 i 之后,再使 i 的值加 1 或者减 1。题中计算表达式 c=(a+)-1 时先使用 a 的值进行计算,结果为 c=2-1=1,然后将 a 的值加 1,即执行完此语句后 a 的值是 3;表达式 c+=-a+(+b)等价于 c=c+(-a+)+(+b),c=1+(-3)+3=1,此时 a=4,b=3。38.若有定义 float a15,*p=a;,且数组 a 的首地址为 3
46、00H,则 p+13 所指向的数组元素的地址为 ( )(分数:1.00)A.334HB.30DHC.352H D.31AH解析:解析 解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是+进制的数“1”,而是指“1”个存储单元长度,而 1 个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是 int 型,移动 1 个存储单元的长度就是位移 2 个字节,如果基本类型是 float 型,移动 1 个存储单元的长度就是位移 4 个字节。所以 p+13 所指向的数组元素的地址为:300H+(13*4) H=352H。39.设计数据库的存储结构属于( )(分数:1.00)A.需求
47、分析B.概念设计C.逻辑设计D.物理设计 解析:解析 物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题,包括选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。40.下列叙述中不正确的是( )(分数:1.00)A.在 C 语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.在 C 的函数中,最好使用全局变量 C.外部变量可以在函数之间传递数据D.自动变量实质上是一个函数内部的局部变量解析:解析 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放:全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在内存不确定的情况下,最好使用全局变量。二、填空题(总题数:15,分数:30.00)41.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_ (正确答案:逻辑)解析:解析 数据的逻辑结构主要是反映数据之间的逻辑关系,而存储结构是用来反映数据的逻辑结构在计算机存储空间中的存放形式。循环队列主要是强调数