ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:28.87KB ,
资源ID:24655263      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24655263.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国计算机等级考试二级C语言真题库之选择题09.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全国计算机等级考试二级C语言真题库之选择题09.docx

1、全国计算机等级考试二级C语言真题库之选择题09全国计算机等级考试等级考试真题库之选择题(09)1.下列链表中,其逻辑结构属于非线性结构的是A) 二叉链表B) 循环链表C) 双向链表D) 带链的栈 参考答案:A【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属

2、于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 15B) 16C) 20D) 0或35 参考答案:D【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加,朝前移动。只不过当头尾指针指向向量上界时,其加操作的结果是指向向量的下界。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾

3、指针,故队空和队满时,头尾指针均相等。答案为D选项。3.下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈顶元素一定是最先入栈的元素C) 栈操作遵循先进后出的原则D) 以上说法均错误 参考答案:C【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或后进先出表,所以选择C。4.在关系数据库中,用来表示实体间联系的是A) 属性B) 二维表C) 网状结构D) 树状结构 参考答案:B【解析】关系模型实体间的联系采用二维表来表示,简称表。选项C为网状模型实

4、体间的联系,选项D为层次模型实体间的联系,选项A属性刻画了实体5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是A) 1:1联系B) m:1联系C) 1:m联系D) m:n联系 参考答案:C【解析】两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。6.A) 选择B) 投影C) 自然连接D) 并 参考答案:A【解析】由关系R到关系S为一元运算,排除C和D。关系S是关系R

5、的一部分,是通过选择之后的结果,因此选A。7.数据字典(DD) 所定义的对象都包含于A) 数据流图(DFD图) B) 程序流程图C) 软件结构图D) 方框图 参考答案:A【解析】在数据流图中,对所有元素都进行了命名,所有名字的定义集中起来就构成了数据字典。因此选A,而B,C,D都不符合。8.软件需求规格说明书的作用不包括A) 软件验收的依据B) 用户与开发人员对软件要做什么的共同理解C) 软件设计的依据D) 软件可行性研究的依据 参考答案:D【解析】软件需求规格说明书是需求分析阶段的最后成果,是软件开发的重要文档之一。软件需求规格说明书有以下几个方面的作用。便于用户、开发人员进行理解和交流,B

6、正确;反映出用户问题的结构,可以作为软件开发工作的基础和依据,C正确;作为确认测试和验收的依据,A正确。9.下面属于黑盒测试方法的是A) 语句覆盖B) 逻辑覆盖C) 边界值分析D) 路径覆盖 参考答案:C【解析】黑盒测试不关心程序内部的逻辑,只是根据程序的功能说明来设计测试用例。在使用黑盒测试法时,手头只需要有程序功能说明就可以了。黑盒测试法分等价类划分法、边界值分析法和错误推测法,答案为C。而A、B、D均为白盒测试方法。10.下面不属于软件设计阶段任务的是A) 软件总体设计B) 算法设计C) 制定软件确认测试计划D) 数据库设计 参考答案:C【解析】从技术观点上看,软件设计包括软件结构设计、

7、数据设计、接口设计、过程设计。所以A、B、D正确,C为软件测试阶段的任务。11.下列叙述中错误的是A) C程序可以由多个程序文件组成B) 一个C语言程序只能实现一种算法C) C程序可以由一个或多个函数组成D) 一个C函数可以单独作为一个C程序文件存在 参考答案:B【解析】一个C语言程序可以实现多种算法,可以由多个程序文件共同构成。一个C语言程序可以由一个或多个函数组成,一个C函数可以单独作为一个C程序文件存在,被包含到其他程序中所以选择B选项12.C语言源程序名的后缀是A) .CB) .exeC) .objD) .cp 参考答案:A【解析】C语言源程序名的后缀是.C,目标文件的扩展文件是.ob

