[计算机类试卷]国家二级(C语言)机试模拟试卷44及答案与解析.doc

上传人:dealItalian200 文档编号:503167 上传时间:2018-11-29 格式:DOC 页数:29 大小:110KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷44及答案与解析.doc_第1页
第1页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷44及答案与解析.doc_第2页
第2页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷44及答案与解析.doc_第3页
第3页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷44及答案与解析.doc_第4页
第4页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷44及答案与解析.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 44及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)程序执行的效率与数据的存储结构密切相关 ( B)程序执行的效率只取决于程序的控制结构 ( C)程序执行的效率只取决于所处理的数据量 ( D)以上说法均错误 2 下列与队列结构有关联的是 ( A)函数的递归调用 ( B)数组元素的引用 ( C)多重循环的执行 ( D)先到先服务的作业调度 3 对下列二叉树 进行前序遍历的结果为 ( A) DYBEAFCZX ( B) YDEBFZXCA ( C) ABDYECFXZ ( D) ABCDEFXYZ 4 一个栈的初始状态为空。现将元素 1,2,3,A,B,

2、C依次入栈,然后再依次出栈,则元素出栈的顺序是 ( A) 1,2,3,A,B,C ( B) C,B,A,1,2,3 ( C) C,B,A,3,2,1 ( D) 1,2,3,C,B,A 5 下面属于白盒测试方法的是 ( A)等价类划分法 ( B)逻辑覆盖 ( C)边界值分析法 ( D)错误推测法 6 下面对对象概念描述正确的是 ( A)对象间的通信靠消息传递 ( B)对象是名字和方法的封装体 ( C)任何对象必须有继承性 ( D)对象的多态性是指一个对象有多个操作 7 软件设计中模块划分应遵循的准则是 ( A)低内聚低耦合 ( B)高耦合高内聚 ( C)高内聚低耦合 ( D)以上说法均错误 8

