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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C语言)机试模拟试卷 30 及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)结点中具有两个指针域的链表一定是二叉链表 ( B)结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构 ( C)二叉树只能采用链式存储结构 ( D)循环链表是非线性结构 2 某二叉树的前序序列为 ABCD,中序序列为 DCBA,则后序序列为 ( A) BADC ( B) DCBA ( C) CDAB ( D) ABCD 3 下面不能作为软件设计工具的是 ( A) PAD图 ( B)程序流程图 ( C) 数据流程图 (DFD图 ) ( D)总体结构图 4 逻辑模型是面向数据库系统的模型,下面

2、属于逻辑模型的是 ( A)关系模型 ( B)谓词模型 ( C)物理模型 ( D)实体 -联系模型 5 运动会中一个运动项目可以有多名运动员参加,一个运动员可以参加多个项目。则实体项目和运动员之间的联系是 ( A)多对多 ( B)一对多 ( C)多对一 ( D)一对一 6 堆排序最坏情况下的时间复杂度为 ( A) O(n15) ( B) O(nlog2n) ( C) ( D) O(log2n) 7 某二 叉树中有 15个度为 1的结点, 16个度为 2的结点,则该二叉树中总的结点数为 ( A) 32 ( B) 46 ( C) 48 ( D) 49 8 下面对软件特点描述错误的是 ( A)软件没有

3、明显的制作过程 ( B)软件是一种逻辑实体,不是物理实体,具有抽象性 ( C)软件的开发、运行对计算机系统具有依赖性 ( D)软件在使用中存在磨损、老化问题 9 某系统结构图如下: 该系统结构图中最大扇入是 ( A) 0 ( B) 1 ( C) 2 ( D) 3 10 设有表示公司和员工及雇佣的三张表,员工可在多家公司兼职, 其中公司(公司号,公司名,地址,注册资本,法人代表,员工数),员工(员工号,姓名,性别,年龄,学历),雇佣(公司号,员工号,工资,工作起始时间)。其中表的键为公司号,表的键为员工号,则表的键(码)为 ( A)公司号,员工号 ( B)员工号,工资 ( C)员工号 ( D)公