8、j,可执行文件的扩展名是.exe13.以下选项中不能用作C程序合法常量的是A) 123B) 123C) 1,234D) x7D 参考答案:C【解析】C选项中不能含有逗号,所以1,234不能用作C程序的合法常量B选项中表示的是八进制的常量,D选项中表示的是十六进制的常量14.表达式 a+=a -= a=9 的值是A) 18B) -9C) 0D) 9 参考答案:C【解析】首先计算a=9,然后计算a-=9,即a=a-9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为015.若有定义语句: int x=12, y=8, z;在其后执行语句 z= 0.9+x/y;则z的值为A) 1B) 1.9

9、C) 2D) 2.4 参考答案:A【解析】先计算x/y,结果为1,然后计算0.9+1,结果为1.9,但由于变量z为整型,所以取值1,所以z的值为116.阅读以下程序 #include main() int case ; float printF; printf(请输入2个数:); scanf(%d %f,&case,&printF ); printf(%d %fn,case,printF );该程序在编译时产生错误,其出错原因是A) 定义语句出错,case是关键字,不能用作用户自定义标识符B) 定义语句出错,printF不能用作用户自定义标识符C) 定义语句无错,scanf不能作为输入函数使用

10、D) 定义语句无错,printf不能输出case的值 参考答案:A【解析】C语言中标识符的定义中区分大小写,所以printF与printf不一样,可以作为标识符。而case是C语言中的关键字,不能作为变量名scanf是标准的输入函数,printf是标准的输出函数,所以选择A选项17.有以下程序 #include main() char c1,c2,c3,c4,c5,c6; scanf(%c%c%c%c, &c1,&c2,&c3,&c4); c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(%c%cn,c5,c6); 程序运

11、行后,若从键盘输入(从第1列开始) 123 45678则输出结果是A) 1245B) 1256C) 1278D) 1267 参考答案:A【解析】Scanf按照格式字符进行输入,所以123与回车的值分别送入了c1c2c3c4变量的存储空间getchar()函数的功能是从键盘输入的字符串中读入一个字符,所以4送入了变量c5的存储空间,5送入了变量c6的存储空间所以打印时结果为124518.以下选项中,当x为大于1的奇数时,值为0的表达式是A) x/2B) x%2=0C) x%2!=0D) x%2=1 参考答案:B【解析】A选项的值为不定值,但绝对不是0算术运算符的优先级高于关系运算符的优先级,所以

12、当x为大于1的奇数时,B选项的值为假,即0C选项的值为真,即1D选项的值为真,即1选项B正确。19.以下选项中与 if(a=1)a=b; else a+;语句功能不同的switch语句是A) switch(a=1)case 0:a=b;break; case 1:a+;B) switch(a)case 1:a=b;break; default : a+;C) switch(a)default:a+;break; case 1:a=b; D) switch(a=1)case 1:a=b;break; case 0:a+; 参考答案:A【解析】if语句的含义是如果a的值为1,将b的值赋给a,否则将

13、a的值自增1Swich(a=1)中表达式a= =1的结果如果为真即为1,则从case1开始执行,直到遇到break语句跳出switch语句,如果a=1的结果如果为假即0,则从case0开始执行,所以与题干含义执行操作相反的是选项A中的语句20.若变量已正确定义,有以下程序段 i=0; do printf(%d,i); while( i+ ); printf(%dn,i);其输出结果是A) 0,1B) 0,0C) 1,1D) 程序进入无限循环 参考答案:A【解析】第一次首先先执行循环体打印i的值0,然后判断while的条件i+,先用后自增,所以判断时条件为假,跳出循环,但是仍执行了i的自增操作,

14、i的值为1在接下来的打印语句中进行打印21.有以下程序#include main() int a=1,b=2,c=3,d=0; if (a=1 & b+=2)if (b!=2|c-!=3)printf(%d,%d,%dn,a,b,c); else printf(%d,%d,%dn,a,b,c); else printf(%d,%d,%dn,a,b,c);程序运行后的输出结果是A) 1,3,2B) 1,3,3C) 1,2,3D) 3,2,1 参考答案:B【解析】else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执

