二级C语言笔试464.docx
- 文档编号:23277448
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:29
- 大小:27.29KB
二级C语言笔试464.docx
《二级C语言笔试464.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试464.docx(29页珍藏版)》请在冰豆网上搜索。
二级C语言笔试464
二级C语言笔试-464
(总分:
102.00,做题时间:
90分钟)
一、选择题(总题数:
40,分数:
66.00)
1.对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为______。
A)log2nB)n/2C)nD)n+l
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]顺序查找的最坏情况是所找的元素在线性表的最后,因此查找的比较次数是线性表的长度,即n。
2.数据的存储结构是指()
A)数据所占的存储空间
B)数据的逻辑结构在计算机中的存放形式
C)数据在计算机中的顺序存储方式
D)存储在计算机外存中的数据
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式。
数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。
3.结构化程序设计主要强调的是
A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用goto语句,总的来说可使程序结构良好、易读、易理解、易维护。
4.按照“先进后出”原则组织数据的数据结构是()。
A)队列B)栈C)双向链表D)二叉树
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。
进行插入、删除的一端称为栈顶,封闭的一端称为栈底。
栈顶元素是最后被插入的元素,不是最后被删除的,是按先进后出的原则组织数据的。
5.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是______。
A)10B)8C)6D)4
(分数:
2.00)
A.
B.
C. √
D.
解析:
[知识点]二叉树的基本性质
[评析]在任意一棵二叉树中,度为0的结点(即子叶结点)总比度为2的结点多一个。
本题中度为2的结点数为5,故叶子结点数为5+1=6个。
6.单个用户使用的数据视图的描述称为
A)外模式B)概念模式C)内模式D)存储模式
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。
7.结构化程序设计的3种结构是()。
A)顺序结构,分支结构,跳转结构B)顺序结构,选择结构,循环结构
C)分支结构,选择结构,循环结构D)分支结构,跳转结构,循环结构
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。
8.有下列二叉树,对此二叉树中序遍历的结果为()。
A)ABCDEFB)BDAECF
C)ABDCEFD)ABCDFE
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]对二又树的中序遍历是指:
首先遍历左子树,然后访问根结点,最后遍历右子树。
在遍历左,右子树时,注意依旧按照“左子树—根结点—右于树”的顺序。
9.下列关于栈的叙述正确的是______。
(A)栈按"先进先出"组织数据
(B)栈按"先进后出"组织数据
(C)只能在栈底插入数据
(D)不能删除数据
(分数:
2.00)
A.
B. √
C.
D.
解析:
10.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。
下列图符名标识的图符不属于数据流图合法图符的是()。
A)控制流B)加工C)数据存储D)源和潭
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。
11.有下列二叉树,对此二叉树前序遍历的结果为()。
A)ACFXDBEYZB)ABEFXYZCD
C)ABCDEFXYZD)ABDYECFXZ
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]对二叉树的前序遍历是指:
先访问根结点,然后访问左子树,最后访问右于树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。
记住3种遍历的顺序:
①前序,访问根一按前序遍历左子树一按前序遍历右子树:
②中序,按中序遍历左子树一访问根一按中序遍历右子树;③后序,按后序遍历左子树呻按后序遍历右子树一访问根。
12.将E-R图转换为关系模式时,实体和联系都可以表示为()。
A.属性B.键
C.关系D.域
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]在C语言中,将E-R图转换为关系模式时,实体和联系都可以表示为关系。
13.在结构化方法中,用数据流图(DFD)作为描述工具的软件开发阶段是()。
A)可行性分析B)需求分析C)详细设计D)程序编码
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段,其中需求分析阶段常用的工具是数据流图和数据字典。
14.下列工具中为需求分析常用工具的是()。
A)PADB)PFDC)N-SD)DFD
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。
PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。
15.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定.这属于算法的______。
A)正当性B)可行性C)确定性D)有穷性
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]算法具有5个特性:
有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。
16.设变量已正确定义并赋值,以下正确的表达式是______。
A)x=y*5=x+zB)int(15.8%5)
C)x=y+z+5,++yD)x=25%5.0
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]赋值运算符的左边必须是一个代表某一存储单元的变量名,而A选项中的“y*5=x+z”部分是非法赋值。
求余运算符的对象只能是整型,故选项B和选项D是错误的。
选项C为逗号表达式。
17.有以下程序:
main()
inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d/n",d);
elseif((c-1>=d)==1)
printf("%d/n",d+1);
else
printf("%d/n",d+2);
执行后输出结果是______。
A)2B)3C)4D)编译时有错,无结果
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]执行if(a>b>c)时,首先判断a>b的值,5>4结果为真(C语言中规定真用1表示),然后比较1>c,结果为假,执行第一个else后的语句,判断条件(c-1>=d)==1是否成立,即判断(3-1>=2)==1,结果为真,所以执行printf("%d/n",d+1),输出结果3。
18.已知:
inft=0:
while(t=1)…
则下列叙述中正确的是
A)循环控制表达式的值为0B)循环控制表达式的值为1
C)循环控制表达式不合法D)以上说法都不对
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]这里要注意“=”与“==”的用法。
t=1是将1赋值给t,所以循环控制表达式的值始终为1。
19.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则其运行结果是
#include<stdio.h>
main()
charc;
intv0=1,v1=0,v2=0;
doswitch(c=getchar())
case'a':
case'A':
case'e':
case'E':
case'i':
case'I':
case'o':
case'O':
case'u':
case'U':
v1+=1;
default:
v0+=1;v2+=1;
while(c!
='/n');
printf("v0=%d,v1=%d,v2=%d/n",v0,v1,v2);
A)v0=7,v1=4,v2=7B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11D)v0=13,v1=4,v2=12
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]由于只有4个元音字符,所以v1=4,v0和v2在循环11次中都要加1,共循环12次,由于v0的初值为1,所以v0=13,v2=12。
20.下列选项中合法的赋值语句是()。
A)a=b=34B)a=34,b=34
C)i-1;D)m=(int)(x+y);
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]选项A)是一个合法的赋值表达式,但结尾没加分号,所以它不是一个赋值语句;选项B)是一个逗号表达式,也因为结尾没有加分号而不足合法的赋值语句:
选项C)是—个算术表达式,虽然有分号,但这个表达式没有赋值操作,因此,也不是一条赋值语句。
21.有如下嵌套的if语句
if(a<b)
if(a<c)k=a;
elsek=c;
else
if(b<c)k=b;
elsek=c;
以下选项中与上述订语句等价的语句是
A)k=(a<b)?
a:
b;k=(b<c)?
b:
c;
B)k=(a<b)?
((b<c)?
a:
b):
((b>c)?
b:
c);
C)k=(a<b)?
((a<c)?
a:
c):
((b<c)?
b:
c);
D)k=(a<b)?
a:
b;k=(a<c)?
a:
c;
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]嵌套的辽语句功能是将k赋值为a、b、c中的最小值,选项A中没有比较a、c的大小,选项B中语句“((b<c)?
a:
b):
((b>c)?
b:
c)”错误,选项D中没有比较b、c大小。
22.下列程序的输出结果是()。
main()
inti=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))printf("%d%d%d/n",i,j,k);
A)123B)234C)223D)233
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]本题考查自增运算符“++”,逻辑与运算符“&&”和逻辑或运算符“||”。
自增运算符“++”,出现在变量之前(如题中的++n),表示先使变量的值加1,再使用变量的值进行运算:
出现在变量之后(如题中的n++),表示先使用变量的值进行运算,再使变量的值加1。
当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“||”左边的运算对象为真时,其值就为真,不用计算其右边的运算对象的值。
所以根据运算符的优先级,题中应先计算内层括号中的值。
++j是先自加后运算,因此运算时j的值等于3,所以表达式++j==3成立,即表达式的值为1;由于1与任何数都为进行或(||)运算,结果都为1,因此k=3;最后计算“&&”之前的表达式,i++是先运算后自加,因此运算时i为1,所以i++==1成立,自加1后i=2。
if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。
23.在VaualFoxPro中,使用LOCATEFOR<expL>命令按条件查找记录,当查找到满足条件的第一条记录后,如果还需要查找下一条满足条件的记录,应该______。
A)再次使用LOCATE命令重新查询B)使用SKIP命令
C)使用CONTINUE命令D)使用GO命令
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题考查的知识点是表结构修改的非SQL命令。
在VaualFoxPro中,使用LOCATEFOR<expL>命令按条件查找记录,当查找到满足条件的第一条记录后,如果还需要查找下一条满足条件的记录,应使用CONTINUE命令。
24.下列程序执行后的输出结果是
main()
inta[3][3],*p,i;
p=&a[0][0];
for(i=1;i<9;i++)p[i]=i+1;
printf("%d/n",a[1][2]);
A)3B)6C)9D)随机数
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。
25.以下函数值的类型是______。
fun(floatx)
floaty;
y=3*x-4:
returny;
A)intB)不确定C)voidD)float
(分数:
2.00)
A. √
B.
C.
D.
解析:
[评析]C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。
26.以下程序的输出结果是()。
main()
charch[3][4]="123","456","78",*p[3];inti;
for(i=0;i<3;i++)p[i]=ch[i];
for(i=0;i<3;i++)printf("%s",p[i]);
A.123456780B.123456780C.12345678D.147
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]第一个for循环的作用是让p指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。
27.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是______。
A)main()
…x=fun(2,10);…
floatfun(inta,intb)…
B)floatfun(inta,intb)…
main()
…x=fun(i,j);…
C)floatfun(int,int);
main()
…x=fun(2,10);…
floatfun(inta,intb)…
D)main()
floatfun(inti,intj);
…x=fun(i,j);…
floatfun(inta,intb)…
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]在调用函数时,此函数必须被声明或定义过。
A选项中fun在调用时并未声明,因此是错误的。
28.有以下程序:
#include<stdio.h>
main()
char*p,*q;
p=(char*)malloc(sizeof(char)*20);q=p;
scanf("%s%s",p,q);printf("%s%s/n",p,q);
若从键盘输入;abcdef<回车>,则输出结果是______。
A)defdefB)abcdefC)abedD)dd
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]本题考查%s控制符在scanf函数中的应用。
scanf函数中%s控制符的作用是将键盘输入的字符串送到内存,输入的字符串从第一个非空格字符算起,遇到空格或回车就认为是输入结束。
本题中执行语句scanf("%s%s",p,q)时,从键盘输入abcdef<回车>后,指针变量p指向字符串"abc/0",q指向字符串"def/0",但是由于p和q指向同一个存储单元,所以存储单元中存放的是"def/0",printf函数的输出结果为defdef。
29.有以下程序:
voidswapl(intc0[],intc1[])
intt;
t=c0[0];c0[0]=c1[0];c1[0]=t;
voidswap2(int*c0,int*c1)
intt;
t=*c0;*c0=*c1;*c1=t;
main()
inta[2]=3,5),b[2]=3,5;
swapl(a,a+1);swap2(&b[0],&b[1]);
printf("%d%d%d%d/n",a[0],a[1],b[0],b[1]);
程序运行后的输出结果是______。
A)3553B)5335C)3535D)5353
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]函数swapl的形参是数组名,在调用时应将数组名,即数组的首地址,作为实参传递给形参,形参所指向内容的改变可以带回到实参,因此调用函数swap1是将元素a[0]和a[1]互换。
函数swap2的形参是指针变量,在调用时将b[0]、b[1]的值传递给它,形参内容改变也可以带回到实参,b[0]和b[1]的内容也进行了交换。
所以输出为5353。
30.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。
A)k=*q1+*q2;B)q1=k;C)q1=q2;D)k=*q1*(*q2);
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:
选项C)中,是两个指针变量之间的赋值:
选项D)中,是两个指针型变量所指向的两个float型数据相乘。
31.下面程序段的输出结果是()。
charstr[]="ABC",*p=str;
Printf("%d/n",*(p+3));
A)67B)0C)字符'C'的地址D)字符'C'
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]本题考查指向字符串的指针变量。
指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志"/0"的地址,因而*(p+3)的值为0。
32.在C语言中,函数返回值的类型最终取决于()。
A)函数定义时在函数首部所说明的函数类型
B)return语句中表达式值的类型
C)调用函数时主调函数所传递的实参类型
D)函数定义时形参的类型
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]在C语言中,应当在定义函数时指定函数值的类型.凡不加类型说明的函数,默认按整型处理。
在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。
如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换。
即函数类型决定返回值的类型。
33.表达式3.6-5/2+1.2+5%2的值是()。
A)4.3B)4.8C)3.3D)3.8
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]算术运算符的结合方向为“自左至右”,先按运算符的优先级别高低次序执行,同时在C中两个整数相除或求余数其结果依旧为整数。
计算后结果为3.6-2+1.2+1=3.8。
34.以下错误的定义语句是______。
A)intx[][3]=0,1,1,2,3;
B)intx[4][3]=1,2,3,1,2,3),1,2,3,1,2,3;
C)intx[4][]=1,2,3,1,2,3,1,2,3,1,2,3;
D)intx[][3]=1,2,3,4;
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]若在定义二维数组的同时对数组进行初始化,可以不指定一维长度.但二维长度不能省略,因此选项C是错误的。
如果数据不足,系统将自动给后面的元素自动补初值0。
35.下面程序段中,输出*的个数是
char*s="/ta/018bc";
for(;*s!
='/0';s++)printf("*");
A)9B)5C)6D)7
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。
C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。
36.以下程序运行后的输出结果是
#include<stdio.h>
intfun()
staticintx=1;
x+=1;returnx;
main()
inti,s=1;
for(i=1;i<=5;i++)s+=fun();
printf("%d/n",s);
A)11B)21C)6D)120
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题考查的是静态存储类型的变量。
静态存储变量的特点是只赋一次初值,当函数发生多次调用时,静态存储变量上一次的值会带入到函数本次的调用中。
本题程序中,main函数中5次调用fun函数,变量s完成函数返回值的累加。
由于fun函数中变量x是静态存储类型的变量,所以x赋值为1只在第一次调用fun函数时执行,第一次调用结束后x的值变为2,当第二次调用fun函数时,x的值是上一次调用后的结果2,而不会重新赋值。
根据这些特点,可以知道5次调用fun函数后,x值依次变为2、3、4、5、6,s的初值为1,所以1+2+3+4+5+6=21。
37.变量a中的数据用二进制表示
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 笔试 464