4、司号,员工号,工资 11 算法应当具有的特性不包括 ( A)可行性 ( B)有穷性 ( C)确定性 ( D)美观性 12 若想给已定义为 int型的变量 a、 b、 c、 d赋整数 1,以下选项中错误的语句是 ( A) d=c, c=b, b=a, a=1; ( B) d=c=b=a=1; ( C) d=(b=c=(a=1); ( D) d=1, c=d, b=c, a=b; 13 以下选项中,合法的 C语言常量是 ( A) 21.84 ( B) CPP ( C) “1.0 ( D) 2MB 14 下面叙述正确的是 ( A) C语言程序的语句经过编译和链接转换成二进制机器指令后才能执行 ( B

5、)任何算法需要包含三种基本结构中的两种以上 ( C)复杂算法是不能用三种基本结构来表达的 ( D)只要是简单算 法,它的操作步骤都不会超过 20步 15 若已有定义语句: int a, b, c;,且变量已正确赋初值,则以下选项中正确的赋值表达式是 ( A) a = (b = c) + 8; ( B) (a = b) = c = 9; ( C) a = (b = c) = A; ( D) a + b = c + 1; 16 以下表达式的值与 x无关、其值恒为真的是 ( A) 0 x 5 ( B) x 10 ,以下关于 C语言表达式: (+a | +b) : +c : +d 执行顺序的叙述正确的

6、是 ( A)先执行 +a,表达式 +a的值为 1;再执行 +b,表达式 +b 的值为 1,由此可确定 (+a | +b)值为 1,因此执行 +c ( B)先执行 +a,表达式 +a的值为 1,由此可确定 (+a | +b)值为 1,因此执行+c ( C)先执行 +b,表达式 +b的值为 1;再执行 +a,表达式 +a的值为 1,由此可确定 (+a | +b)值为 1,因此执行 +c ( D)先执行 +b,表达式 +b的值为 1,由此可确定 (+a | +b)值为 1,因此执行+c 19 有如下程序 #include stdio.h main( ) int i, data; scanf(“%d“

7、, for (i=0; i 10; i+) if (i data) break; printf(“%d,“, i); 程序运行时,从键盘输入: 3回车后,程序输出结果为 ( A) 3,4,5, ( B) 1,2,3, ( C) 2,3,4, ( D) 0,1,2,3, 20 有以下程序 #include stdio.h main( ) int i = 4; for ( printf(“%d“, i); i 2; i+) printf(“%d“, i); printf(“n“); 程序运行后的输出结 果是 ( A) 12 ( B) 4 ( C) 1 ( D) 0 21 有以下程序 #includ

8、e stdio.h main( ) if (0 = 0) putchar(1); if (0 = 0) putchar(2); if (a b) putchar(3); 程序运行后的输出结果是 ( A) 1 ( B) 123 ( C) 23 ( D) 3 22 有如下程序段 int k; for(k=2;k=0;) printf(“%d“,k-); 则 for循环体执行的次数是 ( A) 0次 ( B) 1次 ( C) 2次 ( D)无限次 23 有以下程序 #include stdio.h int k=5; void f(int *s) s= *s=7; main( ) int m=3; f

9、( printf(“%d,%dn“, m, k); 程序运行后的输出结果是 ( A) 3,5 ( B) 7,7 ( C) 5,7 ( D) 3,7 24 有以下程序 #include stdio.h void fun(int a , int n) int i; for (i=0; i n; i+) if (i % 3 = 0) ai -= n; else ai += n; main( ) int c5 = 6,7,8,9,10,i; fun(c, 5); for (i=0;i 5; i+) printf(“%d,“, ci); printf(“n“); 程序运行后的输出结果是 ( A) 1,1

10、2,13,4,15, ( B) 10,9,8,7,6, ( C) 1,7,13,9,15, ( D) 10,12,8,4,6, 25 有以下程序 #include stdio.h int sub(double a, double b) return (int)(a - b - 1.3); main( ) printf(“%dn“, sub(3.2, 4.1); 程序运行后的输出结果是 ( A) -2 ( B) 1.7 ( C) -3 ( D) 2 26 有以下程序 #include stdio.h main( ) int i, *ptr; int array4 = 1,1,3,4; for (

11、ptr=array, i=0; i 3; i+) printf(“%d,“, *ptr+); printf(“n“); 程序运行后的输出结果是 ( A) 1,2,4, ( B) 1,3,4, ( C) 1,1,3, ( D) 1,4,3, 27 有以下程序 #include stdio.h main( ) int x = 8,2,6,12,5,15, f1, f2; int *p = x; f1 = f2 = x0; for( ; p =x+5; p+) if( f1 *p ) f1 = *p; if( f2 *p ) f2 = *p; printf(“%d,%dn“, f1, f2); 程序

12、的运行结果是 ( A) 15,2 ( B) 15,15 ( C) 2,15 ( D) 8,8 28 有以下程序 #include stdio.h main() int x34 = 1,3,5,7,9,11,2,4,6,8,10,12 ; int (*p)4 = x, k = 1, m, n = 0; for(m=0; m 2; m+) n += *(*(p+m)+k); printf(“%dn“,n); 程序的运行结果是 ( A) 10 ( B) 20 ( C) 14 ( D) 16 29 有以下程序 #include stdio.h main( ) char b410, c; int i,j

13、; for (i=0; i 4; i+) j = 0; while (c=getchar()!= bij = 0; printf(“%s%s%s%sn“, b0, b1, b2, b3); 程序运行时从第一列开始输入 : Peach flower is pink.回车 则输出结果是 ( A) Peachflowerispink. ( B) Peachfloweris pink. ( C) Peachflower is pink. ( D) Peach flower is pink. 30 有如下程序 #include stdio.h void convert(char ch) if (ch X

14、) convert(ch+1); printf(“%c“, ch); main( ) convert(W); printf(“n“); 程序运行后的输出结果是 ( A) YZ ( B) VW ( C) XY ( D) XW 31 有以下程序 #include stdio.h #include string.h main( ) char a20=“ab“,b20=“cdef“; int k=0; strcat(a,b); while(ak!=0) bk=ak; k+; puts(b); 程序的运行结果是 ( A) abcdef ( B) cbcdef ( C) cdef ( D) ab 32 以

15、下使指针指向一个字符串的选项错误的是 ( A) char str = “string“, *ps; *ps = str; ( B) char str = “string“, *ps; *ps = str; ( C) char str = “string“, *ps; ps = str; ( D) char *ps; ps = “string“; 33 有以下程序 #include stdio.h typedef struct stu char name10; char gender; int score; STU; void f(STU a, STU *b) *b = a; printf(“%

16、s,%c,%d,“, b- name, b- gender, b- score); main( ) STU a=“Zhao“, m, 290, b=“Qian“, f, 350; f(a, printf(“%s,%c,%dn“, b.name, b.gender, b.score); 程序运行后的输出结果是 ( A) Zhao,m,290,Qian,f,350 ( B) Qian,m,290,Zhao,m,290 ( C) Qian,f,350,Qian,f,350 ( D) Zhao,m,290,Zhao,m,290 34 若有定义 typedef int *T; T a20; 则以下与上述

17、定义中 a类型完全相同的是 ( A) int *a20; ( B) int (*a)20; ( C) int a20; ( D) int *a20; 35 有如下程序 #include stdio.h struct person char name10; int age; ; main( ) struct person room2 = “Wang“, 19, “Li“, 20; printf(“%s:%dn“, (room+1)- name, room- age); 程序运行后的输出结果是 ( A) Li:19 ( B) Wang:19 ( C) Li:20 ( D) Wang:17 36 以

18、下关于编译预处理的叙述中错误的是 ( A)预处理命令行必须位于源程序的开始 ( B)源程序中凡是以 #开始的控制 行都是预处理命令行 ( C)一行上只能有一条有效的预处理命令 ( D)预处理命令是在程序正式编译之前被处理的 37 以下关于宏的叙述错误的是 ( A)宏替换不具有计算功能 ( B)宏替换不具有类型 ( C)宏名必须用大写字母构成 ( D)宏替换不占用运行时间 38 有以下程序 #include stdio.h struct S int x, y; ; main( ) struct S data3 = 4, 3, 2, 0, 8, 1; int i; for (i=0; i 3; i

19、+) printf(“%d%d;“, datai.x, datai.y 1); printf(“n“); 程序运行后的输出结果是 ( A) 41;20;80; ( B) 41;22;64; ( C) 40;21;80; ( D) 43;20;81; 39 以下叙述正确的是 ( A)文件指针是指针类型的变量 ( B)文件指针变量的值是文件的当前读取位置 ( C)文件指针变量的值是文件的当前读取位置 ( D)调用 fscanf函数能向所有类型的文件中写入任意字符 40 有以下程序 #include stdio.h typedef struct stu char name10; char gende