15、行判断的结果为1,不再执行第二个case语句中的操作而是进入第二个if语句条件判断,因为b!=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c- !=3)c的值不变,也不再执行第一个else语句打印a的值1,b的值3,c的值322.有以下程序段 int i, n; for( i=0; i8; i+ ) n = rand( ) % 5; switch (n) case 1: case 3: printf(%d n, n); break; case 2: case 4: printf(%d n, n); continue; case 0: exit(0); printf

16、(%d n,n); 以下关于程序段执行情况的叙述,正确的是A) for循环语句固定执行8次B) 当产生的随机数n为4时结束循环操作C) 当产生的随机数n为1和2时不做任何操作D) 当产生的随机数n为0时结束程序运行 参考答案:D【解析】当产生的随机数为4时,对5取余结果为4,执行case4后面语句,见到continue结束本次循环,而非结束程序运行,所以B选项错误当产生的随机数为1时,执行case1后面的所有语句,直到遇到break语句跳出switch结构;当随机数为2时,执行case2后面的所有语句,直到遇到continue语句跳出本次循环,所以C选项错误由于循环体中含有exit(0)语句,

17、该语句的功能是终止程序的执行,所以不是固定执行8次,A选项错误23.有以下程序 #include int fun1( double a ) return (int)(a*=a); int fun2(double x, double y) double a=0,b=0; a=fun1( x ); b=fun1( y ); return (int)(a+b); main() double w; w=fun2(1.1,2.0); printf(%4.2f, w); 程序执行后输出结果是A) 0.0B) 5C) 5.21D) 5.00 参考答案:D【解析】题中变量w的定义为double型,函数fun2

18、()的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。因此D选项正确。24.设有定义语句 int (*f)(int); 则以下叙述正确的是A) f是基类型为int的指针变量B) f是指向函数的指针变量,该函数具有一个int类型的形参C) f是指向int类型一维数组的指针变量D) f是函数名,该函数的返回值是基类型为int类型的地址 参考答案:B【解析】int(*f)(int);为指向函数的指针变量的定义方法,其中f为指向函数的指针变量,第一个int为函数返回值类型,第二个int为函数的形参类型。因此B选项正确。25.有以下程序 #include void fun( i

19、nt *a,int *b) int *c; c=a;a=b;b=c; main() int x=3, y=5, *p=&x, *q=&y ; fun(p,q); printf(%d,%d,*p,*q); fun(&x,&y); printf(%d,%dn,*p,*q); 程序运行后的输出结果是A) 3,5,3,5B) 3,5,5,3C) 5,3,3,5D) 5,3,5,3 参考答案:A【解析】fun函数的功能是交换形式参数的值,即交换指针变量a和b的值,但是fun函数并不能够交换实参的值,因此fun(p,q)不能交换p和q的值,所以第一个printf语句的输出为3,5。第二个fun函数对x和y

20、的地址进行了操作,同样不能交换x和y的值,并不能影响p和q指针指向的数据,因此第二个printf语句的输出也是3,5。因此A选项正确。26.若有定义: int w35; 则以下不能正确表示该数组元素的表达式是A) *(&w00+1)B) *(*w+3)C) *(*(w+1)D) *(w+1)4 参考答案:D【解析】A选项中*(&w00+1)表示w01;B选项中*(*w+3) 表示w03;C选项中*(*(w+1) 表示w01;而D选项中*(w+1)4的正确写法是(*w+1)4,表示w14;因此选择D选项。27.有以下程序 #include void f(int b) int i; for (i=

21、2; i6; i+) bi *= 2; main() int a10=1,2,3,4,5,6,7,8,9,10, i; f(a); for (i=0; i10; i+) printf(%d, ai); 程序运行后的输出结果是A) 1,2,3,4,5,6,7,8,9,10,B) 1,2,6,8,10,12,7,8,9,10,C) 1,2,3,4,10,12,14,16,9,10,D) 1,2,6,8,10,12,14,16,9,10, 参考答案:B【解析】数组名是常量,表示的是数组首元素的地址。当执行f(a)的时候,由于传递的是首地址,相当于直接对数组a进行操作,所以从数组a的第三个元素a2到元

