1、国家二级 C语言机试(选择题)模拟试卷 45及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)算法的效率只与问题的规模有关,而与数据的存储结构无关 ( B)算法的时间复杂度是指执行算法所需要的计算工作量 ( C)数据的逻辑结构与存储结构是一一对应的 ( D)算法的时间复杂度与空间复杂度一定相关 2 下列叙述中正确的是 ( A)线性表链式存储结构的存储空间一般要少于顺序存储结构 ( B)线性表链式存储结构与顺序存储结构的存储空间都是连续的 ( C) 线性表链式存储结构的存储空间可以是连续的,也可 以是不连续的 ( D)以上说法均错误 3 某二叉树共有 12个结点,其中叶子结点只有 1个。
2、则该二叉树的深度为(根结点在第 1层) ( A) 3 ( B) 6 ( C) 8 ( D) 12 4 对长度为 n的线性表作快速排序,在最坏情况下,比较次数为 ( A) n ( B) n-1 ( C) n(n-1) ( D) n(n-1)/2 5 结构化程序设计中,下面对 goto语句使用描述正确的是 ( A)禁止使用 goto语句 ( B)使用 goto语句程序效率高 ( C)应避免滥用 goto语句 ( D)以上说法均错误 6 下面不属于软件测试实施步骤的是 ( A)集成测试 ( B)回归测试 ( C)确认测试 ( D)单元测试 7 下面不属于软件需求分析阶段主要工作的是 ( A)需求变更
3、申请 ( B)需求分析 ( C)需求评审 ( D)需求获取 8 一般情况下,当对关系 R和 S进行自然连接时,要求 R和 S含有一个或者多个共有的 ( A)记录 ( B)行 ( C)属性 ( D)元组 9 有三个关系 R、 S和 T如下 则由关系 R和 S得到关系 T的操作是 ( A)选择 ( B)差 ( C)交 ( D)并 10 有表示公司和职员及工 作的三张表,职员可在多家公司兼职。其中公司 C(公司号,公司名,地址,注册资本,法人代表,员工数),职员 S(职员号,姓名,性别,年龄,学历),工作 W(公司号,职员号,工资),则表 W的键(码)为 ( A)公司号,职员号 ( B)职员号,工资
4、 ( C)职员号 ( D)公司号,职员号,工资 11 关于算法,以下叙述中错误的是 ( A)某个算法可能会没有输入 ( B)某个算法可能会没有输入 ( C)一个算法对于某个输入的循环次数是可以事先估计出来的 ( D)任何算法都能转换成计算机高级语言的程序,并在有限时间内运 行完毕 12 关于 C语言的变量,以下叙述中错误的是 ( A)变量所占的存储单元地址可以随时改变 ( B)所谓变量是指在程序运行过程中其值可以被改变的量 ( C)程序中用到的所有变量都必须先定义后才能使用 ( D)由三条下划线构成的符号名是合法的变量名 13 关于 do循环体 while(条件表达式 ); 以下叙述中正确的是
5、 ( A)条件表达式的执行次数总是比循环体的执行次数多一次 ( B)循环体的执行次数总是比条件表达式的执行次数多一次 ( C)条件表达式的执行次数与循环体的执行次数一样 ( D)条件表 达式的执行次数与循环体的执行次数无关 14 若有以下程序 #include main() inta=-11,b=10; a/=b/=-4; printf(“%d%dn“,a,b); 则程序的输出结果是 ( A) 4 -3 ( B) -1 -2 ( C) 5 -2 ( D) 5 -3 15 若有以下程序 #include main() inta=0,b=0,c=0 c=(a+=+b,b+=4); printf(“
6、%d,%d,%dn“,a,b,c); 则程序的输出结果是 ( A) 1,5,1 ( B) 1,5,5 ( C) -1,4,4 ( D) -1,4,-1 16 若有定义 inta; floatb; doublec; 程序运行时输入: 345 能把值 3输入给变量 a、 4输入给变量 b、 5输入给变量 c的语句是 ( A) scanf(“%d%f%lf“, ( B) scanf(“%d%lf%lf“, ( C) scanf(“%d%f%f“, ( D) scanf(“%lf%lf%lf“, 17 若有以下程序 #include main() inta=1,b=2,c=3,d=4; if(a=2)
7、 if(c=3)|(d=-1)a=5; printf(“%d,%d,%d,%dn“,a,b,c,d); 则程序的输出结果是 ( A) 2,2,2,4 ( B) 2,1,2,-1 ( C) 5,1,2,-1 ( D) 1,2,3,4 18 若有以下程序 #include main() inta=1,b=2,c=3,d=4,r=0; if(a!=1);elser=1; if(b=2)r+=2; if(c!=3);r+=3; if(d=4)r+=4; printf(“%dn“,r); 则程序的输出结果是 ( A) 3 ( B) 7 ( C) 6 ( D) 10 19 若有以下程序 #include
8、main() ints=0,n; for(n=0;n 4;n+) switch(n) default:s+=4; case1:s+=1;break; case2:s+=2;break; case3:s+=3; printf(“%dn“,s); 则程序的输出结果是 ( A) 10 ( B) 11 ( C) 13 ( D) 15 20 若有以下程序 #include main() inta=-2,b=0; do+b;while(a+); printf(“%d,%dn“,a,b); 则程序的输出结果是 ( A) 1,3 ( B) 0,2 ( C) 1,2 ( D) 2,3 21 若有以下程序 #in
9、clude main() inta=6,b=0,c=0; for(;a) b+=a;a-=c+; printf(“%d,%d,%dn“,a,b,c); 则程序的输出结果是 ( A) 5,6,0 ( B) 6,0,0 ( C) 6,6,1 ( D) 5,6,1 22 以下选项中非法的 C语言字符常量是 ( A) x9d ( B) 9 ( C) x09 ( D) 09 23 若有以下程序 #include charf(charx) returnx*x%10+0; main() chara;intb=0; for(a=0;a 5;a+=1) b=f(a);putchar(b); 则程序的输出结果是
10、( A) 014916 ( B) 01234 ( C) 01496 ( D) 00000 24 若有以下程序 #include voidsp(int*a) intb=2; *a=*a*2;printf(“%d,“,*a); a=*a=*a*2;printf(“%d,“,*a); main() intk=3; sp(printf(“%dn“,k); 则程序的输出结果是 ( A) 6,12,12 ( B) 6,4,3 ( C) 6,4,6 ( D) 9,4,9 25 若有以下程序 #include intk=7,m=5; voidf(int*s) int*t= s=*s=printf(“%d,%d
11、,%d,“,k,*t,*s); main() inti=3,*p= f(r); printf(“%d,%d,%dn“,i,*p,*r); 则程序的输出结果是 ( A) 7,5,7,3,5,7, ( B) 7,5,7,3,3,3, ( C) 7,5,5,3,3,3, ( D) 7,7,5,3,3,3, 26 若有以下程序 #include int*f(int*s,int*t) intk; if(*s *t)k=*s;*s=*t;*t=k; returns; main() inti=3,j=5,*p= r=f(p,q); printf(“%d,%d,%d,%d,%dn“,i,j,*p,*q,*r)
12、; 则程序的输出结果是 ( A) 5,3,3,5,5 ( B) 3,5,5,3,5 ( C) 3,5,3,5,5 ( D) 5,3,5,3,5 27 若有以下程序 #include #defineN4 voidfun(intaN,intb,intflag) inti,j; for(i=0;i N;i+) bi=a0i; for(j=1;j N;j+) if(flag?(bi aji):(bi aji)bi=aji; main() intxNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i; fun(x,y,1); for(i=0;i N;i+)prin
13、tf(“%d,“,yi); fun(x,y,0); for(i=0;i N;i+)printf(“%d,“,yi); printf(“n“); 则程序的输出结果是 ( A) 4,8,12,16,1,5,9,13, ( B) 1,2,3,4,13,14,15,16, ( C) 1,5,9,13,4,8,12,16, ( D) 13,14,15,16,1,2,3,4, 28 若有以下程序 #include voidfun(inta,intn) intt,i,j; for(i=0;i n;i+=2) for(j=i+2;j n;j+=2) if(ai aj)t=ai;ai=aj;aj=t; main
14、() intc10=10,9,8,7,6,5,4,3,2,1,i; fun(c,10); for(i=0;i 10;i+)printf(“%d,“,ci); printf(“n“); 则程序的输出结果是 ( A) 1,10,3,8,5,6,7,4,9,2, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 10,1,8,3,6,5,4,7,2,9, ( D) 2,9,4,7,6,5,8,3,10,1, 29 若有以下程序 #include main() inti,j=0; chara=“Howareyou!“,b10; for(i=0;ai;i+) if(ai=)bj+=ai+1
15、; bj=0; printf(“%sn“,b); 则程序的输出结果是 ( A) Howareyou! ( B) Howareyou ( C) Hay! ( D) ay 30 若有以下程序 #include char*a=“you“,b=“welcome#you#to#China!“; main() inti,j=0;char*p; for(i=0;bi!=0;i+) if(*a=bi) p= for(j=0;aj!=0;j+) if(aj!=*p)break; p+; if(aj=0)break; printf(“%sn“,p); 则程序的输出结果是 ( A) #to#China! ( B)
16、#you#to#China! ( C) me#you#to#China! ( D) #China! 31 若有以下程序 #include main() chara20,b=“Theskyisblue.“;inti; for(i=0;i 10;i+)scanf(“%c“, ai=0; gets(b); printf(“%s%sn“,a,b); 执行时若输入: Figflowerisred. 则输出结果是 ( A) Fig flower is red.is blue. ( B) Fig flower is red. ( C) Fig floweris red. ( D) Fig floweris
17、32 若有以下程序 #include main() charw20=“dogs“, a510=“abcdef“,“ghijkl“,“mnopq“,“rstuv“,“wxyz.“; inti,j,k; for(i=0;wi;i+) for(j=0;j 5;j+) for(k=0;ajk;k+) if(wi=ajk)break; if(wi=ajk)break; printf(“%d,%d,“,j,k); 则程序的输出结果是 ( A) 0,3,2,2,1,0,3,1, ( B) 1,4,3,3,2,1,4,2, ( C) 5,6,5,6,5,6,5,6, ( D) 6,7,6,7,6,7,6,7,
18、 33 若 有以下程序 #include intf(inta,intn) if(n 1) intt; t=f(a,n-1); returnt an-1?t:an-1; else returna0; main() inta=8,2,9,1,3,6,4,7,5; printf(“%dn“,f(a,9); 则程序的输出结果是 ( A) 9 ( B) 1 ( C) 8 ( D) 5 34 若有以下程序 #include intf(intm) staticintn=0; inta=2; n+;a+;returnn+m+a; main() intk; for(k=0;k 4;k+)printf(“%d,“
19、,f(k); 则程序的输出结果是 ( A) 3,5,7,9, ( B) 4,7,10,13, ( C) 4,5,6,7, ( D) 4,6,8,10, 35 若有以下程序 #include #defineS(x)(x)*(x) #defineT(x)S(x)/S(x)+1 main() intk=3,j=2; printf(“%d,%dn“,S(k+j),T(k+j); 则程序的输出结果是 ( A) 11,2 ( B) 25,2 ( C) 11,12 ( D) 25,26 36 若有以下程序 #include typedefstructstu charname10,gender; intsco
20、re; STU; voidf(STUa,STUB) b=a; printf(“%s,%c,%d,“,b.name,b.gender,b.score); main() STUa=“Zhao“,m,290,b=“Qian“,f,350; f(a,b); printf(“%s,%c,%dn“,b.name,b.gender,b.score); 则程序的输出结果是 ( A) Qian,f,350,Qian,f,350 ( B) Zhao,m,290, Zhao,m,290 ( C) Zhao,m,290,Qian,f,350 ( D) Zhao,m,290,Zhao,f,350 37 若有以下程序 #
21、include #include typedefstructstucharname10,gender; intscore; STU; voidf(char*p) strcpy(p,“Qian“); main() STUa=“Zhao“,m,290,b; b=a; f(b.name); b.gender=f;b.score=350; printf(“%s,%c,%d,“,a.name,a.gender,a.score); printf(“%s,%c,%dn“,b.name,b.gender,b.score); 则程序的输出结果是 ( A) Zhao,m,290,Qian,f,350 ( B) Z
22、hao,m,290, Zhao,m,290 ( C) Qian,f,350,Qian,f,350 ( D) Zhao,m,290,Zhao,f,350 38 若有定义 typedefcharT10; T*a; 上述定义中 a的类型与下面选项中完全相同的是 ( A) char a10; ( B) char (*a)10; ( C) char *a; ( D) char *a10; 39 若有以下程序 #include main() intc; c=13|5; printf(“%dn“,c); 则程序的输出结果是 ( A) 13 ( B) 15 ( C) 18 ( D) 5 40 若有以下程序 #
23、include main() FILE*fp; inti,a6=1,2,3,4,5,6,k; fp=fopen(“data.dat“,“w+b“); for(i=0;i 6;i+) fseek(fp,0L,0); fwrite( rewind(fp); fread( fclose(fp); printf(“%d“,k); 则程序的输出结果是 ( A) 6 ( B) 1 ( C) 123456 ( D) 21 国家二级 C语言机试(选择题)模拟试卷 45答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 算法的效率与问题的规模和数据的存储结构都有关, A错误。算法的时间复杂度,是指执行算
24、法所需要的计算工作量, B正确。由于数据元素在计算机存储空间中的位置关系可能与逻辑 关系不同,因此数据的逻辑结构和存储结构不是一一对应的, C错误。算法的时间复杂度和空间复杂度没有直接的联系, D错误。 2 【正确答案】 C 【试题解析】 线性表的顺序存储结构具备如下两个基本特征: ( 1)线性表中的所有元素所占的存储空间是连续的; ( 2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。用一组任意的存储单元来依次存放线性表的结点,这组存储单元既可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。因此 C正确。 3 【正确答案】 D 【试题 解析】 二叉树中,度为 0的
25、节点数等于度为 2的节点数加 1,即 n2=n0-1,叶子节点即度为 0, n0=1,则 n2=0,总节点数为 12=n0+n1+n2=1+n1+0,则度为 1的节点数 n1=11,故深度为 12,选 D。 4 【正确答案】 D 【试题解析】 快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较 (n-1)+(n-2)+1=n(n -1)/2,选 D。 5 【正确答案】 C 【试题解析】 结构化程序设计中,要注意尽量避免 goto语句的使用,故选 C。 6 【正确答案】 B 【试题解析】 软件测试主要包括单元测试、集成测试、确认测试和系统测试。 7 【正确答案】 A 【试题解析】 需
26、求分析阶段的工作可概括为 4个方面: 需求获取。 需求分析。 编写需求规格说明书。 需求审评。 8 【正确答案】 C 【试题解析】 自然连接是一种特殊的等值连接,它满足下面的条件: 两关系间有公共域; 通过公共域的等值进行连接,选 C。 9 【正确答案】 B 【试题解析】 关系 T是关系 R的一部分,并且是关系 R去掉 R和 S相同的元素 ,符合差操作。 10 【正确答案】 A 【试题解析】 由于职员可以再多加公司兼职,表 W的键(码)应为公司关系和职员关系的主码,即公司号和职员号。 11 【正确答案】 D 【试题解析】 算法的特征 : 有穷性。一个算法 (对任何合法的输入 )在执行有穷步后能
27、够结束 ,并且在有限的时间内完成。 确定性。算法中的每一步都有确切的含义。 可行性。算法中的操作能够用已经实现的基本运算执行有限次来实现。 输入 :一个算法有零个或者多个输入 ,零个输入就是算法本身确定了初始 条件。 输出 :一个算法有一个或者多个输出 ,以反映出数据加工的结果。所以选择 D选项。 12 【正确答案】 A 【试题解析】 一个变量实质上是代表了内存中的某个存储单元 ,必须先定义后使用 ,且在定义时为之分配存储单元 ,不能随时改变 ,所以选择 A选项。 13 【正确答案】 C 【试题解析】 dowhile 循环的执行过程是先执行一遍循环体后再执行条件表达式判断条件 ,直到条件不成立
28、跳出循环 ,所以循环体和条件表达式的执行次数是一致的 ,所以选择 C。 14 【正确答案】 C 【试题解析 】 先执行 b/=-4,即 b=b/-4,结果为 -2,然后执行 a/=-2,即 a=a/-2,结果为5。所以选择 C。 15 【正确答案】 B 【试题解析】 逗号运算符的结合性从左到右 ,因此逗号表达式将从左到右进行计算。且逗号运算符的优先级最低。先计算 a+=+b,结果 a为 1,b为 1,然后计算b+=4,b的值为 5。逗号表达式的值为其中最后一个表达式的值 ,所以将 5赋给变量 c,即 a为 1,b为 5,c为 5。所以选择 B。 16 【正确答案】 A 【试题解析】 scanf
29、()函数的格式串中 ,必须含有与输入项一 一对应的格式转换说明符 ,整型数据、 float型数据、 double型数据对应的格式转换说明符分别为 %d、 %f、 %lf。所以选择 A。 17 【正确答案】 C 【试题解析】 第一个 if语句的判断条件中是逻辑与表达式 ,只有运算对象均非零结果才为真 ,执行第一个 if判断条件 ,均为赋值表达式 ,第一个运算对象 a=2非零 ,判断第二个表达式 b=1也非零 ,所以条件成立执行 c=2的赋值操作。执行第二个 if判断条件中的逻辑或表达式 ,只要有一个对象非零结果就是真 ,本条件中 c=3运算对象为假 ,所以需要判断第二个运算对象 d=-1,结果为
30、 -1非零 ,所以条件成立 ,执行 a=5,的操作 ,所以 a值为 5,b值为 1,c值为 2,d值为 -1。 18 【正确答案】 D 【试题解析】 第一个 if语句 a!=1条件为假 ,所以执行 else后的语句 r=1。第二个if语句 b=2条件成立 ,执行 r+=2,r的值变为 3,第三个 if语句 c!=3条件为假 ,所以不做任何操作。执行下面的 r+=3操作 ,r的值变为 6。判断第四个 if条件 ,d=4条件成立 ,执行 r+=4操作 ,结果为 10。 19 【正确答案】 B 【试题解析】 break语句的作用是终止正在执 行的 switch流程 ,跳出 switch结构或者强制终
31、止当前循环 ,从当前执行的循环中跳出。题干中第一次循环 n值为 0,执行 default语句后的 s+=4,s的值变为 4,执行 case1语句后的 s+=1,s的值变为 5,遇到break语句跳出 switch语句 ,进入第二次循环。第二次循环时 n的值为 1,执行 case1后的 s+=1,s的值变为 6,遇到 break语句跳出 switch语句 ,进入第三次循环。第三次循环时 n的值为 2,执行 case2后的 s+=2,s的值变为 8,遇到 break语句跳出 switch语句 ,进入第四次循环。第 四次循环时 n的值为 3,执行 case3后的 s+=3,s的值变为11。再判断循环
32、条件为假 ,退出循环打印 s的值 11。 20 【正确答案】 A 【试题解析】 本题重点考察 do-while语句及 do-while 的循环语句保证会执行一次 (表达式的真值在每次循环结束后检查 ),+b即变量 b自增 1后再参与运算 ,而a+则表示 a参与运算后 ,再自增 1。所以第一次循环结束后 ,b=1,a=-1。第二次循环后 ,b=2,a=0。第三次循环后 ,b=3,a=1。因此 A选项正确。 21 【正确答案】 C 【试题解析】 本题重点考察 C语言中 for语句和逻辑表达式, for语句的一般形式为 : for(表达式 1;表达式 2;表达式 3) 语句 其循环中的 “表达式 1
33、(循环变量赋初值) “、 “表达式 2(循环条件 )“和 “表达式3(循环变量增量 )“都是选择项 , 即可以缺省 ,但 “; “不能缺省。该题目中省略了 “表达式 1(循环变量赋初值) “和 “表达式 3(循环变量增量 )“。 for ( ;a )b+=a;a-=c+;相当于 while( aa-=c+;。 因此 C选项 正确。 22 【正确答案】 D 【试题解析】 本题考察字符常量,字符常量是用单引号括起来的一个字符。例如: a、 =、 +等。转义字符是一种特殊的字符常量。转义字符以反斜线 “开头,后跟一个或几个字符。 D选项中 09, 0表示后面的字符是八进制数。又出现9所以是非法的,故
34、 D选项正确。 23 【正确答案】 C 【试题解析】 该题目中 x*x%10即 x和 x相乘后,结果再对 10求余操作。主函数中通过 for语句使变量 a从 0到 4进行取值;当 a=0时,调用函数 f后,返回值为 0赋给 b,并且进 行字符输出;当 a=1时,返回值为 1赋给 b,并且进行字符输出;当 a=2时,返回值为 4赋给 b,并且进行字符输出;当 a=3时,返回值为 9赋给 b,并且进行字符输出;当 a=4时,返回值为 6赋给 b,并且进行字符输出。因此 C选项正确。 24 【正确答案】 C 【试题解析】 首先在主函数中给整型变量 k赋值为 3,调用 sp函数,将变量 k的地址作为实
35、参传递给形参指针变量 a;在 sp函数中, *a = *a * 2;即结果为 6,通过 printf()函数输出。整型变量 b的地址赋给指针变量 a,再执行 *a = *a * 2;,即结 果为 4,通过 printf()函数输出。返回主函数,输出 k的值 6。因此 C选项正确。 25 【正确答案】 C 【试题解析】 在主函数中首先初始化整型变量 i,将 i的地址赋给指针变量 p,再将指针变量 p的地址赋给指向指针的指针变量 r;调用 f函数 ,将变量 r的值传递给变量 s;由于 k和 m分别赋值 7和 5,printf(“%d,%d,%d,“, k, *t, *s);,即结果为 7,5,5;
36、返回主函数 ,printf(“%d,%d,%dn“, i, *p, *r);,即结果为 3,3,3。因此 C选项正确。 26 【正确答案】 D 【试题解析】 在主函数中分别给整型变量 i、 j和指针型变量 p、 q赋初值,并声明指针变量 r;调用 f函数,并将实参变量 p和 q的值传递给形参变量 s和 t,并且 f函数是指针型函数,即函数的返回值将是一个地址。在 f函数中,如果条件成立,则将指针变量 s和 t的值互换,并且将指针 s的地址返回主函数。最后输出 i, j, *p, *q, *r的值,即 5,3,5,3,5。因此 D选项正确。 27 【正确答案】 B 【试题解析】 该题首先初始化二
37、维数组, if (flag ? (bi aij) : (bi aij)作为条件表达式的值,否则以 (bi aij)作为条件表达式的值, fun函数功能是给一维数组赋值。 fun(x, y, 1);该函数调用后,即当 flag为真时,使一维数组获得二维数组第 1行的数值; fun(x, y, 0);该函数调用后,即当 flag为假时,使一维数组获得二维数组第 4行的数值;因此 B选项正确。 28 【正确答案】 D 【试题解 析】 该题首先对一维数组进行初始化 ,c0到 c9依次赋值为 10到1;fun(c, 10);语句调用 fun函数 ,fun函数的功能是将一维数组奇数位元素的数值由小到大排序
38、 ;最后将排好序的新的一维数组进行输出。因此 D选项正确。 29 【正确答案】 D 【试题解析】 程序首先初始化字符数组 a 为 “How are you!“。语句 if (ai = = ) bj+=ai+1;条件是判断字符数组 a 中是否是空格字符,如果是空格的话,将空格后的字符赋给数组 b。并将 b输出。因此 D选项正确。 30 【正确答案】 A 【试题解析】 该程序首先定义 *a和 b ,并进行初始化。主函数中通过外层 for循环语句,遍历字符数组 b ,并且将符合 if条件语句的字符赋给数组 p; for内层循环语句,遍历字符数组 a 。再将符合 if条件语句的结果输出。因此 A选项正
39、确。 31 【正确答案】 B 【试题解析】 本题考查字符数组的赋值以及字符串的处理函数 ,本题中输入字符串 Fig flower is red时 ,首先是将前 10个字符赋值给字符数组 a,然后执行 gets(b)后 ,将后续字符存 放到 b中 ,当输出时 ,首先输出字符数组 a,然后输出字符串 b,所以结果为 B选项。 32 【正确答案】 A 【试题解析】 本题考查二维字符数组的运用,题目中首先定义了一个一维字符数组,从三层 for循环可以看出要找的是 w数组中每个字符在二维数组中的位置,比如 d字母,在 a数组中就是 0,3 其他字符类似,所以本题答案为 A 33 【正确答案】 A 【试题
40、解析】 本题主要考查了函数的递归调用,解题思路只需要将参数带入函数中,首先是执行 f(a, 9),递归执行 (a, 8)直到 (a, 2),得到 a0=8,然后判断 a0是否大于 a1,本题实际上就是求出数组 a元素的最大值。答案为 9,选项 A正确。 34 【正确答案】 D 【试题解析】 本题考查静态局部变量以及自增运算符,静态局部变量在函数调用结束后,并不释放,仍然保留它的值,本题中, k为 0时, return n+m+a之前, n为 1, a为局部变量是 3, m为 0,所以第一个返回值为 4。 k为 1,在函数返回值之前,静态局部变量为 2,局部变量 a仍然为 3, m为 1,所以结
41、果是 6,依此类推答案为 D。 35 【正确答案】 D 【试题解析】 本题考查宏定义 ,宏定义只是做个简单的替换,执行S(k+j)=(k+j)*(k+j)=25,T(k+j)=S(k+j)/S(k+j)+1=(k+j)*(k+j)/(k+j)*(k+j)+1=26,选项D正确。 36 【正确答案】 C 【试题解析】 本题考查结构体的相关操作以及传值、传址的区别,该题中调用 f函数后,会首先输出被重新复制的 b值,且与 a相同,而执行完 f函数后, b值并不会改变,所以还是维持原值,选项 C正确。 37 【正确答案】 A 【试题解析】 本题考查结构体的相关操作以及传值、传址的区别,该题 中调用
42、f函数后, b的 name会重新赋值为 Qian,选项 A正确。 38 【正确答案】 D 【试题解析】 本题考查 typedef的使用方法, typedef对已存在的类型使用一个新的名字,选项 D正确。 39 【正确答案】 A 【试题解析】 本题考查位运算中按位或运算符,或运算只要两个比较的位中有一个为 1,其结果是 1,否则结果为 0, ,13用二进制表示为 00001101,5用二进制表示为 00000101,或后 00001101,即 13,选项 A正确。 40 【正确答案】 B 【试题解析】 本 题考查文件操作函数, fseek 用于二进制方式打开的文件 ,移动文件读写指针位置。将文件内部的位置指针重新指向一个流(数据流 /文件)的开头。所以最后只保留了 1,答案为 B。