1、二级 C语言笔试 14及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.设 x,y均为 int型变量,且 x=10,y=3,则 printf(“%d,%d/n“,x-,-y);语句的输出结果是_。(分数:1.00)A.10,3B.9,3C.9,2D.10,22.以下程序的输出结果是_。 main() int num=0 while(num=2) num+; printf(“%d/n“,num); (分数:1.00)A.1 2 3 4B.1 2 3C.1 2D.13.以下数组定义中不正确的,是_。(分数:1.00)A.int a23;B.i
2、nt b3=0,1,2;C.int c100100=0;D.int d3=1,2,1,2,3,1,2,3,4;4.设 a、b、c、d、m、n 均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=aB) d+=p; printf(“%d“,d) ;return d; main() int a=3; printf(“%d/n“,fun(a+fun(d);(分数:1.00)A.699B.669C.61515D.66156.以下选项中,非法的字符常量是_。(分数:1.00)A./tB./17C.“/n“D./xaa7.在说明语句 int*f();中,标识符 f代表
3、的是_。(分数:1.00)A.一个用于指向整型数据的指针变量B.一个用于指向一维数组的行指针C.一个用于指向函数的指针变量D.一个返回值为指针型的函数名8.下面程序的输出结果是_。 #define a 121 const b=12; enum ca1,a2; main() printf(“%d,%d,%d“,sizeof(a) ,sizeof(b) ,sizeof(enum c) ); (分数:1.00)A.121,0,4B.2,2,2C.0,2,4D.0,2,29.若有以下说明和语句: struct stint n;char*ch; struct st a3=5,“abc“,7,“def“,
4、9,“ghk“,*p=a; 则值为 6的表达式是_。(分数:1.00)A.p+-nB.p-n+C.(*.n+D.+p-n10.以下程序的输出结果是_。 main() int i,a10; for(i=9;i=0;i-)ai=10-i; printf(“%d%d%d“,a2a5,a8); (分数:1.00)A.258B.741C.852D.36911.以下各选项企图说明一种新的类型名,其中正确的是_。(分数:1.00)A.typedef v1 int;B.typedef v2=int;C.typedef int v3;D.typedef v4:int12.以下程序的输出结果是_。 main()
5、int a44=1,3,5,,2,4,6,3,5,7; printf(“%d%d%d%d/n“,a03,a12,a21,a30); (分数:1.00)A.0650B.1470C.5430D.输出值不定13.以下程序的输出结果是_。 #define M(x,y,z) x*y+z main() int a=1,b=2,c=3; printf(“%d/n“,M(a+b,b+c,c+a) ); (分数:1.00)A.19B.17C.15D.1214.在下列几种排序方法中,要求内存量最大的是_。(分数:1.00)A.插入排序B.选择排序C.快速排序D.紧并排序15.假定 int类型变量占用两个字节,若有
6、定义:int x10=0,2,4);,则数组 x在内存中所占字节数是_。(分数:1.00)A.3B.6C.10D.2016.下面程序的输出结果为_。 #includestring.h main() char p17=“abc“,p2=“ABC“,str50=“xyz“; strcpy(str,strcat(p1,p2); printf(“%s“,str); (分数:1.00)A.xyzabcABCB.abcABCC.xyzabcD.xyzABC17.以下函数值的类型是_。 fun(floatx) float y; y=3*x-4; return y; (分数:1.00)A.intB.不确定C.
7、voidD.float18.下列属于 C语言语句的是_。(分数:1.00)A.printf(“%d/n“,B.#includestdihC.a=b;b=c;c=a;D./*this is a program*/19.为了避免嵌套的 if-else的二义性,C 语言钡定:else 与_配对。(分数:1.00)A.缩排位置相同的 ifB.其之前最近的 ifC.其之后最近的 ifD.同一行上的 if20.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。(分数:1.00)A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定21.设 int型占 2个字
8、节,则 unsigned int所能表示的数据范围是_。(分数:1.00)A.065535B.-3276932767C.165536D.03276722.视图设计一般有 3种设计次序,下列不属于视图设计的是_。(分数:1.00)A.自顶向下B.由外向内C.由内向外D.自底向上23.在计算机中,算法是指_。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法24.变量 a所占的内存字节数是_。 union U char st4; int i; long 1; ; struct A int c; union U u; a;(分数:1.00)A.4B.5C.6D.82
9、5.以下程序输出正确的是_。 amovep(int *p,int(*A) 3,int n) int i,j; for(i=0;in;i+) for(j=0;jn;j+) *p=aij;p+ main() int *p,a33=1,3,5,2,4,6; p=(int*)malloc(100); amovep(p,a,3); printf(“%d%d/n“,p2,p5);free(p); (分数:1.00)A.56B.25C.34D.程序错误26.在数据流图(DFD) 中,带有名字的箭头表示_。(分数:1.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向D.程序的组成成分27.在设
10、计程序时,应采纳的原则之一是_。(分数:1.00)A.程序结构应有助于读者理解B.不限制 goto语句的使用C.减少或取消注解行D.程序越短越好28.以下程序的结果是_。 int a,b; void fun() a=100;b=200; main() int a=5,b=7; fun(); printf(“%d%d/n“,a,b) ; (分数:1.00)A.100200B.57C.200100D.7529.下面的关键字中,不能够从循环体中跳到循环体外的_。(分数:1.00)A.gotoB.breakC.returnD.continue30.设 x为 int型变量,执行以下语句,x=10;x+=
11、x-=x-x;x 的值为_。(分数:1.00)A.10B.20C.30D.4031.下面的程序执行后,文件 test.t中内容是_。 #includestdio.h void fun(char *fname,char*st) FILE*myf,int i; myf=fopen(fname,“w“); for(i=0;istrlen(st);i+)fputc(sti,myf); fclose(myf); main() fun(“test.t“,“new world“);fun(“test.t“,“hello,“);(分数:1.00)A.hello,B.new worldhelloC.new wo
12、rldD.hello, rld32.栈和队列的共同点是_。(分数:1.00)A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点33.以下程序的输出结果是_。 main() char st20=“hello/0/t/“; printf(“%d%d/n“,strlen(st),sizeof(st); (分数:1.00)A.99B.520C.1320D.202034.以下选项中,不能正确赋值的是_。(分数:1.00)A.char s110; s1=“chest“;B.char s2=C,t,e,s,t;C.char s320=“Chest“;D.char*s4=“Ctes
13、t/n“35.若有说明 int i,j=2,*p=D.i=*p;36.下列叙述中,不属于软件需求规格说明书的作用的是_。(分数:1.00)A.便于用户、开发人员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发人员进行需求分析37.整型变量 X和 Y的值相等,且为非 0值,则以下选项中结果为 0的表达式是_。(分数:1.00)A.X|YB.X|YC.X int m,*p; p=struct HAR *p; h2; main() h0x=1;h0y=2; h1x=3;h1y=4; h0.P=h1.p=h; printf(“%d%d/n
14、“,(h0.p)-x,(h1.p)-y); (分数:1.00)A.12B.23C.14D.3241.C语言中,组成数据文件的成分是_。(分数:1.00)A.记录B.数据行C.数据块D.字符 (字节) 序列42.以下合法的赋值语句是_。(分数:1.00)A.X=Y=100B.D-;C.X+Y;D.C=int(+)43.以下有 4组用户标识符,其中合法的一组是_。(分数:1.00)A.FOR -sub CaseB.4d DO SizeC.f2_G3 IF abcD.WORD void define44.X、Y、Z 被定义为 int型变量,若从键盘给 X、Y、Z 输入数据,正确的输入语句是_。(分数
15、:1.00)A.INPUT X,Y,Z;B.scanf(“%d%d%d“,C.scanf(“%d%d%d“,X,Y,;D.read(“%d%d%d“,45.SQL语言又称为_。(分数:1.00)A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言46.下列叙述中正确的是_。(分数:1.00)A.C程序中注释部分可以出现在程序中任何合适的地方B.花括号“和“只能作为函数体的定界符C.构成 C程序的基本单位是函数,所有函数名都可以由用户命名D.分号是 C语句之间的分隔符,不是语句的一部分47.已知二叉树 BT的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历
16、序列是_。(分数:1.00)A.cedbaB.acbedC.decabD.deabc48.运行下面的程序,其输出结果为_。 main() printf(“%d,%d“,5%-3,-5%3); (分数:1.00)A.2,-2B.-2,2C.-2,-2D.2,249.以下程序的输出结果是_。 #includestdio.h main() int a=200; #define a 100 printf(“%d“,a) ; #undefa printf(“%d“,a) ; (分数:1.00)A.200 100B.100 100C.100 200D.200 20050.以下程序的输出结果是_。 main
17、() int a=3; printf(“%d/n“,(a+=a-=a*A) ); (分数:1.00)A.-6B.1C.2D.-12二、B填空题/B(总题数:18,分数:36.00)51.实现算法所需的存储单元多少和算法的工作量大小分别称为算法的U 【1】 /U。(分数:2.00)填空项 1:_52.数据结构包括数据的逻辑结构、数据的U 【2】 /U以及对数据的操作运算。(分数:2.00)填空项 1:_53.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的U 【3】 /U。(分数:2.00)填空项 1:_54.面向刑象的模型中,最基本的概念是对象和U 【4】 /U。(分
18、数:2.00)填空项 1:_55.软件维护活动包括以下几类:改正性维护、适应性维护、U 【5】 /U维护和预防性维护。(分数:2.00)填空项 1:_56.语句 X+;、+X;、X=X+1;、X=1+X;,执行后都使变量 X中的值增 1,请写出一条同一功能的赋值语句(不得与列举的相同)U 【6】 /U。(分数:2.00)填空项 1:_57.设 Y是 int型变量,请写出判断 Y为奇数的关系表达式U 【7】 /U。(分数:2.00)填空项 1:_58.以下程序的输出是U 【8】 /U。 main() char str1=“How do you do“,*p1=str1; strcpy(str1+
19、strlen(str1)/2,“es she“); printf(“%s/n“,p1); (分数:2.00)填空项 1:_59.以上程序运行后的输出结果是U 【9】 /U。 main() int i=10,j=0; do j=j+i; i-; while(i2); printf(“%d/n“j); (分数:2.00)填空项 1:_60.设有如下程序: main() int n1,n2; scanf(“%d“, while(n2!=0) n1=n2%10; n2=n2/10; Printf(“%d“,n1); 程序运行后,如果从键盘上输入 1298,则输出结果为U 【10】 /U。(分数:2.0
20、0)填空项 1:_61.以下程序输出的最后一个值是U 【11】 /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“,ff(i); (分数:2.00)填空项 1:_62.以下函数的功能是求 x的 y次方,请填空。 double fun(double x,int y) int i; double z; for(i=1,z=x;iy;i+)z=z*U 【12】 /U; return z; (分数:2.00)填空项 1:_63.下列程序的输出结果是U 【13】 /U
21、。 main() int a=2,4,6,*ptr= for(y=0;y3;y+) z=(*(ptr+y)x)?*(ptr+y):x; printf(“%d/n“,z); (分数:2.00)填空项 1:_64.以下程序运行后的输出结果是U 【14】 /U。 main() char s=“9876“,*p; for(p=s;ps+2;p+)printf(“%s/n“,p); (分数:2.00)填空项 1:_65.若有定义语句 char s100,d100;int j=0,i=0;且 s中已赋字符串,请填空以实现拷贝。 (注:不使用逗号表达式) while(si=U 【15】 /U;j+; dj=
22、0;(分数:2.00)填空项 1:_66.若有如下结构体说明: struct STRU int a,b;char c:double d; struct STRU *p1,*p2; ; 请填空,以完成对 t数组的定义,t 数组的每个元素为该结构体类型。 U 【16】 /Ut20(分数:2.00)填空项 1:_67.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序完整。 (注:程序采用了冒泡排序算法) #includestdio.h #includestring.h main() char*str=“ABCDabcd“,temp; int n,i; n=strlen(str); whi
23、le(n-1) for(i=0;in;i+) if(stristri+1) temp=U 【17】 /U; stri=stri+1; U 【18】 /U=temp; printf(U 【19】 /U); (分数:2.00)填空项 1:_68.以下程序段打开文件后,先利用 fseek函数将文件位置指针定位在文件末尾,然后调用 ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。 FILE*myf; long f1; myf=U 【20】 /U(“test,t“,“rb“); fseek(myf,(),SEEK_END) ;f1+ftell(myf); fclose(myf);
24、 printf(“%1d/n“,f1);(分数:2.00)填空项 1:_二级 C语言笔试 14答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.设 x,y均为 int型变量,且 x=10,y=3,则 printf(“%d,%d/n“,x-,-y);语句的输出结果是_。(分数:1.00)A.10,3B.9,3C.9,2D.10,2 解析:评析 C 语言的自减运算符有前置与后置两种形式。当自减运算符前置时,变量先自减一后再参与表达式运算;而后置时,变量先参与表达式运算后再自身减一。2.以下程序的输出结果是_。 main() int num=0
25、while(num=2) num+; printf(“%d/n“,num); (分数:1.00)A.1 2 3 4B.1 2 3 C.1 2D.1解析:评析 while 的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为“假” (值为零)时,退出循环,并转下一语句去执行。本题在输出 num的值为 3之后,再判断 while的循环条件 3=2,不成立,所以不再输出 num的值,故本题的答案选 B。3.以下数组定义中不正确的,是_。(分数:1.00)A.int a23;B.int b3=0,1,2;C.int c100100=0;D.int d3=1,2,1
26、,2,3,1,2,3,4; 解析:评析 一维数组的定义方式为: 类型说明符 数组名常量表达式; 选项 A符合此定义形式,正确:C 语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项 C正确;另外,如果对全部数组元素都赋初值,则定义数组时刘第一维的长度可以不指定,但第二维的长度不能省,所以选项 B正确,而选项 D是错误的。4.设 a、b、c、d、m、n 均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=aB) d+=p; printf(“%d“,d) ;return d; main() int a=3; printf(“%d
27、/n“,fun(a+fun(d);(分数:1.00)A.699B.669C.61515 D.6615解析:评析 静态局部变量在编译时赋初值,即只赋韧值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。 本题在程序开头定义了全局变量 d并赋初值 1,在被调函数 fun()中,定义了静态局部变量 d,初值为 5。在第一次调用函数fun时,d 初值为 5,p 由主函数传递过来的值为 1,则 d=d+p=5+1=6,由于 d是静态局部变量,在函数调
28、用结束后,它仍保留 d=6。再次调用 fun函数,d 的初值为 6,而由主函数传递的 p的值为 9,则此时d=d+p=6+9=15,最后打印输出 d的值并返回主函数。6.以下选项中,非法的字符常量是_。(分数:1.00)A./tB./17C.“/n“ D./xaa解析:评析 C 语言中字符常量是以单引号括起来的单个字符,或为以“/”与三位八进制数值或两位十六进制数值代替单个字符。7.在说明语句 int*f();中,标识符 f代表的是_。(分数:1.00)A.一个用于指向整型数据的指针变量B.一个用于指向一维数组的行指针C.一个用于指向函数的指针变量D.一个返回值为指针型的函数名 解析:评析 带
29、回指针值的函数,其一般定义形式为: 类型标识符 *函数名(参数表); 例如;int *f(x,y); 其中,f 是函数名,调用它以后能得到一个指向整型数据的指针(地址),x,y 是函数 f的形参。在 f的两侧分别为*运算符和()运算符,而()优先级高于*,因此 f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的 int表示返回的指针指向整型变量。8.下面程序的输出结果是_。 #define a 121 const b=12; enum ca1,a2; main() printf(“%d,%d,%d“,sizeof(a) ,sizeof(b) ,
30、sizeof(enum c) ); (分数:1.00)A.121,0,4B.2,2,2 C.0,2,4D.0,2,2解析:评析 sizeof 函数是取变量所占的存储空间的字节数,标识 a代表常量 121:const b=12;,其中数据类型可以缺省,默认为整型;enum ca1,a2;定义了一个枚举类型 enum c,a1,a2 为枚举元素,在 C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为 0,1。因此它们的字节数均为 2,2,2。9.若有以下说明和语句: struct stint n;char*ch; struct st a3=5,“abc“,7,“def“,9,“ghk“,*p
31、=a; 则值为 6的表达式是_。(分数:1.00)A.p+-nB.p-n+C.(*.n+D.+p-n 解析:评析 根据结构变量的存储特点,p+1 意味着增加地址值为结构体数组 a的一个元素所占的字节数,即 p+使 p由 a0指向 a1起始地址。本题+p-n 得到 p指向的结构体变量中成员 n的值使之加1。因为 p指向数组 a起始地址,p-n 的值为 5,再掏打自加 1运行,结果为 6。10.以下程序的输出结果是_。 main() int i,a10; for(i=9;i=0;i-)ai=10-i; printf(“%d%d%d“,a2a5,a8); (分数:1.00)A.258B.741C.8
32、52 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的循环条件,不成立,然后输出 a2,a5,a8,分别为 8,5,2。11.以下各选项企图说明一种新的类型名,其中正确的是_。(分数:1.00)A.typedef v1 int;B.typedef v2=int;C.typedef int v3; D.typedef v4:int解析:评析 C 语言中可以使用 typedef来重新定义已有的数据类型,相当于为数据类
33、型取个别名。12.以下程序的输出结果是_。 main() int a44=1,3,5,,2,4,6,3,5,7; printf(“%d%d%d%d/n“,a03,a12,a21,a30); (分数:1.00)A.0650 B.1470C.5430D.输出值不定解析:评析 对未给出初始值的整数数组元素,被默认初始化为零。13.以下程序的输出结果是_。 #define M(x,y,z) x*y+z main() int a=1,b=2,c=3; printf(“%d/n“,M(a+b,b+c,c+a) ); (分数:1.00)A.19B.17C.15D.12 解析:评析 C 语言的宏定义包括不带参
34、数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为: #define 宏名(形参表)字符串 本题的 M(a+b,b+c,c+a) 被字符串 a+b*b+c+c+a代替。14.在下列几种排序方法中,要求内存量最大的是_。(分数:1.00)A.插入排序B.选择排序C.快速排序D.紧并排序 解析:评析 快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个
35、线性表,从中选出最小的元素,将它交换到表的前面 (这是它应有的位置),然后对乘下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。15.假定 int类型变量占用两个字节,若有定义:int x10=0,2,4);,则数组 x在内存中所占字节数是_。(分数:1.00)A.3B.6C.10D.20 解析:评析 当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组x10不论是否为其元素初始化,它所分配的存储空间仍为 2*10=20个字节。16.下面程序的输出结果为_。 #includestring.h main() char p17=“
36、abc“,p2=“ABC“,str50=“xyz“; strcpy(str,strcat(p1,p2); printf(“%s“,str); (分数:1.00)A.xyzabcABCB.abcABC C.xyzabcD.xyzABC解析:评析 strcpy(str1,s1):作用是将字符串 s1拷贝到字符数组 str1中去。strcat(字符数组 1,字符数组 2):把字符串 2接到字符串 1的后面,结果放在字符数组 1中,函数调用后返回字符数组 1的地址。 本题定义了三个字符数组 p1,p2,str,strcat(p1,p2)函数的作用是将字符串数组 p2接到字符串p1的后面,结果放在字符数
37、组 p1,再通过 strcpy()函数将该字符串拷贝到 str数组中,原 str数组中的字符串 xyz被覆盖,因此打印输出字符串 str即可得到 abcABC。17.以下函数值的类型是_。 fun(floatx) float y; y=3*x-4; return y; (分数:1.00)A.int B.不确定C.voidD.float解析:评析 C 语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。18.下列属于 C语言语句的是_。(分数:1.00)A.printf(“%d/n“,B.#includestdihC.a=b;b=c;c=a; D./*thi
38、s is a program*/解析:评析 在 C语言中,一个完整的 C语句必须在语句末尾出现分号,分号是 C语句的必要组成部分。本题答案为 C。19.为了避免嵌套的 if-else的二义性,C 语言钡定:else 与_配对。(分数:1.00)A.缩排位置相同的 ifB.其之前最近的 if C.其之后最近的 ifD.同一行上的 if解析:评析 在 if语句中又包含一个或多个 if语句称为 if语句的嵌套。应当注意 if与 else的配对关系,在 C语言中,从量内层开始,else 总是与它上面最近的(未曾配对的)if 配对。20.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
39、_。(分数:1.00)A.地址传递B.单向值传递 C.由实参传给形,再由形参传回实参D.传递方式由用户指定解析:评析 C 语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。21.设 int型占 2个字节,则 unsigned int所能表示的数据范围是_。(分数:1.00)A.065535 B.-3276932767C.165536D.032767解析:评析 本题 int型占 2个字节,即 16位,unsigned int 所能表示的数据范围是 O(2 16-1),即 0-65535。22.视图设
40、计一般有 3种设计次序,下列不属于视图设计的是_。(分数:1.00)A.自顶向下B.由外向内 C.由内向外D.自底向上解析:评析 视图设计一般有 3种设计次序,它们分别是自顶向下,自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。23.在计算机中,算法是指_。(分数:1.00)A.查询方法B.加工方法C.解题方案的准确而完整的描述 D.排序方法解析:评析 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征:可行性、确定性、有穷性和拥有足够的情报。24.变量 a所占的内存字节数是_。 union U char st4;
41、int i; long 1; ; struct A int c; union U u; a;(分数:1.00)A.4B.5C.6 D.8解析:评析 结构件变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量 a中成员 c为整型占 2个字节,共用体变量 u最大长度为 4个字节,故选 C。25.以下程序输出正确的是_。 amovep(int *p,int(*A) 3,int n) int i,j; for(i=0;in;i+) for(j=0;jn;j+) *p=aij;p+ main() int *p,a33=1,3,5,2,4,6; p=(in
42、t*)malloc(100); amovep(p,a,3); printf(“%d%d/n“,p2,p5);free(p); (分数:1.00)A.56 B.25C.34D.程序错误解析:评析 本题 main函数中定义了指针 p和二维数组 a,通过函数 amovep将数组的值存入指针 p所指向的存储单元中,a 的各元素分别为:a00=1,a01=3,a02=5,a10=2,a11=4,a12=6,a20=0,a21=0。通过 malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过 amovep(p,a,3)调用函数 amovep,使得实参 p与形参
43、 p,实参数组 a与形参中指向数组的指针变量共用同一存储空间。最后输出 p2,p5为 56。26.在数据流图(DFD) 中,带有名字的箭头表示_。(分数:1.00)A.控制程序的执行顺序B.模块之间的调用关系C.数据的流向 D.程序的组成成分解析:评析 在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。27.在设计程序时,应采纳的原则之一是_。(分数:1.00)A.程序结构应有助于读者理解 B.不限制 goto语句的使用C.减少或取消注解行D.程序越短越好解析:评析 滥用 goto语句将使程
44、序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。28.以下程序的结果是_。 int a,b; void fun() a=100;b=200; main() int a=5,b=7; fun(); printf(“%d%d/n“,a,b) ; (分数:1.00)A.100200B.57 C.200100D.75解析:评析 全程变量是可以在于函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。29.下面的关键字中,不能够从循环体中跳到循环体外的_。(分数:1.00)A.gotoB.break C.returnD.continue解析:评析 在 C语言中,可以用 break语句和 continue语句跳出本层循环和结束本次循环。goto 语句可跳出多层循环,如果在函数的循环体内使用 return语句,就会直接结束循环返回函数值。30.设 x为 int型变量,执行以下语句,x=10;x+=x-=x-x;x 的值为_。(分数:1.00)A.10B.20 C.30D.40解析:评析 本题 x=10,表达式“x+=x=x-x;”的求解步骤如下:先进行 x-=x-x的运