


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二级C语言真题2017年09月-(2)(总分:100.00,做题时间:90分钟)1. 一、选择题(总题数:40,分数:40.00)下列叙述中错误的是。(分数:1.00)A. 向量是线性结构B. 非空线性结构中只有一个根节点没有前件C. 非空线性结构中只有一个终节点没有后件只有一个根节点和一个叶子节点的结构必定是线性结构V解析:解析向量也是一种线性结构。非空线性结构中只有根节点无前件,只有终端节点无后件,其他所有节点只有一个前件也只有一个后件。二叉树可以只有一个根节点和一个叶子节点,但二叉树是非线性结构。故答案为D选项。2. 设顺序表的长度为40,对该表进行冒泡排序。在最坏情况下需要的比较次数为
2、。(分数:1.00)A. 820B. 780VC. 4041解析:解析冒泡排序在最坏情况下,对长度为n的线性表排序,需要经过n/2遍的从前住后的扫描和n/2遍的从后住前的扫描,需要比较的次数为n(n-1)/2。本题中为40X(40-1)+2=78d故答案为B选项。3. 设二叉树的前序序列为ABDEGHCFIJ中序序歹U为DBGEHACIFJ则后序序列为。(分数:1.00)A. DGHEBIJFCAVB. JIHGFEDCBAC. GHIJDEFBCAABCDEFGHIJ解析:解析二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右
3、子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。二叉树的前序遍历序列为ABDEGHCFIJ中序序列为DBGEHACIFJ可知该树A为根节点,右子树节点为CFIJ,左子树节点为BDEGH则后序序列为DGHEBIJFCA故A选项正确。4. 设表的长度为n。在下列算法中,最坏情况下时间复杂度最高的是。(分数:1.00)A. 堆排序B. 希尔排序VC. 有序链表查找循环链表中寻找最大项解析:解析最坏情况下,希尔排序所需要比较次数为n1.5,循环链表中寻找最大项需要n-1次,有序链表查找需要n次,堆排序次数为nlog2n。因此希尔排序复杂度最高。故答案为B选项。5. 数据流图(DFD
4、)中的有向箭头(r)表示。(分数:1.00)A. 控制流B. 数据流VC. 输入流输出流解析:解析数据流图(DFD)中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。故答案为B选项。6. 下面不属于结构化程序设计风格的是。(分数:1.00)A. 程序结构良好B. 程序的易读性C. 不滥用goto语句程序的执行效率V解析:解析良好的程序设计风格可以使程序结构清晰合理,程序代码便于维护。按结构化程序设计方法设计出的程序具有程序易于理解、使用和维护。可见结构化程序设计风格强调的是易读性。结构化程序设计的重要原则是自顶向下、逐步求精、模块化及限制使用goto语句。故答案
5、为D选项。7. 软件测试的目的是。(分数:1.00)A. 避免程序中的错误B. 修改程序中的错误C. 发现程序中的错误V发现和修改程序中的错误解析:解析软件测试就是在软件投入运行之前,尽可能多地发现软件中的错误。故答案为C选项。8. 能够减少相同数据重复存储的是。(分数:1.00)A. 记录B. 字段C. 文件数据库V解析:解析数据库系统具有高共享性和低冗余性,不仅减少了不必要的存储空间,更为重要的是可能避免数据的不一致性。故答案为D选项。9. 数据库管理系统(DBMS是。(分数:1.00)A. 系统软件VB. 硬件系统C. 一个完整的数据库应用系统既包括硬件也包括软件的系统解析:解析数据库管
6、理系统(DBMS是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。故答案为A选项。10. 在关系模式A(S,SN,D)和B(D,CNNM冲,关系A的主键是S,关系B的主键是D,则属性D在关系A中称为。(分数:1.00)A. 超键B. 主键C. 候选键外键V解析:解析候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。若表M中的某属性集是表N的候选键或者主键,则称该属性集为表M的外键(码)。本题中关系A中的属性D是关系B的主键,那么属性D是关系A的外键(码)。故答案为D选项。11.
7、 以下叙述正确的是。(分数:1.00)A. C程序的执行是从源文件的开头,一行一行向下执行,每行都会被执行到B. 对于只包含表达式语句的程序段,执行顺序与书写顺序一致VC. C程序的执行一定是从主函数开始,从主函数结束每个C源文件都应当有一个主函数解析:解析C语言程序的执行是从main()函数开始的,但不一定在main()函数结束,在任何其他地方可以调用exit()函数结束程序的运行,选项A、C叙述错误;对于只包含表达式语句的程序段,执行顺序与书写顺序一致,选项B叙述正确;每个C语言程序都有且只有一个主函数,选项D叙述错误。故本题答案为B选项。12. 以下选项中不是C语言数据类型的是o(分数:
8、1.00)A. intB. floatC. charstringV解析:解析C语言的数据类型包括基本数据类型,即整型int、实型float和double、字符类型char等。string是C+冲的数据类型,不属于C语言的数据类型。故本题答案为D选项。13. 若有如下定义和语句:doublex=1.5;x+;则以下叙述中正确的是。(分数:1.00)A. 变量x经自增1运算后的值是2.5VB. x是实型变量,不可以做自增1运算C. 变量x经自增1运算后的值是1.6变量x经自增1运算后的值是2.0解析:解析C语言中自增自减运算符的运算对象可以是整型、实型、字符型、枚举型,作用就是对运算数进行自增1或
9、自减1,本题中的例子是将double类型的变量x自增1,自增后x的值为2.5。故本题答案为A选项。14. 若有程序段:inta,b;chard;scanf("%d%c%d”,&a,&d,&b);若想把12输入给变量a,字符”k”输入给变量d,34输入给变量b,程序运行时正确的输入是。(分数:1.00)A. 12”k”34B. 12k34C. 12k34V12”k”34解析:解析在本题中,scanf()函数的格式字符串有3个格式字符“d%c%d,它们之间没有任何间隔符,输入的数据顺序也应该是整数、字符、整数且之间不能有任何间隔符,所以选项AB、D错误。故本题答案
10、为C选项。15. 以下不能定义为用户标识符的是。(分数:1.00)A. sizeofVB. MainC. _int解析:解析C语言的标识符是由字母、数字、下划线构成的字符序列,必须以字母或下划线开头;它分为关键字、预定义标识符和用户标识符,其中关键字是C语言定义的留着特殊用处的标识符,用户标识符是用户根据需要自己定义的标识符。用户标识符不能是关键字,选项A是关键字,不能定义为用户标识符;选项B中,Main不同于main,可以作为用户标识符;选项C的下划线满足用户标识符的要求;选项D中,_int以下划线开头,也满足用户标识符的要求。故本题答案为A选项。16. 以下说法正确的是。(分数:1.00)
11、A. C语言中的常量是指在程序运行过程中经常被改变数据类型的量B. C语言中的常量是指在程序运行过程中经常被改变值的量C. C语言中的常量是指在程序运行过程中经常被用到的变量C语言中的常量是指在程序运行过程中其值不能被改变的量V解析:解析C语言中的常量是指在程序运行过程中其值不能被改变的量,所以本题答案是D选项。17. 有以下程序:#include<stdio.h>main()(inti,x,k=0,m;for(i=0;iv5;i+)(scanf("%d”,&x);x/=10;switch(x)(case0:case1:case2:k+;m=1;default:k
12、+;m=2;case3:k+;m=3;case4:k+;m=4;printf("%d,%d",k,m);程序运行时输入:35205240106回车,则输出结果是。(分数:1.00)A. 5,2B. 13,4VC. 15,25,4解析:解析程序中k的初值为0,for循环每次输入一个整数赋给x,然后执行x/=10,x除以10后赋给自身,switch语句判断x的值,执行不同的case语句。当输入“35205240106v回车”时,i=0,x=35,x/=10结果x=3,执行case3,k=1,m=3由于没有break语句,接着会执行case4,k=2,m=4;i=1,x=20,x
13、/=10结果x=2,执行case2,k=3,m=1;再执行default:k=4,m=2再执行case3:k=5,m=3再执行case4:k=6,m=4i=2,x=52,x/=10结果x=5,执行default:k=7,m=Z再执行case3:k=8,m=3再执行case4:k=9,m=4;i=3,x=40,x/10结果x=4,执行case4:k=10,m=4;i=4,x=106,x/10结果x=10,执行default:k=11,m=Z再执行case3:k=12,m=3再执行case4:k=13,m=4;最终程序输出:13,4。故本题答案为B选项。18. 有如下程序:#include<
14、stdio.h>main()(inti;for(i=0;iv3;i+)putchar("K"-i);程序运行后的输出结果是。(分数:1.00)A. 012B. KLMC. LMNKJIV解析:解析字母字符的ASCII码是按字母顺序递增的,程序中i=0时,"K"-0结果为"K”,输出"K"i=1时,"K"-1结果为"J”,输出”J”;i=2时,"K"-2结果为"I”,输出”I”。故本题答案为D选项。19. 对于循环语句:for(i=0;i<=10;i+)(
15、;下面各选项中叙述错误的是。(分数:1.00)A. 省略i+,可引起无限循环B. 省略i<=10,可引起无限循环C. 省略i=0,可引起无限循环V圆括号()内三个表达式都省略,可引起无限循环解析:解析在本题中,for循环的第一个表达式i=0对循环变量i赋初值0,第二个表达式iv=10是判断循环条件是否满足,第三个表达式i+是控制循环变量i,完成i的自增运算。若省略i+;那么i的值永远等于0,iv=10永远满足,循环无限执行,选项A正确;若省略iv=10,没有了循环条件,循环无限执行,选项B正确;若3个表达式都省略,同样没有循环条件,也可引起无限循环,选项D正确;若省略i=0,那么i会有一
16、个未知的值,若i的未知值小于10,那么经过n轮循环,i自增n后,i的值就会大于10,导致循环终止,所以省略i=0可能不会引起无限循环,选项C错误。故本题答案为C选项。20. 有以下程序:#include<stdio.h>main()(inti=0,j=0,x=0;while(i<2)(x+;for(;jv=3;j+)(if(j%2)continue;x+;x+;i+;printf("x=%d/n",x);程序运行后的输出结果是。(分数:1.00)A. x=5B. x=4C. x=6Vx=8解析:解析i、j、x初值为0,while循环中首先将x自增1,然后f
17、or循环判断j的值,若j的值为2的倍数,那么x又自增1,否则进入下一轮for循环,for循环结束后再将x、i自增1。当i=0时,x+后x的值为1,此时j=0、2都会执行x+,x的值为3;for循环执行完毕后j的值为4,再执行x+,x的值为4;i=1时,x+后x的值为5,此时j的值为4,for循环不会执行,再执行x+后x的值为6。故本题答案为C选项。21. 以下叙述中错误的是。(分数:1.00)A. while语句的循环体至少会被执行一次VB. break语句只能在循环体内和switch语句体内使用C. 执行continue语句时将跳过本次循环体中余下尚未执行的语句在C语言中有3种可以构成循环结
18、构的循环语句:while、dc-while和for解析:解析while语句的循环体可能一次都不会执行,do.while语句的循环体至少会执行一次,选项A叙述错误;break语句是跳出当前的语句块,只能在循环体内和switch语句体内使用,选项B叙述正确;执行continue语句时将跳过本次循环体中余下尚未执行的语句,选项C叙述正确;在C语言中有3种可以构成循环结构的循环语句:while、do.while和for,选项D叙述正确。故本题答案为A选项。22. 有下列程序:#include<stdio.h>main()inta=7,i;for(i=1;i<=3;i+)if(a>
19、;13)break;if(a%2)a+=3;continue;a=a+4;printf("%d,%d",i,a);程序执行后的输出结果是。(分数:1.00)A. 3,18B. 3,14VC. 4,182,10解析:解析程序中,a的初值为乙for循环中判断a的值,若a的值大于13,那么执行break语句;若a%2为1,a自增3后执行continue语句;最后将a自增4;i=1时,a=7,a>13为假,不执行break语句;a%2为1,a自增3,a的值为10,执行continue语句;i=2时,a=10,a>13为假,不执行break语句;a%2为0,执行a=a+4
20、,a自增后值为14;i=3时,a=14,a>13为真,执行break语句;输出i的值为3,a的值为14。故本题答案为B选项。23. 有如下程序:#include<stdio.h>voidchange(int*array,intlen)for(;len>=0;len-)arraylen+=2;main()inti,array6=1,2,3;change(array,5);for(i=0;iv5;i+)printf("%d,”,arrayi);程序运行后的输出结果是。(分数:1.00)A. 1,2,0,0,0,B. 3,4,5,6,7,C. 2,3,4,5,6,3
21、,4,5,2,2,V解析:解析change()函数接收一个数组array和整数len,通过for循环逆序遍历数组array中的前len+1个元素,然后将每个元素的值自增2;main()函数定义并初始化一个数组array,它包含6个元素,分别是1,2,3,0,0,0;然后将array和5传给change()函数,所以通过change()函数的调用,array中的元素值分别是3,4,5,2,2,2。故本题答案为D选项。24. 有以下程序:#include<stdio.h>intf1(inta)returna*3;intf2(int*b)return*b*5;main()intx=3,y
22、=5;printf("%d,%d/n”,f1(x),f2(&y);程序的运行结果是。(分数:1.00)A. 9,125B. 9,25VC. 3,153,45解析:解析f1()函数接收整型数a,将a的值乘以3,结果作为函数返回值返回;f2()接收整型变量的地址,将地址中的值取出后乘以5,结果作为返回值返回;main()函数定义两个变量x、y,初值分别是3和5,所以调用f1(x)返回值为9,调用f2(&y)返回值是25。故本题答案为B选项。设有定义:inta10,*p=a,k;以下为数组a的10个元素依次读入数据的程序段中错误的是。(分数:1.00)A. for(k=0;
23、kv10;k+)scanf("%d”,p+);B. for(k=0;kv10;k+)scanf("%d”,a+k);C. for(k=0;kv10;k+)scanf("%d”,a+);Vfor(;p-a<10;p+)scanf("%d”,p);解析:解析本题定义了一个整型数组a,它包含10个整型元素,另外定义一个整型指针p,将数组a的首地址赋给p。选项C中,a+是错误的,因为a是数组名,它是一个常量,不能执行自增运算。选项AB、D都可以对数组a的10个元素完成赋值。故本题答案为C选项。25. 有下列程序:#include<stdio.h>
24、;voidfun(inta,intn,intflag)inti=0,j,t;for(i=0;ivn-1;i+)for(j=i+1;j<n;j+)if(flag(aivaj):(ai>aj)t=ai;ai=aj;aj=t;main()intc10=7,9,10,8,3,5,1,6,2,4,i;fun(c,10,1);fun(c,5,0);for(i=0;iv10;i+)printf("%d,",ci);程序执行后的输出结果是(分数:1.00)A. 5,4,3,2,1,6,7,8,9,10,B. 6,7,8,9,10,5,4,3,2,1,C. 6,7,8,9,10,
25、1,2,3,4,5,10,9,8,7,6,1,2,3,4,5,解析:解析在本题中,fun()函数接收数组a,数组元素个数n以及整型变量flag,然后通过for循环遍历数组a的n个元素,若flag为1,则将数组元素降序排列;若flag为0,则将数组元素升序排列。main()函数定义整型数组c,它包含10个元素,首先将数组c、元素个数10和1传给fun()函数,将c中10个元素逆序排列,结果为:10,9,8,7,6,5,4,3,2,1;然后再次调用fun()函数,将数组c、元素个数5和0传给fun()函数,将c中前5个元素升序排列,结果为:6,7,8,9,10,5,4,3,2,1。故本题答案为B选
26、项。若函数fun定义如下fun(void)doubled;longt=rand();d=t*0.618;returnd;则函数返回值的类型是(分数:1.00)A. voidB. doubleC. intVlong解析:解析fun()函数中,使用rand()函数生成一个随机无符号整数,然后该无符号整数自动转换为long类型赋给t;然后计算t与0.618的乘积,先将long自动转换为double类型再运算,结果赋给d。当函数的返回类型为int类型时,可以省略函数的返回类型,由于fun()函数定义时,返回类型省略了,可知fun()函数的返回值是int类型。综上所述,返回值d自动转换为int类型。故本
27、题答案为C选项。26. 运算符内的数据类型只能是。(分数:1.00)A. int和charVB. floatC. doublechar解析:解析运算符中必须是整型数,选项B、C错误;另外char类型可以作为整数,所以选项A正确;选项D中没有int类型。故本题答案为A选项。27. 若有定义语句:intx3=1,2,3,4,5,6;,则以下选项中与该语句等价的是。(分数:1.00)A. intx3=1,2,3,4,5,6;B. intx3=1,2,3,4,5,6;C. intx3=1,2,3,4,5,6;intx3=1,2,3,4,5,6;V解析:解析二维数组初始化时,可以省略第一维的大小,但是不
28、能省略第二维大小,这是由编译器原理限制的。事实上,编译器是这样处理数组的:设有数组intamn,如果要访问aij的值,编译器的寻址方式为:&aij=&a00+i*sizeof(int)*n+j*sizeof(int);(注意n为第二维的维数),所以第一维大小可以省略,第二维大小不可以省略。当定义并初始化二维数组省略第一维大小时,第一维的大小按以下规则决定:(1)当初值的大小能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,则第一维的大小等于所得的商数+1。本题中,二维数组a的初始值个数为6,第二维大小为3,所以第二维大小
29、为2(6/3),所以a中包含两个元素,每个元素又是一个包含3个元素的数组,和选项D等价。故本题答案为D选项。28. 有以下程序:#include<stdio.h>#include<string.h>main()charstr10="One”,"Three”,"Five",*p=str0;printf("%s,",p+10);printf("%d/n",strlen(p+=10);执行后的输出结果是。(分数:1.00)A. Three,4B. 出错C. Three,5VFive,5解析:解析本
30、题中定义一个二维字符数组str,它包含3个字符串,每个字符串存放在一个长度为10的一维数组中,指针变量p指向strp0,即第一个字符串"Ong,由于"Ong存放在长度为10的一维数组,p+10指向下一个字符串"Three”,长度为5。故本题答案为C选项。29. 有以下程序:#include<stdio.h>main()chara510="China","beijing","very","welcome","you"char*p5;inti;for(i=3
31、;iv5;i+)pi=*(a+i);printf("%s",pi);printf("%c",*pi);程序执行后的输出结果是。(分数:1.00)A. wwyyB. ChinaCbeijingbC. veryvwelcomewwelcomewyouyV解析:解析本题中定义一个二维字符数组a,它包含5个字符串,每个字符串存放在一个长度为10的一维数组中,指针数组p包含5个字符指针元素;for循环中,每次将*(a+i)赋给pi,再输出pi和*pi;由于*(a+i)等价于ai,每次都是将下标为i的字符串首地址赋给pi,再输出该字符串和该字符串的首字符。i=3时,
32、输出字符串"welcome',输出字符”w”;i=4时,输出字符串“you”,输出字符”y”,综上输出结果为:"welcomewyouy。故本题答案为D选项。30. 有如下程序:#include<stdio.h>#include<string.h>main()chara=”THIS/0”,*b=”OK/0/0”;printf(”d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b);)程序运行后的输出结果是(分数:1.00)A.4,62,4B.4,44,1C.652,1D.642,4解析:解析s
33、trlen()函数求得参数中字符串的长度(不包括字符串结束符”/0”),sizeof()运算符求得参数这种类型所占存储空间的长度。题意中a是数组名,由于定义时省略维数大小,数组大小是初始化的字符个数,a的数组大小为6。综上所述,strlen(a)只计算字符"T"、"H”、"I”、"S”,结果为4;sizeof(a)是求得数组a的大小,结果为6;另外指针b指向一个字符串"OK/0/0”,所以strlen(b)只计算字符”0”、”K”,结果为2;sizeof(b)求得指针占用存储空间的大小,结果为4。故本题答案为A选项。31. 有以下程序
34、:#include<stdio.h>main()(charca35=”A”,”BB”,”CCC”;char*pa3=”a”,”bb”,”ccc”;printf("d,%d/n”,sizeof(ca0),sizeof(pa0);程序的运行结果是。(分数:1.00)A. 7,4B. 3,5C. 5,4V2,2解析:解析sizeof()运算符的功能是计算参数这种类型所占存储空间的长度。题意中首先定义二维字符数组ca,它包含3个字符串,它们分别存放在3个长度为5的一维数组中;还定义一个字符指针数组pa,它包含3个字符指针,分别指向3个字符串。ca0相当于ca中第1个数组的数组名,
35、使用sizeof()可以计算该数组的长度是5;pa0是一个字符指针类型,sizeof()求得指针类型的长度是4;程序输出结果为5,4。故本题答案为C选项。32. 有如下程序:#include<stdio.h>#include<string.h>main()char*str="0/n0123/4":printf(”%d”,strlen(str);程序运行后的输出结果是。(分数:1.00)A. 3B. 6C. 87V解析:解析strlen()函数求得参数中字符串的长度(不包括字符串结束符”/0”)。程序定义一个字符指针变量str,并使用字符串“0/n01
36、23/4”初始化,然后将str传给strlen()函数,用strlen()函数计算该字符串的长度,该字符串中的字符分别是:”0”、”/n”、”0”、”1”、”2”、”3”、”/4”、"/0”。其中”/4”表示菱形符号”。除了”/0”,其他字符都属于strlen()函数的计算字符,结果为7。故本题答案为D选项。33. 有以下程序:#include<stdio.h>inta5=7,10,3;intn=3;int*p=a;voidmain()inti;inta2=1,0;for(i=0;ai;i+)printf("%4d”,ai);for(i=0;ai;i+)inta
37、3=100,200,300;printf("%4d”,ai);printf("/n");程序的运行结果是。(分数:1.00)A. 1100VB. 10100200300C. 11002003001100200解析:解析在本题中,语句inta5=7,10,3中的数组a是全局变量,作用域是整个程序,我们假设它为a5。main()函数中语句inta2=1,0的数组a是局部变量,作用域是整个main()函数,我们假设它为a2ofor循环中inta3=100,200,300的数组a也是局部变量,作用域是第二个for循环的循环体,我们称它为a3o第一个for循环中,a2屏蔽了
38、全局变量a5,所以输出的是a2的元素,且由于a1=0,当i=1时,循环条件ai为假,仅输出第一个元素1。第二个for循环的循环条件ai也是a2中的元素,当i=0时,a0=1,循环条件为真,且循环体内的a3屏蔽了a2和a5,所以输出的是a3中的第一个元素100;当i=1时,循环条件a1=0,循环不执行,最后输出换行符,本题运行结果为:1100。故本题答案为A选项。34. 有以下程序:#include<stdio.h>voidmain()charch7="43ab21"inti,s=0;for(i=0;chi>="0"&&c
39、hi<="9"i+=2)s=10*s+chi-"0"printf("%d/n",s);程序运行后的输出结果是。(分数:1.00)A. 48B. 12ba34C. 43214V解析:解析main()函数定义一个字符数组ch,并使用字符串初始化,for循环从ch下标为0的字符开始,遍历所有下标为偶数的字符,由循环条件chi>="0"&&chi<="9”可知,若当前的字符是数字字符,那么执行循环体,否则终止循环。循环体中,将当前字符的ASCII码与"0"的A
40、SCII码相减,与s的10倍相加重新赋给s,所以当i=0时,ch0是"4”,满足循环条件,执行循环体,s=4;当i=2时,ch2是"a”,不满足循环条件,循环终止,输出s的值。故本题答案为D选项。35. 有以下程序:#include<stdio.h>main()(intx=3,y=5,z1,z2;z1=xAy;z2=x+y;printf("%d,%d/n”,z1,z2);)程序执行后的输出结果是。(分数:1.00)A. 9,8B. 8,8C. 35,86,8V解析:解析%”是异或运算符,两个运算数的二进制位逐位进行异或运算,当相应位的数值相同时,结果为
41、0,当相应位的数值不同时,结果为1。题意中,x=3,二进制位00000011,y=5,二进制为00000101,异或运算后的二进制数为:00000110,所以z1的结果为6;z2=x+y,结果为8。故本题答案为D选项。36. 有以下程序:#defineOut(n)n%2=0"%c":"%d"#include<stdio.h>main()(intx;for(x=65;x<69;x+)printf(Out(x),x);)程序的运行结果是。(分数:1.00)A. 65867DVB. A66C68C. 65666768ABCD解析:解析题意中O
42、ut(n)是一个带参数的宏定义,所以main()函数中printf()函数宏替换后如下:printf(x%2=0?"%c":"%d",x);所以当x的值为奇数时,条件表达式的结果为“d,将x按十进制形式输出;当x的值为偶数时,条件表达式的结果为“c,将x按字符形式输出。x=65时,输出65;x=66时,输出ASCII码为66的字符,即"B"x=67时,输出67;x=68时,输出ASCII码为68的字符,即”D”;综上所述,输出结果为:65867D。故本题答案为A选项。37. 有如下程序:#include<stdio.h>s
43、treetperson(charName10;intAge;);main()(structpersonroom4="Zun”,11,"Liu”,10,"He”,12,"Zhao”,13;printf("%s:%d",(room+3)->Name,(room+1)->Age);程序运行后的输出结果是。(分数:1.00)A. Liu:10B. Zun:12C. Zhao:10VHe:11解析:解析程序定义一个person类型的结构体,该类型包含两个成员:字符数组Name整型数Age。main()函数中使用结构体类型person
44、定义了room数组,它包含4个person类型的元素,并完成了初始化,所以(room+3)->Name价于room3.Name,(room+1)->Age等价于room1.Age!,程序输出结果为:Zhao:10。故本题答案为C选项。有如下代码#include<stdio.h>structnodecharid;structnode*next;a="A",b="B",c="C",*p=&a,*pt;main()p->next=&b:p=p->next;p->next=&c
45、;p=p->next;p->next=NULL;p=&a;若代码经运行后形成下图所示的数据结构:则以下可以删除中间节点b的正确选项是o(分数:1.00)A. pt=p->next;p->next=p->next->next;free(pt);VB. pt=p->next;p->next=p->next->next->next;free(pt);C. pt=&b;free(pt);pt=&b;p->next=p->next->next->next;free(pt);解析:解析在本题中
46、,a、b、c三个节点都是node类型,它们都有两个成员:字符成员id,node指针成员next。由于a的next指向b,b的next指向c,a、b、c构成了链表。要想删除b节点,只需要将a节点的next(p->next)指向c(p->next->next),然后将节点b的存储空间释放即可,所以删除b节点的语句如下:pt=p->next;p->next=p->next->next;free(pt);故本题答案为A选项。41, 二、程序填空题(总题数:1,分数:18.00)下列给定程序中,函数fun的功能是:将S所指字符串中的所有数字字符移到所有非数字字符
47、之后,并保持数字字符串和非数字字符串原有的次序。例如,s所指的字符串为“def35adh3kjsdf7”,执行后结果为“defadhkjsdf3537”。请在程序的下划线处填入正确的内容,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>voidfun(char*s)(inti,j=0,k=0;chart180,t280;for(i=0;si!="/0”;i+)if(si>="0"&&siv="9")(t2j=si;1;)else(
48、t1k+=si;)t2j=0;t1k=0;for(i=0;ivk;i+)2;for(i=0;iv3;i+)sk+i=t2i;)main()(chars80="ba3a54j7sd567sdffs"pfintf("/nTheoriginalstringis:%s/n",s);fun(s);pfintf("/nTheresultis:%s/n",s);)(分数:18.00)解析:j+或j+=1或+j或j=j+1si=t1ij考点本题考查:指针型变量;数组变量赋值;for循环语句。解析填空1:根据函数fun()中的内容可知,数组t1存储了s中的非数字字符,数组t2存储了s中的数字字符,为了存储下一个数字字符,下标j要进行加1操作。42, 填空2:将s串中的数字与非数字字符分开后,要先将非数字字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信用清单管理制度
- 内衣店库房管理制度
- 手推车安全管理制度
- 新零售财务管理制度
- 校运会组织管理制度
- 检测员考核管理制度
- 民俗馆安全管理制度
- 家庭教育中的行为塑造与心理干预
- 家庭教育心理学与亲子关系构建
- 测温仪使用管理制度
- 某机械公司员工管理手册
- 石材养护报价表范本
- 单值-移动极差X-MR控制图-模板
- 江苏省戏剧学校辅导员招聘考试真题2022
- 红河县年产50吨珍珠棉建设项目环评报告
- 术中大出血的抢救及护理配合
- 四川甘孜州遴选(考调)公务员39人2024年国家公务员考试考试大纲历年真题420笔试历年难易错点考题荟萃附带答案详解
- 商务英语听说-对外经济贸易大学中国大学mooc课后章节答案期末考试题库2023年
- 水利水电工程投标书
- Python语言编程基础PPT完整全套教学课件
- 第十二讲 建设社会主义生态文明PPT习概论2023优化版教学课件
评论
0/150
提交评论