




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)笔试模拟试卷第1
套
一、公共基础选择题(本题共10题,每题7.0分,共
10分。)
1、下列叙述中止确的是()。
A、数据的逻辑结构与存储结构必定一一对应
B、由于汁算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性
结构
C、程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结
构
D、以上三种说法都不对
标准答案:8
知识点解析♦:一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据
的逻辑结构与存储结构不一定是一一对应的,选项A错误。计算机的存储空间是
向量式的存储结构,但一种数据的逻辑结构根据需要可以表示成多种存储结构,如
线性链表是线性表的链式存储结构,数据的存储结构不一定是线性结构,因此选项
B错误。数组一般是顺序存储结构,但利用数组也能处理非线性结构,选项C错
误。由此可知,只有选预D的说法正确。
2、下列数据结构中具有记忆功能的是()。
A、队列
B、循环队列
C、栈
D、顺序表
标准答案:4
知识点解析:由栈的定义可知,栈是先进后出(或后进先出)的线性表,因此,戌具
有记忆功能。
3、设栈S初始状态为空。元素a、b、c、d、e、f依次通过栈S,若出栈的顺序为
c、f、e、d、b、a,则杖S的容量至少应该为()。
A、6
B、5
C、4
D、3
标准答案:2
知识点解析:根据题中给定的条件,可做如下模拟操作:①元素a、b、c进栈,
栈中有3个元素,分别为a、b、c;②元素c出栈后,元素d、e、f进栈,栈口有
5个元素,分别为a、b、d、e、f;③元素f、e、d、a、b出栈,栈为空。可以看
出,进栈的顺序为a、b、c、d、e、f,出栈的顺序为c、f、e、d、b、a,满足题中
所提出的要求。在每一次进栈操作后,栈中最多有3个元素,因此,为了顺利完成
这些操作,栈的容量应至少为5。
4、下列叙述中正确的是()。
A、测试工作必须由程序编制者自己完成
13、测试用例和调试用例必须一致
C、一个程序经调试改正错误后,一般不必再进行测试
D、上述三种说法都不对
标准答案:8
知识点解析:测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进
行的,其目的是设法暴露程序中的错误和缺陷,一般应当避免由开发者测试自己的
程序,因此,选项A错误;测试是为了发现程序错误,不能证明程序的正确性,
调试主要是推断错误的原因,从而进一步改正错误,调试用例与测试用例可以一
致,也可以不一致,选项B错误;测试发现错误后,可进行调试并改正错误:经
过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程
中引进新的错误,选项C错误。
5、在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。
A、调用语句
B、命令
C、口令
D、消息
标准答案:8
知识点解析:在面向对象方法中.一个对象请求另一对象为其服务的方式是通过发
送消息。
6、在软件生存周期中,能准确确定软件系统必须做什么和必须具备哪些功能的阶
段是()。
A、概要设计
B、详细设计
C、可行性分析
D、需求分析
标准答案:8
知识点解析:在需求分析阶段,根据可行性研究阶段所提交的文档,对1=1标系统提
出清晰、准确和具体的要求。
7、在结构化方法中,软件功能分解属于下列软件开发中的阶段是()。
A、概要设计
B>需求分析
C、详细设计
D、编程调试
标准答案:1
知识点解析:概要设计的任务是划分出构成系统的各物理元素以及设计出软件的结
构(如确定模块及模块间的关系)。设计过程通常分为以下儿步:提出可选择方案;
选择合理方案;推荐最佳方案;功能分解;设计软件结构;制定测试计划:最后提
交概要设计文档。软件功能分解属于概要设计阶段。本题的正确答案为选项A。
8、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统管理阶段和数
据库系统管理阶段。其中数据独立性最高的阶段是()。
A、数据库系统
B、文件系统
C、人工管理
D、数据项管理
标准答案:1
知识点解析:从题干中可知,数据项管理不属于数据管理技术的发展阶段,故可排
除选项D;在人工管理阶段,数据与应用程序是一一对应的,数据结构改变时,程
序也必须随之修改,数据与程序不具有独立性;在文件系统管理阶段,借助于操作
系统中的文件系统,数据可以用统一格式、以文件形式长期保存在计算机系统中,
数据的各种转换以及存储位置的安排也由文件系统来统一管理,使程序与数据之间
具有一定的独立性:在数据库系统管理阶段,通过系统提供的映像功能,使数据具
有两方面的独立性:一是物理独立性,二是逻辑独立性;保证了数据的完整性、安
全性和并发性。由上所述,数据独立性最高的阶段是数据库系统管理阶段。
9、按条件f对关系R进行选择,其关系代数表达式是()。
A、R||R
R|x|R
B、f
C、f(R)
D、f(R)
标准答案:4
知识点解析:选项A表示关系R与关系R进行自然连接;选项B表示关系R与关
系R按条件f做连接运算;选项C表示按条件f对关系R做选择运算;选项D表
示在域f上对关系R做投影运算。
10、下列叙述中错误的是()。
A、在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统
B、在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关
C、在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关
D、在数据库设计的过程中,物理结构设计依赖于具体的计算机系统
标准答案:2
知识点解析:数据库设计主要分4个步骤:需求分析、概念结构设计、逻辑结构设
计、物理结构设计。选项B错误,应为本题的正确答案,因为概念结构设计在需
求分析的基础上对客观世界做抽象,独立于数据库的逻辑结构,也独立于具体的数
据库管理系统,与具体的数据库管理系统无关。
二、选择题(1分)(本题共70题,每题7.0分,共70
分。)
11、以下叙述中正确的是()。
A、C语言的源程序不必通过编译就可以直接运行
B、C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C、C源程序经编译形成的二进制代码可以直接运行
D、C语言中的函数不可以单独进行编译
标准答案:2
知识点解析:C语言采用编译方式将源程序转换为二进制的目标代码,编写好一个
C程序到完成运行一般经过以下几个步骤。编辑、编译,就是将已经编辑好的源程
序翻译成二进制的目标弋码,经编译后得到的二进制代码还不能直接执行,因为每
一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供
的标准模块连接后才能运行:连接,将各模块的二进制目标代码与系统标准模块经
连接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件;执
行,执行一个经过编译和连接的可执行的目标文件。由以上定义可知,选项A、
C、D均不正确。所以,4个选项中选项B符合题意。
12、以下符合C语言语法的实型常量是()。
A、1.2E0.5
B、3.14159E
C、5.OOE-O3
D、E15
标准答案:4
知识点解析:在C语言中,可以用指数形式将实型常量表示为数值和指数两部
分,数值部分不能为空,指数部分只能为整数表示。选项A中1.2和0.5都不
是整数,故选项A不正确;选项B中3.14159也不是整数,故选项B不正确;选
项D中数值部分不能为空,故选项D也不正确。所以,4介选项中选项C符合题
意。
13、以下4组用户定义标识符中,全部合法的一组是()。
A、_mainencludesin
B、If-maxturbo
C、txtREAL3COM
D、intk_2_00l
标准答案:1
知识点解析:标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序
列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名
(例如,int是关键字,不是合法的用户标识符)。选项B中-max不是字母、数字或
下划线组成的字符序列,故选项B不正确;选项C中3coM不是由字母或下划线
开头,故选项C不正确;选项D中int为C语言中的关键字,故选项D不正确;
选项A中全部为合法的标识符,所以,4个选项中选项A符合题意。
14、以下选项中非法的表达式是()。
A、0<=x<100
B、i=j==0
C、(char)(65+3)
D、x+l=x+l
标准答案:8
知识点解析:选项D中将表达式的值赋给表达式,在C语言中是不允许给表达式
赋值的,故选项D是非法的表达式,所以,4个选项中选项D符合题意。
15、若变量a、i已正确定义,且i已正确赋值,合法的语句是()。
A、a==l
B、++i;
C、a=int(i);
D、a=a++=5;
标准答案:2
知识点解析:C语言中的语句都以“;”结尾,因此选项A不是合法语句。强制类型
转换运算符应为"(类型名)”,选项C中的瓶⑴不符合规定;如将血⑴看成函数调
用也是不正确的,int是C语言的关键字,不能作为用户定义的标识符当函数名使
用。赋值表达式的左侧应为变量名,而选项D中的a++=5不符合规定。
16、有以下程序:main(){inim=0256,n=256:printf("%o%o\n\m,n);}程序运彳亍后
的输出结果是()。
A、02560400
B、0256256
C、256400
D、400400
标准答案:4
知识点解析:程序中定义了两个整型变量,一个用八进制表示,一个用十进制表
示,输出语句中要求m、n都为八进制输出,显然m原样输出为256,n的值转换
为八进制输出(256的八进制为400),故输出400。所以,4个选项中选项C符合题
意。
17、有定义语句:“intx,y;”,若要通过公2玳(“%4%、,&%&丫);”语句使变量*
得到数值II,变量y得到数值12,下面4组输入形式中错误的是()。
A、1112V回车〉
B、IL12V回车,
C、11,12V回车〉
D、11,V回车>12V回车〉
标准答案:1
知识点解析:scanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数
为输入变量地址列表,在scanf()语句中非格式字符可以作为输入时数据的间隔,
输入时必须原样输入,在本题中输入格式串为“%d,%d”其中“,”为非格式字符,所以
输入时必须原样输入。所以,4个选项中选项A符合题意。
18、若有以下程序段:intm=Uxabc,n=Uxabc;m-=n;printf("%X\n”,m);执行后输出
结果是()。
A、0X0
B、0x0
C、0
D、OXABC
标准答案:4
知识点解析:m-=n相当于m=m-n,两个相等的数相减,其值为0。所以,C选项
为所选。
19、设变量x为noat型且已赋值,则以下语句中能将x中的数值保留到小数点后
两位,并将第3位四舍五入的是()。
A、X=X*100+0.5/100.0:
B、x=(x*100+0.5)/100.0;
C、x=(int)(x*100+0.5)/100.0;
D、x=(x/100+0.5)*100.0;
标准答案:4
知识点解析:选项A中。.5/100.0将保留小数点后六位,不满足题目要求,故选项
A不正确:选项R和选项D也将保留小数点后六位,不满足题目要求.故选顼R
不正确;所以,4个选项中选项C符合题意。
20、执行下面的程序时,输入abc〈CR>(其中CR代表回车),输出结果是()。
#include<stdio.h>#inc'ude<string.h>main(){charch;while((cn=getchar())!=,n,)
{switch(ch-,a,){case0:putchar(ch+l);case1:putchar(ch+1);break;case2:
putchar(ch+2);caSe3:putchar(ch+2);break;}))
A、abc
B、bbc
C、abed
D、bbcee
标准答案:8
知识点解析:当ch=,a时,ch-a,=O,进入case。分支输出b,再进入easel分支输
出b,然后结束本次循环。当ch=b时,进入easel分支输出c,然后结
束本次循环。当ch=,c,时,,c,/a,=2,进入case2分支输出e,再进入case3分支输
出e,然后结束次循环。遇到Ln,结束循环。显示输出为bbcee。
三、选择题(2分)(本题共30题,每题1.0分,共30
分。)
21、若有定义:inta=8,b=4,C;执行语句“c=a/b+0.4;”后,c的值为()。
A、1.4
B、I
C、2
D、2
标准答案:8
知识点解析•:a、b、c为整型,赋值运算符两侧的数据类型不一致,系统先自动将
右侧表达式求得的数值,按赋值号左边变量的类型进行转换,再赋值给左边的变
量。去掉右侧表达式值的小数部分变为整数赋值给变量c,c的值为2。
22、以下程序的输出结果是()。main(){inta=-l,b=4,k;k=(++a<O)&&!(b-<
=0);printf("%d%d%d\n"m,k,a,b);}
A、104
B、103
C、3
D、4
标准答案:8
知识点解析:&&的优先级高于二,先计算&&左侧的表达式++aVO。先对a加1再
与0比较大小,a=l+l=O,++a<0为假即0,&&左侧的表达式的值为0,不再计
算&&右侧的表达式的值,因此b的值不变仍然为4,整个逻辑表达式的值为0,
则k被赋值为00输出的结果为004°
23、设有如下定义:ima=4;则计算表达式“a+=a-a*a”后的值是()。
A、0
B、-12
C、-24
D、-8
标准答案:8
知识点解析:a+=a-a*a等价于a=a+a-a*a=4+4-4*4=-8o
24、以下选项中合法的实型常数是()。
A、5E2.0
B、E-3
C、2.00E-01
D、I.3E
标准答案:4
知识点解析:在C语言中,实数有两种表示形式:小数形式与指数形式。小数形
式的实数由整数部分、小数点和小数部分组成(必须要有小数点)。指数形式字母
e(E)之前必须有数字,且e或E后的指数必须为整数。选项A中,5E2.0中E后面
的2.0不是整数;选项B中,E前面没有数字;选项D中,E后面没有数字,只有
选项C正确。
25、若有以下定义:chara;inlb;floatc;doubled;则表达式“a*b+d-c”值的类型
为()。
A、float
B、int
C、char
D、double
标准答案:8
知识点解析:参加运算的数据类型不同,要转换为统一的数据类型,double在数据
类型转换中的级别最高,其他数据类型都要转化为double,因此表达式值的类型为
doubleo
26,若执行下述程序时,从键盘输入的数据是3和6,则程序的输出结果是()。
#include<stdio.h>voidmain()(intx,y,z;scanf("%d%d”,&X,&y);z=y+x;if(x<y)
z=y+x;printf("%d",z);)
A、9
B、3
C、0
D、有语法错误
标准答案:2
知识点解析:变量x得到数据3,变量y得到数据6。z=6+3=9。xVy即3<6关系
表达式的值为1,执行z=y-x=6-3=3o最后输出z的值为3。
27、有以下程序:niain(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case
1:m++;switch(b%2){default:m++;case0;m++;break;))printf("%d\n"jn);}程序运
行后的输出结果是()。
A、1
B、2
C、3
D、4
标准答案:1
知识点解析:在switch语句中break语句的作用是退出分支语句,若没有break语
句则一直向下执行。本题中首先计算switch后面括号里的表达式a%3,即15%3为
0:执行case。:后面的语句”,m自加1,即m为1;遇到break语句;然
后跳出switch语句,所以最后输出的m值为1。所以选项A正确。
28、定义如下变量:inin=10;则卜.列循环的输出结果是()。while(n>7){-n;
printf("%d\n';n);)
A、1098
B、987
C、10987
D、9876
标准答案:2
知识点解析:第1次循环,10>7,-n=9,输出9。第2次循环,9>7,-n=8,输
出8。第3次循环,8>7,-n=7,输出7。
29、有以卜.程序:main(){inta=5,b=4,c=3,d=2;if(a>b>c)printf(n%d\nH,d);else
if((c-l>=d)==l)printf("%d\n",d+l);elseprintf("%d\n",d+2)}执行后输出结果是()。
A、2
B、3
C、4
D、编译时有错,无结果
标准答案:2
知识点解析:C语言规定else总是和离它最近的if语句配对。故第一个else和第一
个if配对,第二个else和第二个if配对。首先计算笫一个if后面的表达式a>b>
c,表达式a>b为1,表达式l>c为0,所以执行else后面的语句。先执行if后面
的表达式,。l>d为真,值为1。1=1为真,执行primf语句。所以,B选项为所
选。
30、以下程序的输出结果是()。main()char
a[10]={5r,2,'3','4',5,'6',7,'8','9',{inti;i=8;p=a+i;
printf("%s\n",p-3);}
A、6
B、6789
C、6
D、789
标准答案:2
知识点露析:p被定义为指针型变量,被赋值为数组a的首地址加8,即指向元
素9。将指针向前移3位,输出6后的字符串,遇到、(T结束输出,即6789。
31、若有如下程序:main(){intx[]={14,32,65,69,78,59},%;t=x+5;primf("%d\n”,*・
t);1则程序执行后的输出结果是()。
A、78
B、65
C>32
D、14
标准答案:1
知识点解析:执行l=x+5:使指针指向数组元素59,运算符*和•■的优先级相同,
结合性为自右向左,先计算-1,对t减1,使t指向数组元素78,再计算*3取该
地址单元的值78。
32、若有如下程序:main(){staticchar*a[3]={,,123,;"456',,,,789");char**b;b=a;
++b;printf(H%s,%s\n",*a*a+l);printf("%s,%s\n",*b,b[l]);)则程序运行后的输出结果
是()。
A、123,456,456,789
B、123,23456,56
C、123,23436,7X9
D、123,456456,56
标准答案:4
知识点解析:a为指针数组,a[O]即数组a的数组名指向字符串“123”的首地址,输
出*a为“123”,*a+l将指针下移1个存储单元,输出字符串为“23"。a[l]指向字符
串“456”的首地址,a⑵指向字符串“789”的首地址。b为指针的指针,它的值为数组
a的首地址。
33、以下不正确的定义语句是()。
A、doublex[5]={2.0,4.0,6.0,8.0,10.0);
B.inty[5]={0,1,3,57,9);
C、charcl[]={'l','2','3','4','5'};
D、charc2[]={,\xl0,;\xa,,,\x8,);
标准答案:2
知识点解析:选项B中初值列表中的初值个数超过了数组包含的元素的个数。
34、若有说明:int*p,m=5,n;,以下正确的程序段是()。
A、p=&m;scanf("%d",&p)
B、p=&n;scanf("%d",&p)
C>scsnf("%d",&p)p=&n;
D、p=&n;p=&m;
标准答案:8
知识点解析:p为指针型变量,在输入函数的地址列表中不用&,当给指针变量赋
值时是取变量的地址赋给指针变量,&为取地址运算符,因此只有选项D正确。
35、执行下面程序时,若输入1、-5、6,则输出结果为()。#include<stdio.h>#
include<math.h>#definedisc(a,b,c)b*b-4*a*cmain(){floatxl,x2;inta,b,c;
scanf("%d,%d,%d",&a,&b,&c);x1=(-b+sqrt(disc(a,b,c)))/(2*a);x2=(-b-
sqrt(disc(a,b,c)))/(2*a);}
A、3,2
B、3.0,2.0
C、-3,-2
D、程序出错
标准答案:2
知识点露析:本题是使用带参数的宏来求解一元二次方程的两个根。表达式xl=(-
b+sqrt(disc(a,b,c)))/(2*a)宏展开后为:x1=(-b+sqrt(b*b-4*a*c))/(2*a)=(5+sqrt(25-
24))/2=6/2=3o表达式x2=(・b・sqrt(disc(a,b,c)))/(2*a)宏展开后为:x2=(-b-sqrt(b*b-
4*a*c))/(2*a)=(5-sqrt(25-24))/2=4/2=2o所以程序输出结果为3.0,2.0,应该选择
Bo
36、卜.面程序的输出结果是()。chars()=',ABCDn,i3:p;main(){for(p=s;p<
s+4;p++)printf("%s\n',,p);)
A、ABCDBCDCDD
B、ABCD
C、DCBA
D、ABCDABCABA
标准答案:1
知识点解析:p为指针型变量。第一次循环,p=s,p的值为字符数组s的首地址,
输出字符串“ABCD"。p++,第二次循环,p的值为字符数组s的首地址加1,输出
字符串“BCD”。p++,第三次循环,p的值为字符数组s的首地址加2,输出字符串
"CD'op++,第4次循环,p的值为字符数组s的首地址加3,输出字符串,D”。
37、程序中头文件typel.h的内容是()。#dcfineN5#defincMlN*3程序如下:
#define"typel.h"#defineM2N*2main(){inti;i=Ml+M2;printf(H%d\nH,i);}程序编
译后运行的输出结果是()。
A、10
B、20
C、25
D、30
标准答案:4
知识点解析:仁Ml+M2=N*3+N*2=5*3+5*2=25。
38、下面程序的输出结果是()。main(){structm1(inta;intb;)cn[2]={1,3,2,7);
printf("%d\n",en[0].b/en[0].a*en[l].a);
A、6
B、0
C、I
D、3
标准答案:1
知识点解析:en⑵是结构体类型的数组,en[0].b/en[0].a*en[1].a=3/1*2=6o
39、语句“a=2;p=&a;b=*p+十>执行后的结果是()。
A、a=3b=3
B、a=2b=2
C、a=2b=1
D、a=2b=3
标准答案:2
知识之解析:执行p=&a;,将变量a的地址赋给指针变量p,运算符*和++的优先
级相同,都具有自右向左的结合性,p++是先使用p的值再对p加1,则计算*p,
即取p所指向的存储单元的值2,赋值给b,再对p的值加1。输出结果为a=2
b=2o
40、设有如下定义:structss{charname|10|;intage;charsex;}std|3],*p=std;
下面各输入语句中错误的是()。
A、scanf("%d",&(*p).age);
scanf("%su,&);
C^scanf("%c",&std[O],sex)
D、scanf("%c",&(p->sex));
标准答案:2
知识点解析:选项A中&(*p).age代表的是std[0].age的地址,是正确的,选项C也
是正确的,选项D先用指针变量引用结构型的成员sex,然后取它的地址,也是正
确的,选项B中的是错误的引用,因为std是数组名,代表的是数组的首
地址,地址没有成员name。所以B选项为所选。
41、若有如下程序:intsub(intm){if(m==1||m==0)return2;elsereturn(sub(m-
l)*sub(m-2));}main(){intn;scanf(H%d",&n);printf("%d”,sub(n));}如果从键盘输入
4V回车>,则程序运行后的输出结果是()。
A、8
B、16
C、24
D、32
标准答案:8
知识点解析:本题的“】b()函数是一个递归函数,当参数m为1或0时返回2.否
则返回sub(m-l)*sub(m-2)o所以sub(4)递推卜来就是
sub(4)=sub(3)*sub(2)=sub(2)*sub(1)*sub(1)*sub(0)=sub(1)*sub(0)*2*2*2=25(Jt
标)=32。所以正确答案是D。
42、有以下程序:main(intarge»char*argv[]){intn,i=0;vvhile(arv[l][i]!=,\0,
{n=fun();i++;)printf("%d\n",n*argc))intfun(){staticints=0;s+=1;returns;}假设
程序经编译、连接后生成可执行文件exam.exe,若输入以下命令行exam123V回
车〉则运行结果为()。
A、6
B、8
C、3
D、4
标准答案:1
知识点解析:主函数的第一个参数argc为整形参数,记下从命令行输入的参数的
个数;第二个参数argv是一个字符型的指针数组,它的每一个元素指向命令行输
入的参数字符数。在本例中argc的值为2,argv[O]指向字符串“exam”,argv[l]指向
参数字符串力23”。在main。函数中,while循环执行了3次,调用了3次fun()函
数;第一次调用了fun()函数时,定义了一个静态变量s并赋初值0,加1后作为函
数值返回,n的值为1;第二次调用fun()函数时,静态变量s的值将保留上一次退
出时的值1,再加1为2,作为函数值返回,n的值为2;同理第三次调用返回后,
n的值为3。输出心argc的值为6所以,A选项为所选。
43、下列属于不合法的main函数命令行参数表示形式的是()。
A、main(intargv,char*argc[])
B、main(intargv,char*argc)
C、main(intargv,char**arc)
D、main(intargc,char*argv[])
标准答案:2
知识点解析:main函数通常可用两个参数,参数名可由用户自定,但类型是固定
的,第一个参数必须是整型,第二个参数是一个指向字符型的指针数组的指针,可
以表示为**@冠或*&但4]。4个选项中只有选项B不符合。
44、设有如下定义:strucksk{inta;floatb;}data;int*p;若要使p指向data中的a
域,正确的赋值语句是()。
A、p=&a;
B、p=data.a;
C、p=&data.a;
D^*p=data.a;
标准答案:4
知识点解析:dala是一结构体变量,a是它的成员,因此引用a域的正确方法是:
data.a,取它的地址赋值给指针变量p的语句应该是:p=&data.an选项A将a的地
址直接赋给了p,而忽略了a为结构体内部的一个成员,不是一单独的变量,故选
项A不正确;选项B在p=data.a表达式中右边为一个结构体变量的成员不是地
址,而左边为一指针应该将一地址赋给它,故选项B不正确。选项D表达式
*p=data.a是将结构体变量中的成员a的值赋给指针p所指向的变量值,而不是使指
肝p指向data中的a域,故选项D不正确。
45、若有如下定义:structstu(charname[9];intage:floatscore:):structstu
class|10]={{”Li”,17,67},「'Song”』9,80},{?110”,18,79},{21^。”,16,69}};根据上面的
定义,若执行"printf("%s:%d%f",class[3].name,class[3].age,class[3].score);”则输出的
正确结果是()。
A、Song:19,80.000000
B、Zhao:16,69.000000
C、Li:17,67Song;19,80
D、guo:18,79Zhao;16,69
标准答案:2
知识点解析:(:屈410]是结构体型的数组,/§5[3]为{吆1^0”,16,69)。
46、下列描述正确的是()。
A、C语句能嵌套定义函数,但不可以嵌套调用函数
B、C语句不能嵌套定义函数,也不可以嵌套调用函数
C、C语句能嵌套定义函数,也可以嵌套调用函数
D、C语句不能嵌套定义函数,但可以嵌套调用函数
标准答案:8
知识点解析:C语句不能嵌套定义函数,但可以嵌套调用函数。
47、有如下程序段:inia=14,b=15,x;charc='A';x=(a&&b)&&(CV'B');执行该程
序段后,x的值为()。
A、1
B、0
C、FALSE
D、TRUE
标准答案:1
知识点解析,a=14,b=15,第一个&&两侧均为非零值vc=,A=表达式eV*'的
值为真即1,第二个&&两侧也均为非零值。表达式(a&&b)&&(cV,B,)的值为1,
赋值给变量X。
48、若有如下程序:intm=l;main(){intt=O,s=O;{intm=4;s+=m;)t+=m;
printf("%d,%d\n';s,t);}则程序运行后的输出结果是()°
A、1,1
B、1,4
C、4,1
D、4,4
标准答案:4
知识点解析:{intm=4;s+=m;}是复合语句,m=4,s+=m等价于s=s+m=0+4=4。
l+=m等价于t=t+m,这里m为全局变量,值为1,t=t+m=O+l=lo
49、执行下列程序时输入:123〈空格>456〈空格>789〈回车〉,输出结果是
()omain(){chars[100];intc,i;scanf("%c",&c);scanf("%d,,,&i);scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);)
A、1,456,789
B、1,23,456
C、1,23,456,789
D、123,456,789
标准答案:2
知识点解析:第一个输入语句只接收一个字符'1';第二个输入语句接收一个整数
23,遇到空格停止;第三个输入语句接收一个字符串“456”,遇到空格停止。
50、下面程序段的运行结果是()。chara|]="abcdefgh";char*p=a;p+=3;
printf("%d\n",strlen(slrcpy(p,HABCD")));
A、8
B、12
C、4
D、7
标准答案:4
知识点解析:p被定义为指针型变量,指向字符数组a的首地址。执行p+=3;指针
后移3位,指向dostrcpy(p,”ABCD”)将字符串“ABCD”(连同、0)复制到p所指向
的地址单元中,strlen。函数计算p所指向的字符串的长度,返回字符串中字符的个
数(不计返回值为字符串“ABCD”中字符的个数4o
四、公共基础填空题(本题共5题,每题7.0分,共5
分。)
51、设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。
标准答案:350
知识点解析:在任意二叉树中,叶子结点总比度为2的结点多一个。在完全二叉树
中,最多有一个度为1的结点。设一棵完全二叉树具有n个结点,若n为偶数,则
在该二叉树中有n/2个叶子结点以及n/2-l个度为2的结点,还有一个是度为1的
结点:若n为奇数,则在该二叉树中有n/2+l个叶子结点以及n/2个度为2的结
点,没有度为1的结点。根据题意,完全二叉树共有700个结点,700是偶数,所
以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有一个是度为1
的结点。所以,本题的正确答案为350。
52、在面向对象方法中,类之间共享属性和操作的机制称为【】。
标准答案:分类性
知识点解析:类是关于对象性质的描述,它包括一组数据属性和在数据上的一组合
法操作。类之间这种共享属性和操作的机制称为分类性。
53、源程序文档化要求程序应加注释。注释一般分为序言性注释和【】。
标准答案:功能性注释
知识点解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程
序的开头部分,它给出程序的整体说明;功能性注释的位置一般嵌在源程序体之中
户主要描述其后的语句或程序做什么。
54、一般来说,数据库的设计过程要经历3个大的阶段,即可行性分析与研究阶
段、系统设计阶段、设计实施与系统运行阶段。概念设计、逻辑结构设计、物理结
构设计属于数据库设计的【】阶段。
标准答案:系统设计
知识点解析:系统设计阶段是系统的具体设计过程,主要包括概念设计、逻辑结构
设计、物理结构设计3个步骤。这3个不同层次上的设计过程,是把实体以及相互
之间的联系转换为“数据”并落实于计算机中。
55、数据流图有两种典型的结构形式,它们分别是变换型和【】。
标准答案:事务型
知识点解析:数据流图中有众多的加工,但必有一个加工是起核心作用的,即中心
加工。由数据流图导出结构图的关键是找出中心加工。一般来说,中心加工有两种
存在形态,即数据流图的两种典型结构形式:变换型和事务型。
五、填空题(本题共12题,每题1.0分,共12分。)
56、若有语句:inti=-19,j=i%4;printf("%d\n”,j);则输出结果是[】。
标准答案:-3
知识点解析:%运算符是求两个数相除的余数,其结果与被除数的符号一致,本题
中“-19%4”的值为“-3”。
57、若有如下程序:#include"stdio.h"main(){chars[30];Strcpy(&S[0],"adc");
Strcpy(&S[l];'def);strcpy(&S[2],"gh,');;printf("%S\n",s);则程序运行后的输出结果
是【】。
标准答案:adgh
知识点解析:函数sircpy是字符串复制函数。第一次将“adc”复制到以&s[0]为起始
地址的存储空间中,第二次将”deF复制到以&s[l]为起始地址的存储空间中,“de”
将被覆盖,变为“adc『,第三次将“gh”复制到以&s[2]为起始地址的存储空间中,
将被覆盖,变为“adgh”。
58、以下程序运行后的输出结果是[1。main()(intp[7]{11,13,14,15,16,17,18);
inti=0,j=0;while。V7&&p[i]%2=l)j+=p[i++];printf("%d\nM,j);)
标准答案:24
知识点解析:本题主函数中首先定义了一个长度为7的数组,然后用一个whHe循
环引用数组的元素,当i大于7或者p[i]为偶数时,循环结束。显然当i=2时,
p[2]=14为偶数时,循环结束,此时j的值为j=p[0]+p[l]=24。
59、有以下程序main(){intn=0,m+l,X=2;if(!n)X-=l;if(m)X-=2;if(X)X-=3;
printf("%d\n",x);)执行后输出的结果是[]。
标准答案:-4
知识点解析:if-else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)
Sl(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,
若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行
else分结构(S2)。本题中,n=O,可以判断(!n)为真,执行“x=x-l=2-l=l;m=l",可
以判断(m)为真,执行、=乂-2=1・2=-1;”进而可以判断(乂)为真,执行x=x-3=-l・3=
40所以,最后输出为-4。
60、执行以卜程序后,输出#号的个数是[】。#include<studio.h>main(){inti,j;
for(i=l;iV5;i++)for(j=2;jV=i;j++)putchar('#');}
标准答案:6
知识点解析:本题中,i、j分别为外循环和内循环的循环控制变量,外层循环共执
行了4次。当i=l时,曰于内层循环判断条件(2<=1)为假不执行内层循环。当i=2
时,执行内层循环,输出一个#;当i=3时、内层循环循环两次,输出两个#:当
i=4时,内层循环循环3次,输出3个#。当i=5时,循环判断条件不成立,退出外
层循环。所以一共输出6个#。
61、函数sub的功能是根据下面近似分式求兀的值。
(兀*兀)/6=1+1/(2*2)+1/(3*3)+…+l/(n*n)现在请在下面的函数中填空,完成求兀值的
功能。#include"math.h"doublesub(longm){doublesum=0.0,t;longn;for(n=l;n<
=m;n++)sum+=[];t=sqrt(6*sum);rcturn(t);}
标准答案:1.0/(n*n)
知识点解析:sam中累加的值是l+l/(2*2)+l/(3*3)+…+1//(n*n),如果写为
l/(n*n),则会因为1和n都为整型,结果则为实型,将1变为1.0,结果则为实
型。
62,执行以下程序后sum的值是[]vmain(){inti,sum;for(i=l;i<6;i++)sum+=i;
printf("%d\n",sum);}
标准答案:15
知识点解析:程序的功能是求1、2、3、4、5的和即15。
63、下列程序的输出结果是[]ovoidfun(int*n)Iwhile((*n)-);printf("%d'\
++(*n));}main(){inta=1000;fun(&a);}
标准答案:0
知识点解析:while循环的条件为即当*n非零时执行循环,(河)一是先使用*n的值
再对*n减1,结束while循环后*n的值为-1。++(*n)是先对*n加1再使用*n的
值,-1+1=0,输出*n的值即输出0。
64、下面程序用来输出结构体变量a所占存储单元的字节数,请填空。main()
{structstu{charx[20|;floaty;)a;printf("asize:%d\n",sizeof([]));}
标准答案:d
知识点解析:d被定义为一个结构体类型变量,求结构体变量a所占存储单元的字
节数即sizeof(d)o
65、若有如下程序:main(){inta[][2]={1,2,6,9,11},(*t)[2];t=a;
printf("%d,%d\nH,*(t[l]+l),(*t)[1]);}则程序运行后输出的结果是【】。
标准答案:9,2
知识点解析:本题开始定义了一个int型二维数组a,并赋以5个初值,系统使数
组的最高维为3,并让a[0][0]=l,a[0][l]=2,a[l][0]=6,a[l][l]=9,a[2][0]=ll,
a[2|⑴因为初值不够而初始化为0。然后定义一个行指针I指向数组a的首地址,
因为表达式1[1]表示指向元素aUHOl的血型指针,U1]+1表示指向a[l]⑴的int型
指针,故返回的是的值9。而*t表示指向元素a[0]⑼的int型指针,
故(*。川返回的是的值2。所以正确答案应该为9,20
66、下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不
变,请填空。#include<stdio.h>main(){chara[]=,,labchmfye,,,t;inti,j;for(i=0;i<
7;i+=2)for(j=i+2;j<9;[])if([]){t=a[i];a[i]=a|j];a[j]=t;j++;)puts(a);
,,
printf("\n);)
标准答案:j++a[i]>a[j]^a[j]<a[i]
知识点解析:题目要求排序的元素是下标值为偶数的元素,外循环循环4次,1的
值分别为0、2、4、6,所以内循环也循环4次,i的值就应为2、4、6、8,在循环
体中已经有了对j加1的操作,因此for后括号中的语句应再对j加1,保证下标为
偶数。if语句的功能是如果后一个数比前一个数小则交换位置。
67、以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元
素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。
#defineM2#defineN4voidSumColumMin(inta[M][N],int*Sum){inti,j,k,s=O
for(i=0;i<N;i++){k=0;for(j=l;j<M;j++)if(a[k][i]>a[j][i])k=j;s+=[J;)[]
=s;)main(){intx[M][N]={3,2,5,l,4J»8,3)»s;SumColumMin([]);
printf("%d\n",s);}
标准答案:a[k][i]*sumx,&s
知识点解析:本题中定义了一个函数SumColumMin。,该函数有两个参数,第一
个参数为数组名,第二个参数为一个指针,用来访问存放数组中每列元素中最小值
的存储空间的变量。所以在主函数中调用SumColumMin。函数,应该将数组x和
sam作为实参传给SumColumMin。中的形参,故第19个空格处应该填x,&so在
SumColumMin。函数中用了两重循环,用N记录数组的列,M记录数组的行。内
循环共循环了M次,每循环一次将比较(当k=O时,a[k][i|第一行第一
列的值,然后将该值依次和第一列中的每个值比较,让ak][i]表示较小的值,那么
比较到最后一个元素后就是改列中最小元素的值),让k记录较小值元素的
行下标,这样通过M次循环得到每列中的最小元素,然后退出内循环,继续执行
该次外循环里的其他语句,即将刚求得第i列的最小值累加到s中,故第17
个空格处应该填最后外循环共循环N次,将每列的最小值累加到s中,退
出循环,然后让指针sum所指向的存储空间的值为s,故第18个空格处应该填
*SUIYlo
国家二级(C语言)笔试模拟试卷第2
套
一、公共基础选择题(本题共10题,每题7.0分,共
10分。)
1、对建立良好的程序设计风格,下列描述正确的是()。
A、程序应该简单、清晰、可读性好
B、符号名的命名只需要符合语法
C、充分考虑程序的执行效率
D、程序的注释可有可无
标准答案:A
知识点解析:“清晰第一,效率第二”,在考虑到程序的执行效率的同时,一定要保
证程序清晰、可读;对符号名的命名,除了要符合语法要求外,还要具有一定的含
义:程序的注释可以帮助程序员理解程序,不是可有可无的。
2、在以下术语中,与数据的逻辑结构无关的是_____。
A、线性结构
B、链式结构
C、树型结构
D、网状结构
标准答案:2
知识点露析:暂无解析
3、编码是指。
A、总体设计到详细设计的过程
B、用0、1代码改写详细设计的结果
C、用编程语言改写详细设计的结果
D、上述都不对
标准答案:4
知识点解析:所谓“编码”,是指把软件设计的结果用计算机系统可以理解的形式表
示出来。用于编码的程序设计语言可以是计算机系统能够直接理解的机器语言,也
可以是必须通过汇编、编译(或解释)才能为计算机系统所理解的汇编语言或高级语
言。
4、下列有关数据库的描述,正确的是()
A、数据库是一个DBF文件
B数据库是一个关系
C:数据库是一个结百化的数据集合
D、数据库是一组文件
标准答案:4
知识点解析:暂无解析
5、非空的循环单链表head的尾结点(由p所指向),满足()
A、p—>next==NULl
B、p==NULL
C、p->next=head
D、p=head
标准牝塞.4
知识之解析:暂无解析
6、索引属于o
A、模式
B、内模式
C、外模式
D、概念模式
标准答案:2
知识点解析:内模式(ImernalSchema)又称物理模式(PhysicalSchema),它给出了
数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及
hash等存取方式与存取路径。
7、在计算机中,算法是指o
A、查询方法
B、加工方法
C、解题方案的准确而完整的描述
D、排序方法
标准答案:4
知识点解析:计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特
征:可行性、确定性、有穷性和拥有足够的情报。
8、下列叙述中,不属于结构化分析方法的是o
A、面向数据流的结构化分析方法
B、面向数据结构的Jackson方法
C、面向数据结构的结构化数据系统开发方法
D、面向对象的分析方法
标准答案:8
知识点解析:常见的需求分析方法有结构化分析方法和面向对象的分析方法两类。
其中结构化分析方法又包括面向数据流的结构化分析方法(SA,Structured
analysis)>面向数据结构的Jackson方法(JSD,Jacksonsystemdevelopmentmethod)
和面向数据结构的结构叱数据系统开发方法(DSSD,Datastructuredsystem
developmentmethod)。
9、设计程序时,应采纳的原则之一是()。
A、程序的结构应有助于读者的理解
B、限制GOTO语句的使用
C、减少或取消注释行
D、程序越短越好
标准答案:
知识之解析:1程序设计的风格主要强调程序的简单、清晰和可理解性,以便读者理
解。程序滥用GOTO语句将使程序流程无规律,可读性差:添加注释行有利于对
程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越
好。
10、算法的空间复杂度是指0。
A、算法程序的长度
8、算法程序中的指令条数
C、算法程序所占的存储空间
D、算法执行过程中所需要的存储空间
标准答案:8
知识点解析:一个算法的空间复杂度,一般是指执行这个算法所需的存储空间。
个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存
储空间及算法执行过程中所需要的额外空间。
二、选择题(1分)(本题共〃题,每题1.0分,共〃
分。)
II、线性表常采用的两种存储结构是()。
A、散列方法和索引方式
B、链表存储结构和数组
C、顺序存储结构和链式存储结构
D、线性存储结构和非线性存储结构
标准答案:C
知识点解析:线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结
构。
12、以下关于long、int和short类型数据占用内存大小的叙述中正确的是
A、均占4个字节
B、根据数据的大小来决定所占内存的字节数
C、由用户自己定义
D、由C语言编译系统决定
标准答案:D
知识点解析:在ANSI标准中Jong、int和short分别占用4、2和2个字节。但实际
上对于某些C编译系统、int和short都占用4个字节,所以说各种类型数据占用内存
大小是由选择何种C编译系统决定的。
13、下列程序的输出结果是()。#includemain(){inta=2,b=3,p;P=f(a,b):
printf("%d",p);)intf(a,b){intc;if(a>b)c=l;elseif(a==b)c=O:elsec=-l;
return(c);)
A、-1
B、0
C、1
D、2
标准答案:A
知识点解析:本题考查if-clse语句。if为真则执行c=l,if为假则执行else中的条
件,不符合继续执行else。
14、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多
不超过10,则下列函数说明语句错误的是
A、intavg(int*a,intn);
intavg(inta[10],intn);
CNintavg(inta[],intn);
D、intavg(inta,intn);
标准答案:D
知识点解析:根据题意,函数的形参是整型数组和实参数组的元素个数,选项A的形
参是指向一维数组的指针和整型变量,符合要求;选项B的形参是整型数组和整型变
量,符合要求:选项C的形参整型数组省略了长度,也是允许的,实际上C语言编译器
在参数传递时并不会检查行参数组的长度,只是将实参数组的首元素地址传递给形
参数组名;选项D的形参没有数组,是错误的。
15、若变量a、i已正确定义,且i已正确赋值,合法的语句是o
A、a==l
B、++i;
C、a=a++=5:
D、a=int(i);
标准答案:2
知识点解析:选项D显然是错的,而选项A没有分号结束,不是C语句:a++=5
违反了赋值表达式左侧必须为一个变量(不能是常量或表达式)的规定。
16、下列说法错误的是
A、函数调用时,函数名必须与所调用的函数名字完全相同
B、实参的个数必须与形式参数的个数一致
C、实参可以是表达式,在类型上必须与形参一一对应匹配
D、C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)
标准答案:4
知识点解析:实参可以是表达式,在类型上应按位置与形参一一对应匹配。如果类
型不匹配,C编译程序按赋值兼容的规则进行转换。
17、下列if语句非法的是()
A^if(a=B)x=1;
B、if(!3.9)
C、if('a'&&x==y)y++;
D、if(x>y)scanf(n%f',&y)elsescanf("%f,&x);
标准答案:8
知识点解析:暂无解析
18、C语言中最简单的数据类型包括()
A、整型、实型、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年T/C染色布项目投资价值分析报告
- 2025年麻蓝纱线项目可行性研究报告
- 2025年高清液晶电视机项目可行性研究报告
- 2025年布绒填充玩具项目可行性研究报告
- 2025年五金塑胶电筒行业深度研究分析报告
- 2025年葡萄柚茶项目可行性研究报告
- 吸塑片材机行业市场发展及发展趋势与投资战略研究报告
- 2025至2030年中国香芋粒数据监测研究报告
- 《峨日朵雪峰之侧》教学设计 2024-2025学年统编版高中语文必修上册
- 2025年中国激光美容仪行业市场发展现状及投资方向研究报告
- 电力安全一把手讲安全课
- 小学三年级数学口算天天练-A4纸直接打印
- 2025年亿达商学院成立仪式及论坛经验总结(三篇)
- (2025)驾照C1证考试科目一必考题库及参考答案(包过版)
- 2025年湖南理工职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 罕见病诊治与病例管理制度
- 课题申报书:“四新”建设与创新创业人才培养基本范式研究
- 妇科常见急危重症护理
- 2024-2025学年陕西省宝鸡市高三上学期高考模拟检测(一)英语试题(含解析)
- 2025年企业的演讲稿例文(2篇)
- 人教版小学数学三年级下册第一单元位置与方向一单元测试
评论
0/150
提交评论