ImageVerifierCode 换一换
格式:DOC , 页数:35 ,大小:102.50KB ,
资源ID:503514      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-503514.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc)为本站会员(terrorscript155)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc

1、国家二级( C语言)笔试模拟试卷 91 及答案与解析 1 一个数据元素第一个元素的存储地址是 100,每个元素的长度为 2,则第 5个元素的地址是 ( )。 ( A) 110 ( B) 108 ( C) 100 ( D) 120 2 一个栈的入栈序列是 1, 2, 3, , n,其输出序列为 P1, P2, P3, , Pn,若p1=n,则 pi为 ( )。 ( A) i ( B) n=i ( C) n-i+1 ( D)不确定 3 在一个容量为 15的循环队列中,若头指针 front=6,尾指针 rear=14,则该循环队列中元素个数为 ( )。 ( A) 8 ( B) 9 ( C) 14 (

2、 D) 15 4 下列工具中,属于需求分析常用工具的是 ( )。 ( A) PFD ( B) PAD ( C) N-S ( D) DFD 5 在面向对象的程序设计中,能表示类之间相似性质的机制是 ( )。 ( A)继承 ( B)封装 ( C)分类 ( D)动态连接 6 软件调试的目的是 ( )。 ( A)发现错误 ( B)改正错误 ( C)改善软件的性能 ( D)挖掘软件的潜能 7 设有二元关系 R和三元关系 S,下列运算中合法的是 ( )。 ( A) RUS ( B) RNS ( C) R-S ( D) RXS 8 关系数据库的数据及更新操作必须遵循 ( )等完整性规则。 ( A)实体完整性

3、和参照完整性 ( B)参照完整性和用户自定义完整性 ( C)实体完整性和用户自定义完整性 ( D)实体完整性、参照完整性和用户自定义完整性 9 概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是 ( )。 ( A)把软件划分成模块 ( B)确定模块之间的调用关系 ( C)确定各个模块的功能 ( D)设计每个模块的伪代码 10 规范化理论中分解 ( )主要是消除 其中多余的数据相关性。 ( A)关系运算 ( B)内模式 ( C)外模式 ( D)视图 11 以下叙述中正确的是 ( )。 ( A)构成 C程序的基本单位是函数 ( B)可以在一个函数中定义另一个函数 ( C) main()

4、函数必须放在其他函数之前 ( D)所有被调用的函数一定要在调用之前进行定义 12 以下选项中可作为 C语言合法整数的是 ( )。 ( A) 10110B ( B) 386 ( C) 0xffa ( D) x2a2 13 以下不能定义为用户标识符的是 ( )。 ( A) scanf ( B) Void ( C) 3com ( D) int 14 以下所列的 C语言常量中,错误的是 ( )。 ( A) 0xFF ( B) 1.2e0.5 ( C) 2L ( D) 72 15 有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是 (

5、)。 ( A) a=a+b=b+ ( B) w%(int)a+b) ( C) (c+w)%(int)a ( D) w=a=b 16 有以下程序: main() int a=1,b=2,m=0,n=0,k; k=(n=b a)|(m=a b); printf(“%d,%dn“m,k,m); 程序运行后的输出结果是 ( )。 ( A) 0, 0 ( B) O, 1 ( C) 1, 0 ( D) 1, 1 17 下列关于单目运算符 +、 -的叙述中正确的是 ( )。 ( A)它们的运算对象可以是任何变量和常量 ( B)它们的运算对象可以是 char型变量和 int型变量,但不能是 float型变量

6、( C)它们的运算对象可以是 int型变量,但不能是 double型变量和 float型变量 ( D)它们的运算对象可以是 char型变量、 int型变量和 float型变量 18 若有以下程序段 (n所赋的是八进制数 ): int m=32767,n=032767; printf(“%d,%on,m,n); 执行后输出结果是 ( )。 ( A) 32767,32767 ( B) 32767,032767 ( C) 32767,77777 ( D) 32767,077777 19 以下 4个选项中,不能看作一条语句的是 ( )。 ( A) ; ( B) a=0,b=0,c=0; ( C) if

