1、国家二级( C语言)笔试模拟试卷 165及答案与解析 1 下列叙述中错误的是 ( )。 ( A)一种数据的逻辑结构可以有多种存储结构 ( B)数据的存储结构与数据的处理效率无关 ( C)数据的存储结构与数据的处理效率密切相关 ( D)数据的存储结构在计算机中所占的空间不一定是连续的 2 下列叙述中错误的是 ( )。 ( A)线性表是由 n个元素组成的一个有限序列 ( B)线性表是一种线性结构 ( C)线性表的所有结点有且仅有一个前件和后件 ( D)线性表可以是空表 3 下列关于 栈的描述中错误的是 ( )。 ( A)栈是先进先出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)
2、对栈的插入与删除操作中,不需要改变栈底指针 4 对长度为 n的线性表进行顺序查找,在最坏情况下需要比较的次数为 ( )。 ( A) 125 ( B) n/2 ( C) n ( D) n+1 5 下列叙述中正确的是 ( )。 ( A)在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息 ( B)在自顶向下、逐步细化的设计过程中,首 先应设计解决问题的第一个细节 ( C)在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则 ( D)在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法 6 下列特征中不是面向对象方法的主要特征的是 ( )。 ( A)多态性 ( B
3、)继承 ( C)封装性 ( D)模块化 7 有下列二叉树,对此二叉树中序遍历的结果为 ( )。 ( A) BDYEACFXZ ( B) DYBEAFCZX ( C) ABCDEFXYZ ( D) ABDYECFXZ 8 下列不属于软件工程的 3个要素的是 ( )。 ( A)工具 ( B)过程 ( C)方法 ( D)环境 9 设计软件结构是在软件生命周期的 ( )。 ( A)软件定义期 ( B)软件开发期 ( C)软件维护期 ( D)以上 3个都不是 10 下列工具中为需求分析常用工具的是 ( )。 ( A) PAD ( B) PFD ( C) N-S ( D) DFD 11 下列说法正确的是
4、( )。 ( A)一个 C程序可以有多个主函数 ( B)一个 C语言的函数中只允许有一对花括号 ( C) C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内 ( D)在对 C程序进行编译时,可以发现注释行中的拼写错误 12 下列程序的输出结果是 ( )。 #include stdio.h main() int a=4; printf(“%dn“,(a+=a-=a*a); ( A) -8 ( B) 14 ( C) 0 ( D) -24 13 表示关系 abc的 C语言表达式为 ( )。 ( A) (a =b)”,则正确的输入语句是 ( )。 ( A) scanf(“%1f“,a)
5、; ( B) scanf(“%f“,break; case 1=m+; switch(b%2) defaut:m+; case0:m+;break; printf(“%dn“,m); 程序运行后的输 ( A) 1 ( B) 2 ( C) 3 ( D) 4 19 下列程序的运行结果是 ( )。 main() int x=1,y=3,a=0; while(x+!=(y-=1) a+=1; if(y x)break; printf(“%d,%d,%dn“,x,y,a); ( A) 2,3,2 ( B) 2,3,1 ( C) 1,3,3 ( D) 3,1,2 20 有下列程序: main() int
6、x=5; do printf(“%d“,x-=4); while(!(-X); 程序的输出结果是 ( )。 ( A) 1 ( B) 20 ( C) 1-4 ( D)死循环 21 若变量已正确定义,下列正确的程序段是 ( )。 ( A) while(ch=getchar()=N)putchar(ch); ( B) while(ch=getchar()=n)putchar(ch); ( C) while(ch=getchar()!=N)putchar(ch); ( D) while(ch=getchar()!=n)putchar(ch); 22 若有下列定义,则对 a数组元素地址的正确引用是 (
7、)。 int a5,*p=a; ( A) p+5 ( B) *a+1 ( C) ”则对 a数组的第 i行第 j列元素的正确引用为 ( )。 ( A) *(*(a+i)+j) ( B) (a+i)j ( C) *(a+i+j) ( D) *(a+i)+j 24 下列选项中,当 x为大于 1的奇数时,值为 0的表达式是 ( )。 ( A) x%2=1 ( B) x/2 ( C) x%2!=0 ( D) x%2=0 25 下列叙述中不正确的是 ( )。 ( A)在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 ( B)在 C的函数中,最好使用全局变量 ( C)外部变量可以在函
8、数之间传递数据 ( D)自动变量实质上是一个函数内部的局部变量 26 定义下列结构体 (联合 )数组: struct St char name15; int age; a10=“ZHAO“,14,“WANG“,15,“LIU“,16,“ZHANG“,17; 执行语句printf(“%d,%c“,a2.age,*(a3.name+2)的输出结果为 ( )。 ( A) 15,A ( B) 16,H ( C) 16,A ( D) 17,H 27 设有下列语句 int a=1,b=2,c; c=a (b 2); 执行后, C的值为 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 28
9、 有下列程序: #include stdio.h main() char c1,c2,c3,c4,c5,c6; scanf(“%c%c%c%c“,c6=getchar(); putchar(c1);putchar(c2); printf(“%c%cn“,c5,c6); 程序运行后,若从键盘输入 (从第 1列开始 ): 123 CR 45678 CR 则输出结果是 ( ( A) 1267 ( B) 1256 ( C) 1278 ( D) 1245 29 若有下列说明和语句,则对结构体变量 st中成员 i的引用方式不正确的是( )。 Struct stu int i; int name; st,*
10、p; p= 执行后的输出结果是 ( )。 ( A) 7 ( B) 3 ( C) 2 ( D) 0 33 下列程序的输出结果是 ( )。 #include stdio.h int fun(int x) int p; if(x=0x=1) return 3; else p=x-fun(x-2); return p; void main() printf(“n%d“,fun(5); ( A) 5 ( B) 3 ( C) 7 ( D) 1 34 下列程序的输出结果是 ( )。 point(char*pt); main() char b4a,c,s,f,*pt=b; pt=point(pt); prin
11、tf(“%cn“,*pt); point(char*p) p+=3; return p; ( A) s ( B) c ( C) f ( D) a 35 已有定义 int(*q)(),指针 q可以 ( )。 ( A)指向函数的入口地址 ( B)代表函数的返回值 ( C)表示函数的类型 ( D)表示函数返回值的类型 36 下列程序的输出结果是 ( )。 #include stdio.h #include string.h main() char a=“n123“; printf(“%d,%dn“,strlen(a),sizeof(a); ( A) 5,6 ( B) 5,5 ( C) 6,6 ( D
12、) 6,5 37 下列选项中不会引起二义性的宏定义是 ( )。 ( A) #define S(x)x*x ( B) #define S(x)(x)*(x) ( C) #define S(x)(x*x) ( D) #define S(x)(x)*(x) 38 若有运算符: 、 *=、 %、 sizeof,则它们按优先级 (由低至高 )的正确排列次序为 ( )。 ( A) *= % sizeof ( B) *= % sizeof ( C) %= sizeof % ( D) *= % sizeof 39 在 C语言中,下列关于文件操作的叙述正确的是 ( )。 ( A)对文件操作必须先关闭文件 ( B
13、)对文件操作必须先打开文件 ( C)对文件操作顺序没有统一规定 ( D)以上全错 40 利用 fseek函数可实现的操作是 ( )。 ( A)实现文件的顺 序读写 ( B)改变文件的位置指针 ( C)实现文件的随机读写 ( D)以上答案均正确 40 数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,_是用户的数据视图,也就是用户所见到的数据模式。 40 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、_和选择排序。 40 栈的 3种基本运算是:入栈、退栈和 _。 40 若 a的值为 1,则表达式 !a+a的值是 _。 40 若 a是 int型变量,且 a的初值为
14、4, 则计算 a+=a-=a*a表达式后 a的值为_。 40 下列程序的输出结果是 _。 #include stdio.h main() int a=2,b=-1,c=2; if(a b) if(b 0)c=0; else c+; printf(“%dn“,c); 40 下列程序的循环次数是 _。 x=2; do x=x*x; while(!x); 40 下列程序段的运行结果是 _。 int x=0,y=0; while(x 15)y+,x+=+y; printf(“%d,%d“,y,x); 40 下列程序的运行结果是 _。 main() int s=0,i=1; while(s =10) s
15、=s+i*i; i+; printf(“%d“,-i); 40 下列程序的输出结果是 _。 long fun5(int n) long s; if(n=1)(n=2) s=2; else s=n+fun5(n-1); return(s); main() long x; x=fun5(4); printf(“%1dn“,x); 40 下列程序的输出结果是 _。 main() int a=2,b=4,c=6; int*p1=&a,*p2,&b,*p; *(p=&c)=*p1*(*p2); printf(“%dn“,c); 40 下列程序运行后的输出结果是 _。 #include stdio.h m
16、ain() char s20; scanf(“%s“,s); printf(“%s“,s); 运行程序,输入 HOW ARE YOU。 40 下列程序的运行结果是 _。 #define POW(r)(r)* main() int x=3,y=2,t; t=POW(x+y); printf(“%dn“,t); 国家二级( C语言)笔试模拟试卷 165答案与解析 1 【正确答案】 B 【试题解析】 数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效
17、率密切相关。 2 【正确答案】 C 【试题解析】 线性表是一种线性结构,由 n(nO)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项 C)是错误的。 3 【正确答案】 B 【试题解析】 栈是限定只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,它们的操作特点是先进后出,因此具有记忆作用。栈可以采用顺序存储,也可以采用链式存储。 4 【正确答案】 C 【试题解析】 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在
18、最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。 5 【正确答案】 C 【试题解析 】 在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。 6 【正确答案】 D 【试题解析】 面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化
19、是结构化程序设计的特点。 7 【正确答案】 B 【 试题解析】 对二叉树的中序遍历是指首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左、右子树时,注意依旧按照 “左子树 根结点 右子树 ”的顺序。本题的遍历顺序是这样的: 首先访问左子树: BDEY; 在左子树BDEY中,也按中序遍历,先访问左子树 DY;在左子树 DY中,也按中序遍历,先访问左子树,左子树没有,则访问根结点 D,然后访问右子树 Y; 接着访问根 B,再访问右子树 E; 访问左子树 BDEY后,接着访问根结点 A,接着访问右子树 CFXZ; 右子树 CFXZ的访问顺序同理可得: FCZX。 8 【正确答案 】 D 【试题
20、解析】 软件工程包括 3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。 9 【正确答案】 B 【试题解析】 设计软件结构是在软件概要设计阶段进行的,而概要设计属于软件开发期。 10 【正确答案】 D 【试题解析】 需求分析常用的工具有数据流图 (DFD)、数据字典 (DD)、判定树和判定表。 PAD(问题分析图 )、 PFD(程序流程图 )、 N-S(盒式图 )都是详细设计的常用工具,不是 需求分析的工具。 11 【正确答案】 C 【试题解析】 本题涉及 C语言基本的 3个知识点: C语言规定一个程序只
21、允许有一个主函数,一个函数内可以允许有多个花括号; C语言的标识符是由字母、数字、下划线组成的,可以是大写字母,而且标识符区分字母的大小写; C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。 12 【正确答案】 D 【试题解析】 表达式 a+=a-=a*a看起来复杂,其实将它分成两个表达式来计算就简单 了: 第一个表达式 (a-=a*a)=(a=a-a*a=-12); 第二个表达式 (a+=a-=a*a)=(a=a+a=-24)。 13 【正确答案】 A 【试题解析】 本题考查逻辑与运算符 &。在 C语言中使用运算符
22、 “&”连接两个表达式,也可以表示逻辑与运算符。在 C语言中不允许出现 a =b =c这种格式。 14 【正确答案】 A 【试题解析】 “%u”表示输出无符号的整数 (注意:如果输出值前有符号,将自动转化为相应的无符号数输出 )。 15 【正确答案】 A 【试题解析】 C语言规定,赋值号的右边可以是一个赋值表达式,因此选项C)、选项 D)正确;在选项 B)中, a+是一个自加 1的表达式, a被重新赋值,因此它是一个合法的赋值表达式;在选项 A)中, a+d是一个算术表达式,虽然最后有一个分号,但这个表达式中没有赋值操作,因此它不是一条赋值语句。 16 【正确答案】 D 【试题解析】 函数 s
23、canf()的调用形式: scanf(格式字符串,输入项地址表 )。其中, “格式字符串 ”是要输入的变量的格式符: “输入项地址表 ”是要输入的变量的地址。本题中定义变量 a为双精度型变量,双精度 变量的格式符为 “1e”;变量的地址用取地址符 “&”加变量名表示,如变量 a的地址为 “&a”。 17 【正确答案】 C 【试题解析】 本题考查汀语句。先判断 if语句的条件是否成立, +a=1 0,此条件成立,又因为是进行逻辑或运算,在已知其中一个运算对象为真的情况下,不必判断另外一个运算符的真假,即不进行 +b操作,就可以直接得出整个表达式的值为逻辑 1,执行下列的 +c。 18 【正确答案
24、】 B 【试题解析】 本题考查 switch语句。第一个 switch语句,因为 a=6, a%2=0,所以 执行 case0,将 m加 1,遇到 break语句跳出 switch语句,结束循环。 19 【正确答案】 D 【试题解析】 本题考查 while循环。第一次循环,先拿 x的值和 (y-1)比较,此时x=1, y-1=2,循环条件成立,比较完将 x的值加 1,此时 x=2,进入循环,a=a+1=1,判断 if语句的控制条件是否成立, y x不成立,接着执行下一次循环。第二次循环,先拿 x的值和 (y-1)比较,此时 x=2, y-1=1,循环条件成立,比较完将 x的值加 1,此时 x=
25、3,进入循环, a=a+1=2,判断 if语句的控制条件 是否成立, y x成立,执行 break语句退出循环。 20 【正确答案】 C 【试题解析】 本题考查 dowhile 循环。 执行 printf语句, x=x-4=1,输出1,判断 while循环的控制条件, -x=0,则 (!(-X)非零,循环条件成立,执行下一次循环; 执行 printf语句, x=x-4=-4,输出 -4,判断 while循环的控制条件, -X=-5,则 (!(-x)为零,循环条件不成立,结束循环。 21 【正确答案】 D 【试题解析】 本题考查两个知识点: C语言用 n这个字符常量表示换行; 函数 getcha
26、r()的作用是从终端输入一个字符,当遇到换行时结束输入。 22 【正确答案】 D 【试题解析】 本题考查如何引用数组元素的地址。在选项 A)中, p+5引用的是a5的地址,而数组 a只有 5个元素,即 a0、 a1、 a2、 a3、 a4,所以引用错误;在选项 B)中, *a+1指的是将数组 a的第一个元素加 1;在选项 C)中,这种引用方式错误;在选项 D)中, &a0引用的是数组的首地址。 23 【正确答案】 A 【试题解析】 本题考查如何 通过地址来引用数组元素。通过地址来引用数组元素的方法有 5种: aij; *(ai+j); *(*(a+i)+j); *(ai)j; *(&a00+3
27、*i+j)。 24 【正确答案】 D 【试题解析】 因为 x的值为大于 1的奇数,所以 x除以 2的余数等于 1。所以选项 D)等于关系表达式的结果为假,即等于 0。 25 【正确答案】 B 【试题解析】 编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存 ,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。 26 【正确答案】 C 【试题解析】 本题主要考查结构体数组。 a2.age为结构体 a2的 age成员,即16。 a3
28、.name为指向结构体 a3的 name成员的第一个元素的指针,即指向 “Z”,(a3.name+2)将指针后移两位指向第三个元素 “A”, *(a3.name+2)是取指针所指向地址的内容。 27 【正确答案】 D 【试题解析】 变量 b的初值等于 2,所以表达式 b 2表示 b的值二进制左移两位,即扩大 4倍,所以变量 b的等于 8。然后与 a的值 1进行异或运算,得 9。 28 【正确答案】 D 【试题解析】 当用 scanf函数从键盘输入数据时,每行数据的末尾按下回车键(Enter键 )之前,可以任意修改。但按下回车键 putchar(c1) (Enter键 )之后, scanf函数即
29、接受了这一行数据,不能再回去修改。所以本题中,当输入 123 CR时,变量 c1、 c2、 c3的值分别为 1、 2、 3,当输入 45678 CR时,变量 c5、 c6的值 4和 5。所以用输出函数 putchar(c1)输出 1, putchar(c2)输出 2,printf(“%c%cn“,c5,c6)输出 45。所以选项 D)为正确答案。 29 【正确答案】 B 【试题解析】 本题主要考查结构指针: p=&st,访问结构体的成员,可以通过结构变量访问,即 st.i,也可以用等价的指针形式,即 (*p).i和 p- i。 30 【正确答案】 B 【试题解析】 本题涉及字符串最基本的两个概
30、念: 字符串的长度是指字符串中字符的个数,但不包括字符串 结束符; 以反斜杠 “”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内, “”连同后面的字符为一个长度。 31 【正确答案】 B 【试题解析】 在 C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的 ASCII码值再参与整数运算。字符 1对应的 ASCII码值是 49,字符 0对应的 ASCII码值是 48,字符 0是字符串结束标识符 NULL,其对应的 ASCII码值是 0。 32 【正确答案】 C 【试题解 析】 因为在函数 fun(int x)中
31、,如果参数 x等于 0或 1时,返回值 3。否则 p=x-fun(x-2)这是一个递归函数,所以在主函数调用 fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3)=7-(5-(3-fun(1)=7-(5-(3-3)= 7-5=2”,所以最后的输出结果为 2。 33 【正确答案】 A 【试题解析】 本题考查函数的递归调用。在函数递归调用时, fun(5):a=5-fun(3)- fun3:a=3-fun(1)- fun(1):a=3,反 推回去 fun(3):a=3-3=0- fun(5):a=5-0=5,最后的计算结果为 5。 34 【正确答案】 C 【试题解析】
32、 本题考查函数调用时的参数传递。函数 point的参数为字符指针,当执行函数 point时,刚开始指针 p指向 “a”,经过 +3操作后,指针 p指向 “f”,所以最后的输出结果是 f。 35 【正确答案】 A 【试题解析】 本题考查的是指向函数的指针。函数指针的定义方式:类型标识符 (*指针变量名 )()。其中, “类型标识符 ”为函数返回值的类型: “指针 ”指向函数的入口地址。 36 【正确答案】 A 【试题解析】 转义字符 n表示换行, 表示反斜杠,函数 strlen()是计算字符串的长度,不包括文件结束标志 (0),函数 sizeof()统计字符串所占的字节数。 37 【正确答案】
33、D 【试题解析】 本题考查带参数的宏的替换。有些参数表达式必须加括号,否则,在实参表达式替换时,会出现错误。 38 【正确答案】 D 【试题解析】 本题主要考查算术运算的优先级。顺序如下:注: *=、 %、 sizeof的优先级依次递增。 39 【正确答 案】 B 【试题解析】 本题考查对文件的操作。文件打开后才可以对文件进行操作,使用结束后要关闭文件。对文件的操作都是顺序读写,即从文件的第一个数据开始,依次进行读写。 40 【正确答案】 D 【试题解析】 改变文件位置指针函数 fseek()的功能: 改变文件的位置指针; 辅助实现文件的顺序读写; 辅助实现文件的随机读写。 40 【试题解析】
34、 数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构 的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。 40 【试题解析】 所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。 40 【试题解析】 栈的基本运算有 3种:入栈、退栈和读取栈顶元素。其中,入栈是指在栈顶插入一个新的元素:退栈是指取出栈顶元素并赋值给一个变量;读栈顶元
35、素是将栈顶元素赋值给一个指定的变量,不删除栈顶元 素。 40 【试题解析】 逻辑运算中,非 1即 0,非 0即 1, !a=0, +a为逻辑 1,所以 0和 1相或结果为 1。 40 【试题解析】 本题考查赋值运算符 a+=b等价于 a=a+b; a-=a*a等价于 a=a-a*a=4-4*4=-12; a+=a,即 a=a+a=-24。 40 【试题解析】 分析程序, a=2, b=-1, c=2时, if语句的表达式 a b不成立,不再往下判断,直接退出 if语句,执行后面的输出语句,程序结束。在这个程序中 a、 b、 c的值没做任何改变。 40 【试题解析】 dowhil e语句的功能:
36、首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环; dowhile语句的特点是先执行后判断,因此循环体至少执行 1次。本程序中 x=2不符合循环条件,所以只循环 1次。 40 【试题解析】 本题考查 while循环和 +运算符的运用。 x=0符合条件 x 15,则执行 y+, 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。 40 【试题解析】 分析程序运行过程,第 1次循环:
37、 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。 40 【试题解析】 考查 if else语句, n 4不满足条件,所以 fun5(4)=4+fun5(3),n=3也不满足条件, fun5(3)=3+ fun5(2), n=2满足条件 fun5(2)=2,故x=4+3+2=9。 40 【试题解析】 本程序定义了 3个指针变量 p1、 p2、 p,并且将 a、 b的地址分别赋给 p1、 p2,则 *p1=a=2, *p2=b=4,所以表达式 *p1*(*p2)的值是 8。在赋值语句的左边是 *(p=&c),即使指针 p指向了变量 c,因而 *(p)代表了 c的存储单元,赋值语句 “*(p=&c)=*p1*(*p2); ”是把整数 8赋给了变量 c。 40 【试题解析】 在 scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符串,则不能使用 scanf函数,所以本题中输入空格就返回了 0, s数组也就确定了,后面的输入就不再读入数组 s中。 40 【试题解析】 本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。