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

上传人:terrorscript155 文档编号:503514 上传时间:2018-11-29 格式:DOC 页数:35 大小:102.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc_第1页
第1页 / 共35页
[计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc_第2页
第2页 / 共35页
[计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc_第3页
第3页 / 共35页
[计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc_第4页
第4页 / 共35页
[计算机类试卷]国家二级(C语言)笔试模拟试卷91及答案与解析.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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