(总分:110.00,做题时间:90分钟)
一、{{B}}选择题{{/B}}(总题数:40,分数:80.00)
1.执行以下的程序段后,m的值是______。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; P=&a[0][0]; m=p[4]; (分数:2.00) A.4 B.5 √ C.3 D.不确定
解析:评析;程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。
2.以下各选项企图说明—种新的类型名,其中正确的是______。 (分数:2.00) A.typedef vi int; B.typedef V2=int; C.typedef int v3; √ D.lypedef v4:int
解析:[评析] C语言中可以使用typedef来重新定义已有的数据类型,相当于数据类型取个别名。 3.以下程序运行后的输出结果是______。 int d=1; fun(int p) { static int d=5;d+=p printf(\"%d,d\");retum d; } main() {int a=3;printf(\"%d/n\(分数:2.00) A.699 B.9 C.61515 √ D.6615
解析:[评析] 静态局部变量在编译时赋初值,即只赋初值—次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用—次函数重新给—次初值,相当于执行—次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第—次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。
4.以下程序的输出结果是______。 main() {int a=3; printf(\"%d/n\(分数:2.00) A.-6 B.1 C.2 D.-12 √
解析:[评析] 赋值运算符的结合方向是自右至左,所以表达式a+=a=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6)=-12。
5.以下程序的输出结果是______。 main() { int i,a[10]; for(i=9;i>=0;i--)a[i]=1O-i; printf(\"%d%d%d\; } (分数:2.00) A.258 B.741
C.852 √ D.369
解析:[评析] 在本题运行时主要注意的是当i=9时,a[i]=l0-9=1;a[i]=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=O时,a[i]=10-0=10;此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。 6.SQL语言又称为______。 (分数:2.00) A.结构化定义语言 B.结构化控制语言 C.结构化查询语言 √ D.结构化操纵语言
解析:[评析] 结构化查询语言(structured Query Language,简称SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。
7.以下程序的结果是______。 int a,b; void fun() { a=100;b=200; } main() { int a=5,b=7; fun(); printf(\"%d%d/n\(分数:2.00) A.100200 B.57 √ C.200100 D.75
解析:[评析] 全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。
8.以下程序的输出结果是______。 main() { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}} printf(\"%d%d%d%d/n\(分数:2.00) A.0650 √ B.1470 C.5430 D.输出值不定
解析:[评析] 对未给出初始值的整数数组元素,被默认初始化为零。
9.整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。 (分数:2.00) A.X||Y B.X|Y C.X&Y D.X^Y √
解析:[评析] “||”为或运算符,当其左右表达式中只要—个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。
10.以下程序的输出结果是______。 #include<stdio.h> main() { int a=200; #define a 100 printf(\"%d\(分数:2.00) A.200 100 B.100 100 C.100 200 √ D.200 200
解析:[评析] #define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由#undef的作用,使a的作用范围在#define a 100到#undef a之间,故答案为C
11.在数据流图(DFD) 中,带有名字的箭头表示______。 (分数:2.00)
A.控制程序的执行顺序 B.模块之间的调用关系 C.数据的流向 √ D.程序的组成成分
解析:[评析] 在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
12.若有以下说明和语句: struct st{int n;char*ch;} struct st a[3]={5,\"abc\"7,\"def\则值为6的表达式是______。 (分数:2.00) A.p++->n B.p->n++ C.(*.n++ D.++P>n √
解析:[评析] 根据结构变量的存储特点,p+l意味着增加地址值为结构体数组a的—个元素所占的字节数,即P++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加l运行,结果为6。 13.在说明语句int*f()中,标识符f代表的是______。 (分数:2.00)
A.—个用于指向整型数据的指针变量 B.—个用于指向一维数组的行指针 C.—个用于指向函数的指针变量 D.一个返回值为指针型的函数名 √
解析:[评析] 返回指针值的函数,其—般定义形式为:类型标识符 *函数名(参数表); 例如:int*f(x,y); 其中,f是函数名,调用它以后能得到—个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧为别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。 14.设x为int型变量,执行以下语句,x=10;x+=x-=x-x;x的值为______。 (分数:2.00) A.10 B.20 √ C.30 D.40
解析:[评析] 本题x=l0,表达式“x+=x-=x-x;”的求解步骤如下:先进行x-=x-x的运算,相当于x=x-(x-x)=x=l0;再进行x+=x的运算,即x=x+x=20。 15.下列不属于软件调试技术的是______。 (分数:2.00) A.强行排错法 B.集成测试法 √ C.回溯法 D.原因排除法
解析:[评析] 调试的关键在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。
16.栈和队列的共同点是______。 (分数:2.00) A.都是先进后出 B.都是先进先出
C.只允许在端点处插入和删除元素 √
D.没有共同点
解析:[评析] 栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是栈是—种“后进先出”的线性表;而队列是—种“先进先出”的线性表。 17.以理程序的输出结果______。 main() { char st[20]=\"he11/O/t//\"; printf(\"%d%d/n\(分数:2.00) A.99 B.520 √ C.1320 D.2020
解析:[评析] C语言中字符串是以'/O'字符结束的,且strlen()函数计算的是'/O'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。 18.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。 (分数:2.00) A.地址传递 B.单向值传递 √
C.由实参传绐形,再由形参传回实参 D.传递方式由用户指定
解析:[评析] C语言函数中的参数传递方式有传值与付址两种方式,传值方式是指将实参的值复制—份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。 19.以下选项中,非法的字符常量是______。 (分数:2.00) A.'t/' B.'/17' C.\"/n\" √ D.'/xaa'
解析:[评析] C语言中字符常量是以单引号括起来的单个字符,或以“/”与三位八进制数值或两位十六进制数值代替单个字符。
20.以下程序的输出结果是______。 #define M(x,y,z)x*y+z main() { int a=1,b=2,c=3; printf(\"%d/n\(分数:2.00) A.19 B.17 C.15 D.12 √
解析:[评析] C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串。本题的M(aa=b,b+c,c+a)被字符串a+b*b+c+c+a代替。 21.下面程序的输出结果为______。 #include<string.h> main()
{ charP[17]=\"abc\"=\"ABC\".STR[50]=\"xyz\"; strcpy(str,strcat(p1,p2)); printf(%s,str); } (分数:2.00) A.xyzabcABC B.abcABC √ C.xyzabc D.xyzABC
解析:[评析] strcpy(strl,s1):作用是将字符串s1拷贝到字符数组strl中去。strcat(字符数组1,字符数组2):把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。本题定义了三个字符数组pl,p2,str,strcat(pl,p2)函数的作用是将字符串数组p2接到字符串p1的
后面,结果放在字符数组p1中,再通过strcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。
解析:[评析] 本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-1,所以答案B为—赋值语句。 23.设int型占2个字节,则unsigned int所能表示的数据范围是______。 (分数:2.00) A.0~65535 √ B.-32769~32767 C.1~65536 D.0~32767 解析:
[评析] 本题int型占2个字节,即16位unsigned int所能表示的数据范围是0~(2-1),即0~65535。 24.以下程序的输出结果是______。 structHAR {int x,y;structHAR*p;}; main() { h[0].x=1;h[0].y=2; h[1].x=3;h[1].y=4; h[0].p=&h[1].p=h; printf(\"%d%d/n\>y)); } (分数:2.00) A.12 B.23 C.14 D.32 √
解析:[评析] 本题中是—个含有两个结点的循环链表。C语言中结构体的定义为:srtyct结构体类型名{成员项表;}
25.已知二叉树BT的后后序遍历序列是dabec,中序遍历序列是debac,它的前序遍序列是______。 (分数:2.00) A.cedba √ B.acbed C.decab D.deabc
解析:[评析] 二叉树BT的后序遍历序列为dabec,故BT的根结点为c:而BT的中序遍历序列是debac,即遍历序列中最后—个结点为跟结点,说明BT的右子树为空。由BT的的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序序列和序遍历序列分别为dabe和deba(树是递归定义的):故LST的根结点是e,在由LST的中序遍历序列可知其左子树为d。因此BT的前序遍历序列为cedba。 26.以下函数值的类型是______。 fun(float x) { float y; y=3*x-4 return y; } (分数:2.00) A.int √ B.不确定 C.void D.float
解析:[评析] C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。
27.以下数组定义中不正确的是______。 (分数:2.00) A.inta[2][3]; B.int b[][3]={0,1,2} C.int c[100][100]={0};
D.int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; √
解析:[评析] —维数组的定义方式为:类型说明符 数组名[常量表式];选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第—维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第—维的长度可以不指定,但第二锥的长度不能省,所以选项B正确,而选项D是错误的。
16
28.下列叙述中正确的是______。 (分数:2.00)
A.C程序中注释部分可以出现在程序中任何合适的地方 √ B.花括号“{”和“}”只能作为函数体的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名 D.分号是C语句之间的分隔符,不是语句的—部分
解析:[评析] C程序中注释部分用“/*”和“*/”括起来,可以出现在程序中任何合适的地方;花括号“{”和“}”不仅可作为函数体的定界符,也可作为复合语句的定界符;构成C程序的基本单位是函数;—个语句必须在最后出现分号,分号是 C语句中不可缺少的部分。 29.下列叙述中,不属于软件需求规格说明书的作用的是______。 (分数:2.00)
A.便于用户、开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据 C.作为确认测试和验收的依据 D.便于开发人员进行需求分析 √
解析:[评析] 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。它不能方便开发人员进行需求分析。
30.以下程序输出正确的是______。 amovep(int *pint(*a) [3]int n) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++){ *p=a[i][j];p++;} } main() {int *p,a[3][3]={{1,3,5},{2,4,6}}; p=(int*)malloc(100); amovep(p,a,3); printf(\"%d%d/n\(分数:2.00) A.56 √ B.25 C.34 D.程序错误
解析:[评析] 本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5……,a[2][0],a[2][1]=0,a[2][2]=0。通过mallo()函数绐指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同—存储空间。最后输出p[2],p[5]为56。
31.在下列几种排序方法中,要求内存量最大的是______。 (分数:2.00) A.插入排序 B.选择排序 C.快速排序 D.归并排序 √
解析:[评析] 快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中—部分记录的关键字均比另—部分记录的关键字小,再分别对这两分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。
32.下面的程序执行后,文件test.t中内容是______。 #inc1ude<stdio.h> void fun(char*fname,char*st) { FILE*myf;int i; myf=fopen(fname,\"w\") for(i=0;i<strlen(st);i++)fputc(st[i]myf); fdose(myf); } main() { fun(\"test.t\"\"new word\");fun(\"test.t,\"hello,\");} (分数:2.00) A.hello, √ B.new wor1dhello C.new world
D.hello,rld
解析:[评析] C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读,写入、读写等方式。
33.假定int类型变量占用两个字节,若有定义:int x[10]{0,2,4};,则数组x在内存中所占字节数是______。 (分数:2.00) A.3 B.6 C.10 D.20 √
解析:[评析] 当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组x[10]不论是否为其元素初始化,它所分配的存储空间仍为2*10=20个字节。 34.若有说明int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。 (分数:2.00) A.i=*p B.*P=*&j √ C.i=&j D.i=**p;
解析:[评析] 指针是—种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变 i的值。又因为“&”和“*”两个运算符的优先级相同,按自右而左的方向结合,所以*&j运算选进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。 35.在设计程序时,应采纳的原则之—是______。 (分数:2.00)
A.程序结构应有助于读者理解 √ B.不限制goto语句的使用 C.减少或者取消注解行 D.程序越短越好
解析:[评析] 滥用goto语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。 36.在计算机中,算法是指______。 (分数:2.00) A.查询方法 B.加工方法
C.解题方案的准确而完整的描述 √ D.排序方法
解析:[评析] 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。
37.以下有4组用户标识符,其中合法的—组是______。 (分数:2.00) A.FOR -sub Case B.4d DO Size C.f2_G3 IF abc √ D.WORD void define
解析:[评析] C语言的标识符的定义为:以字母或下划线开头的由字母、数字字符、下划线组成的字符串。而且标识符不能与关键字相同。
38.视图设计—般有3种设计次序,下列不属于视图设计的是______。 (分数:2.00) A.自顶向下 B.由外向内 √ C.由内向外
D.自底向上
解析:[评析] 视图设计—般有3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。 39.下面的关键字中,不能够从循环体中跳到循环体外的是______。 (分数:2.00) A.goto B.break C.return D.continue √
解析:[评析] continue语句与break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。gpto语句可跳出多层循环,如果在函数的循环体内使用 return语句,就会直接结束循环返回函数值。
40.设a.b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>B)&&(n=c>D)运算后,n的值为______。 (分数:2.00) A.0 √ B.1 C.2 D.3
解析:[评析] C语言中比较表达式的运算结果为0或1。0代表不成立,1表示成立。
二、{{B}}填空题{{/B}}(总题数:13,分数:30.00)
41.实现算法所需的存储单元多少和算法的工作量大小分别称为为算法的{{U}} 【1】 {{/U}}。 (分数:2.00)
填空项1:__________________ (正确答案:空间复杂度和时间复杂度)
解析:[评析] 算法的复杂性是指对—个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。
42.数据结构包括数据的逻辑结构、数据的{{U}} 【2】 {{/U}}以及对数据的操作运算。 (分数:2.00)
填空项1:__________________ (正确答案:存储结构)
解析:[评析] 数据结构包括3个方面;即数据的逻辑结构、数据的存储结构及对数据的操作运算。 43.—个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的{{U}} 【3】 {{/U}}。 (分数:2.00)
填空项1:__________________ (正确答案:可重用性)
解析:[评析] 继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。
44.面向对象的模型中,最基本的概念是对象和{{U}} 【4】 {{/U}}。 (分数:2.00)
填空项1:__________________ (正确答案:类)
解析:[评析] 面向对象模型中,最基本的概念是对象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在—起,可以构成—个类。
45.软件维护活动包括以下几类:改正性维护、适应性维护、{{U}} 【5】 {{/U}}维护和预防性维护。 (分数:2.00)
填空项1:__________________ (正确答案:完善性)
解析:[评析] 软件维护活动包括以下几类:改正性维护、适应性维护、完替性维护和预防性维护。完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
46.设Y是int型变量,请写出判断Y为奇数的关系表达式{{U}} 【6】 {{/U}}。 (分数:2.00)
填空项1:__________________ (正确答案:Y%2=1 或 Y%2!=0)
解析:[评析] 判断变量是否为奇数可以用变量与2取模,判断结果是为1或不为0。本题具体做法如下:Y%2=1或Y%2!=0。
47.以下程序的输出是{{U}} 【7】 {{/U}}。 main() { char str1[]=How do you do\",*p=strl; strcpy(str1+strlen(str1)/2\"es she\"); pfinff(\"%s/n\(分数:2.00)
填空项1:__________________ (正确答案:How does she)
解析:[评析] strcpy(strl,sl):字符串拷贝函数,作用是将字符串sl拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括‘/0’在内。本题中strlen(str l)的值为13,则strcpy(strl+strlen(strl)/2\"es she\")相当于strcpy(strl+6\"es she\");,因此可得答案为How does she。
48.以下程序输出的最后个值是{{U}} 【8】 {{/U}} int ff(int n) { static int f=1; f=f*n return f; } main() {int i; for(i=1;i<=5:i++) printf(\"%d、n\(分数:2.00)
填空项1:__________________ (正确答案:120)
解析:[评析] 静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点: ①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。 ②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。 ③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。 (注意:C语言中非静态变量在定义时,系统并不会自动给它赋初值) ④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与for语句一起求一个整数的阶乘。
49.下列程序的输出结果是{{U}} 【9】 {{/U}}。 main() { int a[]={2,4,6},*prt=&a[0],x=8,y,z; for(y=0;y<3;y++) z=(*(ptr+y<x)?*(ptr+y):x; printf(\"%d/n\(分数:2.00)
填空项1:__________________ (正确答案:6)
解析:[评析] 条件运算符的优先级高于赋值运算符,因此本题先计算关系个表达式(*ptr+y)<
x)?(ptr+y):x的值,再赋绐变量z,当 y=O时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(pry)=2,所以z=2;当y=1时*(ptr+y)=4, (*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,*((ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。
50.若有定义语句char s[100],d[100];int j=0,i=0;且s中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式) whi1e()s[i]){d[j]={{U}} 【10】 {{/U}}:j++;} d[j]=0; (分数:2.00)
填空项1:__________________ (正确答案:s[i++])
解析:[评析] 本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其所有元素。本题应使用i的自增后置来实现。
51.若有如下结构体说明: struct STRU{ int a,b;charc:double d; struct STRU*p1,*p2; } 请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。{{U}} 【11】 {{/U}}t[20] (分数:2.00)
填空项1:__________________ (正确答案:stmctSTRU)
解析:[评析] 结构件类型是构造数据类型,是用户自己定义的—种类型。结构件类型的定义:struct结构体类型名{ 成员项表; }定义结构伸变量的的形式为:struct结构体类型名变量1,变量2,……其中变量包括;—般变量、指针变量、数组变量等。
52.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。 (注:程序采用了冒泡排序法) #include<stdio.h> #include<string.h> main() { char*str=\"ABCDabcd\n=strlen(str); while(n-->1) for(i=0;i<n;i++) if(str[i]<str[i+l]) { temp={{U}} 【12】 {{/U}}; str[i]=str[i+l]; {{U}} 【13】 {{/U}}=temp; } printf({{U}} 【14】 {{/U}}); } (分数:6.00)
填空项1:__________________ (正确答案:[12]str[i])
解析:[13]str[i+1] [14]\"%s\[评析] 本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实过程是将相邻两个字符进行比较,如果当前字符小于下一个字符,则通过中间变量temp将字符两两交换,所以第—空应填:str[i],第二空应填str[i+1]最终打印输出得到的字符串str,所以第三空应填\"%s\。
53.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。 FILE*myf;longfl; myf={{U}} 【15】 {{/U}}(\"test.t\(分数:2.00)
填空项1:__________________ (正确答案:fopen)
解析:[评析] C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen(\"文件名\使用文件方式\");关闭文件的函数为:fclose(),调用形式为:fclose(fp),其中fp为文件指针。
因篇幅问题不能全部显示,请点此查看更多更全内容