1、国家二级( C语言)笔试模拟试卷 146及答案与解析 1 下列叙述中正确的是 ( )。 ( A)一个算法的空间复杂度大,则其时间复杂度必定大 ( B)一个算法的空间复杂度大,则其时间复杂度必定小 ( C)一个算法的时间复杂度大,则其空间复杂度必定小 ( D)上述 3种说法都不对 2 下列叙述中正确的是 ( )。 ( A)一个逻辑数据结构只能有一种存储结构 ( B)逻辑结构属于线性结构,存储结构属于非线性结构 ( C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率 ( D)一 个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率 3 对长度为 n的线性表进行
2、顺序查找,在最坏的情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 4 最简单的交换排序方法是 ( )。 ( A)快速排序 ( B)选择排序 ( C)堆排序 ( D)冒泡排序 5 设计程序时,应采纳的原则之一是 ( )。 ( A)程序的结构应有助于读者的理解 ( B)限制 GOTO语句的使用 ( C)减少或取消注释行 ( D)程序越短越好 6 关 于结构化程序设计原则和方法的描述错误的是 ( )。 ( A)选用的结构只准许有一个入口和一个出口 ( B)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现 ( C)不允许使用 GOTO语句 ( D
3、)语言中所没有的控制结构,应该采用前后一致的方法来模拟 7 下列特征中不是面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B)继承 ( C)封装性 ( D)模块化 8 在面向对象的方法中,一个对象请求另一个对象为其服务的方式是通过发送( )。 ( A)调用语句 ( B)命令 ( C) 口令 ( D)消息 9 下列描述错误的是 ( )。 ( A)继承分为多重继承和单继承 ( B)对象之间的通信靠传递消息来实现 ( C)在外面看不到对象的内部特征是基于对象的 “模块独立性好 ”这个特征 ( D)类是具有共同属性、共同方法的对象的集合 10 下列叙述中正确的是 ( )。 ( A)软件交付使
4、用后还需要进行维护 ( B)软件一旦交付使用就不需要再进行维护 ( C)软件交付使用后其生命周期就结束 ( D)软件维护是指修复程序中被破坏的指令 11 下列说法不正确的是 ( )。 ( A) C语言程序是以函数为基本单位的,整个程序由函数组成 ( B) C语言程序的一条语句可以写在不同的行上 ( C) C语言程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写 ( D) C语言程序的每个语句都以分号结束 12 下列程序的执行结果是 ( )。 #include stdio.h main() int a,b,c; a b 2; c (a+)-1;printf(“%d,%d“,a,C)
5、; c+ -a+(+B) ;printf(“%d,%d“,a,C); ( A) 3,1 4,1 ( B) 3,1 4,2 ( C) 2,0 4,1 ( D) 2,1 4,1 13 若 w、 x、 y、 z、 m均为 int型变量,则执行下列的语句后 m的值是 ( )。 w 2,x 3,y 4,z 5; m (w x)?w:x; m (m z)?m:z; m (m y)?m:y; ( A) 2 ( B) 3 ( C) 5 ( D) 4 14 若有定义: int a 4,b 5;float x 3.4,y 2.1;,则下列表达式的值为 ( )。 (float)(a+b) /2+(int)x%(in
6、t)y ( A) 5.5 ( B) 55 ( C) 5.500000 ( D) 55.00000 15 在 ASCII代码表中每一个大写字母比它相应的小写字母的 ASCII码 ( )。 ( A)小 32 ( B)小 64 ( C)大 32 ( D)大 1 16 下列不是合法的 C语言语句是 ( )。 ( A) a 5 ( B) int i;i+; ( C); ( D) ; 17 下列写法正确的是 ( )。 ( A) main() ( B) main() int i 3,j; int i 3; j 5 ( C) main() ( D) main() ; 18 下列程序的输出结果是 ( )。 ma
7、in() int a,b,d 25; a: d/10%9; b a printf(“%d,%dn“,a,b) ; ( A) 6,1 ( B) 2,1 ( C) 6,0 ( D) 2,0 19 下列程序的输出结果是 ( )。 #include stdio.h main() int a 3,b 2,c 1; if(a B) if(b O)c 0; else c+; printf(“%dn“,c) ; ( A) 0 ( B) 2 ( C) 1 ( D) 3 20 下列程序的功能:给 r输入数据后计算半径为 r的圆面积 s。程序在编译时出错。 main() /* Beginning */ int r;
8、 float s; scanf(“%d“, r); star*r*r; printf (“s %fn“,s); 出错的原因是 ( )。 ( A)注释语句书写位置错误 ( B)存放圆半径的变量 r不应定义为整型 ( C)输出语句中格式描述符非法 ( D)计算圆面积的赋值语句使用非法变量 21 下列程序的运行结果是 ( )。 #include stdio.h main() int x 5,a 1,b 2,C 5,d 0; if(a B) if(b! 3) if(!C) x 1; else if(D) x 1; else x -1; printf(“%d“,x); ( A) -1 ( B) 0 (
9、C) 1 ( D)不确定的值 22 要求通过 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); 23 不能与 dowhile(exp) 语句中的 (exp)等价的表达式是 ( )。 ( A) (!e
10、xp 0) ( B) (exp 0 exp 0) ( C) (exp 0) ( D) (exp! 0) 24 有下列程序: main() int i; for(i 1;i 40;i+) if(i+%5 0) if(+i%8 0)printf(“%d“,i); printf(“n“); 执行后的输出结果是 ( )。 ( A) 5 ( B) 24 ( C) 32 ( D) 40 25 下列选项中不是字符常量的是 ( )。 ( A) V ( B) x2a ( C) a ( D) 0 26 有下列程序: main() int i,j; for(i 1;i 4;i+) for(j i;j 4;j+) p
11、rintf(“%d*%d %d“,i,j,i*j); printf(“n“); 程序运行后的输出结果是 ( )。 ( A) 1*1 1 1*2 2 1*3 3 2*1 2 2*2 4 3*1 3 ( B) 1*1 1 1*2 2 1*3 3 2*2 4 2*3 6 3*3 9 ( C) 1*1 1 1*2 2 2*2 4 1*3 3 2*3 6 3*3 9 ( D) 1*1 1 2*1 2 2*2 4 3*1 3 3*2 6 3*3 9 27 下列说法不正确的是 ( )。 ( A)调用函数时,实参可以是表达式 ( B)调用函数时,实参与形参可以共用内存单元 ( C)调用函数时,将实参的值复制给
12、形参,使实参变量和形参变量在数值上相等 ( D)调用函数时,实参与形参的类型必须一致 28 下列叙述错误的是 ( )。 ( A)函数名是属于用户标识符,需符合 C语言对标识符的规定 ( B)形参只能是变量 ( C)为保证程序的正常运行,函数中定义的变量不能与其他函数中的变量同名 ( D)函数中定义的变量可以与其他函数中的变 量同名 29 下列程序段中,不能正确赋值的是 ( )。 ( A) char*p,ch; p scanf(“%c“, ( B) char*p; p char*)malloc(1); scanf(“%c“,p); ( C) char*p; *p getchar(); ( D)
13、char*p,ch; p *p getchar(); 30 若有定义 float a15,*p a;,且数组 a的首地址 为 300H,则 p+13所指向的数组元素的地址为 ( )。 ( A) 334H ( B) 30DH ( C) 352H ( D) 31AH 31 若有说明: int a3 0,0;则不正确的叙述是 ( )。 ( A)数组 a的每个元素的初值都是 0 ( B)数组 a的第一维大小为 1 ( C)数组 a的行数为 1 ( D)只有元素 a0 0和 a101可得到初值 0,其余元素均得不到初值 0 32 在 C语言中,引用数组元素时,其数组下标的数据类型允许是 ( )。 ( A
14、)整型表达式 ( B)整型常 量 ( C)整型常量或整型表达式 ( D)任何类型的表达式 33 对于下列字符串,说明表达式 strlen(s)值的是 ( )。 char s10 a,n,a,b,t,c; ( A) 10 ( B) 1 ( C) 6 ( D) 7 34 若已包括头文件 string.h且已有定义 char s118, s2 “ABCDE“和 int i,现要将字符串 “ABCDE”赋给 s1,下列语句错误的是 ( )。 ( A) strcpy(s1,s2) ( B) strcpy(sl,“ABCDE“); ( C) s1 “ABCDE“; ( D) for(i 0;i 6;i+)
15、 s1i s2i; 35 下列叙述中不正确的是 ( )。 ( A)在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 ( B)在 C的函数中,最好使用全局变量 ( C)外部变量可以在函数之间传递数据 ( D)自动变量实质上是一个函数内部的局部变量 36 在 “文件包含 ”预处理语句的使用形式中,当 #include后面的文件名用 (尖括号 ) 括起时,寻找被 包含文件的方式是 ( )。 ( A)仅仅搜索当前目录 ( B)仅仅搜索源程序所在目录 ( C)在标准目录下查找指定的文件 ( D)先在源程序所在目录搜索,如查找不到,再按系统指定的标准目录查找 37 根据下列定义,能
16、打印出字母 P的语句是 ( )。 struct stuchar name10; int age; ; struct stu s10 “John“,11, “Pau1“,12, “Mary“,11, “adam“,12 ; ( A) primf(“%c“,s3.name; ( B) primf(“%c“,s3.name1); ( C) printf(“%c“,s2.name1); ( D) printf(“%c“,s1.name0); 38 下列程序的运行结果是 ( )。 #include stdio.h main() stmct date int year,month,day; today;
17、primf(“%dn“,sizeof(struct date); ( A) 8 ( B) 6 ( C) 10 ( D) 12 39 在位运算中,操作数每左移两位,其结果相当于 ( )。 ( A)操作数乘以 2 ( B)操作数除以 2 ( C)操作数除以 4 ( D)操作数乘以 4 40 若以 “叶 ”方式打开一个己存在的文件,则下列叙述正确的是 ( )。 ( A)文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作 ( B)文件打开时,原有文件内容不被删除,只能进行读操作 ( C)文件打开时,原有文件内容被删除,只能进行写 操作 ( D)以上 3种说法都不正确 41 算
18、法的复杂度主要包括时间复杂度和 _复杂度。 42 按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于 _。 43 树中度为零的结点称为 _。 44 在面向对象方法中,类之间共享属性和方法的机制称为 _。 45 软件是程序、数据和 _的集合。 46 若 a的值为 1,则表达式 !a+a的值是 _。 47 若 a是血型变量,且 a的初值为 4,则计算 a+=a-=a*a表达式后 a的值为_。 48 下列程序的输出结果是 _。 #include stdio.h main() int a=2,b=-1,C=2; if(a B) if(b O)c=0; else c+; printf(“%dn“
19、,C) ; 49 下列程序的循环次数是 _。 x=2; do x=x*x; while(!x); 50 下列程序段的运行结果是 _。 int x=0,y=0; while(x 15) y+,x+=+y; printf(“%d,%d“,y,x); 51 下列程序的运行结果是 _。 main() int s=0,i=1; while(s =10) S=S+i*i; i+; b printf(“%d“,-i); 52 下列程序的输出结果是 _。 10ng fun5(int n) long s; if(n=1) (n=2) s=2; else s=n+fun5(n-1) ; return(s); ma
20、in() long x; x=fun5(4); printf(“%1dn“,x); 53 下列程序的输出结果是 _。 main() int a=2,b=4,c=6; int*p1= *(p= printf(“%dn“,c); 54 下 列程序运行后的输出结果是 _。 #include stdio.h main() char s20; scanf(“%S“,S); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 55 下列程序的运行结果是 _。 #define POW(r)(r)*(r) main() int x=3,y=2,t; t=POW(x+y); printf(
21、“%dn“,t); 国家二级( C语言)笔试模拟试卷 146答案与解析 1 【正确答案】 D 【试题解析】 算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况,它们之间没有内在联系。 2 【正确答案】 D 【试题解析】 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,常用的存储结构有顺序和链式结构。采用不同的存储结构,其处理的效率是不同的。 3 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开 始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏的情况下
22、,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 4 【正确答案】 D 【试题解析】 交换排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。 5 【正确答案】 A 【试题解析】 程序设计的风格主要强调程序的简单、清晰 和可理解性,以便读者理解。程序滥用 GOTO语句,将使程序流程无规律,可读性差:添加注释行有利于对程序的理解,不应减少或取消,程序的长短要依据实际的需要而定,并不是越短越好。 6 【正确答案】 C 【试
23、题解析】 限制使用 GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用 GOTO语句。其他 3项为结构化程序设计的原则。 7 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括 :分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。 8 【正确答案】 D 【试题解析】 在面向对象方法中,对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。
24、9 【正确答案】 C 【试题解析】 对象的封装性是指从外面看只能看到对象的外部特性;而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。 10 【正确答案】 A 【试 题解析】 软件生命周期一般可以分为软件定义、软件开发及软件运行维护 3个阶段。软件交付并投入运行后,需要不断地进行维护,并根据新提出的需求进行必要而且可能的扩展和删改。 11 【正确答案】 C 【试题解析】 本题涉及 C语言的 3个基本知识点: C语言的源程序是由函数构成的,函数是其基本单位,每一个函数完成相对独立的功能,其中只能包括一个主函数; C语言规定每个语句以分号结束,其书写格式是自由的,一条语句可以写在不
25、同的行上,或者一行也可以写多条语句; 注释行虽然对程序的运行不起作用,但是它可以方便程序员 阅读,提高程序的可读性和可移植性,所以书写注释行还是很有必要的。 12 【正确答案】 A 【试题解析】 本题主要考查自加运算符 (+、 -)的使用。 前缀变量 “+i、 -i”,在使用 i之前,先使 i的值加 1或者减 1,再使用此时的表达式的值参与运算; 后缀变量 “i+、 i-”,用此时的表达式的值参与运算,在使用 i之后,再使 i的值加1或者减 1。 题中计算表达式 c (a+)-1时先使用 a的值进行计算,结果为 c 2-1 1,然后将 a的值加 1,即执行完此语句后 a的值是 3;表达式 c+
26、 -a+(+B)等价于 cC+(-a+)+(+B),c 1+(-3)+3 1,此时 a 4,b 3。 13 【正确答案】 A 【试题解析】 条件表达式 “a?b:c”的含义是:当 a为真时,其值等于表达式 b的值;当 a为假时,其值等于表达式 c的值。 表达式运算过程:第 1个表达式: w 2 x 3为真,所以返回 w的值,即 mw 2;第 2个表达式: m 2 z 5为真,所以返回 m的值,即 m 2;第 3个表达式: w 2 y 4为真,所以返回 m的值,即 m 2。 14 【正确答案】 C 【试题解析】 在计算 (float)(a+b/2时,由于通过强制类型转换将 (a+b转换成了foa
27、t型,所以应先将 2转换成 float型,再进行计算,得 4.500000。 在计算 (int)x%(int)y时,先将 x和 y通过强制类型转换成 int型,再进行求余运算,得 1。又因为 4.500000是 float型,所以将 1和它相加时,先将 1换成 float型,再计算,得到 5.500000。 知识扩展 类型转换的一般规则是:低级类型服从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:charintunsigned longfloatdouble 。 15 【正确答案】 A 【试题解析】 本题考查大小写字母的 ASCII码值的关系。大写字母比它相应的小写字母的 A
28、SCII码小 32。 16 【正确答案】 A 【试题解析】 选项 A)是一个表达式,它后面没有分号结尾 (C语言中规定语句必须以分号结束 ),所以它不是语句;选项 B)用一个花括号把几条语句括起来了,这是一个复合语句;选项 C)中只有一个分号,是一个空语句;选项 D)是个复合语句,也是一个空语句。 17 【正确答案】 D 【试题解析】 本题考查语 句的基本构成。选项 A)中 j 5后面少了一个分号;选项 B)中少了 “”;选项 C)不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号:选项 D)正确,是一个空语句。 18 【正确答案】 B 【试题解析】 算术运行符 “/”、 “%
29、”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为: a 25/10%9 2%9 2;当逻辑运算符“”语句,即输出 32。本题的答案为选项 C)。 25 【正确答案】 D 【试题解析】 C语言规定,一个字符常量代表 ASCII码字符集里的一个字符,在程序中用单引号括起来,以便区分。 “v”表示的是竖向跳格; “x2a”表示的是两位十六进制数; “a”表示的是字符a对应的 ASCII码值。 26 【正确答案】 B 【试题解析】 外层 for循环的自变量 i从 1开始,每次循环后增 1,直到 i等于 3结束。对于外层循环自变量 i的每一个值,内层循环的自变量 i每次从 i
30、开始,每次循环后增 1,直到 j等于 3结束。所以在每次外循环开始后,内层循环在一行先打印门 两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。 27 【正确答案】 B 28 【正确答案】 C 【试题解析】 本题考查函数调用时参数的作用域。在函数调用时,函数体内定义的变量的作用域在函数体内,因而在不同函数体内定义的变量可以相同,不影响各 个变量的使用。 29 【正确答案】 C 【试题解析】 地址变量 p指向的存储空间一定要明确,否则可能影响程序的正确性。 30 【正确答案】 C 【试题解析】 解答本题,首先要明白在对指针进行加、减运算的时候,数字 “1”不是十进制的数 “1”,而是
31、指 “1“个存储单元长度,而 1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是 int型,移动 1个存储单元的长度就是位移 2个字节,如果基本类型是 float型,移动 1个存储单元的长度就是位移4个字节。所以 p+13所指向的数组元素的地址: 300H+(13*上标 )4)H 352H。 31 【正确答案】 D 【试题解析】 本题考查给二维数组元素赋值。给二维数组元素赋值时应注意两点: 在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取 0。 二维数组第一维的大小由如下规则确定:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初
32、值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加 1。 32 【正确答案】 C 【试题解析】 在 C语言中,引用数组元素时,其数组下标的数据类型 可以是整型常量,也可以是整型表达式。 33 【正确答案】 C 【试题解析】 strlen(s)返回 s字符串中字符的个数,若 s是个数组,则返回数组元素的个数。 34 【正确答案】 C 【试题解析】 数组名 s1是代表 s1数组首地址的地址常量,而不是变量,因为“ ”左边不能出现常量,因此 s1 “ABCDE”的方法是错误的。 35 【正确答案】 B 【试题解析】 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局
33、部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调 用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在内存不确定的情况下,最好使用全局变量。 36 【正确答案】 C 【试题解析】 本题考查文件包含的知识点:格式 1:#include文件名,预处理程序在标准目录下查找指定的文件;格式 2:#include“文件名 ”,预处理程序首先在引用被包含文件的源文件所在的目录中寻找指定的文件,如查找不到,再按系统指定的标准目录查找。 37 【正确答案】 D 【试题解析】 本题主要考查按结构数组元素 方式引用结构成员。字母 P为“Paul“的
34、第一个字母,是结构体 s1的 name成员的第一个元素的值,即 s 1.name0的值。 38 【正确答案】 B 【试题解析】 解答本题需要注意两个知识点: 结构体变量的长度是其内部成员长度的总和,本题中, struct date中包含 year、 month、 day这 3个整型变量,一个整型变量占 2个字节: sizeof是求所占字节数的运算符。 39 【正确答案】 D 【试题解析】 本题主要考查左移、右移对数据值的影响,左移 n位相当于乘以 2的 n次 幂,右移 n位相当于除以 2的 n次幂。 40 【正确答案】 A 【试题解析】 本题考查文件使用方式标识符,以 “叶 ”方式打开一个已存
35、在的文件,则表示保留文件中原有的数据,文件的位置指针在文件末尾,此时,可以进行追加或读操作。 41 【正确答案】 空间 【试题解析】 衡量一个算法的复杂度有两个指标:时间复杂度和空间复杂度。前者用宋衡量执行算法时所需要的计算工作量,而后者用来衡量执行算法所需要的存储空间。 42 【正确答案】 线性结构 【试题解析】 数据的逻辑结构是指数据元素之间的逻辑关 系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。 43 【正确答案】 叶子结点 【试题解析】 树中度为零的结点,也就是没有后件的结点,称为叶子结点。 44 【正确答案】 继承 【试题解析】 在
36、面向对象的程序设计方法中,某些属性和方法是可以共享的,由子类从父类中继承而来,这样提高了软件的可重用性。 45 【正确答案】 相关文档 【试题解析】 计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。 46 【正确答案】 1 【试题解析】 逻辑运算中,非 1即 0,非 0即 1, !a=0, +a为逻辑 1,所以 0和 1相或结果为 1。 47 【正确答案】 -24 【试题解析】 本题考查赋值运算符 a+=b等价于 a=a+b;a-=a*a等价于 a=a-a*a=4-4*4=-12;a+=a,即 a=a+a=-24。 48 【正确答案】 2 【试题解析】
37、分析程序, a=2, b=-1, c=2时, if语句的表达式 a b不成立,不再往下判断,直接退出 if语句,执行后面的输出语句,程序结束。在这个程序中a、 b、 c的值没做任何改变。 49 【正确答案】 1 【试题解析】 dowhile 语句的功能是:首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环; dowhile语句的特点是先执行后判断,因此循环体至少执行 1次。本程序中 x=2不符合循环条件,所以只循环 1次。 50 【正确答案】 8,20 【试题解析】 本题考查 while循环和 +运算符的运用。 x=O符合条件 x 15,则执行 y+
38、, x+=+y后, y=1, x=0+2=2后 y=2,符合条件继续循环, y=3, x=x+4=6后 y=4,再循环 y=5, x=x+6=6+6=12后, y=6,继续循环 y=7, x=x+8=12+8=20,此时 y=8。 51 【正确答案】 3 【试题解析】 分析程序运行过程,第 1次循环: s=s+i*i=0+1*1=1, i=2;第 2次循环: s=s+i*i=1+2*2=5, i=3;第 3次循环: s=s+i*i=5+3*3=14, i=4;循环条件不成立输出 i, -i使 i的值减 1,输出结果为 3。 52 【正确答案】 9 【试题解析】 考查 if else语句, n=
39、4不满 足条件,所以 fun5(4)=4+fun5(3),n=3也不满足条件, fun5(3)=3+ fun5(2), n=2满足条件 fun5(2)=2,故x=4+3+2=9。 53 【正确答案】 8 【试题解析】 本程序定义了 3个指针变量 p1、 p2、 p,并且将 a、 b的地址分别赋给 p1、 p2,则 *p1=a=2, *p2=b=4,所以表达式 *p1*(*p2)的值是 8。在赋值语句的左边是 *(p=”是把 整数 8赋给了变量 c。 54 【正确答案】 HOW 【试题解析】 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用 scanf()函数,所以本题中输入空格就返回了 0, s数组也就确定了,后面的输入就不再读入数组 s中。 55 【正确答案】 25 【试题解析】 本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。