1、二级 C 语言笔试-432 及答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:40,分数:64.00)1.支持子程序调用的数据结构是A) 栈 B) 树 C) 队列 D) 二叉树(分数:2.00)A.B.C.D.2.下列数据结构中,能用二分法进行查找的是_。A) 顺序存储的有序线性表B) 线性链表C) 二叉链表D) 有序线性链表(分数:2.00)A.B.C.D.3.为了使模块尽可能独立,要求 _。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块问的耦合程度要尽量弱D)
2、模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(分数:2.00)A.B.C.D.4.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细没计属于( )。A定义阶段 B开发阶段C维护阶段 D上述三个阶段(分数:1.00)A.B.C.D.5.下列叙述中,不属于软件需求规格说明书的作用的是( )。 A) 便于用户,开发人员进行理解和交流 B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C) 作为确认测试和验收的依据 D) 便于开发人员进行需求分析(分数:2.00)A.B.C.D.6.下列选项中,合法的 C 语言关键字是 _。A) VAR B) cher C) integer D)
3、 default(分数:2.00)A.B.C.D.7.下列不属于软件工程的 3 个要素的是( )。A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D.8.下面选项中不属于面向对象程序设计特征的是_。A) 继承性 B) 多态性C) 类比性 D) 封闭性(分数:2.00)A.B.C.D.9.“商品”与“顾客”两个实体集之间的联系一般是A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:2.00)A.B.C.D.10.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送( )。A)调用语句 B)命令 C)N 令 D)消息(分数:2.00)A.B.C.
4、D.11.下列叙述中正确的是( )。A数据库系统是一个独立的系统,不需要操作系统的支持B数据库技术的根本目标是要解决数据的共享问题C数据库管理系统就是数据库系统D以上三种说法都不对(分数:1.00)A.B.C.D.12.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为_。(A) 课号,成绩(B) 学号,成绩(C) 学号,课号(D) 学号,姓名,成绩(分数:2.00)A.B.C.D.13.设在 C 语言中,float 类型数据占 4 个字节,则 double 类型数据占( )个字节。A
5、) 1 B) 2 C) 8 D) 4(分数:1.00)A.B.C.D.14.下列选项中可作为 C 语言合法常量的是( )。 A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.00)A.B.C.D.15.设以下变量均为 int 类型,表达式的值不为 7 的是A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)(分数:1.00)A.B.C.D.16.有以下程序 #includestdio.h main() int k=5,n=0; while(k0) switch(
6、k) defhult:break; case 1:n+=k: case 2: case 3:n+=k; k-; printf(“%d/n“,n); 程序运行后的输出结果是 A) 0 B) 4 C) 6 D) 7(分数:1.00)A.B.C.D.17.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,下列不能正确判断出比中的值为大写字母的表达式是( )。A) kk=Ado(printf(“%d“,x-=4) ;while(!(-X);程序的输出结果是( )。A) 1 B) 2 0 C) 1 -4 D) 死循环(分数:2.00)A.B.C.D.21.要求通过 while
7、 循环不断读入字符,当读入字母 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);(分数:2.00)A.B.C.D.22.以下合法的字符型常量是_。A) /x13 B) /081C) 65 D) “/n/(分数:2.00)A.B.C.D.23.有以下程序main
8、( ) int k=5,n=0;doswitch(k)case 1: case 3:n+=1;k-;break;default:n=0;k-;case 2: case 4:n+=2;k-;break;printf(“%d“,n);while(k0程序运行后的输出结果是A)235 B)0235 C)02356 D)2356(分数:2.00)A.B.C.D.24.有以下程序#inc1udestdio.hint f(int x,int y)return(y-x)*x);)main()int a=3,b=4,c=5,d;d=f(f(a,B) ,f(a,C);printf(“%d/n“,D);程序运行后
9、的输出结果是_。A) 10 B) 9 C) 8 D) 7(分数:2.00)A.B.C.D.25.下面程序的运行结果是( )。#includestdio.hvoid del(char*s)int i,j;char *a;a=s;for(i=0,j=0;ai!=/0;i+)if(ai=0j+;sj=/0;main()char s=“aa89gggh“;del(s);printf(“/n%s“,s);A) aa B) 89 C) gggh D) aa89gggh(分数:2.00)A.B.C.D.26.有以下程序:main()int a=1,b=3,c=5;int*p1=a,*p2=b,*p=c;*p
10、=*p1*(*p2);printf(“%d/n“,c);执行后的输出结果是_。A) 1 B) 2 C) 3 D) 4(分数:2.00)A.B.C.D.27.有以下程序:#include stdio.hvoid fun(char *a, char *b)a=b; (*a)+;main()char c1=A,c2=a,*p1,*p2;p1= P2= fun(p1,p2);printf(“%c%c/n“,c1,c2);程序运行后的输出结果是( )。A) Ab B) aa C) Aa D) Bb(分数:1.00)A.B.C.D.28.字符串“/“ABCDEF/“/“的长度是( )。A) 15 B) 1
11、0 C) 7 D) 8(分数:2.00)A.B.C.D.29.若有定义语句:int a36;,按在内存中的存放顺序,a 数组的第 10 个元素是_A) a04 B) a13 C) a03 D) a14(分数:2.00)A.B.C.D.30.下列二维数组的说明中,不正确的是( )。A)float a4=0,1,8,5,9; B)int a34;C)#define N 5float a N3;D)int a 29.5;(分数:1.00)A.B.C.D.31.设有定义语句int x6=2,4,6,8.5,7),*p=x,i;要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是_。A) f
12、or(i=0;i6;i+) printf(“%2d“,*(p+); B) for(i=0;i6;i+) prinff(“%2d“,*(p+i);C) for(i=0;i6;i+) printf(“%2d“,*p+); D) for(i=0;i6;i+) printf(“%2d“,(*p)+);(分数:1.00)A.B.C.D.32.若有以下说明和语句:struct stint n;char *ch;;struct st a3=5,“abc“,7,“def“,9,“ghk“,*p=a;则值为 6 的表达式是_。A) p+-n B) p-n+ C) (*p).n+ D) +p-n(分数:2.00)
13、A.B.C.D.33.有以下程序#includestdio.hint fun(int x, int y)if(x!=y) return (x+y)/2);else return (x);main()( int a=4, b=5, c=6;printf(“%d/n“, fun(2*a, fun(b,c);程序运行后的输出结果是_。A) 3 B) 6 C) 8 D) 12(分数:1.00)A.B.C.D.34.有以下程序void f(int *q)int i=0;for(;imain( )int a5=1,2,3,4,5,i;f(a);for(i=0;i5;i+) printf(“%d,“,ai)
14、;程序运行后的输出结果是A)2,2,3,4,5, B)6,2,3,4,5, C)1,2,3,4,5, D)2,3,4,5,6,(分数:2.00)A.B.C.D.35.有以下程序: void fun(char *a, char*b)a=b;(*a)+;)main()char c1=A,c2=a, *p1, *p2;p1= p2= fun(p1,p2);printf(“%c%c/n“, c1,c2);程序运行后的输出结果是 _。A) Ab B) aa C) Aa D) Bb(分数:2.00)A.B.C.D.36.下列程序的输出结果是( )。#include stdio.hf(int a)int b
15、0;static int c4;ac+;b+;return(a);main()int a=2,i,c;for(i=0;i2;i+)c=f(a+);printf(“%d/n“, c);A) 4 B) 7 C) 6 D) 5(分数:1.00)A.B.C.D.37.有以下程序:#include stdio.hvoid f(int v, int w)int t;t=v; v=w; w=t;main()int x=1,y=3,z=2;if(xy) f(x,y);else if(yz) f(y,z);else f(x,z);printf(“%d,%d,%d/n“,x,y,z);执行后的输出结果( )。A)
16、 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1(分数:1.00)A.B.C.D.38.#define 能作简单的替代,用宏来替代计算多项式 5*x*x+5*+5 的值的函数 f,正确的宏定义语句为( )。A) #definef(x)5*x*x+5*+5 B) #definef5*x*x+5*x+5C) #definef(a) (5*a*a+5*a+5) D) #define5*x*x+5*+5f(x)(分数:2.00)A.B.C.D.39.对于下列定义,不正确的叙述是( )。union dataint a;char b;double c;x=y;A) 变量 x 所占内存的长
17、度等于成员 c 的长度B) 变量 x 的地址和它的各成员地址都是相同的C) 可以在定义时对 x 初始化D) 不能对变量 x 赋值,故 x=y 非法(分数:1.00)A.B.C.D.40.以下程序的输出结果是( )。#include stdio.hcharcchar(char eh)if(ch=A,switch(n+)default:printf(“error“);break;casea:printf(“good“);break;caseC:printf(“moming“);cased:printf(“class“);(分数:2.00)填空项 1:_49.已知字符A的 ASCII 码为 65,以
18、下程序运行后的输出结果是U /U。#include stdio.hmain( )char a,b;a=A+5-3; b=a+6-2;printf( “% d% c/n“, a, b);(分数:2.00)填空项 1:_50.下列程序的输出结果是_。main()int i;for(i=1;i+1;i+)if(i4)printf(“%d/n“,i);break;printf(“%d/n“,i+);(分数:2.00)填空项 1:_51.以下程序的运行结果是U /U。# includestring.hchar *ss(char *s)return s+strlen(s)/2;main()char *p,
19、*str=“abcdefgh“;p=ss(str);printf(“%s/n“,p);(分数:2.00)填空项 1:_52.下列程序的输出结果是_。main()int a=2,b=4,c=6;int*p1=*(p=printf(“%d/n“,c);(分数:2.00)填空项 1:_53.设有定义:FILE *fw;,请将以下打开文件的语句补充完整,以便可以向文本文件 read me.txt 的最后续写内容。fw=fopen(“readme.txt“, “_“)(分数:2.00)填空项 1:_54.以下程序运行后的输出结果是_。#includestdio.hmain()int a=37;a%=9;
20、printf(“%d/n“,a);(分数:2.00)填空项 1:_55.在关系数据库中,把数据表示成二维表,每一个二维表称为 1。(分数:2.00)填空项 1:_二级 C 语言笔试-432 答案解析(总分:96.00,做题时间:90 分钟)一、选择题(总题数:40,分数:64.00)1.支持子程序调用的数据结构是A) 栈 B) 树 C) 队列 D) 二叉树(分数:2.00)A. B.C.D.解析:解析 栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子程序时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行
21、,这种调用符合栈的特点。2.下列数据结构中,能用二分法进行查找的是_。A) 顺序存储的有序线性表B) 线性链表C) 二叉链表D) 有序线性链表(分数:2.00)A. B.C.D.解析:解析 二分查找只适用于顺序存储的有序表。3.为了使模块尽可能独立,要求 _。A) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B) 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C) 模块的内聚程度要尽量低,且各模块问的耦合程度要尽量弱D) 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(分数:2.00)A.B. C.D.解析:解析 为了使模块尽可能独立,模块分解时应满足信息隐蔽原则。尽量使模
22、块的内聚度高,模块间的耦合度低。模块的大小适中(通常一个模块以 50100 个语句行最为适宜)。4.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细没计属于( )。A定义阶段 B开发阶段C维护阶段 D上述三个阶段(分数:1.00)A.B. C.D.解析:解析 开发阶段在开发初期分为需求分析、总体设计、详细设计 3 个阶段,在开发后期分为编码、测试两个子阶陂。5.下列叙述中,不属于软件需求规格说明书的作用的是( )。 A) 便于用户,开发人员进行理解和交流 B) 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C) 作为确认测试和验收的依据 D) 便于开发人员进行需求分析(分数:2.
23、00)A.B.C.D. 解析:解析 软件需求规格说明书有以下几个方面的作用: 便于用户、开发人员进行理解和交流。 反映出用户问题的结构,可以作为软件开发工作的基础和依据。 作为确认测试和验收的依据。6.下列选项中,合法的 C 语言关键字是 _。A) VAR B) cher C) integer D) default(分数:2.00)A.B.C.D. 解析:解析 本题考查 C 语言基本知识。本题中 default 是 C 语言的关键字。7.下列不属于软件工程的 3 个要素的是( )。A) 工具 B) 过程 C) 方法 D) 环境(分数:2.00)A.B.C.D. 解析:解析 软件工程包括 3 个
24、要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制、管理。8.下面选项中不属于面向对象程序设计特征的是_。A) 继承性 B) 多态性C) 类比性 D) 封闭性(分数:2.00)A.B.C. D.解析:解析 面向对象程序设计的特征有以下几点:分类性、继承性、封装性、多态性、模块性等。9.“商品”与“顾客”两个实体集之间的联系一般是A) 一对一 B) 一对多 C) 多对一 D) 多对多(分数:2.00)A.B.C.D. 解析:解析 本题考核实体集之间的联系。实体集之间的联系有 3 种:一对一、一对多和多对多。因为一类商品
25、可以由多个顾客购买,而一个顾客可以购买多类商品,所以,“商品”与“顾客”两个实体集之间的联系一般是“多对多”。10.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送( )。A)调用语句 B)命令 C)N 令 D)消息(分数:2.00)A.B.C.D. 解析:解析 在面向对象方法中;对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。11.下列叙述中正确的是( )。A数据库系统是一个独立的系统,不需要操作系统的支持B数据库技术的根本目标是要解决数据的共享问题C数据库管理系统
26、就是数据库系统D以上三种说法都不对(分数:1.00)A.B. C.D.解析:解析 数据库、数据库管理系统、数据库管理员、硬件平台、软件平台这 5 部分共同构成了一个以数据库为核心的完整的运行宾体,称为数据库系统。数据库技术的根本目的是要解决数据的共享问题。数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操作、数据维护、控制及保护和数据服务等,是数据库系统的核心,它是数据库系统的一部分,二者不能等同。12.设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号),课程 C(课号,课名),选课 SC(学号,课号,成绩),则表 SC 的关键字(键或码)为_。(A) 课号,成绩
27、(B) 学号,成绩(C) 学号,课号(D) 学号,姓名,成绩(分数:2.00)A.B.C. D.解析:13.设在 C 语言中,float 类型数据占 4 个字节,则 double 类型数据占( )个字节。A) 1 B) 2 C) 8 D) 4(分数:1.00)A.B.C. D.解析:解析 在 C 语言中各种数据类型在内存中所占的字节数和机器的指令周期有关,若 int 类型占 2个字节,则 float 类型数据占 4 个字节,double 类型数据占 8 个字节。14.下列选项中可作为 C 语言合法常量的是( )。 A) -80 B) -080 C) -8e1.0 D) -80.0e(分数:1.
28、00)A. B.C.D.解析:解析 所谓常量是指在程序运行的过程中,其值不能被改变的量。在 C 语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项 B)中是以 0 开头,表示一个八进制数,而八进制数的取值范围是 07,所以“-080”错误;在 C 语言中 e 后面的指数必须是整数,因此选项 C)和 D)也不正确。15.设以下变量均为 int 类型,表达式的值不为 7 的是A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)(分数:1.00)A.B.C. D.解析:解析 本题考查逗
29、号表达式的用法。C 语言中的逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为“表达式 1,表达式2”,其求值过程是分别求两个表达式的值,并以表达式 2 的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为:表达式 1,表达式 2,表达式 3,表达式 n,其值为表达式 n 的值。16.有以下程序 #includestdio.h main() int k=5,n=0; while(k0) switch(k) defhult:break; case 1:n+=k: case 2: case 3:n+=k; k-; printf(
30、“%d/n“,n); 程序运行后的输出结果是 A) 0 B) 4 C) 6 D) 7(分数:1.00)A.B.C.D. 解析:解析因为没有 break 语句,当 k=2 的时候,会顺序执行两条语句,k=1 的时候,会顺序执行 3 条语句。17.已知字母 A 的 ASCII 代码值为 65,若变量 kk 为 char 型,下列不能正确判断出比中的值为大写字母的表达式是( )。A) kk=Ado(printf(“%d“,x-=4) ;while(!(-X);程序的输出结果是( )。A) 1 B) 2 0 C) 1 -4 D) 死循环(分数:2.00)A.B.C. D.解析:解析 本题考查 dowh
31、ile 循环。执行 printf 语句,x=x-4=1,输出 1,判断 while 循环的控制条件,-x=0,则(!(-x)非零,循环条件成立,执行下一次循环;执行 printf 语句,x=x-4=-4,输出-4,判断 while 循环的控制条件,-X=-5,则(!(-X)为零,循环条件不成立,结束循环。21.要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,以下正确的程序段是_。(A) while(ch=getchar()!=N)printf(“%c“,ch);(B) while(ch=getchar()!=N)printf(“%c“,ch);(C) wh
32、ile(ch=getchar()=N)printf(“%c“,ch);(D) while(ch=getchar()=N)printf(“%c“,ch);(分数:2.00)A. B.C.D.解析:22.以下合法的字符型常量是_。A) /x13 B) /081C) 65 D) “/n/(分数:2.00)A. B.C.D.解析:解析 字符常量只能包含一个字符,因此 C 选项错误。字符常量只能用单引号括起来,不能用双引号,因此 D 选项错误。转义字符常量是一个反斜线开头后跟一个特定的字符,用来代表某个特定的ASCII 字符,反斜线后面直接跟数字表示八进制(八进制不用 0 开头),所以 B 错误。反斜线
33、后面以小写字母 x 开头的用来表示十六进制数。23.有以下程序main( ) int k=5,n=0;doswitch(k)case 1: case 3:n+=1;k-;break;default:n=0;k-;case 2: case 4:n+=2;k-;break;printf(“%d“,n);while(k0程序运行后的输出结果是A)235 B)0235 C)02356 D)2356(分数:2.00)A. B.C.D.解析:解析 因为变量的初始值分别为“k=5,n=0”,所以程序第一次进入循环时,执行 default 语句,这时 k=4,执行“case 4:”这个分支,结果是“n=2,k
34、=3”,打印出 2;然后程序进行第二次循环,这时“n=2,k=3”,执行“case 3:”这个分支,结果是“n=3,k=2”,打印出 3;程序进行第三次循环,这时“n=3,k=2”,执行“case 2:case 4:”这两个分支,结果是“n=5,k=1”,打印出 5,这时因为 n=5 不满足 n5 的循环条件,因此退出循环,程序运行结束,故输出结果为 235。24.有以下程序#inc1udestdio.hint f(int x,int y)return(y-x)*x);)main()int a=3,b=4,c=5,d;d=f(f(a,B) ,f(a,C);printf(“%d/n“,D);程序
35、运行后的输出结果是_。A) 10 B) 9 C) 8 D) 7(分数:2.00)A.B. C.D.解析:评析 本题考查的是函数的嵌套调用和参数传递,先执行 main 函数,第次调用 f(a,b) ,将参数 a,b 的值传递给函数 f 中对应开参 x,y,然后返回表达式“(y-x)*x););”的运算结果,即:(4-3)*33,所以函数结果为 3;第二次调用 f(a,c) ,将参数 a,c 的值传递给函数 f 中对应形参 x,y,然后返回表达式“(y-x)*x);”的运算结果,即:(5-3)*3=6,所以函数返回值为 6;第三次调用函数 f,使用的参数是前两次调用的结果,即:f(3,6),将参数
36、值传递给函数 f 中对应形参 x,y,返回的结果为 9,因此,选项 B 是正确的。25.下面程序的运行结果是( )。#includestdio.hvoid del(char*s)int i,j;char *a;a=s;for(i=0,j=0;ai!=/0;i+)if(ai=0j+;sj=/0;main()char s=“aa89gggh“;del(s);printf(“/n%s“,s);A) aa B) 89 C) gggh D) aa89gggh(分数:2.00)A.B. C.D.解析:解析 本题中 del(char*s)函数实现的功能是:逐个读入 s 数组中的字符,如果遇到数字,则将其重新
37、存在 s 中,遇到非数字字符则跳过。所以最后输出的应该是字符串 s 中的所有数字。26.有以下程序:main()int a=1,b=3,c=5;int*p1=a,*p2=b,*p=c;*p=*p1*(*p2);printf(“%d/n“,c);执行后的输出结果是_。A) 1 B) 2 C) 3 D) 4(分数:2.00)A.B.C. D.解析:解析 *p1=1,*p2=3,*p=3,指针 p 指向变量 c,故正确选项为 C。27.有以下程序:#include stdio.hvoid fun(char *a, char *b)a=b; (*a)+;main()char c1=A,c2=a,*p1
38、,*p2;p1= P2= fun(p1,p2);printf(“%c%c/n“,c1,c2);程序运行后的输出结果是( )。A) Ab B) aa C) Aa D) Bb(分数:1.00)A. B.C.D.解析:解析 本题中 fun 函数的形参是两个指向字符型数据的指针,其功能是把 b 赋给 a,然后将 a 所指存储单元里的变量值加 1。在 main 函数中,p1 里存放的是 c1 的地址,p2 里存放的是 c2 的地址,经函数调用 fun(p1,P2)后,p2 的值赋给了 p1,使 p1 和 p2 都指向了 c2,而(*a)+又使a的值加 1 变成了b,所以此时 c2 的值为b,而 c1 的
39、值没变,仍为A。程序改变的是 p1 的地址和 c2 的值。28.字符串“/“ABCDEF/“/“的长度是( )。A) 15 B) 10 C) 7 D) 8(分数:2.00)A.B. C.D.解析:解析 本题涉及字符串最墓本的两个概念:字符串的长度是指字符串中字符的个数,但不包括字符串结束符;以反斜杠“/”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“/”连同后面的字符为一个长度。29.若有定义语句:int a36;,按在内存中的存放顺序,a 数组的第 10 个元素是_A) a04 B) a13 C) a03 D) a14(分数:2
40、.00)A.B. C.D.解析:解析 二维数组在内存中是按行优先的模式存放,即先第一行,再第二行直到最后一行;此外,其下标足从零开始,即第一个是 a00,从而,第 10 个元素是存放在 a13中。一般说来,axy中第 n 个元素所在行下标的计算方法为:n/x,列下标的计算方法为:n%y-1。30.下列二维数组的说明中,不正确的是( )。A)float a4=0,1,8,5,9; B)int a34;C)#define N 5float a N3;D)int a 29.5;(分数:1.00)A.B.C.D. 解析:解析 C 语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略
41、第二个方括号中的常量表达式;二维数组的一般定义格式是:类型说明符数组名常量表达式常量表达式)。31.设有定义语句int x6=2,4,6,8.5,7),*p=x,i;要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是_。A) for(i=0;i6;i+) printf(“%2d“,*(p+); B) for(i=0;i6;i+) prinff(“%2d“,*(p+i);C) for(i=0;i6;i+) printf(“%2d“,*p+); D) for(i=0;i6;i+) printf(“%2d“,(*p)+);(分数:1.00)A.B.C.D. 解析:解析 选项 A、B、C
42、 显然都能够正确输出数组 x 中的元素,但是在 D 选项中,该程序一共输出了六次数组 x 中的第一个元素自加 1 的值,因此是错误的。32.若有以下说明和语句:struct stint n;char *ch;;struct st a3=5,“abc“,7,“def“,9,“ghk“,*p=a;则值为 6 的表达式是_。A) p+-n B) p-n+ C) (*p).n+ D) +p-n(分数:2.00)A.B.C.D. 解析:评析 根据结构变量的存储特点,p+1 意味着增加地址值为结构体数组 a 的一个元素所占的字节数,即 p+使 P 由 a0指向 a1超始地址。本题+p-n 得到 p 指向的
43、结构体变量中成员 n 的值使之加1。因为 P 指向数组 a 起始地址,p-n 的值为 5,再执行自加 1 运行,结果为 6。33.有以下程序#includestdio.hint fun(int x, int y)if(x!=y) return (x+y)/2);else return (x);main()( int a=4, b=5, c=6;printf(“%d/n“, fun(2*a, fun(b,c);程序运行后的输出结果是_。A) 3 B) 6 C) 8 D) 12(分数:1.00)A.B. C.D.解析:解析 本题考查的是函数的嵌套调用。当 fun(2*a, fun(b, c)中 2
44、*a 为 8 时,fun(b, c)执行完结果为 5,所以 fun(2*a, fun(b, c)执行结果为 6。34.有以下程序void f(int *q)int i=0;for(;imain( )int a5=1,2,3,4,5,i;f(a);for(i=0;i5;i+) printf(“%d,“,ai);程序运行后的输出结果是A)2,2,3,4,5, B)6,2,3,4,5, C)1,2,3,4,5, D)2,3,4,5,6,(分数:2.00)A.B. C.D.解析:解析 调用函数 f( )时,将数组 a 的地址传递给了指针 q,此时 q 指向的就是数组 a 的第一个元素 a0。在 5 次
45、循环过程中,q 始终指向 a0,因此 a0的值增加了 5。最后的输出结果为“6,2,3,4,5”。35.有以下程序: void fun(char *a, char*b)a=b;(*a)+;)main()char c1=A,c2=a, *p1, *p2;p1= p2= fun(p1,p2);printf(“%c%c/n“, c1,c2);程序运行后的输出结果是 _。A) Ab B) aa C) Aa D) Bb(分数:2.00)A. B.C.D.解析:解析 本题中函数 fun 的形参是指针变量,因此实参与形参之间是地址传递,即形参的改变可以影响实参。main 函数中 p1 指向 c1,p2 指向
46、 c2,函数调用语句 fun(p1,p2)的功能是将 p2 所指存储单元的内容的值加 1,即将 c2 的值加 1 得 c2 =b,故 printf 函数的输出结果为 Ab。36.下列程序的输出结果是( )。#include stdio.hf(int a)int b0;static int c4;ac+;b+;return(a);main()int a=2,i,c;for(i=0;i2;i+)c=f(a+);printf(“%d/n“, c);A) 4 B) 7 C) 6 D) 5(分数:1.00)A.B.C.D. 解析:解析本题考查静态变量的使用方法和 for 循环。在函数调用时,static
47、 变量在函数调用结束后所作的所有变化均不保持,所以当 i=1 时,第 2 次进入 f 函数时 c=5,所以最终 main 函数中 c 的值为 5。37.有以下程序:#include stdio.hvoid f(int v, int w)int t;t=v; v=w; w=t;main()int x=1,y=3,z=2;if(xy) f(x,y);else if(yz) f(y,z);else f(x,z);printf(“%d,%d,%d/n“,x,y,z);执行后的输出结果( )。A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,1(分数:1.00)A.B.C. D.解析:解析 程序中 if 语句的条件只有 yz 为真,所以执行 f(y,z)。函数 f 的功能是交换两形参的值,但由于实参和形
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1