7、(a 0); ( D) if(b=0)m=1;n=2; 20 设有定义: int a,*p= scanf(“%d“, do s+=1; a=a-2; while (a!=n); printf(“%dn“,s); 若要使程序的输出值为 2,则应该从键盘给 n输入的值是 ( )。 ( A) -1 ( B) -3 ( C) -5 ( D) 0 22 有以下程序: main() char k; int i; for(i=1;i 3;i+) scanf(“%c“, switch(k) case 0: printf(“anothern“); case 1: printf(“numbern“); 程序运行时

8、,从键盘输入 01回车,程序执行后的输出结果是 ( )。 ( A) another number ( B) another number another ( C) another number number ( D) number number 23 有以下程序: main() int i=10,j=1; printf(“%d,%dn“,i-,+j); 执行后输出结果是 ( )。 ( A) 9, 2 ( B) 10, 2 ( C) 9, 1 ( D) 10, 1 24 下面程序段的执行结果是 ( )。 int x=10; for(;x;x-) if(x%3) continue; printf(

9、“%d“,x); ( A) 875421 ( B) 963 ( C) 741 ( D) 852 25 若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是( )。 ( A) for(i=1,p=1;i =5;i+) p*=i; ( B) for(i=1;i =5;i+)p=1; p*=i; ( C) i=1;p=1;while(i =5)p*=i; i+; ( D) i=1;p=1;dop*=i;i+;while(i =5) 26 有以下程序: main() char a,b,c,*d; a=;b=xbc; c=0xab;d=“017“; printf(“%c%c%cn“,

10、a,b,c,*d); 编译时出现错误,以下叙述中正确的是 ( )。 ( A)程序中只有 “a=;”语句不正确 ( B) “b=xbc;”语句不正确 ( C) “d=“0127“;”语句不正确 ( D) “a=;”和 “c=0xab;”语句都不正确 27 以下能正确定义二维数组的是 ( )。 ( A) int a3; ( B) int a3=2*3; ( C) int a3=; ( D) int a23=1,2,3,4; 28 有以下程序: int f(int a) return a%2; main() int s8=1,3,5,2,4,6,i,d=0; for (i=0; f(si); i+)

11、 d+=si; printf(“%dn“,d); 程序运行后的输出结果是 ( )。 ( A) 9 ( B) 11 ( C) 19 ( D) 21 29 若有以下定义和语句: #include stdio.h int a=4,b=3,*p,*q,*w; p= q= w=q; q=NULL; 则以下选项中错误的语句是 ( )。 ( A) *q=0; ( B) w=p; ( C) *p=a; ( D) *p=*w; 30 有以下程序: int *f(int *x, int *y) if (*x *y) return x; else return y; main() int a=7,b=8,*p,*q

12、,*r; p= q= r=f(p,q); printf (“%d,%d,%dn“,*p,*q,*r); 执行后输出结果是 ( )。 ( A) 7, 8, 8 ( B) 7, 8, 7 ( C) 8, 7, 7 ( D) 8, 7, 8 31 有以下程序: main() char *S=“one“,“two“,“three“,*p; p=s1; printf(“%c,%sn“, *(p+1), s0); 执行后输出结果是 ( )。 ( A) n, two ( B) t, one ( C) w, one ( D) o, two 32 有以下程序: main() int x8=8,7,6,5,0,0

13、,*s; s=x+3; printf(“%dn“,s2); 执行后输出结果是 ( )。 ( A)随机值 ( B) 0 ( C) 5 ( D) 6 33 以下选项中能正确把 c1定义成结构体变量的是 ( )。 ( A) typedef struct int red; int red; int green; int blue; COLOR; COLOR c1; ( B) struct color c1 int red int red; int green int blue; ; ( C) stmctcolor int red, int green; int blue; c1; ( D) struc

14、t int red; int green; int blue; c1; 34 设有以下定义和语句: int a32=1,2,3,4,5,6,), *p3; p0=a1; 则*(p0+1)所代表的数组元素是 ( )。 ( A) a01 ( B) a10 ( C) a11 ( D) a12 35 有以下程序: main() char str10=“China“,“Beijing“),*p=str; printf(“%sn“,p+10); 程序运行后的输出结果是 ( )。 ( A) China ( B) Beijng ( C) ng ( D) ing 36 有以下程序: main() char s=

