1、二级C语言24二级C语言-24(总分:76.50,做题时间:90分钟)一、B选择题/B(总题数:35,分数:48.00)1.下面程序段的运行结果是U /U。char*p=abcdefgh;p+ =3;printf(%d/n,stfien(strcpy(p,ABCD); A. 8 B. 12 C. 4 D. 7(分数:2.00)A.B.C.D.解析:解析 p+=3使指针p指向字符d,函数strcpy的功能是把后面的字符串复制到p指针指向的空间;strlen函数的功能是求字符串的长度,并返回字符个数,不计最后的/0。本题结果为4,即字符串“ABCD”的长度。2.若函数中有定义语句:int a;,则
2、U /U。 A. 系统将自动给a赋初值0 B. 这时a中的值是和随机数 C. 系统将自动给a赋初值-1 D. 这a中无任何值(分数:1.00)A.B.C.D.解析:解析 本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。3.用链表表示线性表的优点是 A. 便于随机存取 B. 花费的存储空间较顺序存储少 C. 便于插入和删除操作 D. 数据元素的物理顺序与逻辑顺序相同(分数:1.00)A.B.C.D.解析:解析 链式存储结构克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。故链式存储结
3、构下的线性表便于插入和删除操作。4.以下程序的输出结果是 U /U#includestdiohmain() int i=0,a0;while(i20) for(;)if(i%10)=0)break;else i-;i+11;a+i;printf(%d/n,A) ; A. 21 B. 32 C. 33 D. 11(分数:1.00)A.B.C.D.解析:5.下列程序执行后的输出结果是U /U。main() char x=0xFFFF;printf(%d/n,x-); A.-32767 B.FFFE C.-1 D.-32768(分数:1.00)A.B.C.D.解析:解析 因为x=0x FFFF=11
4、111111,因此当以整型形式输出时对应的数为-1。6.有以下程序#include stdiohmain() int i,j,m=1;fori=i;i3;i+) for(j=3;j0;j-) if(i*j3)break;m*=i*j;printf(m=%d/n,m);程序运行后的输出结果是 A. m=6 B. m=2 C. m=4 D. m=5(分数:1.00)A.B.C.D.解析:解析 第一次循环i=1,j=3和j=2时都能执行m*=i*j,此时得到m的值为6;然后进行第二次循环i= 2,j=3时会执行break语句,内部循环直接结束,此时i再加1,也会导致退出外部循环,所以最终结果m的值为
5、6。7.下面的程序执行后,文件test.t中内容是_。#includestdio.hvoid fun(char *fname,char *st)FILE *myf; int i;myf=fopen(fname,w);for(i=0;istrlen(st);i+)fputc(sti,myf);fclose(myf);main()fun(test.t,new world);fun(test.t,hello,); A. hello, B. new worldhello C. new world D. hello,rld(分数:1.00)A.B.C.D.解析:解析 C语言中文件有文本文件与二进制文件,
6、对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。8.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。#includestdiohmain() int i=0,j,k;doi+;k=316-13*iwhile(_);j=k/11; printf(316=13*%d+11,%d”,i,j); A. k/11 B. k%11 C. k/11=0 D. k%11=0(分数:1.00)A.B.C.D.解析:解析 本题的关键是两个加数分别能被13和11整除。当k%11的值为0时,则退出循环,将执行j=k/11;语句,输出结果,所以该表达式合理的条件是k
7、%11。9.软件开发的结构化生命周期方法将软件生命周期划分成 U /U A. 定义、开发、运行维护 B. 设计阶段、编程阶段、测试阶段 C. 总体设计、详细设计、编程调试 D. 需求分析、功能定义、系统设计(分数:1.00)A.B.C.D.解析:10.若已定义x和y为double类型,则表达式x=1, y=x+5/2的值是 A. 2 B. 3.0 C. 3 D. 3.5(分数:2.00)A.B.C.D.解析:解析 题目中定义变量x和y为双精度double类型,根据给定算数表达式的优先级应先计算5/2,结果为2,将值代入后,y的值由x和y的数据类型得出结果为3.0,整个逗号表达式的值为后y=x+
8、5/2的值,即3.0。11.以下描述中正确的是 A. 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B. do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C. 在do-while循环体中,是先执行一次循环,再进行判断 D. do-while循环中,根据情况可以省略while(分数:2.00)A.B.C.D.解析:解析 do while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以
9、省略while。12.有下列程序:#includestdio.hmain() int a=6,b=7,m=1;switch(a%2) case 0:m+;break;case 1:m+;switch(b%2) defaut:m+;case0:m+;break;printf(%d/n,m);程序运行后的输出结果是U /U。 A. 1 B. 2 C. 3 D. 4(分数:1.00)A.B.C.D.解析:解析 本题考查switch语句。第一个switch语句,因为a=6,a%2=0,所以执行case0将m加1,遇到break语句跳出switch语句,结束循环。13.在深度为7的满二叉树中,叶子结点的
10、个数为 A. 32 B. 31 C. 64 D. 63(分数:2.00)A.B.C.D.解析:解析 在二叉树的第k层上,最多有2k-1(k1)个结点。对于满二叉树来说,每一层上的结点数都达到最大值,即在满二叉树的第k层上有2k-1个结点。因此,在深度为7的满二叉树中,所有叶子结点在第7层上,即其结点数为2k-1=27-1=64。14.下列描述中正确的是 A. 程序就是软件 B. 软件开发不受计算机系统的限制 C. 软件既是逻辑实体,又是物理实体 D. 软件是程序、数据与相关文档的集合(分数:1.00)A.B.C.D.解析:解析 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及
11、相关文档的完整集合。选项D的描述正确。15.下列叙述中错误的是U /U。 A. 一种数据的逻辑结构可以有多种存储结构 B. 数据的存储结构与数据的处理效率无关 C. 数据的存储结构与数据的处理效率密切相关 D. 数据的存储结构在计算机中所占的空间不一定是连续的(分数:2.00)A.B.C.D.解析:解析 数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。16.有以下结构体说明、变量定义和赋值语句:struct STD char na
12、me10;int age;char sex;s5,*ps;ps=s0;则以下scanf函数调用语句有错误的是_。 A.scanf(%s,s0.name); B.scallf(%d,s0.age); C.scanf(%c,(ps-sex); D.scanf(%d,ps-age);(分数:1.00)A.B.C.D.解析:解析 本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps-age为一个变量,不是指针,所以错误。17.在以下选项中,操作不合法的一组是_。 A. int x6,*p;p=&x0; B. int x6,*p;*p=x; C. int x6,*p
13、;p=x; D. int x5,p;p=x0;(分数:1.00)A.B.C.D.解析:解析 对于A和C都可使p指向数组x的首地址。D是把数组元素x0赋给p。18.已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是( )。 A. isupper(C) B. A=c=Z C. A=cc=Z D. c=(z-32) (a-32) =c(分数:1.00)A.B.C.D.解析:解析 在本题中,选项B)实际是先计算关系表达式“A=c”的值是0还是1,再比较该值与字符Z之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可
14、以。19.设有定义:int n=0,*p=&n,*q=&p,则下列选项中正确的赋值语句是 A. p=1; B. *q=2; C. q=p; D. *p=5;(分数:1.00)A.B.C.D.解析:解析 指针变量的定义。 解题要点 选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。 考点链接 通过指针引用一个存储单。20.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。 A.一对一 B.一对多 C.多对一 D.多对多(分数:4.00)A.B.C.D.解析:解析 因为一间宿舍可以住多个学生,即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以
15、实体宿舍和学生之间是一对多的关系。21.若x为int型变量,则执行以下语句后,x的值为 ( )x6;x+x-=x*x; A.36 B.-60 C.60 D.-24 (分数:1.00)A.B.C.D.解析:22.有以下程序段int j; float y; char name50;scanf(%2d%f%s, j, y, name);当执行上述程序段,从键盘上输入55566 777abc后,y的值为_。 A. 55566.0 B. 566.0 C. 7777.0 D. 566777.0(分数:1.00)A.B.C.D.解析:23.有下列程序:int fun1(double a)(return a*
16、=a;)int fun2(double x,double y) double a=0,b=0;a=fun 1(x); b=fun 1(y);return(int)(a+b);main()double w;w=fun2(1.1,2.0),程序执行后变量w中的值是U /U。 A.5.21 B.5 C.5.0 D.0.0(分数:1.00)A.B.C.D.解析:解析 子函数fun1(double a)的功能是返回a的平方值的整数部分。子函数fun2(double x,double y)的功能是返回x的平方值的整数部分与y的平方值的整数部分的和。又因为题中变量w的定义为double型,函数fun2的定义
17、为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。所以双精度型变量w的值为5.0。24.以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是 A. main() int*p; fun(p); int fun(int *p) int s;p=&s; B. main() int*p; fun(&p); int fun(int * *p) int s;*p=&s; C. #includestdlibh main() int*p; fun(&p); int fun(int * *p) *p=(int*)malloc(2); D. #inclu
18、destdlibh main() int*P; fun(p); int fun(int *p) p=(int*)malloc(sizeof(int);(分数:1.00)A.B.C.D.解析:解析 在选项A中,main()函数中定义了一个指针变量P,调用fun()函数时把p传给形参P,在函数中让p指向局部变量s,由于函数调用返回后,局部变量s将被释放,因此无法实现让实参p指向一个整型单元。选项B中实现的也是让实参p指向一个在函数fun()定义的局部变量s;选项C在函数fun()中分配了两个字节的内存单元并把首地址赋值给形参p指向的变量,即main()函数的指针变量p中,由于整型变量占两个字节;选
19、项D在主函数中定义了一个指针地址变量p,并把指针变量的值传给形参变量 p,在fun()函数分配了一个整型单元并把首地址赋值给形参指针变量P,由于C语言中变量作为参数是传值的,所以并没有改变对应实参指针变量的值。25.为了提高软件模块的独立性,模块之间最好是U /U。 A. 控制耦合 B. 公共耦合 C. 内容耦合 D. 数据耦合(分数:2.00)A.B.C.D.解析:解析 耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。26.若fp已正确定义并指向某个文件,当未遇到
20、该文件结束标志时函数feof(fp)的值为 A. 0 B. 1 C. -1 D. 一个非0值(分数:1.00)A.B.C.D.解析:解析 文件尾测试函数feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。此时如果读数据,将会出现错误。为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),它的功能是测试fp指向的文件是否到达文件尾。若到达文件尾,返回值为非0,否则返回值为0。在本题中fP指向的某文件还没有到了文件尾,因此返回0。27.若有以下定义和语句:int s45,(*ps)5;ps=s;则对s数组元素的正确引用形式是 A. ps+
21、1 B. *(ps+3) C. ps02 D. *(ps+1)+3(分数:1.00)A.B.C.D.解析:解析 本题首先定义了一个 4行5列的数组s,又定义了一个指向由5个元素组成的一维数组的指针变量ps,通过赋值让ps指向了数组s的首地址。此时数组元素sij的地址为“*(ps+1)+j”,数组元素sij可表示为*(*(ps+1)+j)。选项B表示的是数组元素a30的地址;选项D表示的是数组元素s13的地址;选项A中“ps+1”为指向下一行(第二行)的地址;选项c中ps02无条件等价于“*(ps0+2)”又无条件等价于”(*(ps+0)+2)”,即是数组元素s02。所以,4个选项中C为所选。2
22、8.若有以下说明和定义:union dt int a; char b; double c; data; 以下叙述中错误的是( )。 A. data的每个成员起始地址都相同 B. 变量data所占内存字节数与成员c所占字节数相等 C. 程序段:data.a=5; printf(%f/n, data.c);输出结果为5.000000 D. data可以作为函数的实参(分数:1.00)A.B.C.D.解析:解析 选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C),因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D
23、),C语言规定,不能把共用体变量作为函数的参数。29.在Windows环境下,能实现窗口移动的操作是( ) A.用鼠标拖动窗口中的任何部位 B.用鼠标拖动窗口的边框 C.用鼠标拖动窗口的控制按钮 D.用鼠标拖动窗口的标题栏。 (分数:1.00)A.B.C.D.解析:解析 鼠标拖动窗口的标题栏,能实现窗口的移动;拖边框,实现窗体的大小调整。30.若有以下语句,则以下叙述中正确的是 typedef struct S int g; char h; T; A. 可用S定义结构体变量 B. 可用T定义结构体变量 C. S是struct类型的变量 D. T是struct S类型的变量(分数:2.00)A.
24、B.C.D.解析:解析 typedef struct Sint g; char h; T;的功能是将struct S结构体类型用“T”来表示,所以可以用T来定义结构体变量。31.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_。 A. pb=&x; B. pb=x; C. *pb=&x; D. *pb=*x (分数:1.00)A.B.C.D.解析:解析 选项A将变量x的地址赋绐指针变量pb,使pb指向x选项B是烙x的值当作地址赋给指针pb,pb指向一个地址等于x值的内存单元;选项c将x的地址赋给指针pb指向的地址等于x的内存单元。32.若有代数式 (其中e仅代表自然对数的底
25、数,不是变量),则以下能够正确表示该代数式的C语言表达式是_。 A.sqrt(fabs(pow(n,x)+exp(x) B.sqrt(fabs(pow(n,x)+pow(x,e) C.sqrt(abs(nx+ex) D.sqrt(fabs(pow(x,n)+exp(x)(分数:2.00)A.B.C.D.解析:解析 B选项中函数pow(x,e)错误,应该直接使用exp(x)函数。C选项中函数abs(nx+ex)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参数顺序错误。本题正确答案为A。33.设a=12,a定义为整型变量。表达式a+=a-=a*=a的值为_。 A. 12
26、B. 144 C. 0 D. 132(分数:1.00)A.B.C.D.解析:解析 表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为a*a=144,再计算a-=a,a值为a-a=0,再计算计a+=a,故表达式和a的值都为a+a=0。34.在数据结构中,从逻辑结构上看可以分成_。 A.动态结构和静态结构 B.线性结构和非线性结构 C.内部结构和外部结构 D.紧凑结构和非紧凑结构(分数:2.00)A.B.C.D.解析:35.以下选项中,合法的是U /U。 A.char str3=d, e, b, u, g, /0; B.char str4; str4=hello world; C.char name10; name=china; D.char str15=pass, str26; str2=str1;(分数:2.00)A.B.C.D.解析:解析 选项B不能把一个字符串赋值给一个字符变量,选项C和D犯了同样的错误是把字符串赋给了数组名。二、B填空题/B(总
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1