1、二级 C语言笔试-156 及答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.以下有 4组用户标识符,其中合法的一组是_。(分数:2.00)A.FOR-subCaseB.4dDoSizeC.f2 G3IFabcD.WoRDvoiddefine2.整型变量 X和 Y的值相等,且为非 0值,则以下选项中结果为 0的表达式是_。(分数:2.00)A.X|YB.X|YC.Xprintf(“%/n“,(a+=a-=a*(分数:2.00)A.);int i;myf=fopen(fname,“w“);for(i=0;istden(st);i+)fputc(st
2、i,myf);fclose(myf);main()fun(“test.t“,“new world“); fur(“test.t“,“hello,“;(分数:2.00)A.hello,B.new worldhelloC.new worldD.hello,rld7.下列叙述中正确的是_。(分数:2.00)_8.下列叙述中,不属于软件需求规格说明书的作用的是_。(分数:2.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析9.以下合法的赋值语句是_。(分数:2.00)A.X=Y=100B.D-;
3、C.X+YD.C=int(+)10.在计算面中,算法是指_。(分数:2.00)A.查询方法B.加工方祛C.解题方案的准确而完整的描述D.排序方法11.以下程序运行后的输出结果是_。int d=1;fun(int p)printf(%d“,d);return d;main()int a=3; printf(“%/n“,fun(a+fun(d);(分数:2.00)A.699B.669C.61515D.661512.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。(分数:2.00)A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定13.以下程序的
4、输出结果是_。#define M(x,y,z) x*y+zmain()int a=1,b=2,c=3printf(“%d%d/n“,M(a+b,b+c,c+(分数:2.00)A.);char *ch;struct st a35,“abc“,7,“def“,9,“ghk“,*p=a则值为 6的表达式是_。(分数:2.00)A.p+-nB.p-n+C.(*p).n+D.+p-n19.以下程序的结果是_。int a,b;void fun()a=100;b=200;main()int a=5;b=7fun();printf(“%d%d/n“,a,b);(分数:2.00)A.100200B.57C.20
5、0100D.7520.以下程序的输出结是_。#include stdio.hmain()int a=200;#define a 100printf(“%d“,(分数:2.00)A.;#undefa21.在设计程序时,应采纳的原则之一是_。(分数:2.00)A.程序结构应有助于读者理解B.不限制 goto语句的使用C.减少或取消注解行D.程序越短越好22.以下函数值的类型是_。fun (float x)float y;y=3*x-4;return y;(分数:2.00)A.intB.不确定C.voidD.float23.以下程序输出正确的是_amovep(int *p,int (*(分数:2.0
6、0)A.3,int n)24.设 x为 int型变量,执行以下语句,X=10;X+=X-=X-X;X 的值为_。(分数:2.00)A.10B.20C.30D.4025.以下程序的输出结果是_。main()int a44=1,3,5,2,4,6,3,5,7);Print(“%d%d%d%d/n“,a03,al2,a2 1,a30);(分数:2.00)A.0650B.1470C.5430D.输出值不定26.以下数组定义中不正确的是_。(分数:2.00)A.int a23;B.int b3=0,1,2;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4;27.以下程
7、序的输出结果是_。main()int i,a10;for(i=9;i=0;i-)ai=10-i;print(“%d%d%d,a2,a5,a8);(分数:2.00)A.258B.741C.852D.36928.在数据流图(DFD)中,带有名字的箭头表示_。(分数:2.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分29.以下程序的输出结果是_。struct HARint x,y;struct HAR *p;h2main()h0.x=1;h0.y=2h1.x=3;h1.y=4h0.p=h1.p=hprintf(“%d%d/n“,()h0.p)-x,(h1.p-y)
8、;(分数:2.00)_30.若有说明 int i,j=2, *P=,则能完成 i=j赋值功能的语句是_。(分数:2.00)A.i=*p;B.*P2=*C.i=D.i=*p;31.以下程序的输出结果是_。main()char st20=“hello/0/t/“;printf(%d%d/n“,strlen(st),sizeof(st); (分数:2.00)A.99B.520C.1320D.202032.以下各选项企图说明一种新的类型名,其中正确的是_。(分数:2.00)A.typedef v1 int;B.typedef v2=int;C.typedef int v3;D.typedef v4:
9、int33.栈和队列的共同点是_。(分数:2.00)A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点34.视图设计一般有 3种设计次序,下列不属于视图设计的是_。(分数:2.00)A.自顶向下B.由外向内C.由内向外D.自底向上35.下列不属于软件调试技术的是_。(分数:2.00)A.强行排错法B.集成测试法C.回溯法D.原因排除法二、填空题(总题数:13,分数:26.00)36.实现算法所需的存储单元多少和算法的工作量大小分别为算法的 【1】 。(分数:2.00)填空项 1:_37.数据结构包括数据的逻辑结构、数据的 【2】 以及对数据的操作运算。(分数:2.0
10、0)填空项 1:_38.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【3】 。(分数:2.00)填空项 1:_39.面向对象的模型中,最基本的概念是对象和 【4】 。(分数:2.00)填空项 1:_40.软件维护活动包括以下几类:改正性维护、适应性维护、 【5】 维护和预防性维护 o(分数:2.00)填空项 1:_41.设 Y是 int型变量,请写出判断 Y为奇数的关系表达式 【6】 。(分数:2.00)填空项 1:_42.以下程序的输出是 【7】 。main()char str1=“How do you do“,*pl=str1;strcpy(str1+str
11、len(str1)/2,“es she“);intf(“%s/n“,p1);(分数:2.00)填空项 1:_43.以下程序输出的最后一个值是 【8】 。int ff(int n)static int f=1;f=f*n;retum f;main()int i;for(i=1;i=5;i+) printf(“%d/n“,ff(i)i(分数:2.00)填空项 1:_44.下列程序的输出结果是 【9】 。main()int a=2,4,6,*ptr=for(y=0;y3;y+)z=(*(ptr+y)x)?*(ptr+y):x;print f(“%d/n“,z);(分数:2.00)填空项 1:_45.
12、若有定义语句 char s100,d100;int j=0,i=0;且 s中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式)while(si)(dj= 【10】 ;j+;dj=0;(分数:2.00)填空项 1:_46.若有如下结构体说明:struct STRUint a,b;char c:double d;stmct STRU*p1,*p2;;请填空,以完成对 t数组的定义,t 数组的每个元素为该结构体类型。 【11】 t20(分数:2.00)_47.下面的程序可对指定字符串进行从大到小排序,请将程序填完整。 (注:程序采用了冒泡排序算法)#includestdio.h#include
13、string.hmain()char*str=“ABCDabcd“,temp;int n,i;n=strlen(str);while(n-1)for(i=0;in;i+)if(stristri+1)temp= 【12】 ;stri=stri+1;【13】 =temp;printf( 【14】 );(分数:2.00)填空项 1:_48.以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用删函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;long fl;myf= 【15】 (“test.t“,“rb“);fseek(myf,(),SEE
14、K_END);fl+ftell(myf);fclose(myf);printf(“%d/n“,fl);(分数:2.00)填空项 1:_二级 C语言笔试-156 答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.以下有 4组用户标识符,其中合法的一组是_。(分数:2.00)A.FOR-subCaseB.4dDoSizeC.f2 G3IFabc D.WoRDvoiddefine解析:评析 C 语言的标识符的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。2.整型变量 X和 Y的值相等,且为非 0值,则以下
15、选项中结果为 0的表达式是_。(分数:2.00)A.X|YB.X|YC.Xprintf(“%/n“,(a+=a-=a*(分数:2.00)A.);int i;myf=fopen(fname,“w“);for(i=0;istden(st);i+)fputc(sti,myf);fclose(myf);main()fun(“test.t“,“new world“); fur(“test.t“,“hello,“;(分数:2.00)A.hello, B.new worldhelloC.new worldD.hello,rld解析:评析 C 语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方
16、式有只读、写入、读写等方式。7.下列叙述中正确的是_。(分数:2.00)_解析:评析 C 程序中注释部分用“/*”和“*/”括起来,可以出现在程序中任何合适的地方;花括号“”和“8.下列叙述中,不属于软件需求规格说明书的作用的是_。(分数:2.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析 解析:评析 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。它不能方便开发人员进行需求分析。9.以下合法的赋值语句是_。(分数:2.00)A.X=Y=100B.D-; C.X
17、+YD.C=int(+)解析:评析 本题中的答案 A与 D都缺少“;”,而答案 C中,表达式是不能独立成为语句的,答案 B使用了 C语言的自减运算符它就相当于 D=D-I,所以答案 B为一赋值语句。10.在计算面中,算法是指_。(分数:2.00)A.查询方法B.加工方祛C.解题方案的准确而完整的描述 D.排序方法解析:评析 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。11.以下程序运行后的输出结果是_。int d=1;fun(int p)printf(%d“,d);return d;main()int a=3; printf(“%/n
18、“,fun(a+fun(d);(分数:2.00)A.699B.669C.61515 D.6615解析:评析 静态局部变量在编译时赋韧值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋韧值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量 d并赋初值 1,在被调函数 fun()中,定义了静态局部变量 d,初值为 5。在第一次调用函数 fun时,d 初值为 5,p 由主函数传递过来的值为 1,则 d=d+p=5+1=6,由于 d是静态局部变量,在函数调用结束
19、后,它仍保留 d=6。再次调用 fun函数,d 的初值为 6,而由主函数传递的 p的值为 9,则此时 d=d+p=6+9=15,最后打印输出 d的值井返回主函数。12.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。(分数:2.00)A.地址传递B.单向值传递 C.由实参传给形,再由形参传回实参D.传递方式由用户指定解析:评析 C 语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。13.以下程序的输出结果是_。#define M(x,y,z) x*y+zmain()int a
20、=1,b=2,c=3printf(“%d%d/n“,M(a+b,b+c,c+(分数:2.00)A.);char *ch;struct st a35,“abc“,7,“def“,9,“ghk“,*p=a则值为 6的表达式是_。(分数:2.00)A.p+-nB.p-n+C.(*p).n+D.+p-n 解析:评析 根据结构变量的存储特点,p+1 意味着增加地址值为结构体数组 a的一个元素所占的字节数,即 p+使 p由 a0指向 a1起始地址。本题+p-n 得到 p指向的结构体变量中成员 n的值使之加1。因为 p指向数组 a起始地址,p-n 的值为 5,再执行自加 1运行,结果为 6。19.以下程序的
21、结果是_。int a,b;void fun()a=100;b=200;main()int a=5;b=7fun();printf(“%d%d/n“,a,b);(分数:2.00)A.100200B.57 C.200100D.75解析:评析 全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。20.以下程序的输出结是_。#include stdio.hmain()int a=200;#define a 100printf(“%d“,(分数:2.00)A.;#undefa解析:评析 #define 宏名的有效范围
22、为定义命令之后到本源文件结束,可以在程序中使用#undef 命令终止宏定义的作用域。本题由于#undef 的作用,使 a的作用范围在#define a 100 到#undefa 之间,故答案为 C。21.在设计程序时,应采纳的原则之一是_。(分数:2.00)A.程序结构应有助于读者理解 B.不限制 goto语句的使用C.减少或取消注解行D.程序越短越好解析:评析 滥用 goto语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。22.以下函数值的类型是_。fun (float x)float y;y=3*x-4;ret
23、urn y;(分数:2.00)A.int B.不确定C.voidD.float解析:评析 C 语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。23.以下程序输出正确的是_amovep(int *p,int (*(分数:2.00)A.3,int n)解析:评析 本题 main函数中定义了指针 p和二维数组 a,通过函数 amovep将数组的值存入指针 p所指向的存储单元中,a 的各元素分别:a00=1,a01=3,a01=3,a02=5,a12=2,a11=4,a12=6,a20=0,a21=0,a22=0。通过 malloc()函数给指针分配内存空间,
24、free()函数用于释放指针变量所用内存空间。在主函数中通过 amovep(p,a,3)调用函数 amovep,使得实参p与形参 P,实参数组 a与形参中指向数组的指针变量共用同一存储空间。最后输出 p2,p5为 56。24.设 x为 int型变量,执行以下语句,X=10;X+=X-=X-X;X 的值为_。(分数:2.00)A.10B.20 C.30D.40解析:评析 本题 x=10,表达式“x+=x-=x-x;”的求解步骤如下:先进行 x-=x-x的运算,相当于 x=x-(x-x)=x=10;再进行 x+=x的运算,即 x=x+x=20。25.以下程序的输出结果是_。main()int a4
25、4=1,3,5,2,4,6,3,5,7);Print(“%d%d%d%d/n“,a03,al2,a2 1,a30);(分数:2.00)A.0650 B.1470C.5430D.输出值不定解析:评析 对未给出初始值的整数数组元素,被默认初始化为零。26.以下数组定义中不正确的是_。(分数:2.00)A.int a23;B.int b3=0,1,2;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4; 解析:评析 一维数组的定义方式为:类型说明符 数组名常量表达式;选项 A符合此定义形式,正确;C 语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他
26、维的大小,故选项 C正确;另外,如果对全部数纪元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二锥的长度不能省,所以选项 B正确,而选项 D是错误的。27.以下程序的输出结果是_。main()int i,a10;for(i=9;i=0;i-)ai=10-i;print(“%d%d%d,a2,a5,a8);(分数:2.00)A.258B.741C.852 D.369解析:评析 在本题运行时主要注意的是当 i=9时,ai=10-9=1:i=8 时,ai=10-8=2;i=7 时,ai=10-7=3;依此类推,直到 i=0时,ai=10-0=10:此时,i 的值已变为-1,判断 for的循环
27、条件,不成立,然后输出 a2,a5,a8分别为 8,5,2。28.在数据流图(DFD)中,带有名字的箭头表示_。(分数:2.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向 D.程序的组成成分解析:评析 在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。29.以下程序的输出结果是_。struct HARint x,y;struct HAR *p;h2main()h0.x=1;h0.y=2h1.x=3;h1.y=4h0.p=h1.p=hprintf(“%d%d/n“,()h0.
28、p)-x,(h1.p-y);(分数:2.00)_解析:评析 本题中是一个含有两个结点的循环链表。C语言中结构体的定义为:struct结构体类型名成员项表;30.若有说明 int i,j=2, *P=,则能完成 i=j赋值功能的语句是_。(分数:2.00)A.i=*p;B.*P2=* C.i=D.i=*p;解析:评析 指针是一种用来存放变量地址的特殊变量。本题中指针变量 p用于存放整型变量 i的地址,改变*p 的值即为改变 i 的值。又因为“printf(%d%d/n“,strlen(st),sizeof(st); (分数:2.00)A.99B.520 C.1320D.2020解析:评析 C 语
29、言中字符串是以/0字符结束的,且 strlen()函数计算的是/0字符前的所有字符的个数。本题中 strlen(st)应为 5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的 sizeof(st)为 20。32.以下各选项企图说明一种新的类型名,其中正确的是_。(分数:2.00)A.typedef v1 int;B.typedef v2=int;C.typedef int v3; D.typedef v4: int解析:评析 C 语言中可以使用 typedef来重新定义已有的数据类型,相当于为数据类
30、型取个别名。33.栈和队列的共同点是_。(分数:2.00)A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素 D.没有共同点解析:评析 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈是一种“后进先出”的线性表;而队列是一种“先进先出”的线性表。34.视图设计一般有 3种设计次序,下列不属于视图设计的是_。(分数:2.00)A.自顶向下B.由外向内 C.由内向外D.自底向上解析:评析 视图设计一般有 3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使
31、用。35.下列不属于软件调试技术的是_。(分数:2.00)A.强行排错法B.集成测试法 C.回溯法D.原因排除法解析:评析 调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。二、填空题(总题数:13,分数:26.00)36.实现算法所需的存储单元多少和算法的工作量大小分别为算法的 【1】 。(分数:2.00)填空项 1:_ (正确答案:空间复杂度和时间复杂度)解析:评析 算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。37.数据结构包括数据的逻辑结构、数据的 【
32、2】 以及对数据的操作运算。(分数:2.00)填空项 1:_ (正确答案:存储结构)解析:评析 数据结构包括 3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。38.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的 【3】 。(分数:2.00)填空项 1:_ (正确答案:可重用性)解析:评析 继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。39.面向对象的模型中,最基本的概念是对象和 【4】 。(分数:2.00)填空项 1:_ (正确答案:类)解析:评析 面向对象模型中,最基本的概念是对象和类。对象是现实世
33、界中实体的模型化;将属性集和方法集相同的所有对象组合在一起,可以构成一个类。40.软件维护活动包括以下几类:改正性维护、适应性维护、 【5】 维护和预防性维护 o(分数:2.00)填空项 1:_ (正确答案:完善性)解析:评析 软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。41.设 Y是 int型变量,请写出判断 Y为奇数的关系表达式 【6】 。(分数:2.00)填空项 1:_ (正确答案:Y%2=1 或 Y%2!=0)解析:
34、评析 判断变量是否为奇数可以用变量与 2取模,判断结果是为 1或下为 0。本题具体做法如下:Y%2=1或 Y%2!=0。42.以下程序的输出是 【7】 。main()char str1=“How do you do“,*pl=str1;strcpy(str1+strlen(str1)/2,“es she“);intf(“%s/n“,p1);(分数:2.00)填空项 1:_ (正确答案:How does she)解析:评析 strcpy(str1,s1):字符串拷贝函数,作用是将字符串 s1拷贝到字符数组 str1中去。strlen(str):测试字符串 str的长度,函数的值为字符串中实际长度
35、,不包括/0在内。本题中strlen(strl)的值为 13,则 strcpy(strl+strlen(strl)/2,“es she“);相当于 strqoy(strl+6,“es she“);因此可得答案为 How does she。43.以下程序输出的最后一个值是 【8】 。int ff(int n)static int f=1;f=f*n;retum f;main()int i;for(i=1;i=5;i+) printf(“%d/n“,ff(i)i(分数:2.00)填空项 1:_ (正确答案:120)解析:评析 静态变量的类型说明符是 static,静态局部变量属于静态存储方式,它具
36、有以下特点:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。对静态局部变量是在编译时赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译对自动赋初值 0(对数值型变量)或空字符(对字符变量)。(注意:C 语言中的非静态变量在定义时,系统并不会自动给它赋初值)虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与 for语句一起求一个整数的阶乘。44.下列程序的输出结果是 【9】 。main()int
37、a=2,4,6,*ptr=for(y=0;y3;y+)z=(*(ptr+y)x)?*(ptr+y):x;print f(“%d/n“,z);(分数:2.00)填空项 1:_ (正确答案:6)解析:评析 条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)x)?*(ptr+y):x的值,再赋给变量 z。当 y=0 时,*(ptr+y)=2,而 x=8,(*(ptr+y)x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以 z=2;当 y-1时,*(ptr+y)=4, (*(ptr+y)x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以 z=4;当 y=
38、2时,*(ptr+y)=6,(*(ptr+y)x)条件为真,则整个条件表达式的值为*(ptr+y)6,所以 z=6;循环结束。因此输出 z的结果为 6。45.若有定义语句 char s100,d100;int j=0,i=0;且 s中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式)while(si)(dj= 【10】 ;j+;dj=0;(分数:2.00)填空项 1:_ (正确答案:si+)解析:评析 本题中为了能实现字符串的拷贝,需要使字符数组 s从头到尾依次遍历其所有元素本题应使用 i的自增后置来实现。46.若有如下结构体说明:struct STRUint a,b;char c:do
39、uble d;stmct STRU*p1,*p2;;请填空,以完成对 t数组的定义,t 数组的每个元素为该结构体类型。 【11】 t20(分数:2.00)_解析:评析 结构体类型是构造数据类型,是用户自己定义的一种类型。结构体类型的定义:struct结构体类型名成员项表;47.下面的程序可对指定字符串进行从大到小排序,请将程序填完整。 (注:程序采用了冒泡排序算法)#includestdio.h#includestring.hmain()char*str=“ABCDabcd“,temp;int n,i;n=strlen(str);while(n-1)for(i=0;in;i+)if(stris
40、tri+1)temp= 【12】 ;stri=stri+1;【13】 =temp;printf( 【14】 );(分数:2.00)填空项 1:_ (正确答案:12 stri13 stri+114 “%s“,str)解析:评析 本题要求将字符串 str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字词进行比较,如果当前字符小于下一个字符,则通过中间变量 temp将字符两两交换,所以第一空应填:stri,第二空应填:stri+1。最终打印输出得到的字符串 str,所以第三空应填:“%s“,str。48.以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用删
41、函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;long fl;myf= 【15】 (“test.t“,“rb“);fseek(myf,(),SEEK_END);fl+ftell(myf);fclose(myf);printf(“%d/n“,fl);(分数:2.00)填空项 1:_ (正确答案:fopen)解析:评析 C 语言中的文件分为:ASCII 文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen(“文件名”,“使用文件方式”);关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中 fp为文件指针。