1、国家二级(C 语言)机试模拟试卷 137及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.栈是一种先进后出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对2.下列叙述中正确的是( )。(分数:2.00)A.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构B.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性3.程序设
2、计各阶段中,软件测试的目的是( )。(分数:2.00)A.评估软件功能B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误4.程序开发之前进行需求分析所产生的主要文档是( )。(分数:2.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书5.关于计算机软件程序的生命周期,以下叙述正确的是( )。(分数:2.00)A.软件产品从提出、实现、使用、维护到停止使用退役的过程B.软件从需求分析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程6.在程序设计过程中的面向对象方法中,继承属性是指( )。(分数:2.00)A.一组对象所具有的相
3、似性质B.类之间共享属性和操作的机制C.各对象之间的共同性质D.一个对象具有另一个对象的性质7.数据库管理的概念中,层次型、网状型和关系型数据库划分原则是( )。(分数:2.00)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式8.一个人可以使用多台计算机进行不同的工作,而一台计算机可被多个不同的人使用,则实体工作人员与实体计算机之间的联系是( )。(分数:2.00)A.一对一B.一对多C.多对一D.多对多9.数据库设计中反映用户对数据要求的模式是( )。(分数:2.00)A.外模式B.概念模式C.内模式D.设计模式10.有三个关系 R、S 和 T如下: (分数:2.00)A
4、.自然连接B.差C.交D.并11.现代计算机能直接执行的程序是( )。(分数:2.00)A.源程序B.汇编程序C.目标程序D.可执行程序12.以下关于 C语言语法的叙述中正确的是( )。(分数:2.00)A.C语言规定必须用 main作为主函数名,程序将从此开始执行B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C.C语言程序将从源程序中第一个函数开始执行D.main的各种大小写拼写形式都可以作为主函数名,如 MAIN,Main 等13.表达式:(int)(double)73)一(9)2 的值是( )。(分数:2.00)A.0B.1C.2D.314.下列定义语句有错的是(
5、)。(分数:2.00)A.int_float;B.float double_;C.char IF;D.float Mys;15.C程序合法实数是( )。(分数:2.00)A.10e02B.2e0C.E8D.314E16.在 C语言程序运行时想通过 scanf(dcdc,&x,&s,&y,&t);语句为变量 x和 y赋数值10和 20,为变量 s和 t赋字符 x和 y。以下输入形式中正确的是( )。(注:口代表空格字符)(分数:2.00)A.10口 X回车20 口 Y回车B.10口 X20口 Y回车C.10X回车20Y回车D.10口 X口 20口 Y回车17.不符合语法的 C语言常量是( )。(
6、分数:2.00)A.02e+2B.12C.sD.01218.C语言中分支结构中的 if(表达式)语句中,关于“表达式值的叙述中正确的是( )。(分数:2.00)A.必须是逻辑值B.必须是整数值C.不能为零D.可以是任意合法的数值19.与以下语句等价的语句是( )。if(ab)if(ac)k=a;else k=c;elseif(bc)k=b; else k=c;(分数:2.00)_20.有以下程序: #inelude void main() int i=3; while(一一 i)printf(d,i 一=2); printf(n); 程序执行后的输出结果是( )。(分数:2.00)A.一 1B
7、.0C.1D.221.有以下程序: #include void main( ) for(int x=3;x=1;x) for(int y=1;y=2;y+)printf(d,x+y); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.4 4 3 3 2 2B.4 5 3 4 2 3C.2 3 3 4 4 5D.2 3 3 4 2 322.有以下程序: #include void main() int i=5,s=0; do switch(i) case 1:case 3:s+=1;i;break; default:s=0;i 一一; case 2:case 4:s+=
8、2;i 一一;break; printf(d,s); while(i0&s5); 程序运行后的输出结果是( )。(分数:2.00)A.235B.2350C.0235D.235623.以下叙述中正确的是( )。(分数:2.00)A.每自定义函数中必须有一条 return语句B.自定义函数中可以根据不同情况设置多条 return语句C.定义为 void类型的函数中可以有 return语句D.没有 return语句的自定义函数在执行结束时不能返回到调用处24.已定义以下函数:int fun(int*pt)retum*pt;fun 函数的返回值是( )。(分数:2.00)A.不确定的值B.一个整数C.
9、形参 p中存放的值D.形参 p的地址值25.以下程序段没有语法错误的是( )。(分数:2.00)A.int*pt;scanf(d,&pt);B.int*pt;scanf(d,pt);C.int i,*p=&i;scanf(d,p);D.int k,*pt;*pt=&k;scanf(d,pt);26.对于 float a10,*s=a;语句,能够代表数组元素 a3的是( )。(分数:2.00)A.(*s)3B.*s+3C.*s+3D.*(s+3)27.有以下程序: #include void f(int*p) int i=0: for(;i5;i+)(*p)+=2; void main() in
10、t a5=0,1,2,3,4,i; f(a); for(i=0;i5;i+)printf(d,a i); 程序运行后的输出结果是( )。(分数:2.00)A.10,1,2,3,4,B.0,1,2,3,4,C.10,2,3,4,5,D.2,3,4,5,6,28.有以下程序: #include int fun(int pta4,int n,int k) int m,i; m=pta0k; for(i=;in;i+) if(ptaikm) m=ptaik; return m; Void main( ) int a44=1,2,3,4, 5,6,6,8, 9,10,11,12, 13,14,15,16
11、; printf(dn,fun(a,4,0); 程序运行后的输出结果是( )。(分数:2.00)A.16B.15C.14D.1329.以下关于字符串的定义和赋值语句,正确的是( )。(分数:2.00)A.char*s;s=Text!;B.char*s;s=Text!:C.char S10;s=Text!;D.char s;s=Text!;30.在 C程序中已经定义了字符串,char*str1=STRING,*str2=string;以下选项中,能够输出“STRING”的语句是( )。(分数:2.00)A.if(strcmp(s1,s2)!=0)puts(s1);B.if(strcmp(s1,s
12、2)!=0)puts(s2);C.if(strcmp(s1,s2)=1)puts(s1);D.if(strcmp(s1,s2)=0)puts(s1);31.有以下程序: #include void fun(char*p) +p; printf(sn,*p); void main() char*a=Monday,Tuesday,Friday,Saturday,Sunday; fun(a); 程序运行后的输出结果是( )。(分数:2.00)A.MondayB.ondayC.TuesdayD.uesday32.已知库函数 islower(ch)用以判断 ch中的字母是否为小写字母,则下列程序运行后的
13、结果是( )。 #include #include void fun(chas*p) int i=0; while(pi) if(pi=&islower(pi 一 1) pi一 1=pi一 1一a+A; i+; void main() char ss100=aa bb CDE!; fun(ss);printf(sn,ss); (分数:2.00)A.aa bb CDE!B.Aa Bb CDe!C.aA Bb CDE!D.aA bB CDE!33.有以下程序: #include int Lt(int x) int sum; if(x=0x=1)return(5); sum=x*xLt(x一 2);
14、 return sum; void main() int i; i=Lt(3); printf(dn,i); 程序运行后的输出结果是( )。(分数:2.00)A.4B.9C.6D.834.有以下程序: #include int sumf(int x,int n) static int sum=0,i=0; for(;1n;1+)sum+=xi; return sum; void main() int a=1,2,3,4,5,b=7,8,9,10,ss=0; ss=sumf(a,5)+sumf(b,4); printf(dn,ss); 程序执行后的输出结果是( )。(分数:2.00)A.15B.
15、30C.45D.6035.对于如下的 C程序语句,选项中有错误的是( )。struct STRchar name10; int age;char sex;ps5,*pstr;pstr=&ps0;(分数:2.00)A.scanf(s,ps0name);B.scant(dt,&ps0age);C.scanf(c,&(pstr 一sex);D.scanf(d,pstr 一age);36.若有以下语句:typedef struct STint age;char sex;PS;以下叙述中正确的是( )。(分数:2.00)A.可用 PS定义结构体变量B.可用 ST定义结构体变量C.ST是 struct类型
16、的变量D.PS是结构体常量37.有以下程序: #include #include struct Sa int num; char name10; double s; ; struct Sa f(struct Sa t); void main() struct Sa a=101,Mary,10980; a=f(a); printf(d,s,61fn,anum,aname,as); struct Sa f(struct Sa t) tnum=102; strcpy(tname,Job); ts=12020: return t; 程序运行后的输出结果是( )。(分数:2.00)A.102,Mary,
17、12020B.102,Job,12020C.101,Job,10980D.101,Mary,1098038.设有宏定义:#define IsDIV(k,n)(kn=1)?1:0)且变量 m已正确定义并赋值,则宏调用:IsDIV(m,3)&IsDIV(m,5)为真时所要表达的是( )。(分数:2.00)A.判断 m是否能被 3和 5整除B.判断 m被 3或者 5整除是否余 1C.判断 m被 3和 5整除是否都余 1D.判断 m是否能被 3或者 5整除39.有以下程序: #include void main() FILE*fp; int k,n,a6=1,2,3,4,5,6; fp=fopen(d
18、2dat,w); fprintf(fp,dddn,a0,a1,a2); frintf(fp,dddn,a3,a4,a5); fclose(fp); fp=fopen(d2dat,r); fscanf(fp,dd,&k,&n); printf(ddn,k,n); fclose(fp); 程序运行后的输出结果是( )。(分数:2.00)A.1 2B.4 5C.123 456D.45640.有以下程序: #include void main() int x=l,y=2,z=3,s; s=(x )&z; printf(dn,s); 程序运行后的输出结果是( )。(分数:2.00)A.1B.2C.3D.
19、6二、程序填空题(总题数:1,分数:2.00)41.下列给定程序中,函数 fun的功能是:求 ss所指字符串数组中长度最短的字符串所在的行 下标,作为函数值返回,并把其串长放在形参 n所指的变量中。ss 所指字符串数组中共有 M个字符串,且串长小于 N。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1C 中。不得增行或删行,也不得更改程序的结构。 #include #include #define M 5 #define N 20 int fun(char(*ss)N,int*n) int i,k=0,len=N; *found*
20、for(i=0;i【1】;i+) len=strlen(ssi); if(i=0)*n=len; *found* if(len【2】*n) *n=len; k=i; *found* return【3】; main() char ssMN 3=shanghai,guangzhou,beijng,tianjin,chongqing; int n,k,i; printf(nThe original strings are:n); for(i=0;iM;i+)puts(ssil); k=fun(ss,&n); printf(nThe length of shortest string is:dn,n)
21、; printf(LaThe shortest string is:sn,ssk); (分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中,函数 fun的功能是:用递归算法计算斐波拉契数列中第 n项的值。从第 1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、例如,若给 n输入 7,则该项的斐波拉契数值为 13。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件 MOD11C 中,不得增行或删行,也不得更改程序的结构。#includestdiohlong fun(int g)*found*switch(g);case 0:return 0
22、;*found*case1;case2:return 1;return(fun(g 一 1)+fun(g一 2);main()long fib;int n;printf(Inputn:);scanf(d,&n);printf(n=dn,n);fib=fun(n);printf(fib=dnn,fib);(分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.编写函数 fun,其功能是:求 ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串“123412132”,输入字符为3,则输出2。注意:部分源程序在文件 PROG1C 中。请勿改动主函数 main和其他函数中的任何
23、内容,仅在函数 fun的花括号中填入你编写的若干语句。#lncludestdioh#includestringh#define M 81int fun(char*ss,char c)void main()char aM,ch;void NONO();printf(knPlease enter a string:);gets(a);printf(Please enter a char:);ch=getchar();printf(nThe number of the char is:dn,fun(a,ch);NONO();void NONO()*本函数用于打开文件,输入测试数据,调用fun函数,输
24、出数据,关闭文件。*int i;FILE*rf,*wf;char aM,bM,ch;rf=fopen(indat,r);wf=fopen(outdat,w);for(i=0;i10;i+)fscanf(rf,s,a);fcanf(rf,s,b);ch=*b:fprintf(wf,c=dn,ch,fun(a,ch);fclose(rf);fclose(wf);(分数:2.00)_国家二级(C 语言)机试模拟试卷 137答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.栈是一种先进后出的线性表 B.队列
25、是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对解析:解析:栈是一种后进先出的线性表,队列是一种先进先出的线性表。2.下列叙述中正确的是( )。(分数:2.00)A.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 B.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性解析:解析:线性表的链式存储结构会有一个额外的指针来指向下一个结点,所以其所需要的存储空间一般要多于顺序存储结构。3.程序设计各阶段中,软件测试的目的是( )。(
26、分数:2.00)A.评估软件功能B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误 解析:解析:软件测试的目的是发现程序中的错误,改正错误和评估软件功能均不是软件测试的目的。4.程序开发之前进行需求分析所产生的主要文档是( )。(分数:2.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书 解析:解析:需求分析所产生的主要文档是需求说明书,详细设计说明书、测试计划及用户手册都是在后续阶段产生的文档。5.关于计算机软件程序的生命周期,以下叙述正确的是( )。(分数:2.00)A.软件产品从提出、实现、使用、维护到停止使用退役的过程 B.软件从需求分
27、析、设计、实现到测试完成的过程C.软件的开发过程D.软件的运行维护过程解析:解析:计算机软件的生命周期是指软件产品从提出、实现、使用、维护到停止使用的全过程,其他选项均不全面。6.在程序设计过程中的面向对象方法中,继承属性是指( )。(分数:2.00)A.一组对象所具有的相似性质B.类之间共享属性和操作的机制 C.各对象之间的共同性质D.一个对象具有另一个对象的性质解析:解析:面向对象方法中的继承属性是指不同类之间共享属性和操作的机制;是指不同类之间的一种关联性,继承有属性继承和操作继承。7.数据库管理的概念中,层次型、网状型和关系型数据库划分原则是( )。(分数:2.00)A.记录长度B.文
28、件的大小C.联系的复杂程度D.数据之间的联系方式 解析:解析:计算机中的数据库管理机制是通过数据之间的联系方式不同而使用不同的数据库模型。8.一个人可以使用多台计算机进行不同的工作,而一台计算机可被多个不同的人使用,则实体工作人员与实体计算机之间的联系是( )。(分数:2.00)A.一对一B.一对多C.多对一D.多对多 解析:解析:一个人员可以使用多台计算机,而一台计算机可被多个人使用,所以人与计算机之间关系是多对多的关系。9.数据库设计中反映用户对数据要求的模式是( )。(分数:2.00)A.外模式 B.概念模式C.内模式D.设计模式解析:解析:数据库模式的三种结构是内模式、外模式和概念模式
29、。概念模式是指数据库中数据逻辑结构的描述,外模式是用户的数据视图,给每个用户的局部数据描述,内模式是指数据库物理存储结构与存取方法。因此,答案是 A。10.有三个关系 R、S 和 T如下: (分数:2.00)A.自然连接B.差 C.交D.并解析:解析:T 中数据是 R中有而 S中没有的数据,因此,是 R与 S的差运算结果。11.现代计算机能直接执行的程序是( )。(分数:2.00)A.源程序B.汇编程序 C.目标程序D.可执行程序解析:解析:计算机能执行的程序是汇编程序。12.以下关于 C语言语法的叙述中正确的是( )。(分数:2.00)A.C语言规定必须用 main作为主函数名,程序将从此开
30、始执行 B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C.C语言程序将从源程序中第一个函数开始执行D.main的各种大小写拼写形式都可以作为主函数名,如 MAIN,Main 等解析:解析:C 语言规定必须用 main作为主函数名,程序将从此开始执行,其他程序将作为子程序(函数)在main函数中调用执行。13.表达式:(int)(double)73)一(9)2 的值是( )。(分数:2.00)A.0B.1 C.2D.3解析:解析:此题是简单的计算题,73 的结果是 2333,通过(int)强制转换后为 2,92 的值是 1,所以结果是 1。14.下列定义语句有错的是( )。
31、(分数:2.00)A.int_float;B.float double_;C.char IF;D.float Mys; 解析:解析:C 语言中的变量名由字符、数字和下划线构成,数字不能做为首字符;选项 D中有非法字符,其他选项中虽然有关键字但整个变量不是关键字,所以是合法的,if 是关键字,但 IF不是。15.C程序合法实数是( )。(分数:2.00)A.10e02B.2e0 C.E8D.314E解析:解析:用科学计数法表示的实数,在 e后面的数必须是整数,前面必须有数字,所以选项 ACD均有错,B 中的2 表示 02 这在 C语言中是合法的。16.在 C语言程序运行时想通过 scanf(dc
32、dc,&x,&s,&y,&t);语句为变量 x和 y赋数值10和 20,为变量 s和 t赋字符 x和 y。以下输入形式中正确的是( )。(注:口代表空格字符)(分数:2.00)A.10口 X回车20 口 Y回车B.10口 X20口 Y回车C.10X回车20Y回车 D.10口 X口 20口 Y回车解析:解析:scanf()中会严格按照其中的格式赋值,所以若输入 10口,则 s会是空格,所以只有选项 C正确。scanf()不接收回车作为输入,所以可以用回车分隔输入内容。17.不符合语法的 C语言常量是( )。(分数:2.00)A.02e+2B.12 C.sD.012解析:解析:选项 B中的单引号只
33、能有一个字符,所以不符合语法,选项 D是转义字符,选项 C是字符串,选项 A是科学计数均正确。18.C语言中分支结构中的 if(表达式)语句中,关于“表达式值的叙述中正确的是( )。(分数:2.00)A.必须是逻辑值B.必须是整数值C.不能为零D.可以是任意合法的数值 解析:解析:if 语句中的值可以是任意合法的数值或表达式,其他选项均不正确。19.与以下语句等价的语句是( )。if(ab)if(ac)k=a;else k=c;elseif(bc)k=b; else k=c;(分数:2.00)_解析:解析:if(exp1)exp2 else exp3 可以写成问号表达式,(exp1)?exp2
34、:exp3,所以选项 B正确。20.有以下程序: #inelude void main() int i=3; while(一一 i)printf(d,i 一=2); printf(n); 程序执行后的输出结果是( )。(分数:2.00)A.一 1B.0 C.1D.2解析:解析:i 是先执行自减 1的操作再使用变量,i=2 表达式是 i=i2 表达式的缩写,所以在进行 while(一 i)判断后,i=2,打印时,先计算表达式的值,i=22=0。21.有以下程序: #include void main( ) for(int x=3;x=1;x) for(int y=1;y=2;y+)printf(
35、d,x+y); printf(n); 程序运行后的输出结果是( )。(分数:2.00)A.4 4 3 3 2 2B.4 5 3 4 2 3 C.2 3 3 4 4 5D.2 3 3 4 2 3解析:解析:x 的初值为 3,y 的初值为 1,所以答案在 A和 B中,当内循环执行第 2次时,y=2,输出5,所以第 1行应该为 4,5。答案 B正确。22.有以下程序: #include void main() int i=5,s=0; do switch(i) case 1:case 3:s+=1;i;break; default:s=0;i 一一; case 2:case 4:s+=2;i 一一;
36、break; printf(d,s); while(i0&s5); 程序运行后的输出结果是( )。(分数:2.00)A.235 B.2350C.0235D.2356解析:解析:注意两点。一是 case分支语句后面若没有 break则会执行其后的所有语句,直到有 break跳出或 switch()语句结束,do 一 while循环第 1次执行时,i=5,在 switch中执行 default分支,但其后没有 break,所以后面的分支也会被执行,执行完后 s=2,i=3;第 2次执行 do一 while循环时,会执行 case 3后面的语句,直到有 break跳出,执行完后 s=3,i=2;第
37、3次执行后 s=5,i=1,此时注意while中的条件是 s5,所以循环结束,打印的结果是 235。23.以下叙述中正确的是( )。(分数:2.00)A.每自定义函数中必须有一条 return语句B.自定义函数中可以根据不同情况设置多条 return语句 C.定义为 void类型的函数中可以有 return语句D.没有 return语句的自定义函数在执行结束时不能返回到调用处解析:解析:函数可以有返回值,也可以不返回,返回的结果与程序执行有关,所以可以在程序中设置多个返回语句,如果定义为 void类型则不能有 return语句;如果没有 rerurn语句,执行宪函数的最后一个语句后将返回到函数
38、调用处。24.已定义以下函数:int fun(int*pt)retum*pt;fun 函数的返回值是( )。(分数:2.00)A.不确定的值B.一个整数 C.形参 p中存放的值D.形参 p的地址值解析:解析:函数类型定义为 int所以返回值会强制转换为一个整数,*pt 是提取指针 pt中存放的数值的运算。所以 B正确。25.以下程序段没有语法错误的是( )。(分数:2.00)A.int*pt;scanf(d,&pt);B.int*pt;scanf(d,pt);C.int i,*p=&i;scanf(d,p); D.int k,*pt;*pt=&k;scanf(d,pt);解析:解析:本题考查指
39、针好地址的操作,&是取一个变量的地址,*pt 是指向一个变量的地址,前提是此变量要提前进行定义,已经分配了内存地址,选项 B中 pt没有初始化,scanf 的参数是接收输入值得变量的地址,地址不能再取地址,所以 A不正确,指针定义后用*pt 来表示该指针指向的变量的值,不能对指针再取指针操作,所以答案 D不正确。26.对于 float a10,*s=a;语句,能够代表数组元素 a3的是( )。(分数:2.00)A.(*s)3B.*s+3C.*s+3D.*(s+3) 解析:解析:数组引用是从 0开始,最后一个元素下标是 n1,若用指针来提取数组元素,正确写法应该是*(pt+3),选项 D正确。2
40、7.有以下程序: #include void f(int*p) int i=0: for(;i5;i+)(*p)+=2; void main() int a5=0,1,2,3,4,i; f(a); for(i=0;i5;i+)printf(d,a i); 程序运行后的输出结果是( )。(分数:2.00)A.10,1,2,3,4, B.0,1,2,3,4,C.10,2,3,4,5,D.2,3,4,5,6,解析:解析:子函数的功能是将传入的值连续加 5次 2,也就是加 10;注意到形参是指针。所以它和实参指向同一个变量;另外,数组名是可以当作指针使用,指向的是第一个元素,所以程序实际是将数组的第一
41、个元素的地址传入子函数进行叠加操作,结果为 10,其他元素没有进行相关操作,保持原值,所以结果是 10,1,2,3,4。28.有以下程序: #include int fun(int pta4,int n,int k) int m,i; m=pta0k; for(i=;in;i+) if(ptaikm) m=ptaik; return m; Void main( ) int a44=1,2,3,4, 5,6,6,8, 9,10,11,12, 13,14,15,16; printf(dn,fun(a,4,0); 程序运行后的输出结果是( )。(分数:2.00)A.16B.15C.14D.13 解析
42、:解析:此题中将一个二维数组做参数传入子函数进行计算,子函数的功能是求二维数组中第 k列中前 n项中的最大值,本题是求数组中第 0列前 4项元素的最大值,结果是 13。29.以下关于字符串的定义和赋值语句,正确的是( )。(分数:2.00)A.char*s;s=Text!;B.char*s;s=Text!: C.char S10;s=Text!;D.char s;s=Text!;解析:解析:选项 A去掉大括号就正确了,选项 C和 D应该是定义时赋初值,若定义之后对数组赋值,应该逐个元素赋值。30.在 C程序中已经定义了字符串,char*str1=STRING,*str2=string;以下选项
43、中,能够输出“STRING”的语句是( )。(分数:2.00)A.if(strcmp(s1,s2)!=0)puts(s1); B.if(strcmp(s1,s2)!=0)puts(s2);C.if(strcmp(s1,s2)=1)puts(s1);D.if(strcmp(s1,s2)=0)puts(s1);解析:解析:strcmp 是比较两个字符串,返回的是第一个不相同的字符的大小比较值,大写字母的 ASC值小于小写字母,因此,返回的是负数,选项 A正确。31.有以下程序: #include void fun(char*p) +p; printf(sn,*p); void main() cha
44、r*a=Monday,Tuesday,Friday,Saturday,Sunday; fun(a); 程序运行后的输出结果是( )。(分数:2.00)A.MondayB.ondayC.Tuesday D.uesday解析:解析:子函数是一个字符二维指针,将一个字符中二维数组传入子函数后,指针指向的是数组的首地址,+p 将指向第二行字符串,即 a1,其值为 Tuesday,所以答案为 C。32.已知库函数 islower(ch)用以判断 ch中的字母是否为小写字母,则下列程序运行后的结果是( )。 #include #include void fun(chas*p) int i=0; while(pi) if(pi=&islower(pi 一 1) pi一 1=pi一 1一a+A; i+; void main() char ss100=aa bb CDE!; fun(ss);printf(sn,ss); (分数:2.00)A.aa bb CDE!B.Aa Bb CDe!C.aA Bb CDE!D.aA bB CDE! 解析:解析:子函数的功能是将字符串中空格前面