3、下面描述中不属于数据库系统特点的是 ( A)数据共享 ( B)数据完整性 ( C)数据冗余度高 ( D)数据独立性高 9 数据库设计过程不包括 ( A)概念设计 ( B)逻辑设计 ( C)物理设计 ( D)算法设计 10 有三个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( A)自然连接 ( B)交 ( C)投影 ( D)并 11 下列叙述中正确的是 ( A) C程序中所有函数之间都可以相互调用 ( B)在 C程序中 main函数的位置是固定的 ( C)在 C程序的函数中不能定义另一个函数 ( D)每个 C程序文件中都必须要有一个 main函数 12 以下叙述正确的是 (

4、 A) C语言函数可以嵌套调用,例如: fun(fun(x) ( B) C语言程序是由过程和函数组成的 ( C) C语言函数不可以单独编译 ( D) C语言中除了 main函数,其他函数不可作为单独文件形式存在 13 以下选项中合法的标识符是 ( A) 1_ _ ( B) 2015/1/1 ( C) 1_1 ( D) _11 14 表达式 3.6-5/2+1.2+5%2的值是 ( A) 4.3 ( B) 4.8 ( C) 3.3 ( D) 3.8 15 有以下定义: int a; long b; double x, y; 则以下选项中正确的表达式是 ( A) a=x y ( B) a%(int

5、)(x-y) ( C) (a*y)%b ( D) y=x+y=x 16 有以下程序 #include stdio.h main() int a=0, b=0; /* 给 a赋值 a=10; b=20; 给 b赋值 */ printf(“a+b=%dn“,a+b); /* 输出计算结果 */ 程序运行后的输出结果是 ( A)出错 ( B) a+b=30 ( C) a+b=10 ( D) a+b=0 17 以下选项中,值为 1的表达式是 ( A) 1 -0 ( B) 1 - 0 ( C) 1 -0 ( D) 0 - 0 18 当变量 c的值不为 2、 4、 6时,值为 “真 “的表达式是 ( A)

6、 (c =2 else printf(“%dn“, y); ( B) if ( a=0 ) printf(“%dn“, y); else printf(“%dn“, x); ( C) if ( a=0 ) printf(“%dn“, x); else printf(“%dn“, y); ( D) if ( a ) printf(“%dn“, x); else printf(“%dn“, y); 20 有以下程序 #include stdio.h main() int x=1,y=2,z=3; if(x y) if(y z) printf(“%d“,+z); else printf(“%d“,+

7、y); printf(“%dn“, x+ ); 程序的运行结果是 ( A) 1 ( B) 41 ( C) 2 ( D) 331 21 要求通过 while循环不断读入字符,当读入字母 N时结束循环。若变量已正确定义,以下正确的程序段是 ( A) while(ch=getchar() =N) printf(“%c “,ch); ( B) while(ch=getchar()!=N) printf(“%c “,ch); ( C) while(ch=getchar()=N) printf(“%c “,ch); ( D) while(ch=getchar()=N) printf(“%c “,ch);

8、22 以下叙述中正确的是 ( A) continue语句的作用是:使程序的执行流程跳出包含它的所有循环 ( B) break语句只能用在循环体内和 switch语句体内 ( C)在循环体内使用 break语句和 continue语 句的作用相同 ( D) break语句只能用于 switch语句体中 23 若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,以下选项中错误的程序是 ( A) main() x=fun(2,10); float fun(int a,intB) ( B) float fun(int a,intB) main() x=fun(i,j);

9、( C) float fun(int ,int); main() x=fun(2,10); ( D) main() float fun(int i,int j); x=fun(i,j); 24 若有定义语句: int year=2009, *p= 以下不能使变量 year中的值增至 2010的语句是 ( A) (*p)+; ( B) *p+; ( C) +(*p); ( D) *p+=1; 25 若在定义语句: int a,b,c,*p= 接着执行以下选项中的语 句,则能正确执行的语句是 ( A) scanf(“%d“,a,b,c); ( B) scanf(“%d%d%d“,a,b,c); (

10、 C) scanf(“%d“,p); ( D) scanf(“%d“, 26 以下错误的定义语句是 ( A) int x43=1,2,3,1,2,3,1,2,3,1,2,3; ( B) int x4= 1,2,3,1,2,3,1,2,3,1,2,3; ( C) int x3=0,1,1,2,3; ( D) int x3=1,2,3,4; 27 有以下程序 #include stdio.h main() int i, t3=9,8,7,6,5,4,3,2,1; for(i=0;i 3;i+) printf(“%d “,t2-ii); 程序执行后的输出结果是 ( A) 3 5 7 ( B) 7 5

11、 3 ( C) 3 6 9 ( D) 7 5 1 28 有以下程序 #include stdio.h void fun(int *a, int n) /* fun函数的功能是将 a所指数组元素从大到小排序 */ int t, i, j; for (i=0; i n-1;i+) for (j=i+1; j n; j+) if (ai aj) t=ai; ai=aj; aj=t; main() int c10=1,2,3,4,5,6,7,8,9,0,i; fun(c+4, 6); for (i=0;i 10; i+) printf(“%d,“, ci); printf(“n“); 程序的运行结果是

12、 ( A) 1,2,3,4,9,8,7,6,5,0, ( B) 0,9,8,7,6,5,1,2,3,4, ( C) 0,9,8,7,6,5,4,3,2,1, ( D) 1,2,3,4,5,6,7,8,9,0, 29 以下正确的字符串常量是 ( A) ( B) abc ( C) Olympic Games 30 下列选项中,能够满足 “只要字符串 s1等于字符串 s2,则执行 ST“要求的是 ( A) if(s1-s2=0) ST; ( B) if(s1=s2) ST; ( C) if(strcpy(s1,s2)=1) ST; ( D) if(strcmp(s2,s1)=0) ST; 31 有以

13、下程序 #include stdio.h int fun(char p10) int n=0,i; for(i=0; i 7; i+) if(pi0= T) n+; return n; main() char str10=“Mon“,“Tue“,“Wed“,“Thu“,“Fri“,“Sat“,“Sun“; printf(“%dn“,fun(str); 程序执行后的输出结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 0 32 有以下程序 #include stdio.h void fun(char *t , char *s) while(*t!=0) t+; while( (*t+

14、= *s+ )!=0 ) ; main() char ss10=“acc“,aa10=“bbxxyy“; fun(ss, aa); printf(“%s,%sn“, ss,aa); 程序的运行结果是 ( A) acc,bbxxyy ( B) accbbxxyy,bbxxyy ( C) accxxyy,bbxxyy ( D) accxyy,bbxxyy 33 有以下程序 #include stdio.h #include string.h void fun (char *w, int m ) char s, *p1, *p2; p1=w; p2=w+m-1; while ( p1 p2 ) s=

