1、国家二级(C 语言)机试模拟试卷 132及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.有关队列的叙述中正确的是( )。(分数:2.00)A.循环队列是队列的一种链式存储结构B.循环队列是队列的一种顺序存储结构C.循环队列是非线性结构D.循环队列是一种逻辑结构2.一棵二叉树共有 20个节点,其中 5个是叶子节点,则度为 1的节点数为( )。(分数:2.00)A.15B.11C.6D.43.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(分数:2.00)A.内模式B.外模式C.概念模式D.逻辑模式4.在满足实体完整性约束的条
2、件下( )。(分数:2.00)A.一个关系中可以没有任何候选关键字B.一个关系中有且只有一个候选关键字C.一个关系中必须有多个候选关键字D.一个关系中应该有一个或多个候选关键字5.有三个关系 R、S 和 T如下: (分数:2.00)A.自然连接B.差C.除D.交6.在软件设计中不使用的工具是( )。(分数:2.00)A.PAD图B.程序流程图C.系统结构图D.数据流图(DFD 图)7.关于需求分析阶段任务的叙述中不正确的是( )。(分数:2.00)A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制订软件测试计划8.黑盒测试用例的主要根据是( )。(分数:2.00)
3、A.算法合理性B.程序外部功能C.相关数据结构D.程序流程图9.关于软件危机表现的叙述中不正确的是( )。(分数:2.00)A.软件过程文件不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高10.关于程序模块化的叙述中错误的是( )。(分数:2.00)A.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C.把程序分成若干相对独立的模块,可便于编码和调试D.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序11.关于 C语言程序格式的叙述中正确的是( )。(分数:2.00)A.用
4、C语言编写的程序只能放在一个程序文件中B.C程序书写格式严格,要求一行内只能写一个语句C.C程序中的注释只能出现在程序的开始位置和语句的后面D.C程序书写格式自由,一个语句可以写在多行上12.设 int m=0;与其他三个表达式的结果不同的是( )。(分数:2.00)A.m+B.m+=1C.+mD.m+113.关于 C语言数据类型叙述中,错误的是( )。(分数:2.00)A.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型B.若要保存带有多位小数的数据,可使用双精度类型C.若只处理“真”和“假”两种逻辑值,应使用逻辑类型D.整数类型可以用来表示自然数14.以下数值常量不符合
5、C语言语法的是( )。(分数:2.00)A.30E02B.le3C.012D.0xabcd15.有如下程序段:int x=12;double y=3141593;printf(d86f,x,y);其输出结果是( )。(分数:2.00)A.12,3141593B.123141593C.12 3141593D.123141593016.已知字符A的ASC代码值是 65,字符变量 a的值是A,b 的值是D。则执行语句orintf(d,d,a,b 一 2);的输出结果是( )。(分数:2.00)A.A,DB.A,BC.65,68D.65,6617.当 x为大于 1的奇数时,值为 0的表达式是( )。(
6、分数:2.00)A.x2=0B.x3C.x2!=0D.x2=118.有以下程序: #include main() int x; scanf(d,&x); if(x=4); else if(x8)printf(dn,x); 程序运行时,输入的值在哪个范围才会有输出结果?( )(分数:2.00)A.小于 4的整数B.不等于 8的整数C.大于 4或等于 8的整数D.大于 4且小于 8的整数19.有以下程序: #include main() int a=7; while(a); printf(dn,+a); 程序运行后的输出结果是( )。(分数:2.00)A.0B.一 1C.1D.720.有以下程序:
7、 #include main() char b,c; inti; b=a; c=A; for(i=0;i6;i+) if(i2)putehar(i+b); else putchar(i+c); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.abcDEFB.ABcDEfC.aBcDeFD.AbCdEf21.有以下程序: #include main() int i,j,x=0; for(i=0;i2;i+) x+: for(j=0;j4;j+) if(j2)continue; x+: x+: printf(x:dn,x); 程序执行后的输出结果是( )。(分数:2.00
8、)A.x:4B.x:8C.x:6D.x:1222.设有以下函数:int fun(int n,char*s)则下面对函数指针的定义和赋值均正确的是( )。(分数:2.00)A.int(*pf)(int,char);pf=&fun;B.int*pf();pf=fun;C.int*pf();*pf=fun;D.int(*pf)(int,char*);pf=fun;23.若用变量作为实参调用函数,以下正确的是( )。(分数:2.00)A.函数的形参和实参分别占用不同的存储单元B.形参只是形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参会覆盖实参存储空间的值24.若要求定
9、义具有 10个 float型元素的一维数组 a,则以下定义语句中错误的是( )。(分数:2.00)A.float a5+5;B.float n=10,an;C.#define n 5 float a2*n;D.#define N 10 float aN;25.有以下程序: #include main() int i,t3=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(d,t2 一 ii); 程序执行后的输出结果是( )。(分数:2.00)A.3 5 7B.7 5 3C.3 6 9D.7 5 126.有以下程序: #include void fun(int*s
10、,int n1,int n2) int i,j,t; i=n1;j=n2; while(ij) t=si;si:sj;sj:t;i+;j main() int a10=9,8,7,6,5,4,3,2,1,0,k; fun(a,0,2);fun(a,7,9);fun(a,0,7); for(k=0;k10;k+) printf(d,ak); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.2341098765B.03456987 12C.9876543210D.098765123427.有以下程序: #include main() int a44=1,2,3,4,1,6
11、,5,9,3,7,2,5,4,2,4,l,i,k,t; for(i=0;i3;i+) for(k=i+1;k4;k+) if(aiiakk) t=aii;aii=akk;akk=t; for(i=0;i4;i+) printf(d,a0i); 程序运行后的输出结果是( )。(分数:2.00)A.9,1,2,6B.6,2,3,4C.6,4,3,2D.9,3,4,628.以下关于字符串的表达式中正确的语句组是( )。(分数:2.00)A.char*s;s=Chinese!;B.char*s;s=Chinese!;C.char s 10;s=Chinese!;D.char s;s=Chinese!;
12、29.若有以下定义和语句: #include char cl10=123,c2=n123; printf(ddn,strlen(c1),strlen(c2); 则输出结果是( )。(分数:2.00)A.10 7B.10 5C.3 7D.3 530.有以下程序: #include void funl(char*p) char*q; q=p; while(*q!=0) (*q)+; q+; main() char a=1234567,*P; p=&a3; funl(P); printf(sn,a); 程序执行后的输出结果是( )。(分数:2.00)A.1235678B.2345678C.12456
13、78D.765432131.有以下函数:int sf(char*s)char*t=s;while(*t+);t;return(t 一 s);以下关于 sf函数功能叙述正确的是( )。(分数:2.00)A.将字符串 s复制到字符串 tB.求字符串的 ASC码值C.求字符串 s的长度D.求字符串 s所占字节数32.有以下程序: #include int fun(int x,int y) if(y=0)return x; else return(fun(一一 x,一一 y); main() printf(dn,fun(5,3); 程序运行后的输出结果是( )。(分数:2.00)A.1B.2C.3D.
14、433.关于函数的叙述中错误的是( )。(分数:2.00)A.C程序函数中定义的自动变量,系统不自动赋确定的初值B.在 C程序的同一函数中,可以在复合语句内定义变量C.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值D.C程序函数的形参不可以说明为 static型变量34.有以下程序段:struct stint x;int*y;*ps;int a:1,2,b=3,4;struct st c2=10,a,15,b;ps=c;以下选项中表达式的值为 15的是( )。(分数:2.00)A.+ps一xB.ps一xC.*ps一yD.(ps+)一x35.有以下程序: #include st
15、ruct STint n;int a20; void fun(int*a,int n) int i; for(i=0;in 一 1;i+) ai+=1; main() int i; struct ST s=10,1,2,3,4,5,6,7,8,9,10; fun(sa,sn); for(i=0;isn;i+) printf(d,sa i); 程序运行后的输出结果是( )。(分数:2.00)A.10,9,8,7,6,5,4,3,2,1,B.2,3,4,5,6,7,8,9,10,11,C.11,10,9,8,7,6,5,4,3,2,D.2,3,4,5,6,7,8,9,10,10,36.有以下程序:
16、 #include #include typedef structchar name9;char sex;float score2;ST; void fun(ST x) STU y=Tom,m,980,900; int i; strcpy(xname,yname);xsex=ysex: for(i=0;i2;i+) xscore i=yscore 1; main() ST student=Bob,f,992,890; fun(student); printf(s,c,20f,20fn,studentname,studentsex,studentscore0,student score1); 程
17、序运行后的输出结果是( )。(分数:2.00)A.Tom,m,98,90B.Bob,f,99,89C.Bob,f,98,90D.Tom,f,99,8937.设文件指针 fp=fopen(file,W),关于此文本文件操作的叙述中正确的是( )。(分数:2.00)A.可以随意读和写B.写操作结束后可以从头开始读C.可以在原有内容后追加写D.只能写不能读38.有以下程序: #include #define f(x)2*x*x main() int a=2,s,t; s=f(a+1); t=f(a+1); printf(d,dn,s,t); 程序运行后的输出结果是( )。(分数:2.00)A.7,1
18、8B.18,18C.7,7D.18,739.有以下程序: #include main() char x=4; printf(dn,x=x2); 程序运行后的输出结果是( )。(分数:2.00)A.16B.8C.40D.440.设 fp为指向某二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为( )。(分数:2.00)A.0B.0C.非 0值D.NULL二、程序填空题(总题数:1,分数:2.00)41.下列给定程序中,函数 fun的功能是:从形参 SS所指字符串数组中,删除所有串长超过 k的字符串,函数返回剩余字符串的个数。SS 所指字符串数组中共有 N个字符串,且串长小于
19、 M。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1C 中。不得增行或删行,也不得更改程序的结构! #includestdioh #includestringh #define N 5 #define M 10 int fun(ehar(*ss)M,int k) int i,j=0,len; *found* for(i=0;i1;i+) len=strlen(ssi); *found* if(1en=一2) *found* strcpy(ssj+,3); return j; main() char xNM=“Beijing”,“Sha
20、nghai”,“Tianjin”,“Nanjing”,“Wuhan”; int i,f; prinff(“nThe original stringnn”); for(i=0;iN;i+) puts(xi); printf(“n”); f=fun(x,7); prinff(“The string witch length is less than or equal to 7:n”); for(i=0;if;i+)puts(xi); printf(“n”);(分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中函数 fun的功能是:从整数 lO到 55之间,查找能被
21、3整除且有一位上的数值是 5的数,把这些数放在 b所指的数组中,这些数的个数作为函数值返回。规定函数中 a1放个位数,a2 放十位数。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MODllc 中,不得增行或删行,也不得更改程序的结构! #includestdioh int fun(int*b) int k,a1,a2,i=0; for(k=10;k=55;k+) *found* a2=k10: al=ka2*10: if(k3=0&a2=5)(k3=0&a1=5) bi=k;i+; *found* return k; main() int a100,k,m; m=fun(
22、a); prinff(“The result is:n”); for(k=0;km;k+) printf(“4d”,ak); printf(“n”); (分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.请编写函数 fun,其功能是分别统计形参 t所指二维数组中字母 A和 C的个数。注意:部分源程序存在 PROG1C 中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语匈试题程序:#includestdioh#includestdlibh#define M 14 void NONO():void fun(char(*t)M,int*
23、a,int*c)void get(char(*s)M)int i,j; for(i=0;iM;j+) for(j=0;jM;j+) sij=65+rand()12;printf(“c”,si 3j); printf(“n”); main()char aMM; int x,y; get(a); fun(a,&x,&y); printf(“A=d C=dn”,x,y);NONO();void NONO()*本函数用于打开文件,输人数据,调用函数,输出数据,关闭文件。* FILE*rp,*wf: int i,j,x,y: char aMM; fp=fopen(“c:testindat”,“r”);
24、wf=fopen(“c:testoutdat”,“W”); for(i=0;iM;i+) for(j=0;jM;j+) fscanf(rp,“c”,&aij); fun(a,&x,&y); fprintf(wf,“A=dn”,x); fprintf(wf,“C=dn”,y); fclose(fp); fclose(wf);(分数:2.00)_国家二级(C 语言)机试模拟试卷 132答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.有关队列的叙述中正确的是( )。(分数:2.00)A.循环队列是队列的一种链式存储结构B.循环队列是队列的一种顺序存储
25、结构 C.循环队列是非线性结构D.循环队列是一种逻辑结构解析:解析:队列是一种线性结构,所以 C、D 两项错误,循环队列是一种顺序存储结构。2.一棵二叉树共有 20个节点,其中 5个是叶子节点,则度为 1的节点数为( )。(分数:2.00)A.15B.11 C.6D.4解析:解析:二叉树中度为 0的叶子节点总比度为 2的节点多 1个,所以度为 2的节点个数是 51=4,总节点是 20,所以度为 1的节点数是 2054=11。3.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(分数:2.00)A.内模式 B.外模式C.概念模式D.逻辑模式解析:解析:数据库模式分为内模式、外模
26、式和概念模式。概念模式是指数据库中数据逻辑结构的描述,外模式是用户的数据视图,给每个用户的局部数据描述,内模式是指数据库物理存储结构与存取方法。4.在满足实体完整性约束的条件下( )。(分数:2.00)A.一个关系中可以没有任何候选关键字B.一个关系中有且只有一个候选关键字C.一个关系中必须有多个候选关键字D.一个关系中应该有一个或多个候选关键字 解析:解析:实体完整性约束要求关系的主键中属性值不能为空。5.有三个关系 R、S 和 T如下: (分数:2.00)A.自然连接B.差C.除 D.交解析:解析:设两个关系 R和 S的元数分别为 r和 s(rs0),那么 T=RS是一个(r 一 s)元的
27、元组的集合,即 T中的域是在 R中但不在 S中的域组成,所以选 C项。6.在软件设计中不使用的工具是( )。(分数:2.00)A.PAD图B.程序流程图C.系统结构图D.数据流图(DFD 图) 解析:解析:PAD 图在软件设计的详细设计阶段用到,系统结构图在程序需求分析阶段用到,程序流程图也在软件详细设计阶段用到,均属于软件设计过程中使用的工具,唯有数据流图不是在软件设计阶段用到的工具,它是结构化分析方法中用到的工具,是在可行性分析阶段用到的工具,而非软件设计阶段。7.关于需求分析阶段任务的叙述中不正确的是( )。(分数:2.00)A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规
28、格说明书评审D.制订软件测试计划 解析:解析:因为是软件需求阶段,所以 D选项不正确。8.黑盒测试用例的主要根据是( )。(分数:2.00)A.算法合理性B.程序外部功能 C.相关数据结构D.程序流程图解析:解析:黑盒测试主要是对软件的功能进行测试和验证,因此不用测试软件内部的相关内容,包括算法、数据结构和流程等。9.关于软件危机表现的叙述中不正确的是( )。(分数:2.00)A.软件过程文件不规范 B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高解析:解析:软件危机主要是指软件需求无法满足,软件进度无法控制,软件不可维护,软件开发生产率低,软件质量难以控制,软件成本不断提高。所以
29、选 A项。10.关于程序模块化的叙述中错误的是( )。(分数:2.00)A.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C.把程序分成若干相对独立的模块,可便于编码和调试D.可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 解析:解析:程序模块化设计是采用自顶向下、逐步细化的方法,不是自底向上,所以选项 D不正确。11.关于 C语言程序格式的叙述中正确的是( )。(分数:2.00)A.用 C语言编写的程序只能放在一个程序文件中B.C程序书写格式严格,要求一行内只能写一个语句C.C程序中的注
30、释只能出现在程序的开始位置和语句的后面D.C程序书写格式自由,一个语句可以写在多行上 解析:解析:因为选项 B和 D是互反选项,所以答案定是其中之一,C 语言的一个语句可以写在多行上,所以 D正确;A 的错误在于 C语言可以通过 include语句将其他文件的内容引入当前文件,C 项的错误在于 C语言的注释可以出现在程序中间位置,当然也可以出现在语句前面。12.设 int m=0;与其他三个表达式的结果不同的是( )。(分数:2.00)A.m+ B.m+=1C.+mD.m+1解析:解析:m+是先使用表达式的值再计算加 1,所以表达式的值是 0,+m 是先计算加 1再使用值,所以表达式的值为 1
31、,其他两个选项表达式的值均为 1,所以选项 A正确。13.关于 C语言数据类型叙述中,错误的是( )。(分数:2.00)A.若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型B.若要保存带有多位小数的数据,可使用双精度类型C.若只处理“真”和“假”两种逻辑值,应使用逻辑类型 D.整数类型可以用来表示自然数解析:解析:C 语言中没有逻辑类型;多种数据类型的全集可以通过结构体来定义,双精度类型可以表示带有多位小数的数据,整数可以精确表示自然数。14.以下数值常量不符合 C语言语法的是( )。(分数:2.00)A.30E02 B.le3C.012D.0xabcd解析:解析:科学计数法
32、的 E后面必须是整数,所以 A)项不合法,C)项和 D)项分别是合法的八进制数和十六进制数。15.有如下程序段:int x=12;double y=3141593;printf(d86f,x,y);其输出结果是( )。(分数:2.00)A.12,3141593B.123141593 C.12 3141593D.1231415930解析:解析:printf 的输出完全按照格式输出,格式中两个输出变量之间没有空格,因此,输出结果应该是 123141593输出格式中的 86f。是指总共有 8位,其中小数部分占 6位,所以 D)错。16.已知字符A的ASC代码值是 65,字符变量 a的值是A,b 的值
33、是D。则执行语句orintf(d,d,a,b 一 2);的输出结果是( )。(分数:2.00)A.A,DB.A,BC.65,68D.65,66 解析:解析:C 语言的字符变量可以当作特殊的整数变量对待,所以以d 的格式输出字符时,输出的是其对应的 ASC代码。如果其和整数做运算,也是用 ASC代码进行运算,因此,结果是 65,66。17.当 x为大于 1的奇数时,值为 0的表达式是( )。(分数:2.00)A.x2=0 B.x3C.x2!=0D.x2=1解析:解析:x=3,5,7,9,x2 永远是大于 1的奇数,所以 A)项表达式为假,C 项和 D)项表达式为真;x3 的值是大于 1的整数,所
34、以表达式不为 0。18.有以下程序: #include main() int x; scanf(d,&x); if(x=4); else if(x8)printf(dn,x); 程序运行时,输入的值在哪个范围才会有输出结果?( )(分数:2.00)A.小于 4的整数B.不等于 8的整数C.大于 4或等于 8的整数D.大于 4且小于 8的整数 解析:解析:if 条件语句后跟了一个空语句,故要执行 else if后面的语句,必须是要 x大于 4且小于8。19.有以下程序: #include main() int a=7; while(a); printf(dn,+a); 程序运行后的输出结果是(
35、)。(分数:2.00)A.0 B.一 1C.1D.7解析:解析:注意到 while后面的分号是一个空语句,且 a是先用表达式,再减 1,所以 while循环结束后 a的值是一 1,在打印语句中+a 是先加 1再使用表达式,所以输出结果是 0。20.有以下程序: #include main() char b,c; inti; b=a; c=A; for(i=0;i6;i+) if(i2)putehar(i+b); else putchar(i+c); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.abcDEFB.ABcDEfC.aBcDeFD.AbCdEf 解析:解析
36、:当 i=0时,执行 else语句,打印 A,当 i=1时执行 if语句,打印 b。21.有以下程序: #include main() int i,j,x=0; for(i=0;i2;i+) x+: for(j=0;j4;j+) if(j2)continue; x+: x+: printf(x:dn,x); 程序执行后的输出结果是( )。(分数:2.00)A.x:4B.x:8 C.x:6D.x:12解析:解析:分析知,两个循环的外循环执行 2次,内循环执行 2次,但外部循环体内有两个 x+,内循环体内有一个 x+,所以执行 x+的次数共计是外部 4次,内部是 2*2=4次,所以总共执行 8次,
37、结果是8。22.设有以下函数:int fun(int n,char*s)则下面对函数指针的定义和赋值均正确的是( )。(分数:2.00)A.int(*pf)(int,char);pf=&fun;B.int*pf();pf=fun;C.int*pf();*pf=fun;D.int(*pf)(int,char*);pf=fun; 解析:解析:函数的参数可以是指针类型。它的定义形式为 void(*pf)(),原函数定义的形参变量是一个整数型和一个字符指针型,所以答案 D正确。23.若用变量作为实参调用函数,以下正确的是( )。(分数:2.00)A.函数的形参和实参分别占用不同的存储单元 B.形参只是
38、形式上的存在,不占用具体存储单元C.同名的实参和形参占同一存储单元D.函数的形参会覆盖实参存储空间的值解析:解析:如果用变量作为实参进行函数调用,则实参和形参会占用不同的存储单元,即使变量名相同,也不会互相影响;但如果使用指针作为实参调用函数,则因为地址在内存中是唯一的,所以实参和形参占用相同的存储单元。24.若要求定义具有 10个 float型元素的一维数组 a,则以下定义语句中错误的是( )。(分数:2.00)A.float a5+5;B.float n=10,an; C.#define n 5 float a2*n;D.#define N 10 float aN;解析:解析:注意定义数组
39、时,元素个数可以是宏定义常量,但不能是变量。因此选项 B错。25.有以下程序: #include main() int i,t3=1,2,3,4,5,6,7,8,9; for(i=0;i3;i+) printf(d,t2 一 ii); 程序执行后的输出结果是( )。(分数:2.00)A.3 5 7B.7 5 3 C.3 6 9D.7 5 1解析:解析:for 循环的变量 i=0,1,2,所以输出的数组元素是 t20,t11,t02,所以应该是 7,5,3。26.有以下程序: #include void fun(int*s,int n1,int n2) int i,j,t; i=n1;j=n2;
40、 while(ij) t=si;si:sj;sj:t;i+;j main() int a10=9,8,7,6,5,4,3,2,1,0,k; fun(a,0,2);fun(a,7,9);fun(a,0,7); for(k=0;k10;k+) printf(d,ak); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.2341098765B.03456987 12 C.9876543210D.0987651234解析:解析:子函数的功能是将数组中的元素进行对调,如 fun(a,0,2)是将数组中的元素 a0和 a2对调,所以执行 3次子函数以后的结果是 034569871
41、2。27.有以下程序: #include main() int a44=1,2,3,4,1,6,5,9,3,7,2,5,4,2,4,l,i,k,t; for(i=0;i3;i+) for(k=i+1;k4;k+) if(aiiakk) t=aii;aii=akk;akk=t; for(i=0;i4;i+) printf(d,a0i); 程序运行后的输出结果是( )。(分数:2.00)A.9,1,2,6B.6,2,3,4 C.6,4,3,2D.9,3,4,6解析:解析:双重 for循环和 if条件语句结合实现对二维数组对角线上的元素1,6,2,1进行从大到小的排序,输出结果只是第一行的内容,所以
42、结果是 6,2,3,4。28.以下关于字符串的表达式中正确的语句组是( )。(分数:2.00)A.char*s;s=Chinese!;B.char*s;s=Chinese!; C.char s 10;s=Chinese!;D.char s;s=Chinese!;解析:解析:A 选项错在不能用大括号,C 选项和 D选项应在定义时赋初值,如果定义之后赋值,则需要对数组的每个元素分别进行赋值。29.若有以下定义和语句: #include char cl10=123,c2=n123; printf(ddn,strlen(c1),strlen(c2); 则输出结果是( )。(分数:2.00)A.10 7
43、B.10 5C.3 7D.3 5 解析:解析:数组元素在求长度时只计算其中的有效字符,所以123的有效长度是 3,字符串的是转义字符,所以n 代表一个字符(回车符),也只代表一个字符(),所以n123的有效长度是 5。30.有以下程序: #include void funl(char*p) char*q; q=p; while(*q!=0) (*q)+; q+; main() char a=1234567,*P; p=&a3; funl(P); printf(sn,a); 程序执行后的输出结果是( )。(分数:2.00)A.1235678 B.2345678C.1245678D.7654321
44、解析:解析:子函数的功能是将字符串的每个字符加 1,注意到主函数中的实参是数组 a的第 4个元素,所以结果是 1235678。31.有以下函数:int sf(char*s)char*t=s;while(*t+);t;return(t 一 s);以下关于 sf函数功能叙述正确的是( )。(分数:2.00)A.将字符串 s复制到字符串 tB.求字符串的 ASC码值C.求字符串 s的长度 D.求字符串 s所占字节数解析:解析:子函数中开始时两个指针 s和 t均指向字符串的首字符,执行 while空循环语句后,由于t+是先用值再加 1,所以 t指向了字符串结束符的下一个字符,t 一一再将其移动回字符串
45、的结束字符,而 s的位置一直没有变化,所以,ts 是求字符串的长度。32.有以下程序: #include int fun(int x,int y) if(y=0)return x; else return(fun(一一 x,一一 y); main() printf(dn,fun(5,3); 程序运行后的输出结果是( )。(分数:2.00)A.1B.2 C.3D.4解析:解析:子函数的功能是递归调用,但可以看出递归时,x 和 y的值是同时减小的,且没有其他表达式,所以当 y为 0的时候,x=xy=53=2。33.关于函数的叙述中错误的是( )。(分数:2.00)A.C程序函数中定义的自动变量,系统不自动赋确定的初值B.在 C程序的同一函
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1