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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C语言)机试模拟试卷 52 及答案与解析 一、选择题 1 面向对象方法中,实现对象的数据和操作结合于统一体中的是 ( A)结合 ( B)封装 ( C)隐藏 ( D)抽象 2 在进行逻辑设计时,将 E-R图中实体之间联系转换为关系数据库的 ( A)关系 ( B)元组 ( C)属性 ( D)属性的值域 3 线性表的链式存储结构与顺序存储结构相比,链式存储结构的优点有 ( A)节省存储空间 ( B)插入与删除运算效率高 ( C)便于查找 ( D)排序时减少元素的比较次数 4 深度为的完全二叉树中共有 125个结点,则该完全二叉树中的叶子结点数为 ( A) 62 ( B) 63 ( C)

2、64 ( D) 65 5 下列叙述中正确的是 ( A)所谓有序表是指在顺序存储空间内连续存放的元素序列 ( B)有序表只能顺序存储在连续的存储空间内 ( C)有序表可以用链接存储方式存储在不连续的存储空间内 ( D)任何存储方式的有序表均能采用二分法进行查找 6 设二叉树如下: 则后序序列为 ( A) ABDEGCFH ( B) DBGEAFHC ( C) DGEBHFCA ( D) ABCDEFGH 7 计算机软件包括 ( A)算法和数据 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 8 下面描述中不属于软件需求分析阶段任务的是 ( A)撰写软件需求规格说明书 ( B

3、)软件的总体结构设计 ( C)软件的需求分析 ( D)软件的需求评审 9 当数据库中数据总体逻辑结构发生变化,而应用程序不受影响,称为数据的 ( A)逻辑独立性 ( B)物理独立性 ( C)应用独立性 ( D)空间独立性 10 有三个关系 R、 S和 T如下:则由关系 R和 S得到关系T的操作是 ( A)并 ( B)投影 ( C)交 ( D)选择 11 以下叙述正确的是 ( A) C编译程序把文件后缀为 .c的源程序文件编译成文件后缀为 .obj的二进制文件 ( B) C编译程序把文件后缀为 .c的源程序文件编译成文件后缀为 .exe的可执行文件 ( C) C编译程序把文件后缀为 .obj的二

4、进制文件编译成文件后缀为 .exe的可执行文件 ( D)链接程序把文件后缀为 .c的源程序文件链接成文件后缀为 .exe的可执行文件 12 以下叙述正 确的是 ( A)循环结构、选择结构、顺序结构都是结构化程序的基本结构 ( B)计算机可以直接执行 C语言程序,不需要做任何转换 ( C)过于复杂的算法不能使用 N S流程图描述 ( D)只有不超过 20步操作步骤的算法才是简单算法 13 有如下程序 #include stdio.h main( ) int x = 072; printf(“X=%d.n“, x+1); 程序运行后的输出结果是 ( A) X=115 ( B) X=73 ( C)

5、X=59. ( D) X=72. 14 下面叙述正确的是 ( A)任何复杂任务都可以分解成简单子任务 ( B) C语言程序的所有函数只能处于同一个源文件中 WEr ( C)包含全部三种基本结构的程序才是结构化程序 ( D) C语言程序可以定义多个不同内容的 main函数 15 以下叙述正确的是 ( A) C程序总是以 main()作为程序执行的起始行 ( B) main()函数若不带参数,其后面的一对圆括号可省略 ( C)函数体内的定义语句和可执行语句允许任意穿插出现 ( D) C语言中的语句之间必须用分号作为分隔符 16 有以下程序 #include stdio.h main( ) char