15、*p1; *p1=*p2; *p2=s; p1+; p2-; main() char a =“123456“; fun ( a, strlen(a) ); puts(a); 程序运行后的输出结果是 ( A) 123456 ( B) 116611 ( C) 161616 ( D) 654321 34 有以下程序 #include stdio.h int b=2; int fun(int *k ) b=*k+b; return (b); main() int a10=1,2,3,4,5,6,7,8, i; for(i=2;i 4;i+) b=fun( printf(“%d “,b); printf

16、(“n“); 程序运行后的输出结果是 ( A) 8 10 ( B) 10 28 ( C) 10 12 ( D) 10 16 35 设有定义: struct char mark12; int num1; double num2; t1,t2; 若变量均已正确赋初值,则以下语句中错误的是 ( A) t1=t2; ( B) t2.num1=t1.num1; ( C) t2.mark=t1.mark; ( D) t2.num2=t1.num2; 36 有以下程序 #include stdio.h #include string.h struct A int a; char b10; double c;

17、 void f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; f(a); printf(“%d,%s,%6.1fn“, a.a,a.b,a.c); void f(struct A t) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; 程序运行 后的输出结果是 ( A) 1002,ZhangDa,1202.0 ( B) 1002,ChangRong,1202.0 ( C) 1001,ChangRong,1098.0 ( D) 1001,ZhangDa,1098.0 37 有以下程序 #in

18、clude stdio.h #include string.h typedef struct char name9; char sex; float score2; STU; STU f(STU A) STU b=“Zhao“, m, 85.0, 90.0; int i; strcpy(a.name, b.name); a.sex = b.sex; for (i=0; i 2; i+) a.scorei = b.scorei; return a; main() STU c=“Qian“, f, 95.0, 92.0, d; d=f(c); printf(“%s,%c,%2.0f,%2.0fn“

19、,d.name,d.sex,d.score0,d.score1); 程序的运行结果是 ( A) Zhao,m,85,90 ( B) Qian,m,85,90 ( C) Qian,f,95,92 ( D) Zhao,f,95,92 38 若程序中有宏定义行: #define N 100 则以下叙述中正确的是 ( A)宏定义行中定义了标识符 N的值为整数 100 ( B) 在编译程序对 C源程序进行预处理时用 100替换标识符 N ( C)上述宏定义行实现将 100赋给标示符 N ( D)在运行时用 100替换标识符 N 39 若变量已正确定义,则以下语句的输出结果是 s=32; s=32; pr

20、intf(“%d“,s); ( A) -1 ( B) 0 ( C) 1 ( D) 32 40 有以下程序 #include stdio.h main() FILE *fp;char str10; fp=fopen(“myfile.dat“,“w“); fputs(“abc“,fp); fclose(fp); fp=fopen(“myfile.dat“,“a+“); fprintf(fp,“%d“,28); rewind(fp); fscanf(fp,“%s“,str); puts(str); fclose(fp); 程序运行后的输出结果是 ( A) abc ( B) 28c ( C) abc2

21、8 ( D)因类型不一致而出错 二、程序填空题 41 下列给定程序的功能是:调用函数 fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回 1,失败时返回 0。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量 sfname中,目标文件名放在变量 harne中。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include stdlib h int fun(char*source, char*target) FILE*fs

