1、国家二级( C语言)笔试模拟试卷 112及答案与解析 1 在计算机中,算法是指 _。 ( A)查询方法 ( B)加工方法 ( C)解题方案的准确而完整的描述 ( D)排序方法 2 栈和队列的共同点是 _。 ( A)都是先进后出 ( B)都是先进先出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 3 已知二叉树 BT的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 _。 ( A) cedba ( B) acbed ( C) decab ( D) deabc 4 在下列几种排序方法中,要求内存量最大的是 _。 ( A)插入排序 ( B)选择排序 ( C)快速
2、排序 ( D)归并排序 5 在设计程序时,应采纳的原则之一是 _。 ( A)程序结构应有助于读者理解 ( B)不限制 goto语句的使用 ( C)减少或取消注解行 ( D)程序越短越好 6 下列不属于软件调试技术的是 _。 ( A)强行排错法 ( B)集成测试法 ( C)回溯法 ( D)原因排除法 7 下列叙述中,不属于软件需求规格说明书的作用的是 _。 ( A)便于用户、开发人员进行理解和交流 ( B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 8 在数据流图 (DFD)中,带有名字的箭头表示 _。 ( A)控制
3、程序的执行顺序 ( B)模块之间的调用关系 ( C)数据的流向 ( D)程序的组成成分 9 SQL语言又称为 _。 ( A)结构化定义语言 ( B)结构化控制语言 ( C)结构化查询语言 ( D)结构化操纵语言 10 视图设计一般有 3种设计次序 ,下列不属于视图设计的是 _。 ( A)自顶向下 ( B)由外向内 ( C)由内向外 ( D)自底向上 11 能将高级语言程序转换成目标语言程序的是 _。 ( A)调试程序 ( B)解释程序 ( C)编译程序 ( D)编辑程序 12 是构成 C语言程序的基本单位。 ( A)函数 ( B)过程 ( C)子程序 ( D)子例程 13 可以在 C语言中用做
4、用户标识符的是 _。 ( A) void define WORD ( B) as_b3 _123 If ( C) for -abc cas ( D) 2c Do SIG 14 下面语句的输出结果是 _。 printf(“%dn“,strlen(“t“065xffn“); ( A) 14 ( B) 8 ( C) 5 ( D)输出项不合法,无正常输出 15 下列程序的输出结果是 _。 #defineA 100main()int i=0,sum=0; do if(i=(i/2)*2)continue; sum+=i; while(+i A) ; printf(“%dn“,sum); ( A) 250
5、0 ( B) 2050 ( C) 4 ( D) 0 16 下列程序的输出结果是 _。 main() int i=3; switch(i) case 1: casc 2: printf(“%d“,i); case 3: case 4: break; defanlt:printf(“OK“); ( A) 0 ( B) 3 ( C) OK ( D)没有任何输出 17 出下列程序执行后的输出结果是 _。 mare()int m3=1,4,7,2,5,8,3,6,9; int i,k=2; for(i0;i 3; i+) printf(“%d“,mki); ( A) 456 ( B) 258 ( C)
6、369 ( D) 789 18 已知字母 A的 ASCII码值是 65,字母 a的 ASCII码值是 97,以下程序_。 main() char a=A; int b=20; printf(%d,%0“,(a=a+a,a+b,B) , a+a-A, B) ; ( A)表达式非法,输出零或不确定值 ( B)因输出项过多,无输出或输出不确定值 ( C)输出结果为 20, 141 ( D)输出结果为 20, 141,20 19 下列程序执行后输出的结果是 _。 int d=1; fun(int p) int d=5; d+=p+; printf(“%d,“,D) ;main() int a=3; f
7、un(A) ; d+=a+; printf(“%dn“,D) ; ( A) 8, 12 ( B) 9, 13 ( C) 8,4 ( D) 9, 5 20 已知下面的程序段,正确的判断是 _。 #define A 3#define B(A) (A+1)*A) int a=3 ; X=3*(A+B(7); ( A)程序错误,不允许嵌套定义 ( B) X=93 ( C) X=81 ( D)程序错误,宏定义不允许有参数 21 有以下程序: #include stdio.h main() char c6; int i=0; for(;i 6;ci=getchar(),i+); for(i=0;i 6;i
8、+)putchar(ci); printf(“n“); 如果从键盘上输入: ab回车 c回车 def回车 则输出结果为_。 ( A) a b c d e f ( B) a b c d ( C) ab c d ( D) abcdef 22 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_。 ( A)地址传递 ( B)单向值传递 ( C)由实参传递给形参,再由形参传递给实参 ( D)传递方式由用户指定 23 以下程序 #include stdio.h #include string.h main() char*p1=“abc“,*p2=“ABC“,str50=“xyz“; st
9、rcpy(str+2,strcat(p1,p2); printf(“%ssn“,str); 的输出是 _。 ( A) xyzabcABC ( B) zabcABC ( C) yzbcABC ( D) xyabcABC 24 下面程序 main() int x=100,a=10,b=20,ok1=5,ok2=0; if(a b) if(b!=15) if(!ok1) x=1: else if(ok2)x=10; x=-1; printf(“%dn“,x); 的输出是_。 ( A) -1 ( B) 0 ( C) 1 ( D)不确定的值 25 下面程序 main() int x=32; printf
10、(“%dn“,x=x 1); 的输出是_。 ( A) 100 ( B) 160 ( C) 120 ( D) 64 26 以下程序的输出结果是 _。 #include stdio.h #define FUDGE(y) 2.84+y #define PR(a) printf(“%dn“,(int)(a) #define PRINT1(a) PR(a);putchar(n) main() int x=2; PRINT1(FUDGE(5)*x); ( A) 11 ( B) 12 ( C) 13 ( D) 15 27 以下程序段给数组所有的元素输入数据,请选择正确答案填入。 #includestdio.
11、h main() int a10, i=0; while(i10)scanf(“%d“,_); : : ( A) a+(i+) ( B) ( B) enum a one=9,two=1,three; ( C) enum a=“one“,“two“,“three“; ( D) enum a“one“,“two“,“three“; 29 字符 (char)型数据在微机内存中的存储形式是 _。 ( A)反码 ( B)补码 ( C) EBCDIC码 ( D) ASCII码 30 不能把字符串 “Hello!“赋给数组 b的语句是 _。 ( A) char b10=H,e,l,l,o,!; ( B) c
12、har b10=h,e,l,l,o,!; ( C) char b10; strcpy(b,“Hello!“); ( D) char b10=“Hello!“: 31 下面程序的输出是 _。 mare() int x=3 y=6,a=0; while(x+!=(y=1) a+=1; if(y x)break; printf(“x=%d,y=%d,a=%dn“,x,y,a); ( A) x=4,y=4, a=1 ( B) x=5,y=5,a=1 ( C) x=5,y=4,a=3 ( D) x=5,y=4,a=1 32 若有程序 fun(int a,int b static int c=0; c+=
13、a+b; return c; main() int x=5,y=3,z=7,r, r=fun(y, x+y), z); r=fun(xy); printf(“%dn“,r); 上面程序的输出结果是 _。 ( A) 23 ( B) 15 ( C) 19 ( D) 18 33 下面程序的输出是 _。 main() char *s=“12134211“; int v1=0, v2=0, v3=0,v4=0,k; for(k=0; sk; k+) switch(sk) default,v4+; case1: v1+; case3: v3+; case2: v2+; printf(“vl=%d,v2=%
14、d,v3=%d,v4=%dn“,v1, v2, v3, v4); ( A) v1=4,v2=2, v3=1, v4=1 ( B) v1=4,v2=9,v3=3,v4=1 ( C) v1=5,v2=8,v3=6,v4=1 ( D) v1=8,v2=8,v3=8,v4=8 34 fgetc函数的作用是从指定文件读入一个字符,该文件的打开方式必须是_。 ( A)只读 ( B)追加 ( C)读或读写 ( D)以上均正确 35 若有下面的说明和定义,则 sizeof(struct aa)的值是 _。 struct aa int r1; double r2; float r3; union uuchar
15、ul5; longu22ua; mya; ( A) 30 ( B) 29 ( C) 24 ( D) 22 36 下面程序的输出是 _。 main() int k=11; printf(“k=%d,k=%xn“,k,k,k); ( A) k=11,k=12,k=11 ( B) k=-11,k=13,k=13 ( C) k=11,k=013,k=0xb ( D) k=11,k=13,k=B 37 下面程序段中 C的二进制值是 _。 char a=3, b=6.c: c=ab 1; ( A) 1011 ( B) 1111 ( C) 11110 ( D) 11100 38 以下叙述中正确的是 _。 (
16、 A) C语言比其他语言高级 ( B) C语言可以不用编译就能被计算机识别执行 ( C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 ( D) C语言出现的最晚,具有其他语言的一切优点 39 下列可用于 C语言用户标识符的一组是 _。 ( A) void define WORD ( B) a3_b3 _123 Car ( C) For -abc IFCase ( D) 2a DO sizeof 40 以下程序运行后,输出结果是 _。 main() char* d=“ab“,“cde“; printf(“%x“,d1); ( A) cde ( B)字符 C的 ASCII码值 (
17、C)字符 c的地址 ( D)出错 41 在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间 _的 信息。 42 按照 “先进先出 ”的原则组织数据的结构是 _。 43 深度为 5的满二叉树中,叶子结点的个数为 _。 44 在面向对象的方法中, _描述的是具有相似属性与操作的一组对象。 45 Jackson方法是一种面向 _的结构化方法。 46 若 x和 a均是 int型变量,则计算完 x=(a=4,6*2)后的 x值为 _。 47 若 a是 int型变量,则下列表达式的值为 _。 (a=2*3,a*2), a+4 48 下列程序段是从键盘输入 的字符中统计小写字母的个数,用换
18、行符结束循环。请填空。 int n=0, c; c=getchar(); while(c!=n) if(_) n+; 49 下列程序的运行结果是 _。 #include stdio.h main() int a, b, c, n; a=2; b=0; c=1; n=1; while(n =3) c=c*a; b=b+ c; +n; printf(“b=%d“, B) ; 50 下列程序的 输出结果是 _。 main() int i=0, a=0; while(i 20) for(; ) if(i%10)=0)break; else i-; i+=11; a+=i; printf(“%dn“,
19、A) ; 51 下列程序的运行结果是 _。 #include stdio.h long func(int x) long p; if(x=0 x=1) return(1); p=x*func(x-1); return(p); main() printf(“%dn“, func(4); 52 下列程序将二维数组 a的行和列元素互换后存放到另一个二维数组 b中。请填空。 main() int a23=1,2, 3), 4, 5, b32, i,j; for(i=0; i 2; i+) for(j=0; j 30+) _; 53 下列程序的运行结果是 _。 #include stdio.h main
20、() int fun(); fun(); fun() static int a4=1, 2, 3, 4); int i: for(i: 0; i 4; i+)ai+=ai; for(i=0; i 4; i+)printf(“%d, “, ai); printf(“n“); 54 设有下列程序: #include stdio.h #include string.h main() int i; char s10, t10; gets(t); for(i=0; i 2; i+) gets(s); if(strcmp(t, s) 0)strcpy(t, s); printf(“%sn“, t); 程序
21、运行后,从键盘上输入 ( CR代表回车符 ): DEF CR BADEF CRQTHRG CR,则程 序的输出结果是 _。 55 下列程序的运行结果是 _。 #define P(A) printf(“%d“, A) main() int j, a=1,2, 3, 4, 5, 6, 7), i=5; for(j=3; j 1; j-) switch(j) case 1: case 2: P(ai+); break; case 3: P(a-i); 国家二级( C语言)笔试模拟试卷 112答案与解析 1 【正确答案】 C 【试题解析】 计算机算法是指解题方案的准确而完整的描述,它有以下几个基本特征
22、:可行性、确定性、有穷性和拥有足够的情报。 2 【正确答案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈是一种 “后进先出 ”的线性表;而队列是一种 “先进先出 ”的线性表。 3 【正确答案】 A 【试题解析】 二叉树 BT的后序遍历序列为 dabec,故 BT的根结点为 C;而 BT的中序遍历序列是 debac,即遍历序列中最后一个结点为跟结点,说明 BT的右子树 为空。由 BT的后序遍历序列和中序遍历序列可知 BT的左子树 (LST)的后序遍历序列和中序遍历序列分别为 dabe和 deba(树是递归定义的 ):故 LST的根结点
23、是e,在由 LST的中序遍历序列可知其左子树为 d。因此 BT的前序遍历序列为cedba。 4 【正确答案】 D 【试题解析】 快速排序的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依次插入到已 经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整个线性表,从中选出最小的元素,将它交换到表的最前面 (这是它应有的位置 ),然后对剩下的子表采用同样的方法,直到表空为止;归并排序是将两个或两个以上的有序表组合成一个新的有序表。
24、 5 【正确答案】 A 【试题解析】 滥用 goto语句将使程序流程无规律,可读性差:添加的注解行有利于对程序的理解,不应减少或取消;程序的长短要依照实际需要而定,并不是越短越好。 6 【正确答案】 B 【试题解析】 调试的关键在于推断程序内部的错 误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。 7 【正确答案】 D 【试题解析】 软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。它不能方便开发人员进行需求分析。 8 【正确答案】 C 【试题解析】 在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并
25、且可以从外音陕体流向系统或从系统流向外部实体。 9 【正确答案】 C 【试题解析】 结构化查询语言 (Structured Query Language,简称 SQL)是集数据定义、数据操纵和数据控制功能于一体的数据库语言。 10 【正确答案】 B 【试题解析】 视图设计一般有 3种设计次序,它们分别是自顶向下、自底向上和由内向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以单独使用也可混合使用。 11 【正确答案】 C 【试题解析】 用高级语言编写的程序称为 “源程序 ”,而计算机只能识别和执行由0和 1组成的二进制指令,所以高级语言必须先用 种称为 “编译程序
26、”的软件,把源程序翻译成二进制 形式的 “目标程序 ”。 12 【正确答案】 A 【试题解析】 C程序是由函数构成的。一个 C源程序至少包含一个 main函数,也可以包含一个 main函数和若干个其他函数,因此,函数是 C程序的基本单位。 13 【正确答案】 B 【试题解析】 C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项 A中 void, C中 for都为关键字, D中 2c以字母开头。 14 【正确答案】 C 【试题解析】 在 C语言中,以 “”开头的字符均为转义字符,其中 “”后可跟 1 3位八进制数或
27、在 “”后跟字母 x及 1 2位十六进制数,以此来代表一个特定的字符。 15 【正确答案】 A 【试题解析】 本题程序的功能是求 1到 99之间 (包括 1和 99)所有奇数之和。程序中的 while循环的终止条件为 +i=100,在 while循环体内,如果 i是偶数,则执行 continue,跳过这一次循环,执行下 次循环,否则求和和。最后输出的值是 1到 99之间 (包括 1和 99)所有奇数之和 (1+99)*50/2=2500。 16 【正确答案 】 D 【试题解析】 在题中, i的值为 3,由于 “case 3:”后面没有 break语句,所以继续向下执行 “case 4:”后面的
28、语句,由于 “case 4:”后面的语句为 break强行退出 switch语句,所以,本题没有任何输出。 17 【正确答案】 C 【试题解析】 根据二维数组的定义得出:m00=1,m01=4,m02=7,m10=2,m11=5,m12=8,m20=3,m21=6, m22=9,所以本题的输出是第 3行的值 m20, m20,m22,即 369。 18 【正确答案】 C 【试题解析】 本题中首先输出逗号表达式 “a=a+a,a+b,b”的值,即 20。然后以八进制的形式输出 a+a-A的值为 97对应的八进制数 141,由于最后一个表达式 b没有对应输出格式的输出项表列就不会输出。 19 【正
29、确答案】 C 【试题解析】 本题执行过程如下首先调用 fun函数,使得实参 a的值 3传递给形参 p,得到局部变量 d=8,打印出局部变量 d的值 8;返回主函数执行 “d+=a+”,此处的 d为全局变量,所以 d=1+3=4(由于本题是值传递,所以在函数 fun中对 p值的改变并不能引起 a的改变 ),故本题的输出是 8,4。 20 【正确答案】 C 【试题解析】 本题的宏定义是合法的,宏定义展开为3*(3+(A+1)*a)=3*(3+(7+1)*3)=81。 21 【正确答案】 C 【试题解析】 1.getchar():此函数的作用是从终端 (或系统隐含指定的输入设备 )输入一个字符。 2
30、 putchar():此函数的作用是向终端输出一个字符,也可以输出控制字符。本题在输入字符 时, ab和 c后面的回车符分别赋给了 c2和 c4,所以,正确答案为C。 22 【正确答案】 B 【试题解析】 语言规定,实参变量对形参变量的数据传递是 “单向值传递 ”,只由实参传给形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。 23 【正确答案】 D 【试题解析】 strcat(p1,p2)将字符串 abcABC放到了 *p1所指向的存储单元中;strcpy在本题将 abcABC复制到 str+2所指向的存储单元中,即覆盖原 str数组中的字符 z及其后的
31、所有字符,故 str的值为 “xyabcABC”。 24 【正确答案】 A 【试题解析】 第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断 如此循环,在打印输出语句的前一行,程序给变量 x赋了值,为 -1,所以,无论前期如伺变化,最后的 x值依然为 -1。 25 【正确答案】 D 【试题解析】 是 C语言中规定的左移运算符,例如, a=a 2,这个语句即是将 a的二进制数左移两位,左移一位相当于该数乘于 2,左移两位相当于该数乘以 2的 2次方。所以, x 1=32*2=64。 26 【正确答案】 B 【试题解析】 在程序中如果有带实参的宏,则按 #define命令行中指定
32、的字符串从左到右进行置换,如果串中包含宏中的形参,则将程序语句中相应的实参代替形参。将实参带入已经定义的宏中,可以得出答案为 “12”。 27 【正确答案】 A 【试题解析】 a就是数组 a的首地址,而 a+x是数组中第 x个元素的地址,所以在四个选项中,选项 B和 C只能输入一个数据,选项 D不能给 a0输入数据,只有 A可以完成给数组所有的元素输入数据的任务。 28 【正确答案】 B 【试题 解析】 声明枚举类型用 enum开头。例如: enum weekday(sun,mon,tue,wed,thu,fri,sat);说明: 1、在 C编译中,对枚举元素按常量处理,同时可以改变他们的值。
33、 2、枚举值可以用来做判断比较。 3、一个整数不能直接赋给一个枚举变量。 29 【正确答案】 D 【试题解析】 将一个字符常量放到一个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的 ASCII码值放到存储单元中。 30 【正确答案】 B 【试题解析】 在 C语言中,大写字母和小写字 母被认为是两个不同的字符,因此, “hello!”和 “Hello!”是两个不同的字符串。 31 【正确答案】 D 【试题解析】 注意的是 x+中 x值的引用时,这里应当是先引用,后自加,具体执行过程如下:第一次 while循环:条件为真,执行 a=a+1=1此时, x的值已为4,判断 y x
34、不成立,继续抽行循环;第二次 while循环:条件为假,此时 x的值已为 5,退出 while循环,执行 printf。 32 【正确答案】 A 【试题解析】 static声明的外部变量只限于彼本文件引用,而不能被其他 文件引用。用 static来声明一个变量的作用有: 对局部变量用 static声明,则为该变量分配的空间在整个程序执行期间始终存在; 全部变量用 static声明,则该变量的作用域只限于本文件模块 (即被声明的文件中 )。调用第一个 fun,其两个实参的值为 (3,5+3)与 7即 8与 7,在函数 fun执行结束返回 15。第二次调用 fun时,由于static为静态类型,其
35、值保留,执行 fun(5,3)后,其返回值为 23,故选 A。 33 【正确答案】 C 【试题解析】 当 switch后面括弧内的表达式的值与某一个 case后面的常量的表达式的值相等时,就执行此 case后面的语句,若所有的 case中的常量表达式的值都没有与表达式的值匹配的,就执行 default后面的语句。 34 【正确答案】 D 【试题解析】 fgetc函数是指从指定的文件读入一个字符,该文件必须是以读或读写方式打开的。 fgetc函数的调用形式为: ch=fgetc(fp);。 35 【正确答案】 D 【试题解析】 结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己
36、的内存单元;共用伸变量所占的内存长度等于最长的成员的长 度。结构件变量 aa中,成员 r1占 2个字节, r2占 8个字节, r3占 4个字节,共用体 ua占 8个字节,所以共占用 2+8+4+8=22个字节。 36 【正确答案】 D 【试题解析】 在 C语言格式字符的输出中, “%d”是以带符号的十进制形式输出整数; “%o”是以 8进制无符号形式输出整数 (不输出前导符 0); “%x”是以 16进制无符号形式输出整数 (不输出前导符 0x)。 37 【正确答案】 B 【试题解析】 C语言提供六种位运算符,按优先级由高到低的顺序分别为:取反( )、左移 ( )和右移 ( )、按 位与 (&
37、)、按位异或 ( )、按位或 (|)。所以表达式 c=ab 1先运算 b 1得二进制为 00001100,再运算 a 00001100,最后得二进制值 00001111。 38 【正确答案】 C 【试题解析】 计算机语言分为低级语言、汇编语言和高级语言, C语言属于高级语言,但并不是说 C语言比其他语言高级,所以选项 A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项 B错误; C语言出现在 1972年到 1973年间,并不是出现最晚的语言,所以选项 D也是错误的。 39 【正确答案】 B 【试题解析】 C语言规定标识符只能由字母、数字和下划线 3种字符组成
38、,且第一个字符必须为字母或下划线,所以排除 C和 D。 C语言还规定标识符不能为 C语言的关键字,从而选项 A(void是关键字 )也是错误的。 40 【正确答案】 C 【试题解析】 指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为;类型名 *数组名 数组长度 ,在本题 main函数中定义指针数组 d,它有两个元素,其初值分别是 “ab”、 “cde”的首地址。 d1的值为 “cde”的首地址。 %x是指以 十六进制数形式输出整数。 41 【正确答案】 前后件关系 【试题解析】 在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的
39、关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。 42 【正确答案】 队列 【试题解析】 队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做 “队尾 ”,删除元素的一端叫做 “队头 ”,先插入的元素先被删除,是按先进先出的原则组织数据的 。 43 【正确答案】 16 【试题解析】 满二叉树的叶子结点都在最后一层,即第 4层,且第 4层的结点达到最大数,即 25-1=16。 44 【正确答案】 类 【试题解析】 在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。 45
40、【正确答案】 数据结构 【试题解析】 Jackson方法是一种结构化分析方法,它是一种面向数据结构的结构化方法。 46 【正确答案】 12 【试题解析】 x=(表达式 1,表达式 2, ) 的形式,结果为最 后一个表达式的值: x=(a=4,6*2)=2*6=12。 47 【正确答案】 10 【试题解析】 此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是 a+4。前面已经给 a赋值 6,所以追回值 a+4=6+4=10。 48 【正确答案】 c =a&c =z 【试题解析】 小写字母在内存中以 ASCII的形式存入,且从 a到 z依次递增,所以可以直接用 c =a&c
41、 =z判断是不是小写字母; c!=n判断是用换行符结束循环。 49 【正确答案】 b=14 【试题解析】 分析程序可知, n的初始值为 1,因此, while(n =3)循环 3次。第1次: c=c*a=2: b=b+ c=2; n=2。第 2次: c=c*a=4; b=-b+ c=6; n=3。第 3次;c=c*a=8: b=b+ c=14。当 n=4时,判断条件不满足,退出循环。 50 【正确答案】 32 【试题解析】 while(表达式 )的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束 whi
42、le语句 的执行,继续执行 while语句后面的语句: i=0时满足循环条件,也满足 if的条件,执行语句得 i=11, a=11,第 2次循环不满足 if的条件,执行 i-, i=10,执行 i+=11; a+=i后,得 i=21, a=32,不满足 i 20,循环结束。 51 【正确答案】 24 【试题解析】 本题考查函数的循环调用。 p=x*func(x-1),当 x=4时,不满足 if语句的条件, p=4* func(3), x=3也不满足条件,则 func(3)=3*func(2),func(2)=2*func(1), x=1满足 条件 return(1),则输出结果为 4*3*2*
43、1=24。 52 【正确答案】 bji=aij 【试题解析】 本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组 b中,只要将数组 a的行标和列标互换,然后赋给数组 b即可。 53 【正确答案】 2,4,6,8 【试题解析】 子函数 fun()的功能是将数组 a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组 a的每个元素都变为原来的 2倍,然后输出。在主程序中首先通过 int fun()定义了子函数 fun(),然后再调用 fun()。 54 【正确答案】 QTHRG 【试题解析】 函数 strcmp(t,s)用来比较 t和 s所指字符串的
44、大小,若 t s,则函数值大于 0;若 t=s,则函数值等于 0:若 t s,则函数值小于 0。函数 strcpy(t,s)的功能是,把字符数组 s所指字符串的内容复制到字符数组 t所指存储空间中。本题中, t10=“CDEF“。第一次循环, s10=“BADEF“, if语句的控制条件strcmp(t,s) 0不成立,接着执行第二次循环, s=“QTHRG“, if语句的控制条件strcmp(t,s) 0成立,执行下列的语句,将字符数组 s所指字符串的内容复制到字符数组 t所指存储空间中,然后输出字符数组 t。 55 【正确答案】 55 【试题解析】 分析程序执行过程,第一次循环时, j=3, i=5。因为 switch(3),所以执行 case 3,调用 P(a-i)=P(a4)=P(5),输出 5;第二次循环时, j=2, i=4,因为 switch(2),所以执行 case2,调用 P(ai+)-P(a4)=P(5),输出 5,之后 i自加等于 5。