15、“ABCD“, *p; for( p=s+1;p s+4;p+) printf(“%sn“,p); 程序运行后的输出结果是 ( )。 ( A) ABCD BCD CD D ( B) A B C D ( C) B C D ( D) BCD CD D 37 有以下程序: int f(int n) if(n=1) return 1; else return f(n-1)+1; main() int i,j=0; for(i=1; i 3; i+) j+=f(i); printf(“%dn“,j); 程序运行后的输出结果是 ( )。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 38 有以下

16、程序: #include stdio.h #define F(X,Y)(X)*(Y) main() int a=3,b=4; printf(“%dn“,F(a+,b+); 程序运行后的输出结果是 ( )。 ( A) 12 ( B) 15 ( C) 16 ( D) 20 39 设有以下语句: typedef struct S int g; char h; T; 则下面叙述中正确 的是( )。 ( A)可以用 S定义结构体变量 ( B)可以用 T定义结构体变量 ( C) S是 struct类型的变量 ( D) T是 stnictS类型的变量 40 有以下程序: struct STU char na

17、me10; int num; ; void f1(struct STU c) struct STU b=“LiSiGuo“,2042); c=b; void f2(struct STU *c) struct STU b=“SunDan“,2044); *c=b; main() struct STU a=“YangSan“,2041,b=“WangYin“,2043); f1(a);f2( printf(“%d %dn“,a.num,b.num); 执行后输出结果是 ( )。 ( A) 2041 2044 ( B) 2041 2043 ( C) 2042 2044 ( D) 2042 2043

18、41 设有如下程序: #includestring.h“ main() static char s120,s220; scanf(“%s“,s1);scanf(“%s“,s2); if(strcmp(s1,s2) printf(“); else printf(“$“); printf(“%dn“,strlen(strcat(s1,s2); 如果从键盘上输入 name1回车 name2回车,则程序运行后的输出结果是 ( )。 ( A) $9 ( B) 11 ( C) $10 ( D) 10 42 有以下程序: #include stdlib.h struct NODE int num; stru

19、ct NODE *next; ; main() struct NODE *p,*q,*r; p=(struct NODE*)malloc(sizeof(struct NODE); q=(struct NODE*)mallloc(sizeof(struct NODE); r=(struct NODE*)malloc(sizeof(struct NODE); p- num=10;q- num=20; r- num=30; p- next=q;q- next=r; printf(“%dn“,p- num+q- next- num); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 20

20、( C) 30 ( D) 40 43 有以下程序段: main() int a=5, *b, *c; c= b= 程序在执行了 “c=b=”语句后,表达式 *c的值是 ( )。 ( A)变量 a的地址 ( B)变量 b中的值 ( C)变量 a中的值 ( D)变量 b的地址 44 有以下程序: #include string.h main() char str20=“Hello“,“Beijing“),*p=str0; printf(“%dn“,strlen(p+20); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 5 ( C) 7 ( D) 20 45 已定义 以下函数: fun

21、(char *p2,char *p1) while (*p2=*p1)!=0)p1+;p2+; 函数的功能是 ( )。 ( A)将 p1所指字符串复制到 p2所指内存空间 ( B)将 p1所指字符串的地址赋给指针 p2 ( C)对 p1和 p2两个指针所指字符串进行比较 ( D)检查 p1和 p2两个指针所指字符串中是否有 0 46 有以下程序: main() int x=3,y=2,z=1; printf(“%dn“,x/y 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 2 ( C) 1 ( D) 0 47 有如下程序: #include stdio.h main() FILE

22、*fp1; fp1=fopen(“f1.txt“,“w“); fprintf(fp1, “abc“); fclose(fp1); 若文本文件 f1.txt中原有内容为 good,则运行以上程序后文件 f1.txt中的内容为 ( )。 ( A) goodabc ( B) abcd ( C) abc ( D) abcgood 48 以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请从与下划线处号码对应的一组选项中选择出正确的选项。 #include stdlib.h struct node char data; struct node *next;

23、 (48) CreatList(char *s) struct node *h,*p,*q; h=(struct node *)malloc(sizeof(Struct node); p=q=h; while(*s!=0) p=(struct node *)malloc(sizeof(struct node); p- data=(49); q- next=p; q=(50); s+; p- next=0; return h; main() char str=“link list“; struct node *head; head=CreatList(str); ( A) char* ( B)

24、stmct node ( C) strumnode* ( D) char ( A) *s ( B) S ( C) *s+ ( D) (*s)+ ( A) p- next ( B) p ( C) s ( D) s- next 51 设一棵二叉树的中序遍历结果为 ABCDEFG,前序遍历结果为 DBACFEG,则后序遍历结果为【 】。 52 在面向对象的程序设计中,类描述的是具有相似性质的一组【 】。 53 Jackson方法是一种面向【 】的结构化方法。 54 一个项目具有 一个项目主管,一个项目主管可管理多个项目,则实体集 “项目主管 ”与实体集 “项目 ”的联系属于【 】的联系。 55 数据

25、独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,所以,基于逻辑结构的应用程序不必修改,称为【 】。 56 以下程序运行后的输出结果是【 】。 main() int X=10,y=20,t=0; if(X=y)t=x;x=y;y=t; printf(“%d,%d n“,x,y); 57 以下程序运行后的输出结 果是【 】。 main() int x=15; while(x 10 if(x/3)x+;break; else continue; printf(“%dn“,x); 58 若有如下程序: main() int x=4;y=3,Z=2,t; t=x y z;

26、printf(“%dn“,t); 则程序运行后的输出结果是【 】。 59 下列 程序段的输出结果是【 】。 main() char b=“Hello, you“; b5=0; printf(“%sn“,b); 60 以下程序运行后的输出结果是【 】。 main() char a=“123456789“,*p; int i=0; p=a; while(*p) if(i%2=0) *p=*; p+;i+; ; puts(a); 61 下面 程序的运行结果是【 】。 #define N 10 #define s(x) x*x #define f(x) (x*x) main() int i1,i2;

27、i1=1000/s(N); i2=1000/f(N); printf(“%d %dn“,i1,i2); 62 下面程序的运行结果是【 】。 void swap(int *a,int *b) int *t; t=a;a=b;b=t; main() int x=3,y=5,*p= swap(p,q); printf(“%d%dn“,*p,*q); 63 以下程序运行后输入 3, abcde回车,则输出结果是【 】。 #include string.h move (char *str,int n) char temp;int i; temp=strn-1; for(i=n-1;i 0;i-) str

28、i=stri-1; str0=temp; main() char s50; int n,i,z; scanf(“%d,%s“, z=strlen(S); for(i=1;i =n;i+) move(s,z); printf(“%sn“,s); 64 设有以下结构体类型: struct st char name8; int num; float s4; student50; 并且结构体数组 student中的元素都已有值,若要将这些元素写到硬盘文件 fp中,请将以下 fwrite语句补充完整: fwrite(student,【 】 ,1,fp); 65 设有定义: int n, *k=以下语句将

29、利用指针变量 k读写变量 n中的内容,请将语句补充完整。 scanf(“%d“,【 】 ); printf(“%dn“,【 】 ); 66 fun函数的功能是:首先对 a所指的 N行 N列的矩阵,找出各行中的最大数,再求这 N个最大值中最小的那个数并作为函数值返 回。请填空。 #include stdio.h #define N 100 int fun(int(*a)N) int row,col,max,min; for(row=0;row N;row+) for(max=arow 0,col=1;col N;col+) if(【 】 )max=arowcol; if(row=0)min=ma

30、x; else if(【 】 )min=max; return min; 67 函数 sstrcmp的功能是对两个字符串进行比较。当 s所指字符串和 t所指字符串相等时,返回值为 0;当 s所指字符串大于 t所指字符串时,返回值大于 0;当 s所指字符串小于 t所指字符串时,返回值小于 0(功能等同于库函数 strcmp)。请填空。 #include stdio.h int sstrcmp(char *s,char *t) while(*st+; return 【 】; 国家二级( C语言)笔试模拟试卷 91 答案与解析 1 【正确答案】 B 【试题解析】 数据元素的存储位置均取决于第一个数据

31、元素的存储位置,即: LOC(aj)=LOC(a)1+(i-1)C 基地址 一个数据元素所占的字节数 所以第 5个元素的地址 =100 2(5 1) 108。 2 【正确答案】 C 【试题解析】 栈是先进后出的线性表。当 p1=n,即 n 是最先出栈的,根据栈的运算 原理, n必定是最后入栈的,那么输入顺序必定是 1, 2, 3, , n,则出栈的序列是 n, n-1, n-2, , 1,所以答案是 C。 3 【正确答案】 A 【试题解析】 设循环队列的容量为 m,如果 rear front,则循环队列中的元素个数为 rear-front;如果 rear front,则循环队列中的元素个数为

32、m+(rear-front)。根据题意,本题中, front=6, rear=14,即 rear front,因此,循环队列中的元素个数为 rear-front=14 -6=8。本题的正确答案为 8。 4 【正确答案】 D 【试题解析】 在需求分析阶段,根据可行性研究阶段提交的文档,特别是从数据流图 (DFD)出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。这个阶段中常用的工具是数据流图 (DFD)。 5 【正确答案】 A 【试题解析】 在面向对象的程序设计中,继承是表示类之间相似性的机制。 6 【正确答案】 B 【试题解析】 软件调试的目的是发现错误的位置,并改正错

33、误。 7 【正确答案】 D 【试题解析】 本题中,关系 R与 S 的表格框架不同, R是二元关系, S是三元关系。而在并 、交 、差 -运算中,都要求参加运算的两个关系具有相同的属性名表,其运算结果也与它们具有相同的属性名,即表框架相同。两个不同框架的关系可以做笛卡尔积 运算。 8 【正确答案】 D 【试题解析】 关系模型中包括关系数据结构、关系操作集合和关系完整性。关系完整性即数据完整性,包括实体完整性、参照完整性、用户自定义完整性。 9 【正确答案】 D 【试题解析】 概要设计是数据库的总体设计,其目的就是按照需求规格说明书把软件依据功能划分为多个模块,然后确定每个模块要 实现的功能,最后

34、确定模块之间的调用关系。而设计每个模块的伪代码则属于详细设计。所以只有最后一个不属于概要设计范畴。 10 【正确答案】 A 【试题解析】 数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。 11 【正确答案】 A 【试题解析】 一个 C语言程序是由许多函数组成的,因此 C程序的基本单位是函数,选项 A的叙述是正确的。根据函数的定义语法规定,在 C语言程序中,不能嵌套定义,即不能在函数中再定义函数,故排除选项 B。 main()函 数在 C语言程序中是必须的,但 main()函数可以放在程序中的任意位置,故排除选项 C。对于用户定义的函数应

35、遵循 “先定义,后使用 ”的规则。凡是未在调用前定义的函数, C编译程序都默认它的返回值类型为 int类型。对于返回值为其他类型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进行说明,因此被调用的函数不一定要在调用之前进行定义,选项 D不正确。 12 【正确答案】 C 【试题解析】 在 C语言中,整数常量可以用十进制、八进制和十六进制来表示,选项 A为二进制表示,故选项 A不正确;选项 B是八进制表示 法,但在八进制数中,各个位数只能为数字 0到 7中的一个,而在选项 B 中,有一个数字 8,故选项 B不正确;选项 C为十六进制表示法正确;选项 D中也为十六进制表示法,但十六进制数以

36、 0x开头,故选项 D不正确,所以, 4个选项中选项 C符合题意。 13 【正确答案】 D 【试题解析】 在 C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。选项 D中 int为 C语言中的保留字,不能作为用户的标识符:选项 A、 B、 C都为合法的标识符。所以, 4个选项中选项 D符合题意。 14 【正确答案】 B 【试题解析】 在 C语言中常量可以用十进制数、八进制数、十六进制数来表示:也可以用转义字符、长整型、科学计数法等来表示。选项 A为十六进制表示法正确,故选项 A正确。选项 B 为科学计数法,但在选项 B 中的科学计数的表示形式是错误的,指数不能为

37、小数,故选项 B 的表示法是错误的。选项 C为长整型表示法正确,故 C正确。选项 D为转义字符表示正确,故选项 D的表示法是正确的。所以, 4个选项中选项 B符合题意。 15 【正确答案】 C 【试题解析】 选项 A不是合法的赋值语句,将最右边的第一个赋值表达式加括号即为 a=a+(b=b+)才正确,故选项 A不正确。选项 B 中运算符 %的对象必须是整型,而在选项 B中 (int)a+b 为 double型,故选项 B 不正确。 a, b 都为 double型,应当避免使用 a=b 这样的关系表达式,因为通常存放在内存中的实型数据是有误差的,因此不可能精确相等,这将导致关系表达式 a=b总为

38、 0。所以, 4个选项中选项 C符合题意。 16 【正确答案】 C 【试题解析】 在 |运算中当其左边的表达式为真,右边的表达式将不再执行。主函数中, |左边的表达式 k=(n=b a), 2 1为真,所以 n被赋值为 1,接 着 k被赋值 1,即 |运算符左边表达式为真,此时不再计算 |右边的表达式,因此 m的值没有被改变仍为 0,最后的输出结果 1, 0。所以, 4个选项中选项 C符合题意。 17 【正确答案】 D 【试题解析】 +和 -这两种运算符是单目运算符,其运算对象可以是整型、字符型、 float型和 double 型等基本数据类型。所以, D选项为所选。 18 【正确答案】 A

39、【试题解析】 程序在定义时,以十进制形式为 m赋初值,以八进制的形式为 n赋初值。输出的时候 m以十进制形式输出, n 以八进制形式输出,因此输出的结果为 32767和 32767。所以, A选项为所选。 19 【正确答案】 D 【试题解析】 C语言的语句都用 “;”结束。如果只有一个分号,称为 “空语句 ”。用一对花括号把若干语句括起来构成一个语句组,称为 “复合语句 ”,在语法上视为一条语句。因此选项 A是一条语句。选项 B 是逗号表达式加分号构成的语句。选项 C是一条 if 语句,该语句的 if子句是一条空语句。选项 D中 “if(b=0)m=1;n=2;”是两个表达式语句。所以, 4个

40、选项中选项 D符合题意。 20 【正确答案】 A 【试题解析】 本题中定义了整 型变量 a和一个指向整型数据的指针变量 pa,并定义 pa是一个存放 a的地址的变量。选项 B中使用 a是变量名而不是内存地址,故选项 B 不正确。 ”是正确的,它是将一个用十六进制表示的转义字符赋给一个字符型变量;语句 “c=0xab;”是错误的,反斜线后的十六进制只可由小写 x开头,不能用0x。语句 “d=“0127“;”是正确的,可以给字符型指针变量赋一个字符串常量,其作用是让该指针变量指向该字符串常量。所以, D选项为所选。 27 【正确答案】 B 【试题解析】 选项 A中省略了第 1维的长度,但没有指定初

41、始 化列表,系统无法确定第 1维的长度,故编译不会通过; C语言中,初始化列表不能为空,所以选项 C错误;选项 D中定义了一个 2行 3列的数组,而在初始化列表中包含了 3个大括号,即初始化 3行值,编译不会通过,故选项 D错误。所以, 4个选项中选项 B 符合题意。 28 【正确答案】 A 【试题解析】 函数 f()的作用是形参 a为偶数的时候返回 0,否则返回 1,主函数中首先定义了一个长度为 8的一维数组,然后给它部分赋初值 1,3,5,2,4,6)。其他没有赋值的数组元素将自动赋值为 0。 for循环中,当 si不为偶数时,将 si相加,所以 d的值为 d= 1+3+5=9,因此最后输

42、出的 d值为 9。故 4个选项中选项 A符合题意。 29 【正确答案】 A 【试题解析】 本题中定义了 3个指向整型的指针变量 p、 q、 w,并让 p 指向 a,让 q 指向 b,通过将 q的值赋给 w,使 w 也指向 b,最后将 q指向 NULL。因为 q指向 NULL,所以选项 A中对 q所指地址进行写入是非法的。故 A选项为所选。 30 【正确答案】 B 【试题解析】 本题定义了一个返回值为指针的函数 f(),此函数有两个指针型的形参 x和 y,该函数的功能,是返回 x和 y指向的变量 中值较小的那个指针变量。主函数中定义了两个指针变量 p 和 q,并让它们指向变量 a和 b,调用函数

43、 f(),返回指向的变量值较小的指针变量, r的值为指针变量 p 的值 (变量 a的地址 ),因此最后输出的 *p、 *q和 *r 的值是 7, 8和 7。所以, B选项为所选。 31 【正确答案】 C 【试题解析】 本题首先定义了一个有 3个元素的指针数组 s,并通过初始化列表使 s0指向字符串 “one”, s1指向字符串 “two”, s2指向字符串 “three”,然后通过赋值语句 p=s1,使 p 指向了字符串 “two”,故 *(p+1)就是字符 w。所以, C选项为所选。 32 【正确答案】 B 【试题解析】 本题通过赋值语句 s=x+3,使指针变量 s指向数组元素 x3,输出语

44、句中的 s2等价于 *(s+2),即 x5的值 0。所以, B选项为所选。 33 【正确答案】 D 【试题解析】 因为结构体中不能出现同名的成员变量,所以选项 A和 B 都是错误的;又因为结构体中成员的定义应该由分号隔开,所以选项 C也是错误的。选项 D定义了一个无名结构体,并同时定义该结构体变量 c1,是正确的写法。故应该选择 D。 34 【正确答案】 C 【试题解析】 本题中首先定义了一个 3行 2列的数组 a,一个长度为 3的指针数组 p,接着把地址 a1赋给 p0,此时 p0为 a10的地址, p0+1 为 a11的地址,故 *(p0+1代表的元素为 a11。所以, 4个选项中选项 C

45、符合题意。 35 【正确答案】 B 【试题解析】 本题中首先定义了一个字符串数组并初始化,初始化后使得str0=“China“, str1=“Beijng“,然后定义一个指针变量 p 并让其指向 str,而在该二维数组中定义每个字符串的长 度为 10,所以 p+10将指向 str1,因此最后输出 *(p+10)的值为 Beijng。所以, 4个选项中选项 B符合题意。 36 【正确答案】 D 【试题解析】 本题中首先定义一个字符数组 s,并将字符串 “ABCD“存到数组 s中,定义了一个字符指针变量 p,在接下来 for循环中,循环体共执行了三次,第一次 p指向 s1,所以此时输出的 p所指字

46、符串的值为 BCD,第二次循环 p 指向s2,此时输出 p所指的字符串的值为 CD,第三次循环 p指向 s3,此时输出的p 所指的字符串的值为 D。所以, 4个选项中选项 D符合 题意。 37 【正确答案】 B 【试题解析】 主函数中 for循环执行两次, i=1和 i=2。调用函数 f(1),返回值为1, j=1;调用函数 f(2),计算表达式 f(n-1)+1的值时递归调用 f(1),返回值为 2,j=3。所以 B为所选。 38 【正确答案】 A 【试题解析】 在程序中先将表达式中的宏替换掉,则输出语句中的表达式为(a+)*(b+),而 a+的值为 3, b+的值为 4。因此最后的值为 3*4=12。所以, 4个选项中选项 A符合题意。 39 【正确答案】 B 【试题解析】 本题使用 typedef 关键字将整个结构体的定义部分 stmct Sint g;char h; 声明为别名 T。此时 T 是一个结构体类型,可以直接使用 T声明该结构体变量,而 S只是一个结构体名,必须结合 struct关键字才能声明变量。故本题的正确答案为 B。 40 【正确答案】 A 【试题解析】 本题中首先定义了一个结构体类型 STU

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1