22、, *ft; char ch; /*found*/ if(fs=fopen(source, 【 1】 )= NULL) return 0; if(ft=fopen(target, “w”)= NULL) return 0; printf(“ nThe data in file: n”), ch=fgetc(fs); /*found*/ while(!feof(【 2】 ) putchar(ch); /*found*/ fputc(ch, 【 3】 ); ch=fgetc(fs); fclose(fs); fclose(ft); printf(“ n n”); return 1; main()

23、char sfname20=“myfilel”, tfname(20=“myfile2”; FILE*myf; int i, char C; myf=fopen(sfname, “W”); printf(“nThe original data: n”); for(i=1; i 30; i+) (C=A+rand() 25; fprintf(myf, “ C”, C); printf (“ C”, C); fclose(myf), printf(“nn”); if(fun(Sfname, tfname) printf(“Succeed !”); else printf(“Fail!”); 三、程

24、序修改题 42 下列给定程序中,函数 fun的功能是:对 N名学生的学习成绩,按从高到低的顺序找出前 m(m10)名学生来,并将这些学牛的数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include conio h #include string h #include stdio h #include malloc h #define N 10 typedef struct Ss char num10;

25、int s; STU; STU*fun(STU a, int m) STU bN, *t; int i, j, k; /*found*/ t=(STU*)calloc(Sizeof(STU), m) for(i=0; i N; i+) bi=ai; for(k=0; k m;k+) for(i=j=0; i N; i+) if(bi s bj s) j=i; /*found*/ t(k)=b(j); bj S=0; return t, outresult(STU a, FILE*pf) int i; for(i=0; i N, i+) fprintf(Pf, “No= S Mark= d n”

26、, ai num, ai s); fprintf(pf, “ n n”); void main() STU aN=(“A01”, 81, “A02”, 89, “A03”, 66, “A04”, 87,“A05”, 77, “A06”, 90, “A07”, 79, “A08”, 61, “A09”, 80,“A10”, 71, STU*p0rder; int i, m; system(“CLS”); printf(“*THE Original data* n”); outresult(a, stdout); printf(“nGive the number of the studentS w

27、ho have better score: ”); scanf(“ d”, m); while(m 10) printf (“ nGive the number of the students who have better scoEe: ”); scanf(“ d”, m);) pOrder=fun(a, m); printf(“*THE RESULT* * n”); printf(“The top: n”); for(i=0; i m, i+) printf(“ s d n”, pOrder i num, pOrderi S); free(pOrder); 四、程序设计题 43 规定输入的

28、字符串中只包含字 母和 *号。请编写函数 fun,其功能是:将字符串中的前导 *号全部移到宁符串的尾部。 例如,字符串中的内容为 “*A*BC*DEF*G*”,移动后,字符串中的内容应当是 “A*BC*DEF*G*”。在编写函数时,不得使用 C语言提供的字符串函数。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #include conio h void fun(char*a) main() char s81, *P; char test480=(“*A*BC*DEF*

29、G*”, ”A*B*CD*EF*G*”,“*A*G*”, “*d*b*a*e*”; int i; printf(“Enter a string: n: ”); gets(s); fun(s); printf(“The string after moveing: n”); puts(s); 国家二级( C语言)机试模拟试卷 44答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 程序执行的效率与数据的存储结构、数据的逻辑结构、程序的控制结构、所处理的数据量等有关。 2 【正确答案】 D 【试题解析】 队列的修改是依先进先出的原则进行的, D正确。 3 【正确答案】 C 【试题解析】 前序

30、遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问 根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作。否则: 访问根结点; 前序遍历左子树; 前序遍历右子树, C正确。 4 【正确答案】 C 【试题解析】 栈的修改是按后进先出的原则进行的,所以顺序应与入栈顺序相反,故选 C。 5 【正确答案】 B 【试题解析】 白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断 -条件覆盖,选择 B。其余为黑盒测试法。 6 【正确答案】 A

31、 【试题解析】 对象之间进行 通信的构造叫做消息, A正确。多态性是指同一个操作可以是不同对象的行为, D错误。对象不一定必须有继承性, C错误。封装性是指从外面看只能看到对象的外部特征,而不知道也无须知道数据的具体结构以及实现操作, B错误。 7 【正确答案】 C 【试题解析】 根据软件设计原理提出如下优化准则: 划分模块时,尽量做到高内聚、低耦合,保持模块相对独立性,并以此原则优化初始的软件结构。 一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近。 软件结构的深度、宽度、扇入、扇出应适 当。 模块的大小要适中。 C正确。 8 【正确答案】 C 【试题

32、解析】 数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,C错误。 9 【正确答案】 D 【试题解析】 数据库设计过程主要包括需求分析、概念结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运行和维护阶段。答案为 D选项。 10 【正确答案】 A 【试题解析】 关系 R和关系 S有公共域,关系 T是通过公共域的等值进行连接的结果,符合自然连接,选 A。 11 【正确答案】 C 【试题解析】 C程序 中主函数不能被其他函数调用 ,所以 A选项错误, main函数可以放在程序开始 ,也可以放在中间 ,也可以放在最后 ,位置不固定 ,但程序执行时必须从 main函数开始 ,所以 B选

33、项错误,在 C程序的函数中不能定义另一个函数 ,可以声明或调用另一个函数 ,所以 C选项正确,每个 C程序中必须包含一个 main函数 ,但不一定是每个 C程序文件中必须有 ,用户单独编写的某个函数也可以存储为一个 C程序文件 ,所以 D选项错误。 12 【正确答案】 A 【试题解析】 C语言程序是由函数组成的 ,所以 B错误, C语言函数可以单独进行编译 ,所以 C错误 ,每个 C程序中必须包含一个 main函数 ,但不一定是每个 C程序文件中必须有 ,用户单独编写的某个函数也可以存储为一个 C程序文件 ,所以 D错误。 13 【正确答案】 D 【试题解析】 C语言中的标识符由下划线、字母和

34、数字组成 ,且必须以下划线或字母开始 ,所以只有 D选项正确。 14 【正确答案】 D 【试题解析】 计算 5/2,结果取整数值 2。计算 3.6-2,结果与高精度数据保持一致,即为 1.6。计算 1.6+1.2,结果为 2.8。计算 5%2,结果为 1。计算 2.8+1结果为 3.8。所以选择 D选项 . 15 【正确答案】 B 【试题解析】 C语言中没有 “ “运算符 ,所以 A选项错误, “%“运算符的两个操作值必须为整型数据 ,所以 B选项正确, a*y的结果为 double型 ,所以 C选项错误,不能将值赋给像 x+y这样的表达式 ,所以 D选项错误。 16 【正确答案】 D 【试题

35、解析】 注释语句可以在一行也可以在多行 ,用 /*/ 或 /表示 ,。它不参与程序的运行,所以 a与 b的值仍然为 0,所以打印的结果为 a+b=0. 17 【正确答案】 B 【试题解析】 0,空值 ,其 ASCII码值为 0,所以 B选项的值为 1,字符 0的 ASCII码值为 048,所以 A,C,D的值均不为 1。 18 【正确答案】 D 【试题解析】 逻辑或表达式中有一个值不为 0,结果即为真 ,逻辑与表达式中只有两个运算对象均非零 ,结果才为真,所以只有选项 D满足要求。 19 【正确答案】 C 【试题解析】 A,B,D选项的含义均为 :a的值如果为 0时打印 y的值 ,否则打印 x

36、的值,但是 C选项的含义是 :a的值为 0时打印 x的值 ,不为 0时打印 y的值 ,与其他选项正好相反。 20 【正确答案】 A 【试题解析】 else总是与离 他最近的上面的 if配对,所以第一个 if语句的判断条件不成立 ,不再执行第二个 if语句和与第二个 if语句配对的 else语句,而是直接执行打印 x+的操作 ,打印 x的值 1以后在加一。 21 【正确答案】 B 【试题解析】 在 C语言中等于号用 “= =“表示 ,一个 “=“表示赋值 ,所以 A错误。C、 D 选项的含义都是如果输入的字符为 “N“,则打印输出 ,所以正好和题意相反。 22 【正确答案】 B 【试题解析】 c

37、ontinue语句的作用是 :跳过循环体中剩余的语句而进行下一次循环 ,所以 A选项错误, Break语句的作用是终止正在执行的 switch流程 ,跳出 switch结构或者强制终止当前循环 ,从当前执行的循环中跳出 ,所以 C, D选项错误。 23 【正确答案】 A 【试题解析】 在调用子函数时,应对其进行说明。 A选项中,调用时,没有对子函数进行说明。 B选项、 C选项中被调用函数在主调函数之前定义,不用说明; D选项中在主函数中对被调用函数的返回值类型进行了说明。因此 A选项正确。 24 【正确答案】 B 【试题解析】 由于自加运算符 +的运算级别高于间接运算 *的运算级别,所以 B选

38、项的表达式 *p+不能使变量 year中的值增至 2010。因此 B选项正确。 25 【正确答案】 C 【试题解析】 本题重点考察的知识点是标准输入函数 scanf()。 scanf()函数要求,除了第 1个参数为格式化字符串以外,其余参数均为相应变量的地址值。本题中,只有 p是地址值,因此 C选项正确。 26 【正确答案】 B 【试题解析】 二维数组定义的一般形式是:类型说明符数组名 常量表达式 1常量表达式 2。其中常量表达式 1表示第一维下标的长度,常量表达式 2 表示第二维下标的长度。如对二维数组全部元素赋初值,则 第一维的长度可以不给出。但如果对 x4赋值,只确定行数,而不确定列数,

39、就无法正确赋值。因此 B选项正确。 27 【正确答案】 A 【试题解析】 该题中 t3=9,8,7,6,5,4,3,2,1;实际上就是 t33= 9,8,7,6,5,4,3,2,1;,通过 for循环语句,确定需要输出 t20,t11和t02,即输出 3、 5、 7。 因此 A选项正确。 28 【正确答案】 A 【试题解析】 该题目中 fun函数的功能是将 a所指数组元素从大 到小排序,fun(c+4, 6);即指排序从第 5个元素开始进行从大到小排序。因此 A选项正确。 29 【正确答案】 D 【试题解析】 本题考察的知识点是:字符串常量。在 C语言中,字符串常量是以双引号括起来的字符序列。

40、因此 B选项和 C选项不正确。字符序列中可包含一些转义字符,转义字符都是以 “开头的。 A选项中包含了三个 “,前两个 ()代表了一个 “字符,后面一个和 “一起 (“)被看作一个 “,所以该字符串缺少一个结束的 “,因此不正确。 D选项的两个 “之间没有任何字符,代表的是一个空 串,是合法的字符串常量,因此 D选项正确。 30 【正确答案】 D 【试题解析】 在 C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数 strcmp,如果这个函数的返回值等于 0,说明两个字符串相等。因此 D选项正确。 31 【正确答案】 B 【试题解析】 此程序是统计一周七天中英文名称首字母为 “T“

41、的个数。 P i 0是字符串的首字符,一共有两个 “T“,所以 n=2。因此 B选项正确。 32 【正确答案】 B 【试题解析】 本题重点考察 while循环语句的简单应用。函数 fun()中,前一个while循环的作用是:如果形参指针 t所指内容不为 0,则让 t增 1,直到它指向0。后一个 while循环的作用是:将 s所指内容赋给 t所指地址,然后两者同时增1,直到赋给 t的内容为 0。由此可见,函数 fun()的作用就是将形参 s所指字符串连接到形参 t所指字符串末尾,相当于库函数中的 strcat()。主函数中使用 fun()将数组 aa中的字符串连接到了数组 ss中原有字符串之后,

42、所以执行完后, ss中的字符串为 “accbbxxyy“。程序最后输出的结果是: accbbxxyy,bbxxyy。因此 B选项正确。 33 【正确答案】 D 【试题解析】 主函数中调用 fun(a,6)后,指针 p1指向字符串中的 “1“、 p2指向字符串中的 “6“。 While循环中,只要 p1 p2,则把 p1、 p2所指向的字符互换,同时 p1前移, p2后移。最终字符串逆序存放。因此 D选项正确。 34 【正确答案】 B 【试题解析】 主函数中循环执行 2次 ,fun函数被调用 2次, b是全局变量 ,整个程序均可使用 ,第 1次调用 :fun(主程序中 :b=fun(第 2次调用

43、 :fun(主程序中 :b=fun( *判断 *p是否是 *号,并统 计 *号的个数 * while(*p=*) n+, p+; *将前导 *号后的字符传递给 a* while(*p) *将 *之后的字符串保存到 a中 * ai=*p; i+; p+; while(n!=0) *在 a后追加 n个 *号 * ai=*; i+, n一一 ; ai= 0; *加上结束符 * 【试题解析】 函数 fun的功能是:将字符串中的前导 *号全部移到字符串的尾部。本题解题思路:首先定义一个指针并指向字符串的首地址;其次利用循环语句找出字符串的前导 *号的个数 n;然后利用循环语句把剩余的字符复制到另一个字符串中;最后在字符串的末尾接上 n个 *号。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1