20、r; int score; STU; void f(STU a, STU *b) a = *b; printf(“%s,%c,%d,“, a.name, a.gender, a.score); main( ) STU a = “Zhao“, m, 290, b = “Qian“, f, 350; f(a, printf(“%s,%c,%dn“, a.name, a.gender, a.score); 程序运行后的输出结果是 ( A) Qian,f,350,Qian,f,350 ( B) Zhao,m,290,Qian,f,350 ( C) Qian,f,350,Zhao,m,290 ( D)

21、Zhao,m,290,Zhao,m,290 二、程序填空题 41 下列给定程序中已建立了一个带头结点的单向链表,链表中的各结点按数据域递增有序链接。函数 fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include stdlib h #define N 8 typedef struct list int data; struct list*next; SLIST; void fun(SLI

22、ST*h) SLIST*p, *q, P=h一 next; if(p!=NULL) q=P一 noxt; while(q!=NULL) (if(P一 dataq data) P一 next=q一 next; /*found*/ free(【 1】 ); /*found*/ q=p一 【 2】 ; else P=q; /*found*/ q=q一 【 3】 ; SLTST*creatlist(int*a) STIST*h, *P, *q; int i; h=P=(SLIST*)malloc(sizeof (SLIST); for(i=0; i N; i+) q=(SLIST*)malloc(si

23、zeof (SLIST); q一 data=ai; P一 next=q; p=q; P一 next=0; return h, void outlist(SLIST*h) SLIST*p; P=h一 next: if(P=NULL) printf(“ nfhe list is NULL! n”); else printf(“ nHead”); doprintf(“一 d”, P一 data); p=P一 next; while(P!=NULL); printf(“一 End n”); main() SLIST*head; int aN=1, 2, 2, 3, 4, 4, 4, 5; head=c

24、reatlist(a); printf (“nThe list before deleting: n”); outlist(head); fun(head); printf (“ nThe list after deleting: n”); outlist(head); 三、程序修改题 42 下列给定程序中函数 fun的功能是:用递归算法求形参 a的平方根。求甲方根的迭代公式如下: 例如, a为 2时,平方根值为 1 414214。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include math h #in

25、clude stdio h /*found*/fun(double a, double x0) double xl, Y; x1=(x0+a x0) 2 0; /*found*/ if(fabs(x1x0) 0 00001) Y=fun(a, x1); else Y=x1; return Y; void main() double x; printf(“Enter X: ”); Scanf(“ 1f”, x); printf (“The square root of 1fiS If n”, X, fun(x,1 0); 四、程序设计题 43 编写函数 void fun(char*tt, int

26、 PP),统计在 tt所指的字符串中 “a”到 “z”26个小写字母各自出现的次数,并依次放在 pp所指的数组中。 例如,当输入字符串 “abcdefgabcdeabc”后,程序的输出结果应该是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h #include string h void fun(char*tt, int PP) main() char aa1000,

27、 int bb26, k; printf(“ nPlease enter a char string: ”); scanf(“ S”, aa); fun(aa, bb); for(k=0; k 26; k+) printf(“ d”, bbk); printf(“ n”); 国家二级( C语言)机试模拟试卷 30 答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 具有两个指针域的链表可能是双向链表, A选项错误。双向链表是线性结构,二叉树为非线性结构,二者结点中均有两个指针域, B 选项正确。二叉树通常采用链式存储结构,也可采用其他结构, C选项错误。循环链表是线性结构, D选项错误

28、。 2 【正确答案】 B 【试题解析】 二叉树遍历可以分为 3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。本题中前序序列为 ABCD,中序序列为 DCBA,可知 D为根结点, ABC为左侧结点, C为 D左子结点, A为 B子结点,故后序序列为 DCBA,故 B选项正确。 3 【正确答案】 C 【试题解析】 软件设计常用的工具有:图形工具:程序流程图、 N-S 图、 PAD图、 HIPO;表格工具:判定表;语言工具: PDL(伪码)。另外,在结构化设计方法中,常用的结构设计工

29、具是结构图,故选择 C选项。 4 【正确答案】 A 【试题解析】 逻辑数据模型也称数据模型, 是面向数据库系统的模型,着重于在数据库系统一级的实现。成熟并大量使用的数据模型有层次模型、网状模型、关系模型和面向对象模型等。故 A选项正确。 5 【正确答案】 A 【试题解析】 一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多对多联系( m:n)。一个运动项目有很多运动员参加,而一个运动员可以参加多项运动项目,故实体项目和运动员之间的联系是多对多, A选项正确。 6 【正确答案】 B 【试题解析】 堆排序属于选择类的排序方法,最坏情况时间复

30、 杂度为 O(nlog O(nlog2n)n)。故 B选项正确。 7 【正确答案】 C 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为 0的结点(即叶子结点)总是比度为 2的结点多一个。由 16个度为 2的结点可知叶子结点个数为 17,则结点结点总数为 16+17+15=48, C选项正确。 8 【正确答案】 D 【试题解析】 软件具有以下特点:软件是一种逻辑实体,具有抽象性;软件没有明显的制作过程;软件在使用期间不存在磨损、老化问题; 对硬件和环境具有依赖性;软件复杂性高,成本昂贵;软件开发涉及诸多的社会因素。故 D选项

31、正确。 9 【正确答案】 C 【试题解析】 扇入指的是调用一个给定模块的模块个数。题干系统中,第 2层模块扇入均为 1,第 3层中功能模块 3.1扇入为 2,其余为 1,故最大扇入为 2, C选项正确。 10 【正确答案】 A 【试题解析】 二维表中的行称为元组,候选键(码)是二维表中能唯一标识元组的最小属性集。若一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。公司号唯一标识公司,员工号唯一标识员工,而雇 佣需要公司号与员工号同时唯一标识,故表的键(码)为(公司号,员工号),故 A选项正确。 11 【正确答案】 D 【试题解析】 一个算法应该具有以下五个重要的特征:有穷性,确定

32、性,输入,输出以及可行性,故答案选 D选项。 12 【正确答案】 A 【试题解析】 赋值是将一个常量的值赋给一个变量,在 A选项中, c初始值未定义,相当于一个未知数给变量 d 赋值,不满足赋值为 1的条件,答案选 A; B 选项中 , d=c=b=a=1因为赋值运算符号具有右结合性质,故可理解为 d=(b=c=(a=1)。 13 【正确答案】 A 【试题解析】 21.84是典型的浮点型数据,故 A选项正确;字符常量是单引号括起来的一个字符,字符串常量是双引号括起来的字符序列, B、 C选项错误; C语言常量不能直接用未加引号的字母、数字组合, D选项错误。 14 【正确答案】 A 【试题解析

33、】 算法共有三种逻辑结构,即顺序结构、条件结构和循环结构,一个算法可以含有这三种逻辑结构的任意组合, B选项错误;复杂算法可以用三种基本结构表达, C选项错误;简单算法操作步骤不超过 5步, D选项错误。答案选A。 15 【正确答案】 A 【试题解析】 赋值运算符左边必须是一个变量, B,D选项错误; C选项中,(b=c)是个表达式,值为 1, C选项相当于将 A赋值给 1,语法错误,故排除 C选项 ,答案为 A选项 . 16 【正确答案】 A 【试题解析】 逻辑与只有在 “i 2;i+)先输出 i,由于 i=4,不满足条件,直接输出换 行符,因此答案为 B 选项。 21 【正确答案】 A 【

34、试题解析】 0是转义字符,表示空字符,故 0 = 0成立,输出 1;0是字符常量和 0不等 , a和 b都是字符常量, b a,最后输出只有 1,故答案为 A选项。 22 【正确答案】 A 【试题解析】 for(k=2;k=0;)表示给 k赋值 2,如果 k 等于 0,则进入循环,但是k 不满足条件,因此循环体不执行。正确答案为 A选项。 23 【正确答案】 D 【试题解析】 函数 f()的功能是定义一个整型的指针变量 s, 指向全局变量 k,然后修改 s指向地址中的值为 7,因此 f()函数只是修改全局变量 k的值为 7,与main()函数中临时变量 m无关,因此最后输出为 3,7,答案为

35、D选项。 24 【正确答案】 A 【试题解析】 fun()函数功能是:数组中,下标对 3求余为 0的元素减去 5,下标对 3求余不为 0的元素累加 5,所以执行完 fun()函数后,数组 c变为 1, 12, 13,4, 15,答案为 A选项。 25 【正确答案】 A 【试题解析】 sub函数输出 (int)(a - b - 1.3)将结果强制转化为整型,因此可以排除 B、 D选项, sub(3.2,4.1)=-2,故答案为 A选项。 26 【正确答案】 C 【试题解析】 for语句中把 array数组首地址值赋给 ptr,然后再循环体中进行输出,再把 ptr对应的地址值加一,重复三次,输出数

36、组前三个数 1,1,3因此答案为C选项。 27 【正确答案】 A 【试题解析】 本题的用意是求数组的最大值和最小值,首先把数组 x首地址的值赋给指针 p,故 *p初始值为 8,而 p是地址值, p+1相当于数组中下一元素的地址,在 for循环,是求数组 x对应的最大值和最小值, f1为最大值, f2为最小值。因此输出为 15,2,答案为 A选项。 28 【正确答案】 C 【试题解析】 *(*(p+m)+k)系统默认为指针指向数组中第 mk个元素,因此,在for循环中, n += *(*(p+m)+k);执行的是将数组 x01和 x11累加后赋值给 n,最后进行输出,答案为 C选项。 29 【正

37、确答案】 A 【试题解析】 for循环语句中,通过执行 while语句,把输入的字符串以 为分隔符,分别保存在 b 二维数组的 4行中,再通过 %s格式控制符,将 b 二维数组中四行字符串 无空格连接输出,答案为 A选项。 30 【正确答案】 D 【试题解析】 在 main 函数中,执行 convert(W),因为 W比 X小,满足 if 语句,再执行 convert(ch+1);此时 ch=X,不满足条件,输出 X,完成后,返回上一次 convert中,输出上次 ch=W,因此答案为 D选项。 31 【正确答案】 A 【试题解析】 strcat(字符串 1, 字符串 2)函数是把字符串 2连

38、接到字符串 1的后面,最终结果存放到字符组 1中,因此本题把 a,b 字符串连接起来放在 a数组中,while语句完成功能是再将 a字符串赋给 b 字符串,因此答案为 A选项。 32 【正确答案】 A 【试题解析】 A选项中定义了指针 ps后, *ps表示指针 ps指向地址的内容,而不是地址, *ps = str 无法将 str的首地址赋给一个常量,语法错误,答案为 A选项。语句 char str , *ps = str等效于 char str,*ps; ps=str。 33 【正确答案】 D 【试题解析】 本题定义了一个结构变量 struct stu,并且命名为 STU, STU结构中包含三

39、个数据。 main 函数中 ,首先为结构变量 a, b 初始化,再调用函数 f(),在 f()函数中,使用结构体变量 a对指针 b指向的结构体进行赋值,使得指针 b指向的结构体成员依次赋值为结构体 a的成员,然后依次输出指针 b指向的结构体成员的值;由于 f 函数形参 b为指针,所以指针 b指向的值被修改为 a的同时, main 函数中的实参 b的值也被修改成 a,答案为 D选项。(注:形参指针b 与实参结构体变量 b不要混淆) 34 【正确答案】 A 【试题解析】 typedef 类型名 新类型名表示为一个已有定义的类型标识符重新定义一个类型名,题中选项 A代表的意思 是数组指针,即指向数组

40、的指针, B选项是指针数组,即数组存放的元素是整型指针,首先为整型指针类型命名为T,再通过 T 定义了一个整形指针数组 *a20,等价于 int *a20,答案为 A选项。 35 【正确答案】 A 【试题解析】 声明结构类型 person 后,在 main 函数中定义了一个结构数组room,其中有 2个元素,每个元素都是 person 类型数据。在输出中,利用( room指针地址 +1)指向 room数组中第二个元素,并将该元素的 name信息进行输出,同理,对第一个元素中的 age信息输出,因此,答案 为 A选项。 36 【正确答案】 A 【试题解析】 通常,预处理命令位于源文件的开头,也可

41、以写在函数与函数之间,答案为 A选项。 37 【正确答案】 C 【试题解析】 宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母,因此,答案为 C选项。 38 【正确答案】 A 【试题解析】 声明结构类型 S 中有两个整形变量 x,y,在 main 函数中,为 S 结构类型定义一个数组变量 data初始化 3个结构体元素,分别两两赋值给结构体中的 x, y。在 for循环中,对 3个结构体元素 y值转 换成 2进制数后向右移一位,再对此时 x,y值依次进行输出,答案为 A选项。 39 【正确答案】 A 【试题解析】 文件指针指向的是文件缓冲区,而不是文件本身位置,因此 B

42、,C选项错误; fscanf()函数作用是从指定的文件中格式化读数据,读取数据类型由格式控制符决定, D选项错误,答案为 A选项。 40 【正确答案】 C 【试题解析】 main 函数中,首先定义两个结构体 STU类型的变量 a, b,并对a, b 初始化, f函数的功能是:用形参结构体指针 b指向的结构体对形参 a赋值,此时形参结构体 a的值为指针 b 指向的值,输出 a即输出指针 b指向的结构体,返回到 main 函数后,在输出实参 a的值,答案为 C选项,注:形参 a, b不要和实参 a, b 混淆。 二、程序填空题 41 【正确答案】 (1)q (2)next (3)next 【试题解

43、析】 填空 1:使用 free函数,释放 q 所指的内存空间,其一般格式为“free(指针变量 ); ”。 填空 2和填空 3:删除链表中符合条件的结点后,指针要指向下一个结点。 三、程序修改题 42 【正确答案】 (1)double fun(double a, double x0) (2)if(fabs(x1一 x0) =0 00001) 【试题解析】 用 C语言求平方根的方法一般有两种经典的算法,分别是迭代法和递归法,本题要求仅用递归法。该程序采用了 if语句,错误在于 if 语句的判断条件,程序的含义是当迭代结果差大于误差时进行循环,故正确的答案应该是if(fabs(x1一 x0) =0

44、 00001)。 四、程序设计题 43 【正确答案】 void fun(char*tt, int PP) int i; for(i=0, i 26; i+) *初 始化 pp数组各元素为 0* PPi=0; *遍历字符串,统计字母出现的个数 * for(; *tt!= 0; tt+) *如果字符为小写字母 * if(*tt =a *tt =z) *使统计字母个数的数组 pp中的对应元 素加 1* PP*tt一 a+, 【试题解析】 要求统计在 tt所指字符串中 a z26个小写字母各自出现的次数,并依次放在 pp 所指数组中。首先使用 for循环语句初始化 pp数组中分别用来统计 26个字母的个数,再使用循环判断语句对 tt所指字符串中的字符进行逐一比较操作,同时存入相对应的 pp数组中。

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