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

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

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