1、二级 C 语言笔试 306 及答案解析(总分:70.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.下列程序输出的结果是( )。 main() int a; a=-4+4*5-6;printf(“%d”,a); a=4+4%5-6;printf(“%d”,a); a=-3+4%6/5;printf(“%d”,a); a=(7+6)%5/2;printf(“%d”,a); (分数:1.00)A.10 2-3 1B.10-2 2 1C.11-22 1D.10 2 2 12.下列程序执行输出的结果是( )。 #include stdioh f(int a) int
2、b=0; stoic c=3; a=c+;b+; return(a); main() int a=2,i,k; for(i=0;i2;i+) k=f(a+); printf(“%d/n“,k); (分数:1.00)A.3B.4C.5D.63.下列函数值的类型是( )。 fun(double x) float y; y=3*x-4; return y; (分数:1.00)A.intB.不确定C.voidD.float4.下列程序的运行结果是( )。 int y=5, x=14; y=(x=3* y,x+1),x-1); printf(“x=%d,y=%d“,x,y);(分数:1.00)A.x=2
3、7,y=27B.x=12,y=13C.x=15,y=14D.x=y=275.有下列二叉树,对此二叉树前序遍历的结果为( )。 (分数:1.00)A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH6.下列不属于软件工程的 3 个要素的是( )。(分数:1.00)A.工具B.过程C.方法D.环境7.设在 C 语言中,float 类型数据占 4 个字节,则 double 类型数据占( )个字节。(分数:1.00)A.1B.2C.8D.48.设定义下列结构体,结构体变量 p 的出生年份赋值正确的语句是( )。 stmct st int x; int y; int z; s
4、truct worker char name20; char sex; struct st birth; p;(分数:1.00)A.x=1987B.birtx=1987;C.birtx=1987;D.x=1987;9.有下列程序段: int k=0,a=1,b=2,c=3; k=ab?b:a;k=kc?c=k; 执行该程序段后,k 的值是( )。(分数:1.00)A.3B.2C.1D.010.设 int x=1,y=1;表达式(!x|-y)的值是( )。(分数:1.00)A.0B.1C.2D.-111.下列程序的运行结果为( )。 #define MAX(x,y)(x)(y)?(x):(y)
5、main() int a=2,b=3,c=1,d=3,t; printf(“%d/n“,(MAX(a+b,c+d)*100); (分数:1.00)A.500B.5C.4D.40012.下列程序的输出结果是( )。 main() char a7=“a0/0a0/0“;int i,j; i=sizeof(a); j=strlen(a); printf(“%d %d/n“,i,j); (分数:1.00)A.2 2B.7 6C.7 2D.6 213.使用白盒测试法时,确定测试数据应该根据( )和指定的覆盖标准。(分数:1.00)A.程序的内部逻辑B.程序的复杂结构C.使用说明书D.程序的功能14.若有
6、定义 int a10,*p=a,则 p+6 表示( )。(分数:1.00)A.数组元素 a5的值B.数组元素 a5的地址C.数组元素 a6的地址D.数组元素 a0的值加上 515.分析下列程序: #includestdioh main() int *p1,*p2,*p; int a=6,b=9; p1=&a;p2=&b; if(ab)p=p1;p1=p2;p2=p; printf(“%d,%d“,*p1,*p2); printf(“%d,%d“,a,b); 程序的输出结果为( )。(分数:1.00)A.9,66,9B.6,9 9,6C.6,9 6,9D.9,69,616.表达式0x11 的值是
7、( )。(分数:1.00)A.OxFFEEB.0x71C.0x0071D.0xFFE117.为了避免在嵌套的条件语句 if else 中产生二义性,C 语言规定,else 子句总是与( )配对。(分数:1.00)A.缩排位置相同 ifB.其前面最近的 ifC.其后面最近的 ifD.同一行上的 if18.下列说法正确的是( )。(分数:1.00)A.在 C 程序中,main()函数必须位于程序的最前面B.在 C 程序中,一条语句只能写一行而不能写多行C.C 程序是以行为基本单位的D.C 语言本身没有输入输出语句19.有下列程序: main() int y=20; doy-;while(-y);
8、printf(“%d/n“,y-); 当执行程序时,输出的结果是( )。(分数:1.00)A.-1B.1C.4D.020.对建立良好的程序设计风格,下列描述正确的是( )。(分数:1.00)A.程序应该简单、清晰、可读性好B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无21.下列的程序用来输出两个字符串前 7 个字符中对应相等的字符及其位置号,程序空白处应该填写的是( )。#includestdioh main() char s1=“chinese“,s2=“japnese“; int i; for(i=0;s1i!=/0 &s2i!=/0;i+) if(s1i=
9、s2i&i7) _, (分数:1.00)A.putchar(s2);putchar(B.puts(s1(,C.printf(“%c%d/n“,s2,D.printf(“%c“,s1);printf(“%d/n“,22.函数 fseek()的正确调用形式是( )。(分数:1.00)A.fseek(位移量,起始点,文件类型指针);B.fseek(文件类型指针,位移量,起始点);C.fseek(文件类型指针,起始点,位移量);D.fseek(起始点,位移量,文件类型指针);23.对于下列定义,不正确的叙述是( )。 union data int a; char b; double c; x=y;(分
10、数:1.00)A.变量 x 所占内存的长度等于成员 c 的长度B.变量 x 的地址和它的各成员地址都是相同的C.可以在定义时对 x 初始化D.不能对变量 x 赋值,故 x=y 非法24.下列说法正确的是( )。(分数:1.00)A.在 C 语言中,可以使用动态内存分配技术,定义元素个数可变的数组B.在 C 语言中,数组元素的个数可以不确定,允许随机变动C.在 C 语言中,数组元素的数据类型可以不一致D.在 C 语言中,定义了一个数组后,就确定了它所容纳的元素的个数25.在嵌套使用 if 语句时,C 语言规定 else 总是( )。(分数:1.00)A.和之前与其具有相同缩进位置的 if 配对B
11、.和之前与其最近的 if 配对C.和之前与其最近的且不带 else 的 if 配对D.和之前的第一个 if 配对26.下列选项中不属于软件生命周期开发阶段任务的是( )。(分数:1.00)A.软件测试B.概要设计C.软件维护D.详细设计27.有下列程序段: struct st int x;int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 下列选项中表达式的值为 11 的是( )。(分数:1.00)A.*pt-yB.pt-xC.+pt-xD.(pt+)-X28.下列程序的运行结果是( )。 #includestdioh main
12、() int a=0,b=4,c=0,d=10,x; if(a) d=d-10; else if(!b) if(!c) x=15; else x=25; printf(“%d/n“,d); (分数:1.00)A.5B.3C.20D.1029.对关系 S 和只进行集合运算,结果中既包含 S 中的所有元组也包含只中的所有元组,这样的集合运算称为( )。(分数:1.00)A.并运算B.交运算C.差运算D.积运算30.按照“先进后出”原则组织数据的数据结构是( )。(分数:1.00)A.队列B.栈C.双向链表D.二叉树31.若已包括头文件stdio.h和string.h,运行下列程序段时输出结果是(
13、)。 int i=0; char s110=“ABCD“,s210=“EFG“; strcat(s1,s2); while(s2i+!=/0) s2i=s1i; puts(s2);(分数:1.00)A.ABCB.ABCDEFC.EBCDEFGD.CBD32.算法的时间复杂度是指( )。(分数:1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数33.下列描述中,不是线性表顺序存储结构特征的是( )。(分数:1.00)A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系34.表达式8-2的
14、值是( )。(分数:1.00)A.整数 6B.字符 6C.表达式不合法D.字符 835.下列程序的运行结果是( )。 #includestdioh main() static chara=“Languagef“,b=“programe“; char *p1,*p2;int k; p1=a;p2=b; for(k=0;k=8;k+) if(*(p1+k)=*(p2+k)printf(“%c“,*(p1+k); (分数:1.00)A.gaeB.angC.programD.有语法错36.有下列程序: main() int k=5,n=0; do switch(k) case 1: case 3:n+
15、=1;k-;break; default:n=0;k-; case2: case 4;n+=2;k-;break; printf(“%d“,n); while(k0&n5); 程序运行后的输出结果是( )。(分数:1.00)A.235B.0235C.02356D.235637.数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。(分数:1.00)A.DB 包括 DBS 和 DBMSB.DBMS 包括 DB 和 DBSC.DBS 包括 DB 和 DBMSD.没有任何关系38.若有下列定义(设 int 类型变量占 2 个字节): int i=8,j=9; 则下列语句:
16、printf(“i=%d,j=%d/n”,i,j); 输出的结果是( )。(分数:1.00)A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,939.设有下列的程序段: char str=“HelloWorld“; char*ptr; ptr=str; 执行上面的程序段后,*(ptr+10)的值为( )。(分数:1.00)A./0B.0C.不确定的值D.0的地址40.若有下列定义和语句: int u=011, v=Ox11,w=11; printf(“%o,%x,%d/n”,u,v,w); 则输出结果是( )。(分数:1.00)A.9,17,11B.9,11,11C.11,
17、11,11D.11,17,11二、B填空题/B(总题数:15,分数:30.00)41.在算法的 4 个特性中,算法必须能在执行有限个步骤之后终止指的是算法的 1 特性。(分数:2.00)填空项 1:_42.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 1。(分数:2.00)填空项 1:_43.栈中允许进行插入和删除的一端叫做 1。(分数:2.00)填空项 1:_44.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的 1。(分数:2.00)填空项 1:_45.软件工程研究的内容主要包括: 1 技术和软件工程管理。
18、(分数:2.00)填空项 1:_46.表达式 pow(2.8,sqrt(float(x)值的数据类型为 1 型。(分数:2.00)填空项 1:_47.下列表达式用于判断 y 是否为闰年。闰年的判断条件是:年号能被 4 整除但不能被 100 整除或年号能被 400 整除,请填空 1。(分数:2.00)填空项 1:_48.下列程序的运行结果是_。 #includestdioh main() int a=10,b=3; printf(“%d,“,a%b); printf(“%d,“,(a-h,a+b); printf(“%d/n“,a-b?a-b:a+b); (分数:2.00)填空项 1:_49.要
19、求使下列程序输出 5 个整数,请填空。 for(i=0;i=_;printf(“%d/n“,i+=2);(分数:2.00)填空项 1:_50.下列的 for 语句的循环次数为_。 for(x=1,y=0;(y!=19)&(x7);x+);(分数:2.00)填空项 1:_51.函数调用语句:“fsets(buf,n,fp);”从 fp 指向的文件中读入 n 个字符放到 buf 字符数组中,函数返回值为 1。(分数:2.00)填空项 1:_52.若有下列定义:int a=1,2,3,4,5,6,7,8,9,10,*p=a;,则值为 3 的表达式为: 1。(分数:2.00)填空项 1:_53.若有说
20、明 char s1=“That girl“,s2=“is beautiful“;则使用函数 strcmp(s1,s2)后,结果是 1。(分数:2.00)填空项 1:_54.在宏定义#define PI 3.14159 中,用宏名 PI 代替一个 1。(分数:2.00)填空项 1:_55.下列程序的输出结果是_。 #includestdioh sb(int s,int b) static int n=3; b=sn; n-; return(b); main() int s=1,5,6,8; int i,x=0; for(i=0;i4;i+) x=sb(s,x); printf(“%d“,x);
21、printf(“/n“); (分数:2.00)填空项 1:_二级 C 语言笔试 306 答案解析(总分:70.00,做题时间:90 分钟)一、B选择题/B(总题数:40,分数:40.00)1.下列程序输出的结果是( )。 main() int a; a=-4+4*5-6;printf(“%d”,a); a=4+4%5-6;printf(“%d”,a); a=-3+4%6/5;printf(“%d”,a); a=(7+6)%5/2;printf(“%d”,a); (分数:1.00)A.10 2-3 1 B.10-2 2 1C.11-22 1D.10 2 2 1解析:解析 本题考查%和/运算符的使
22、用。如果两个数不能整除,只取结果的整数部分,小数部分全部舍去。运算符“%”要求两个运算对象都为整型,其结果是整数除法的余数。表达式:a=-4+4*5-64+20-6=10:表达式:a=4+4%5-6=4+4-6=2;表达式:a=-3+4%6/5=-3+0=-3:表达式:a=(7+6)%5/2=13%5/2=1。2.下列程序执行输出的结果是( )。 #include stdioh f(int a) int b=0; stoic c=3; a=c+;b+; return(a); main() int a=2,i,k; for(i=0;i2;i+) k=f(a+); printf(“%d/n“,k)
23、; (分数:1.00)A.3B.4 C.5D.6解析:解析 本题考查函数调用时的参数传递。在函数调用时,static 变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。 在主函数中,第一次循环,i=0,调用 k=f(a+)=f(2),调用完之后才将 a 加 1,a 变为 3,在 f(2)中,先将 c=3 赋值给 a 返回,然后将 c 加 1,得到 k=a=3,c=4。 第二次循环,i=1,调用 k=f(a+)=f(3),调用完之后才将 a 加 1,a 变为 4,在 f(3)中,先将 c=4 赋值给 a 返回,然后将 c 加 1,得到 k=a=4, c=5。3.下列函数值的类型是
24、( )。 fun(double x) float y; y=3*x-4; return y; (分数:1.00)A.int B.不确定C.voidD.float解析:解析 本题考查默认函数的函数值的类型。在函数调用时,尽管 y 的类型是 float,x 的类型是double,但是因为函数定义时省去类型说明,系统默认函数值的类型为 int 型,所以计算后的 y 的类型是int 型。4.下列程序的运行结果是( )。 int y=5, x=14; y=(x=3* y,x+1),x-1); printf(“x=%d,y=%d“,x,y);(分数:1.00)A.x=27,y=27B.x=12,y=13C
25、.x=15,y=14 D.x=y=27解析:解析 逗号表达式的求解步骤是先求解表达式 1,然后依次求解表达式 2,直到表达式 N 的值。整个逗号表达式的值就是最后一个表达式 N 的值。 表达式(x=3*y,x+1)中,第一个表达式 x=3*y=3*5=15:第二个表达式 x+1=16,但没有给 x 或 y 赋值,所以 x 还是等于 15;第 3 个表达式 x-1=15-1=14,所以 y的值为 14。5.有下列二叉树,对此二叉树前序遍历的结果为( )。 (分数:1.00)A.ACBEDGFHB.ABDGCEHF C.HGFEDCBAD.ABCDEFGH解析:解析 对二叉树的前序遍历是指:先访问
26、根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。6.下列不属于软件工程的 3 个要素的是( )。(分数:1.00)A.工具B.过程C.方法D.环境 解析:解析 软件工程包括 3 个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。7.设在 C 语言中,float 类型数据占 4 个字节,则 double 类型数据占( )个字节。(分数:1.00)A.1B.2C.8 D.4解析:解析 在 C 语言中各种数据类型在内存中所占的字节数和机器的指令周期有关,若
27、int 类型占 2个字节,则 float 类型数据占 4 个字节,double 类型数据占 8 个字节。8.设定义下列结构体,结构体变量 p 的出生年份赋值正确的语句是( )。 stmct st int x; int y; int z; struct worker char name20; char sex; struct st birth; p;(分数:1.00)A.x=1987B.birtx=1987;C.birtx=1987; D.x=1987;解析:解析 本题主要考查怎样为嵌套定义的结构中的成员赋值:由于 worker 中的 birth 是一个 st 型的结构,在给 birth 赋值时
28、,不能将 birth 作为一个整体,要用“”运算再深入一层访问到最基本的成员 x、y/z。9.有下列程序段: int k=0,a=1,b=2,c=3; k=ab?b:a;k=kc?c=k; 执行该程序段后,k 的值是( )。(分数:1.00)A.3B.2 C.1D.0解析:解析 因为 ab 成立,所以条件表达式 ab?b:a 的值等于 b 的值等于 2,因此变量 k 的值等于2。又因为 k=2c=3 不成立,所以条件表达式 kc?c:k 的值等于 k 的值等于 2。把条件表达式kc?c:k 的值赋给变量 k,因而变量 k 的值等于 2。因此,选项 B) 为正确答案。10.设 int x=1,y
29、=1;表达式(!x|-y)的值是( )。(分数:1.00)A.0 B.1C.2D.-1解析:解析 当逻辑或运算符两边的运算对象至少有一个为 1 时,整个逻辑表达式的值是 1;如果两边的运算对象都为 0,则整个逻辑表达式的值为 0。题中!x=0,-y=0,所以整个表达式的值是 0。11.下列程序的运行结果为( )。 #define MAX(x,y)(x)(y)?(x):(y) main() int a=2,b=3,c=1,d=3,t; printf(“%d/n“,(MAX(a+b,c+d)*100); (分数:1.00)A.500 B.5C.4D.400解析:解析 本题考查带参数的宏的定义及相关
30、运算:(x)(y)?(x):(y)是 xy 时输出 x,否则输出y,调用(MAX(a+b,c+d)*100 时, (a+b=5)(c+d=4),所以输出 a+b=5,所以 x=5*100。12.下列程序的输出结果是( )。 main() char a7=“a0/0a0/0“;int i,j; i=sizeof(a); j=strlen(a); printf(“%d %d/n“,i,j); (分数:1.00)A.2 2B.7 6C.7 2 D.6 2解析:解析 函数 slzeof(a)的功能是求出字符串 a 中的字符占用存储空间的大小,由于字符数组 a 有长度为 7,所以 i=7;函数 strl
31、en(a)的功能是:求出字符串 a 的长度。而每个字符串都以/0为字符串的结束标记,所以 j 的值等于 2。13.使用白盒测试法时,确定测试数据应该根据( )和指定的覆盖标准。(分数:1.00)A.程序的内部逻辑 B.程序的复杂结构C.使用说明书D.程序的功能解析:解析 白盒测试是把测试对象看作是一个打开的盒子,允许测试人员利用程序内部的逻辑结构及相关信息来设计或选择测试用例,对程序所有的逻辑路径进行测试。所以,白盒测试的对象基本上是源程序,以程序的内部逻辑和指定的覆盖标准测试数据。14.若有定义 int a10,*p=a,则 p+6 表示( )。(分数:1.00)A.数组元素 a5的值B.数
32、组元素 a5的地址C.数组元素 a6的地址 D.数组元素 a0的值加上 5解析:解析 指针中存放的是变量的地址,指针也可以进行加减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中 p+6 指的是将指针向后移动了 6 个存储单元,指向 a6,存放的是 a6的地址。15.分析下列程序: #includestdioh main() int *p1,*p2,*p; int a=6,b=9; p1=&a;p2=&b; if(ab)p=p1;p1=p2;p2=p; printf(“%d,%d“,*p1,*p2); printf(“%d,%d“,a,b); 程序的输出结果为( )。(分数
33、:1.00)A.9,66,9 B.6,9 9,6C.6,9 6,9D.9,69,6解析:解析 通过 p1=&a,p2=&b 分别将 a、b 的地址赋给指针 p1、p2,接着执行 if 语句,发现 ab 成立,则通过交换 p1、p2 的值,即交换 a、b 所在存储单元的地址,但是 a、b 的值并没有发生变化。16.表达式0x11 的值是( )。(分数:1.00)A.OxFFEE B.0x71C.0x0071D.0xFFE1解析:解析 本题主要考查按位求反运算和整型常量的表示:十六进制整型常量的形式是以数字 0x或 OX 开头的十六进制字符串;按位求反运算的规则是:将二进制表示的运算对象按位取反,
34、即将 1 变0,将 0 变 I。 “Oxll”即 0000 0000 0001 0001,进行按位求反运算“Ox11”后为 1111 1111 1110 1110,即 0xFFEE。17.为了避免在嵌套的条件语句 if else 中产生二义性,C 语言规定,else 子句总是与( )配对。(分数:1.00)A.缩排位置相同 ifB.其前面最近的 if C.其后面最近的 ifD.同一行上的 if解析:解析 本题考查 if else 语句。C 语言规定,else 总是与它前面的最近的 if 配对。18.下列说法正确的是( )。(分数:1.00)A.在 C 程序中,main()函数必须位于程序的最前
35、面B.在 C 程序中,一条语句只能写一行而不能写多行C.C 程序是以行为基本单位的D.C 语言本身没有输入输出语句 解析:解析 本题涉及 C 语言最基本的 4 个知识点:C 语言程序是由函数构成的,C 程序的基本单位是函数;每个 C 程序有且只有一个主函数 main(),且程序必须从 main()函数开始执行,但是 main()函数可以放在程序中的任意位置;C 语言的书写格式是自由的,一行可以写多条语句,一条语句也可以写在不同的行上:C 语言本身不提供输入输出语句,可以通过函数来实现输入和输出操作。19.有下列程序: main() int y=20; doy-;while(-y); print
36、f(“%d/n“,y-); 当执行程序时,输出的结果是( )。(分数:1.00)A.-1B.1C.4D.0 解析:解析 本题考查 dowhile 循环。当-y 是 0(即 y 是 0)时结束循环,输出 y-是先输出 y 的值再将 y 的值减 1。20.对建立良好的程序设计风格,下列描述正确的是( )。(分数:1.00)A.程序应该简单、清晰、可读性好 B.符号名的命名只需要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无解析:解析 “清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含义;程序的注释可以帮助
37、程序员理解程序,不是可有可无的。21.下列的程序用来输出两个字符串前 7 个字符中对应相等的字符及其位置号,程序空白处应该填写的是( )。#includestdioh main() char s1=“chinese“,s2=“japnese“; int i; for(i=0;s1i!=/0 &s2i!=/0;i+) if(s1i=s2i&i7) _, (分数:1.00)A.putchar(s2);putchar(B.puts(s1(,C.printf(“%c%d/n“,s2, D.printf(“%c“,s1);printf(“%d/n“,解析:解析 putchar(s)的功能是把字符 s 输
38、出到标准输出设备;puts(s1)是把 s1 指向的字符串输出到标准输出设备。22.函数 fseek()的正确调用形式是( )。(分数:1.00)A.fseek(位移量,起始点,文件类型指针);B.fseek(文件类型指针,位移量,起始点); C.fseek(文件类型指针,起始点,位移量);D.fseek(起始点,位移量,文件类型指针);解析:解析 改变文件位置的指针函数 fseek()的调用形式为:fseek(fp,offset, position);。 fseck 函数参数说明:“fp”是指向该文件的文件型指针;“offset”为位移量,指从起始点 position到要确定的新位置的字节数
39、。也就是以起点为基准,向前移动的字节数。ANSIC 要求该参数为长整型量;“position”为起始点,指出以文件的什么位置为基准进行移动,position 的值用整型常数表示,“0”表示文件的开头,“广表示文件的当前位置,“2”表示文件的末尾。23.对于下列定义,不正确的叙述是( )。 union data int a; char b; double c; x=y;(分数:1.00)A.变量 x 所占内存的长度等于成员 c 的长度B.变量 x 的地址和它的各成员地址都是相同的C.可以在定义时对 x 初始化 D.不能对变量 x 赋值,故 x=y 非法解析:解析 本题主要考查的知识点是联合体的内
40、存使用。联合体所占用的内存空间为最长的成员所占用的空间,各个成员分量全部是从低地址方向开始使用内存单元。不能在定义共用体变量时对它初始化。24.下列说法正确的是( )。(分数:1.00)A.在 C 语言中,可以使用动态内存分配技术,定义元素个数可变的数组B.在 C 语言中,数组元素的个数可以不确定,允许随机变动C.在 C 语言中,数组元素的数据类型可以不一致D.在 C 语言中,定义了一个数组后,就确定了它所容纳的元素的个数 解析:解析 本题考查数组的两个知识点:在 C 语言中,数组元素的个数是确定的,不允许随机变动,数组定义好之后,它所能容纳的元素的个数也就确定了;同一个数组中所有元素的类型是
41、一样的。25.在嵌套使用 if 语句时,C 语言规定 else 总是( )。(分数:1.00)A.和之前与其具有相同缩进位置的 if 配对B.和之前与其最近的 if 配对C.和之前与其最近的且不带 else 的 if 配对 D.和之前的第一个 if 配对解析:解析 C 语言的语法规定:else 子句总是与前面最近的不带 else 的 if 相结合,与书写格式无关。所以选项 C) 为正确答案。26.下列选项中不属于软件生命周期开发阶段任务的是( )。(分数:1.00)A.软件测试B.概要设计C.软件维护 D.详细设计解析:解析 软件的生命周期可分为软件定义、软件开发及软件运行维护 3 个阶段。其
42、中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等:软件运行维护阶段的主要工作是软件的运行及后期的维护等。27.有下列程序段: struct st int x;int *y;*pt; int a=1,2,b=3,4; struct st c2=10,a,20,b; pt=c; 下列选项中表达式的值为 11 的是( )。(分数:1.00)A.*pt-yB.pt-xC.+pt-x D.(pt+)-X解析:解析 由题目的已知条件可知,pt 指向结构体数组 c2的第一元素 c0,所以 pt-x=10,执行自加运算后为 11。28.下列程序的运
43、行结果是( )。 #includestdioh main() int a=0,b=4,c=0,d=10,x; if(a) d=d-10; else if(!b) if(!c) x=15; else x=25; printf(“%d/n“,d); (分数:1.00)A.5B.3C.20D.10 解析:解析 本题考查 if else 语句。第 1 个 if 语句,先判断条件,发现 a=0 条件不成立,则执行与其配对的 else 语句;第 2 个 if 语句,先判断条件,发现 b=4,则!b 条件不成立,又没有与其配对的 else语句,所以执行 printf 语句,输出 d。29.对关系 S 和只进
44、行集合运算,结果中既包含 S 中的所有元组也包含只中的所有元组,这样的集合运算称为( )。(分数:1.00)A.并运算 B.交运算C.差运算D.积运算解析:解析 关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。30.按照“先进后出”原则组织数据的数据结构是( )。(分数:1.00)A.队列B.栈 C.双向链表D.二叉树解析:解析 栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的,是按先进后出的原则组织数据的。31.若已包括头文
45、件stdio.h和string.h,运行下列程序段时输出结果是( )。 int i=0; char s110=“ABCD“,s210=“EFG“; strcat(s1,s2); while(s2i+!=/0) s2i=s1i; puts(s2);(分数:1.00)A.ABCB.ABCDEFC.EBCDEFG D.CBD解析:解析 strcat(s1,s2)把 s2 连接到 s1 的后面,s1=ABCDEFG,执行 while(s2i+!=/0)后 i 的值变为 1,往后执行 s2i=s1i时是从把 s1 的第二位给 s2 的第二位开始,把 s1 赋给 s2。32.算法的时间复杂度是指( )。(
46、分数:1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数 D.算法程序中的指令条数解析:解析 所谓的算法的时间复杂度,是指执行算法所需要的工作量,可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。33.下列描述中,不是线性表顺序存储结构特征的是( )。(分数:1.00)A.不便于插入和删除B.需要连续的存储空间C.可随机访问D.需另外开辟空间来保存元素之间的关系 解析:解析 线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此,不
47、需要另外开辟空间来保存元素之间的关系。34.表达式8-2的值是( )。(分数:1.00)A.整数 6 B.字符 6C.表达式不合法D.字符 8解析:解析 在 C 语言中,虽然字符都是变为其对应的 ASCII 码值来参与算术运算的,但字符间的相对位置关系还是不变的,字符 8 和字符 2 的 ASCII 码值相差仍是 6。35.下列程序的运行结果是( )。 #includestdioh main() static chara=“Languagef“,b=“programe“; char *p1,*p2;int k; p1=a;p2=b; for(k=0;k=8;k+) if(*(p1+k)=*(p2+k)printf(“%c“,*(p1+k); (分数:1.