22、素a5,每个元素值扩大两倍。因此B选项正确。28.有以下程序 #include int fun( char s) int n=0; while(*s =0) n=10*n+*s-0 ; s+; return (n); main() char s10= 6, 1, *, 4, *, 9, *, 0, *; printf(%dn,fun(s); 程序的运行结果是A) 5B) 9C) 61D) 61490 参考答案:C【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向

23、数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。因此C选项正确。29.若要求从键盘读入含有空格字符的字符串,应使用函数A) getchar()B) getc()C) gets()D) scanf() 参考答案:C【解析】scanf ( )语句中用空格间隔不同的字符串,空格将被全部忽略掉,所以用scanf()函数不能输入空格;getchar()函数用于输入字符,其调用格式为:ch=getchar(),getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键时,读入才开始执行。gets()

24、函数的调用形式为:gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=getc(pf)其中pf是文件指针,函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。因此C选项正确。30.设有如下程序段 #include char s20=Beijing, *p; p=s;则执行p=s;语句后,以下叙述正确的是A) s和p都是指针变量B) s数组中元素的个数和p所指字符串长度相等C) 可以用*p表示s0D

25、) 数组s中的内容和指针变量p中的内容相同 参考答案:C【解析】程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,执行p=s;语句后,*p即表示s0;s数组中元素的个数和 p所指字符串长度不相等,因为s数组中元素的个数包括字符串结束标志0,而p所指字符串长度不包括0;s是字符型数组,p是指针变量;数组s中的内容和指针变量p中的内容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址。因此C选项正确。31.有以下程序 #include main() char s=abcde; s+=2; printf(%dn,s0); 执行后的结果是A) 输出字符c的ASCII码B) 程序出

26、错C) 输出字符cD) 输出字符a的ASCII码 参考答案:B【解析】本题重点考察数组名的概念。在C语言中,数组名类似于一个指向数组首地址的指针常量,一旦定义就不能修改其内容。所以本题中的s+=2;语句让数组名s的内容加2是错误的,编译无法通过。因此B选项正确。32.有以下程序 #include #include void fun(char *s, int n) char *t; int i, j; for (i=0; in-1; i+) for (j=i+1; j strlen(sj) t = si; si = sj; sj = t; main() char *ss=bcc,bbcc,xy,

27、 aaaacc, aabcc; fun(ss, 5); printf(%s,%sn, ss0,ss4); 程序的运行结果是A) aaaacc,xyB) xy,aaaaccC) bcc,aabccD) aabcc,bcc 参考答案:B【解析】函数fun(char s ,int n)的功能是对字符串数组的元素按照字符串的长度从小到大排序,在主函数中执行fun(ss,5)语句后,*ss=xy,bcc,bbcc,aabcc,aaaacc,ss0,ss4的输出结果为xy,aaaacc。因此B选项正确。33.有以下程序 #include int a=4; int f(int n) int t = 0; s

28、tatic int a=5; if (n%2) int a=6; t += a+; else int a=7; t += a+; return t + a+; main() int s=a, i=0; for (; i2;i+) s += f(i); printf(%dn, s); 程序运行后的输出结果是A) 36B) 24C) 32D) 28 参考答案:D【解析】在主函数main()中定义了两个变量s和i,同时给s赋初值。a4,i赋初值0。当i=0时。执行s+f(i);语句,调用f()并将i的初值 0传递给形参n。首先执行if语句中内条件:n%2,若条件为假。则执行else下的语句,a7,t7+07,使用return返回t,t7+(a+)7+512,此时a运算完后自增1,变为6;返回主函数中,s4+1216。当i=1时,执行s+=f(i);语句,调用f()并将i的初值1传递给形参n。首先执行if语句中的条件:n%2,条件为真,执行if下面的语句,t0,a6 t0+66,使用return返回t,t=6+

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1