6、 c; for(; (c=getchar() != #; ) putchar(+c); 执行时如输入为: abcdefg#回车 , 则输出结果是 ( A) abcdefg ( B) bcdefgh$ ( C) bcdefgh$ ( D) bcdefgh 17 有以下程序 #include stdio.h main( ) int a=1, b=0; for(; a 5; a+) if (a%2 = 0) break; continue; b += a; printf(“%d n“, b); 程序运行后的输出结果是 ( A) 0 ( B) 1 ( C) 10 ( D) 4 18 有以下程序 #in

7、clude stdio.h main( ) int x = 0x13; if (x = 0x12) printf(“True“); printf(“Falsen“); 程序运行后的输出结果是 ( A) True ( B) TrueFalse ( C) False ( D) TrueFalseTrue 19 为了避免在嵌套的 if-else语句中产生二义性, C语言规定与 else子句配对是 ( A)与其在同一行上的 if子句 ( B)在其之后最近的不带 else的 if子句 ( C)与其缩排位置相同的 if子句 ( D)在其之前最近的不带 else的同层 if子句 20 有以下程序 #incl

8、ude stdio.h main( ) int i,a; for (i=0; i =10; i+) a=i; printf(“%d,%dn“, i, a); 程序的运行结果是 ( A) 11,10 ( B) 10,10 ( C) 10,11 ( D) 11,11 21 有以下程序 #include stdio.h void fun(int a , int n) int i=0; for (i=0; i n; i+) if (i % 2 = 0) ai += n; else ai -= n; main( ) int c5 = 5,4,3,2,1, i; fun(c, 5); for (i=0;i

9、 5; i+) printf(“%d,“, ci); printf(“n“); 程序运行后的输出结果是 ( A) 10,-1,8,-3,6, ( B) 5,4,3,2,1, ( C) 10,2,8,4,6, ( D) 5,-1,3,-3,1, 22 有以下程序 #include stdio.h #define N 4 void fun(int aN) int i; for(i=0; i N; i+) a0i = aN-1N-1-i; main( ) int xNN= 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 13,14,15,16, i; fun(x); for

10、(i=0; i N; i+) printf(“%d,“, xii); printf(“n“); 程序运行后的输出结果是 ( A) 16,6,11,16, ( B) 1,6,11,16, ( C) 4,7,10,13, ( D) 17,17,17,17, 23 有如下程序 #include stdio.h int convert(int* data) return (*data) +; main( ) int data = 56; convert( printf(“%d,“, data); data = convert( printf(“%d,n“, data); 程序运行后的输出结果是 ( A

11、) 56,57, ( B) 57,58, ( C) 57,57, ( D) 55,57, 24 设有如下程序段 int a1 = 0; int b = 9; char c3 = “A“, “B“; char d = “12“; 以下叙述正确的是 ( A) a, b的定义合法, c, d的定义不合法 ( B) a,b,c,d的定义都是合法的 ( C) a,b,c的定义是合法的, d的定义不合法 ( D)只有 a的定义是合法的 25 设有定义: int x=2,*p=float y=3.0; char z=c;,则立即进行以下运算有安全隐患的是 ( A) p+; ( B) x+; ( C) y+;

12、 ( D) z+; 26 有以下程序 #include stdio.h double fun(double a) double x; x = a - (int)a; return x; main( ) double a = 3.1415; printf(“%fn“, fun(a); 程序的运行结果是 ( A) 3.000000 ( B) 3.1415 ( C) 0.1415 ( D) 0 27 有以下程序 #include stdio.h #include string.h char *a = “you“; char *b = “Welcome you to Beijing!“; main(

13、) char *p; p = b; while (*p != *a) p+; p += strlen(a) + 1; printf(“%sn“, p); 程序运行后的输出结果是 ( A) Beijing! ( B) you to Beijing! ( C) Welcome you to Beijing! ( D) to Beijing! 28 有如下程序 #include stdio.h #include string.h main( ) printf(“%dn“, strlen(“0tnA0111“); 程序运行后的输出结果是 ( A) 8 ( B) 9 ( C) 7 ( D) 10 29

14、有如下程序 #include stdio.h int sum(int data) static int init = 1; return init += data; main( ) int i; for (i=1; i =1; i+) printf(“%d,“, sum(i); printf(“n“); 程序运行后的输出结果是 ( A) 2, ( B) 2,3, ( C) 3, ( D) 1, 30 有以下程序 #include stdio.h main( ) char s1 = “programe“, s2 = “Language“; char *p1 = s1, *p2 = s2; int

15、 k; for (k=0; k 8; k+) if (*(p1+k) = *(p2+k) printf(“%sn“,(p1+k); 程序的运行结果是 ( A) grame ame e e ( B) g a e ( C) programe ( D)无输出字符 31 以下针对全局变量的叙述错误的是 ( A)全局变量的作用域是从定义位置开始至源文件结束 ( B)全局变量是在函数外部任意位置上定义的变量 ( C)用 extern说明符可以限制全局变量的作用域 ( D)全局变量的生存期贯穿于整个程序的运行期间 32 有以下程序 #include stdio.h #include string.h typ

16、edef struct stu char name10; char gender; int score; STU; void f(STU *c) strcpy(c- name, “Qian“); c- gender = f; c- score = 350; main( ) STU a = “Zhao“, m, 290, b; b = a; f( printf(“%s,%c,%d,“, a.name, a.gender, a.score); printf(“%s,%c,%dn“, b.name, b.gender, b.score); 程序运行后的输出结果是 ( A) Zhao,m,290,Qi

17、an,f,350 ( B) Zhao,m,290,Qian,m,290 ( C) Zhao,m,290,Zhao,m,290 ( D) Zhao,m,290,Qian,m,350 33 下面关于编译预处理的命令行,正确的是 ( A) #define PAI 3.14 ( B) #Define Eps 0.00001 ( C) #DEFINE FALSE 0 ( D) #define int INT 34 有以下程序 #include stdio.h #define D(x) 2*x+3 main( ) int i = 1, j = 2; printf(“%dn“, D(i+j); 程序运行后的

18、输出结果是 ( A) 7 ( B) 6 ( C) 9 ( D) 2 35 有以下程序 #include stdio.h #include string.h struct S char name10; ; void change(struct S *data, int value) strcpy(data- name, “#“); value = 6; main( ) struct S input; int num = 3; strcpy(input.name, “OK“); change( printf(“%s,%dn“, input.name, num); 程序运行后的输出结果是 ( A)

19、OK,6 ( B) #,6 ( C) OK,3 ( D) #,3 36 有如下定义 struct st char name12; int age; char sex; std10,*p=std; 以下 语句错误的是 ( A) scanf(“%d“,p- age); ( B) scanf(“%s“,std0.name); ( C) scanf(“%d“, 37 有以下程序 #include stdio.h #include stdlib.h void fun(int *s, int x23) *s=*(x1+1); main() int a23 = 1,2,3,4,5,6, *p; p = (i

20、nt*)malloc(sizeof(int); fun( printf(“%dn“,*p); 程序的运行结果是 ( A) 6 ( B) 2 ( C) 5 ( D) 3 38 有如下定义 struct st int a; float b; x10; FILE *fp; 若文件已正确打开,且数组 x 的 10个元素均已赋值,以下将数组元素写到文件中的语句错误的是 ( A) for(i=0; i 10; i+) fwrite(x,sizeof(struct st),1,fp); ( B) fwrite(x,10*sizeof(struct st),1,fp); ( C) fwrite(x,sizeo

21、f(struct st),10,fp); ( D) for(i=0; i 10 ;i+) fwrite( 39 有以下程序 #include stdio.h int disp(char* str) while (*str) putchar(*str+); putchar(#); return *str; main() printf(“%dn“, disp(“C#123“); 程序运行后的输出结果是 ( A) C#123#0 ( B) C#1230 ( C) C#0 ( D) C#123#0 40 以下叙述中错误的是 ( )。 ( A)使用三种基本结构构成的程序只能解决简单问题 ( B)结构化程

22、序由顺序、分支、循环三种基本结构组成 ( C) C语言是一种结构化程序 设计语言 ( D)结构化程序设计提倡模块化的设计方法 二、程序填空题 41 下列给定程序中,函数 fun的功能是:将形参 n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。 例如,输入一个整数 27638496,函数返回值为 64862。 清在程序的下画线处填人正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlo h unsigned long fun(unsigned long

23、 n) unsigned long x=0; int t; while(n) t=n 10; /*found*/ if(t 2=【 1】 ) /*found*/ x=【 2】 +t; /*found*/ n=【 3】 ; return x; main() unsigned long n=一 1; while(n 99999999 |n 0) printf(”Please input(0 n 100000000): ”); scanf(” ld”, n); ) printf(” nThe result is: ld n”, fun(n); 三、程序修改题 42 下列给定程序中,函数 fun的功能

24、是:将 s所指字符串中位于奇数位置的字符或 ASCII码值为偶数的字符依次放入 t所指数组中。例如,字符串中的数据为“AABBCCDDEEFF”,则输出应当是 “ABBCDDEFF”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include conio h #include stdio h #include string h #define N 80 void fun(char*S, char t) int i, j=0; for(i=0; i (int)strlen(S); i+) /*found*/

25、if(i 2 si 2=0) tj+=Si; /*found*/ ti= 0; main() char SN, tN; printf(“ nPlease enther string S: ”); gets(S); fun(s, t); printf(“ nThe result is: s n”, t); 四、程序设计题 43 函数 fun的功能是:将 s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在 t所指的数组中。 例如,当 s所指字符串中的内容为 “ABCDEFGHUK”时,在 t所指数组中的内容应是 “BDFHJ”。 注意:部分源程序给出如下。 请勿改动函数 main和其他函数

26、中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdlib h #include conio h #include stdio h #include string h void fun(char*s, char t) void main() char s100, t100; system(“CLS”), printf(“ nPlease enter string S: ”); scanf(“ 8”, s); fun(s, t), printf(“ nThe result is: s n”, t); 国家二级( C语言)机试模拟试卷 52 答案与解

27、析 一、选择题 1 【正确答案】 B 【试题解析】 对象的基本特点是:标识 唯一性、分类性、多态性、封装性、模块独立性好。封装是指隐藏对象的属性和实现细节,将数据和操作结合于统一体,仅对外提供访问方式, B 选项正确。 2 【正确答案】 A 【试题解析】 E-R模型和关系模式的对照表如下:由表中可以看出,联系转换为关系数据库的关系, A选项正确。 3 【正确答案】 B 【试题解析】 顺序表和链表的优缺点比较如下表:由表中可以看出链式存储插入与删除运算效率高,故 B 选项正确。 4 【正确答案】 B 【试题解析】 在树结构中,定义一棵树的根结点所在的层次为,其他结点 所在的层次等于它的父结点所在

28、的层次加,树的最大层次称为树的深度。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干结点。深度为 6的满二叉树,结点个数为 26-1=63,则第 7层共有 125-63=62个叶子结点,分别挂在第 6层的左边 62 个结点上,加上第 6层的最后 1个叶子结点,该完全二叉树共有 63个叶子结点,故 B选项正确。 5 【正确答案】 C 【试题解析】 有序是特指元素按非递减排列,即从小到大排列,但允许相邻元素相等, A选项错误。有序表可以顺序存储也可以链式存储, B 选项错。能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表, D选项错误。故

29、 C选项正确。 6 【正确答案】 C 【试题解析】 二叉树遍历可以分为 3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序遍历为 ABDEGCFH,中序遍历为 DBGEAFHC,后序遍历为 DGEBHFCA,故 C选项正确。 7 【正确答案】 D 【试题解析】 计算机软件由两部分 组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。故 D选项正确。 8 【正确答案】 B 【试题解析】 需求分析阶段的工作可以分为个方面:需求获取

30、、需求分析、编写需求规格说明书和需求评审。故 B 选项正确。 9 【正确答案】 A 【试题解析】 数据独立性包括物理独立性和逻辑独立性,物理独立性指数据的物理结构的改变,不会影响数据库的逻辑结构,也不会引起应用程序的改动;逻辑独立性指数据库的总体逻辑结构的改变,不会导致相应的应用程序的改变。故 A选项正确 。 10 【正确答案】 A 【试题解析】 用于查询的 3个操作无法用传统的集合运算表示,引入的运算为投影运算、选择运算、笛卡尔积。常用的扩充运算有交、除、连接及自然连接等。投影,从关系模式中指定若干个属性组成新的关系, T 相较于 R没有缺少属性,故 B 选项错误。选择,从关系中找出满足给定

31、条件的元组的操作称为选择, T 相较于 R增加了元组,故 D选项错误。交: RS结果是既属于 R又属于 S的记录组成的集合, T中元组多于 R与 S,故 C选项错误。并: R S是将 S中的记录追加到 R后面,与题目中结果相符,故 A选项正确。 11 【正确答案】 A 【试题解析】 C编译程序把文件后缀为 .c的源程序文件编译成文件后缀为 .obj的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来 ,形成一个可以在操作系统直接运行的执行程序 .exe,故排除 B,C,D选项,答案选 A选项。 12 【正确答案】 A 【试题解析】 计算机只能识别机器语言, C语言是高级语言,计算机

32、无法直接执行,排除 B选项; N-S流程图是复杂流程算法的描述手段,因此 C选项错误;算法的复杂与简单,不能用操作步骤数来衡量, D选项错误;循环结构、选择结构、顺 序结构都是结构化程序的基本结构,答案为 A选项。 13 【正确答案】 C 【试题解析】 x定义为 072,表示 x为一个八进制数, %d代表十进制整数输出, x需要转化成十进制为 58,在输出时, x+1=59,再输出,答案为 C选项,另外输出时不能忘记 “.“。 14 【正确答案】 A 【试题解析】 C语言程序的函数可以处于不同的源文件, B 选项错误;包含一种基本结构的程序就是结构化程序, C选项错误; C语言只可以定义一个

33、main 函数, D选项错误,答案为 A选项。 15 【正确答案】 A 【试题解析 】 main()函数后面的括号告诉编译器这是一个函数,不可以省略,排除 B 选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除 C选项; C语言中的某些语句可以不用分号,例如 if 语句,故 D选项错误;答案为 A选项。 16 【正确答案】 D 【试题解析】 for语句中执行的含义是,每次把输入赋给 c值,如果不等于 #,则执行 putchar(+c),即将当前 c值在 ASCII码上 +1后再输出字符型 c值, c的值等于 #,则终止循环,所以输出应该是 bcd

34、efgh,答 案为 D选项。 17 【正确答案】 A 【试题解析】 题干中 for循环有 break 和 continue语句,且均放在 b+=a语句前面,无论 if 条件是否满足, b+=a都不会被执行,因此 b值始终为 0,答案为 A选项。 18 【正确答案】 B 【试题解析】 if( x=0x12)表示 x=0x12! =0即 x=0x12为假时,执行printf(“True“),再执行 printf(“Falsen“),因此答案为 B 选项,注意赋值操作符“=“与相等操作符 “=“的区别。 19 【正确答案】 D 【试 题解析】 注意 if与 else的配对关系。原则是 if 总是与它

35、上面最近的、未配对的 else配对,因此答案为 D选项。 20 【正确答案】 A 【试题解析】 当 i=10时, i值赋值给 a,同时 i+1,再判定是否满足 i =10, i=11时 ,不满足条件,结束循环。循环结束时,输出 i,a的值为 11,10,答案为 A选项。 21 【正确答案】 A 【试题解析】 fun()函数功能是:对数组中,下标为偶数的元素累加 5,下标为奇数的元素减去 5,所以执行完 fun()函数后,数组 c变为 10, -1,8, -3,6, A选项正确。 22 【正确答案】 A 【试题解析】 程序最后输出 x00, x11, x22, x33,其中只有 x00的值在 f

36、un函数中发生改变,在 fun 函数中,当 i=0时, x00= x33=16,因此答案为 A选项。 23 【正确答案】 C 【试题解析】 convert 函数每次都定义了一个指针 *data,再将指针变量 *data对应地址的值进行加一处理,再返回加 1前的值作为结果,因此答案为 C选项。 24 【正确答案】 A 【试题解析 】 int a1=0表示定义一个数组 a1初值为 0, int b = 9,表示定义一个数组 b,其中只有一个值 9,系统自动识别数组有 1个元素。 char c3 = “A“, “B“,数组元素为字符串,需要用二维数组来表示, C选项错误 ; char d = “12

37、“;,字符串常量不能赋值给字符变量, D选项错误 ;因此答案为 A选项。 25 【正确答案】 A 【试题解析】 由于 x是一个整形变量,将 x地址赋值给 p指针后, A选项中 p+对指针 p 进行加 1运算, p 指针的值相当于加 4(整型变 量的地址占 4个字节),此时 p指向了未知的内存地址,对未知内存地址进行操作具有安全隐患,故答案为 A选项。 26 【正确答案】 B 【试题解析】 这里考查了强制转换的概念,在 fun 函数中, x=a-(int)a表示 x取值为 a的小数部分,因此,输入 a为 3.1415,输出 x=0.141500,答案为 C选项。 27 【正确答案】 D 【试题解

38、析】 while函数判断 p指针指向地址的内容是否和 a指针指向地址的内容相等,如果不是,则移动指针 p+1,当 p 指向 *b 字符串中的 y时,和 *a首地址元素相等,退 出 while语句后, p再向右移动 a字符串长度 +1个单位地址,此时 p指向 t,输出 t及剩余的字符串,答案为 D选项。 28 【正确答案】 A 【试题解析】 strlen 是求字符串长度的函数, “0tnA0111“是一个长度为 8的字符串,其中 t、 n、 1均为转移字符常量,但是长度也是 1,因此输出结果是 8,答案为 A选项。 29 【正确答案】 A 【试题解析】 在输出函数中,调用 sum函数, sum函

39、数作用是定义一个常数init=1,对 Init进行叠加主函数传递的 data值,随后将和返 回给主函数,因此输出为 2,答案为 A选项。 30 【正确答案】 A 【试题解析】 定义两个指针变量 p1,p2,分别指向数组 s1,s2 首地址,在 for循环中,比较两个指针对应地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串,答案为 A选项。 31 【正确答案】 C 【试题解析】 在不同编译单位内用 extern 说明符来扩展全局变量的作用域,extern 可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域,答案为 C选项。 32 【正确答案】 A 【试题解析】 本题定 义

40、了一个结构变量 struct stu,并且命名为 STU, STU结构中包含三个数据。 main 函数中,首先定义两个结构体 STU类型的变量 a, b,并对 a完成初始化,然后将 a赋值给 b,使得结构体 a, b 的值都是 “Zhao“, m, 290,然后调用 f 函数, f函数的功能是将形参结构体指针 c指向的结构体赋值为“Qian“, f, 350,由于形参是指针, c指向的结构体就是 b,所以实参 b的值被修改为 “Qian“, f, 350,而 a的值不变,答案为 A选项。 33 【正确答案】 A 【试题解 析】 宏定义用法一般表达式为 #define 宏名 字符串, A选项满足

41、宏定义用法; C语言中是区分大小写的, define属于 C语言的关键字,不可以大写 ,因此B, C选项错误; D选项中, int是代表整数类型,不满足 define用法, D选项错误,因此答案为 A选项。 34 【正确答案】 A 【试题解析】 宏定义只作简单的替换,输出中 D( i+j)表达式执行运算为2*i+j+3,代入 i,j,答案为 A选项。 35 【正确答案】 D 【试题解析】 声明结构类型 S 中有一个字符数组 name,在 main 函数中,定 义了一个结构变量 input,为 input中成员 name初始化 “ok“后,调用 change()函数。 chang()执行功能是把

42、 “#“赋值给 name,由于 change()函数的形参为结构体指针,因此 change函数改变形参指针 data 指向的 name值的同时,也改变了实参input的成员 name值;而形参 value为整型变量, change函数改变 value值的同时不影响实参 num,所以输出为 #,3。答案为 D选项。 36 【正确答案】 A 【试题解析】 A选项中, p- age是结构指针访问结构成员的方式, 如果为结构体内变量进行赋值,应该对指针地址指向的单元进行赋值,因此在 p- age前面应该加入取地址符 &, A选项语句错误,答案为 A选项。 37 【正确答案】 C 【试题解析】 mall

43、oc( size)函数作用是在内存的动态存储区分配一个长度为size的连续空间,函数的返回值是新分配的存储区的首地址,将该地址赋值给 p指针,然后取 p指针的地址,调用 fun函数。 fun 函数中对指向指针的指针 s指向的内存单元赋值,其中 x1表示二维数组 x的第二行的行地址, x1+1表示二维数组x的第二行第二列的地址,所以 fun函数的功能是将二维数组 x的第二行第二列的值,即 x11赋值给 *s, *s为 p,所以 *s代表 *p, x11与 a11等价,因此答案为 C选项。 38 【正确答案】 A 【试题解析】 fwrite()函数用法是 fwrite( void *buffer,

44、int size,int n,FILE *fp) ,其中 buffer为要输出的数据的首地址, A选项中,因为 n=1,即每次写入 1个结构体数据, x是数组的首地址,因此,每次写入的数据都是数组的首个结构体元素,没有将整个数组写入文件中去,答 案为 A选项。 39 【正确答案】 A 【试题解析】 disp()函数中,存在 while循环,当指针指向地址单元存储的字符不等于空字符 0,输出此字符,否则退出循环,输出 #。在主函数中调用 disp()函数时,字符串 “C#123“先全部输出,当指针指向字符串最后空字符时,退出循环,输出 #,并且再将 0返回输出,由于 disp()函数返回类型为

45、int,所以返回 0的 ASCII 码 0,因此,答案为 A选项。 40 【正确答案】 A 【试题解析】 使用顺序,选择 (分支 ),循环三种基 本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以 A)错误。 二、程序填空题 41 【正确答案】 (1)0 (2)10*x (3)n/10 【试题解析】 填空 1:定义变量 t用米存放某数的各个位数值,此处判断 t是否为偶数,即对 2求余结果是否为 0。 填空 2:将 t作为 x的个位数,原来 x的各个位上升 1位,即 x=10*x+t。 填空 3:每循环一次,通过除法运算,去掉数值最后一位。 三、程序修改题 42 【正确答案】 (1)i

46、f(i 2 | si 2=0)或 if(i 2 ! =0 | si 2=0) (2)tj= 0;或 tj=0; 【试题解析】 (1)根据题意,将字符串 s中位于奇数位置的字符或 ASCII码值为偶数的字符,依次放入字符串 t中,所以 if条件中要使用 “或 ”运算。 (2)变量 j控制字符串 t的下标,所以是 tj。 四、程序设计题 43 【正确答案】 void fun(char*s, char t) int i, j=0, k=strlen(s); *k为字符串的长度 * for(i=1; i k; i=i+2) *将 s所指字符串中下标为奇数的字符存入 t所指字符串中 * tj+=si; tj= 0; *在字符串最后加上结束标识 * 【试题解析】 本题使用了一种 i永远是奇数的循环方法,即 “for(i=1; i k;i=i+2)”,因为开始时 i的值为 1,当 i+2 循环时,值永远是奇数。循环结束后在新串的尾部加上结束符 0。

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