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

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

1、国家二级( C语言)机试模拟试卷 134及答案与解析 一、选择题 1 关于计算机算法的时间复杂度的叙述中正确的是 ( )。 ( A)算法的时间复杂度与算法程序中的撰写细节有关 ( B)算法的时间复杂度与计算机的运行速度有关 ( C)算法的时间复杂度与运行算法时特定的输入有关 ( D)算法的时间复杂度与算法程序编制者的水平有关 2 下列各排序算法中,最坏情况下的时间复杂度最低的是 ( )。 ( A)快速排序 ( B)冒泡排序 ( C)堆排序 ( D)希尔排序 3 下列叙述中正确的是 ( )。 ( A)有一个以上根节点的数据结构不一定是非线性结构 ( B)只有一个根节点的数据结构不一定是线性结构

2、( C)循环链表是非线性结构 ( D)双向链表是非线性结构 4 某二叉树共有 121个节点,其中有 78个度为 2的节点,则该二叉树中的叶子节点数为 ( )。 ( A)不存在这样的二叉树 ( B) 79 ( C) 120 ( D) 49 5 在设计计算机程序时,结构化程序的三种基本结构是 ( )。 ( A)跳转、迭代和回溯 ( B)跳转、函数和子程序 ( C)顺序、选择和循环 ( D)调用、返回和选择 6 下面 描述中错误的是 ( )。 ( A)系统总体结构图支持软件系统的详细设计 ( B)软件设计是将软件需求转换为软件表示的过程 ( C)数据结构与数据库设计是软件设计的任务之一 ( D) P

3、AD图是软件详细设计的表示工具 7 计算机软件设计过程中,不属于需求规格说明的是 ( )。 ( A)运行环境 ( B)算法详细设计 ( C)软件的性能 ( D)软件的主要功能 8 不属于数据库管理技术发展的三个阶段的是 ( )。 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库阶段 ( D)面向对象阶段 9 建立表示学生借书活动的实体联系模型,其中的两个实体分别是 ( )。 ( A)书号和学号 ( B)学生和图书 ( C)学生和学号 ( D)书名和书号 10 一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的关系是 ( )。 ( A) 1: 1关系 ( B) 1:

4、 m关系 ( C) m: 1关系 ( D) m: n关系 11 关于计算机算法的叙述中不正确的是 ( )。 ( A)只要能够成功编译和运行的算法都会得到期望的结果 ( B)算法的操作步骤应该是有限的 ( C)算法中每一条指令必须有确切的含 义 ( D)算法可以用各种描述方法来进行描述 12 若有定义语句: int x=l; 则表达式 x一 =x+2的值为 ( )。 ( A) 2 ( B) 2 ( C) 0 ( D)一 1 13 若有定义: float a=22; int i=0, k=18; 下列选项中不合法的 C语言表达式是 ( )。 ( A) a=a+=3, i+; ( B) i=(a+i

5、) =(a+k); ( C) i=a 3; ( D) i=! k; 14 关于科学计数法,下列选项中合法的 C语言实数是 ( )。 ( A) 2e0 ( B) 0 2e0 2 ( C) E2 1 ( D) 3E 15 以下 C语言表达式中,与 k=i+完全等价的表达式是 ( )。 ( A) k=i, i=i+1 ( B) i=i+1, k=i ( C) k=+i ( D) k+=i+1 16 关于 C语言用户标识符的叙述中,错误的是 ( )。 ( A)若用户标识符的命名与预定义标识符相同,命名无效 ( B)若用户标识符的命名与关键字相同将产生编译错误 ( C)若用户标识符的命名与预定义标识符相

6、同。预定义标识符失去原有含义 ( D)若用户标识符的命名与预定义标识符相同,可能引发运行错 误 17 设有定义: double x;,以下选项中不能将输入数据 0 681读入赋给变量 x的是 ( )。 ( A) scanf( 51f, &x); ( B) scanf( lf, &x); ( C) scanf( le, &x); ( D) scanf( 5 3f, &x); 18 若有定义: double x=1 5; int a=1, b=3, c=2; 则关于 C语言中的 switch语句,下列选项中正确的是 ( )。 ( A) switch(a+b) case 1: printf(* n)

7、; case 2+1: printf(* n); ( B) switch(x); case 1: printf(* n); case 2+1: printf(* n); ( C) switch(x) case1 0: printf(* n); case 2 0: printf(* n); ( D) switch(a+b) case 1: printf(* n); case c一 1: printf(* n); 19 有以下程序段: #include int a, b, C; a=1; b=5; c=3; if(a b)a=b, b=c; c=a; printf(a= d b= d e= d n

8、, a, b, c); 程序的输出结果是 ( )。 ( A) a=1 b=5 c=1 ( B) a=1 b=5 c=3 ( C) a=1 b=3 c=1 ( D) a=5 b=3 c=5 20 关于 C语言中循环语句的叙述中正确的是 ( )。 ( A) for语句的循环体至少执行一次 ( B) while语句的循环体至少执行一次 ( C) dowhil e语句的循环体至少执行一次 ( D)上述说法均正确 21 有以下程序: #include main() int m, x=0, y=0, t; do scanf( d, &m); t=m 0; switch(t) case 0: break;

9、case 1: x+=m; continue; y+=m; while(m); printf( d, d n, x, y); 程序运行时输入:一 1 12 2 0,则输出结果是 ( )。 ( A) 0, 0 ( B) 3, 0 ( C) 3,一 3 ( D) 0,一 3 22 有以下程序: #include main() int a33=1, 2, 3, 4, 5, 6, 7, 8, 9, i, j, t=0; for(i=0; i 3; i+) for(j=i; j 3; j+)t+=aij; printf( d n, t); 程序运行后的输出结果是 ( )。 ( A) 15 ( B) 6

10、( C) 16 ( D) 26 23 下列 C语言语句能正确定义二维数组的是 ( )。 ( A) float a2: 1, 4; ( B) float a2=1, 2, 3; ( C) float a2=; ( D) float a23=1 0, 2 0, 3 0, 4 0; 24 若有函数定义如下: int fun(int x, int y) return 2*x*y; 则以下涉及上述函数的说明语句错误的是 ( )。 ( A) int fun(int x, y); ( B) int fun(int, int); ( C) int fun(int a, int B); ( D) int fun

11、(int x, int y); 25 有以下程序: #include #define N 4 main() int xNN=0, i, j, k; for(i=0; i N 2; i+) for(j=i; j N一 i; j+) xij=xN一 i一 1j=i+1; for(k=i+l; k Ni一 1; k+) xki=xkNi一 1=i+1; for(j=0; j N; j+) printf( 2d, x1j); printf( n); 执行后的输出结果是 ( )。 ( A) 2 2 2 2 ( B) 2 1 1 2 ( C) 1 1 1 1 ( D) 1 2 2 1 26 有以下程序:

12、#include int fun(int n); main() int a=3, s; s=fun(a); s=s+fun(a); printf( d n, s); int fun(int n) static int a=1: n+=a+; return n; 程序运行后的输出结果是 ( )。 ( A) 17 ( B) 8 ( C) 9 ( D) 26 27 有以下程序: #include main() char cha6=1234, 123, 12; int i; for(i=0; i 3; i+)puts(chai); 执行后的输出结果是 ( )。 ( A) 1234 121 ( B) 1

13、1231 ( C) 1234 343 ( D) 12342 28 若有以下函数: int fun(char *a, char*b) int flag=0; while(*a! = 0)&(*b! = 0)&strlen(a)=strlen(b) if(*b! =*a)flag=0; break; a+; b+; flag=1; return flag; 此函数的功能是 ( )。 ( A)判断 a和 b两个字符串的长度是否相等 ( B)将字符串 a改名为字符串 b ( C)将字符串变量 a的值赋给字符串变量 b ( D)判断 a和 b两个字符串是否相等 29 设有如下定义和语句: 1char*s

14、; s=China; 2chars7; s=China; 3chars=China; 4chars; s=China; 其中定义项可以作为字符串使用的是 ( )。 ( A) 1和 2 ( B) 1和 3 ( C) 1和 4 ( D) 3和 4 30 有以下程序: #lnclude #include int f(int n) int*P; p=(int*)malloc(sizeof(int); *P=n; return *P; main() int a; a=f(5); printf( d n, a+f(10); 程序的运行结果是 ( )。 ( A) 15 ( B) 20 ( C) 0 ( D)

15、出错 31 有以下程序: #include struct ST int a, b; data2=10, 100, 20, 200; main() struct ST p=data0; printf( d n, +(p a); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 32 关于 C语言中对文件 操作叙述中正确的是 ( )。 ( A) C语言中的文件是流式文件,因此只能顺序存取数据 ( B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( C)在对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据

16、( D)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢失 33 有以下程序: #include main() FILE*fp; int i, a6=a, b, c, d, e, f, k; fp=fopen(data dat, w+b); fwrite(&a0, sizeof(int), 1, fp); for(i=1; i 6; i+) fseek(fp, 0L, 0); fwrite(&ai; sizeof(int), 1, fp); fseek(fp, 0L, 0); fread(&k, sizeof(int), 1, fp); fclose(fp); pfintf

17、( c n, k); 程序运行后的输出结果是 ( )。 ( A) abcdef ( B) ab ( C) f ( D) fedcba 34 有以下程序: #lnclude #define F(x)(x x)*x main() int k=4, j=2; printf( d, d n, F(k+j), F(j+k); 程序运行后的输出结果是 ( )。 ( A) 26, 6 ( B) 28, 6 ( C) 6, 6 ( D) 26, 26 35 下列选项中结果为 0的是 ( )。 ( A) a=a&0; ( B) a=a 0; ( C) a=a 0: ( D) a=! a; 36 程序中若有以下的

18、说明定义和语句: #include #include struct ST char num10; int s; ; main() struct ST t, *p; p=&t; 下列语句不能正确赋值的是 ( )。 ( A) (*p) s=2; p num0= 0; ( B) p s=12; p num0=0; ( C) (*p) s=12; (*p) num= ; ( D) p s=12; strcpy(*p) mum, ); 37 有以下程序: #include intg(int a) int b=2; static int c=2; b+; c; return(a+b+c); main()

19、int k, a=5; for(k=0; k 3; k+)printf( d, g(a); printf( n); 执行后的输出结果是 ( )。 ( A) 987 ( B) 888 ( C) 678 ( D) 666 38 设已定义 int i和 char cl10, c210=Chinese;则能正确赋值的语句是 ( )。 ( A) c1=c2; ( B) for(i=0; i =7; i+)cli=c2i; ( C) while(c2)c1+=c2+; ( D) for(i=0; c2i; i+)cli=c2i; 39 以下程序拟读取一个学生结构体中的人名,查找其年龄并输出: #inclu

20、de #include #include struct stuchar name10; int age; ; struct stu team6=zhangli, 18, wangtao, 20, limei, 19, zhaodong, 18, liuxiu, 19 , *P; main() inti, flag=0; p=(struct stu *)malloc(sizeof(struct stu); gets(&p name); for(i=0; i 6; i+) if(strcmp(p name, teami name)=0) pfintf( d n, teami age); flag=

21、1; if(flag=0)printf(No find! n); 程序有语法错误,出错的是 ( )。 ( A) pfintf( d n, teami age) ( B) p=(struct stu*)malloc(sizeof(structstu) ( C) if(strcmp(p name, teami name)=0) ( D) gets(&p name); 40 有以下程序: #include #include main() FILE*fp; char ch, str5; if(fp=fopen(data dat, wb+)=NULL) printf(error! n); exit(0)

22、; ch=getchar(); while(ch! =! ) fputs(ch, fp); ch=getchar(); rewind(fp); do fgets(str, 4, fp); puts(str); while(! feof(fp); felose(fp); 程序运行时输入: hello! ,则 程序的输出结果是 ( )。 ( A) hello ( B) he 1lo ( C) hell o ( D) hell 二、程序填空题 41 下列给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置 (即下标值 ),若

23、未找到则返回一 1。 ss所指字符串数组中共有 N个内容不同的字符串,且串长小于M。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANKl C中。不得增行或删行,也不得更改程序的结构 ! #include #include #define N 5 #define M 8 int fun(char(*ss)M, char*t) int i: *found* for(i=0; i 【 1】 ; i+) *found* if(strcmp(ssi, t)=0)return【 2】 ; return一 1: main() char chNM=if

24、, while, switch, int, for, tM; int n, i; printf( nnThe original string n n); for(i=0; i N; i+)puts(chi); printf( n); printf( nEnter a string for search: ); gets(t); n=fun(ch, t); *found* if(n=【 3】 printf( nDont found! n); else printf( nThe position is d n, n); 三、程序修改题 42 给定程序 MODi1 C中,函数 fun的功能是:判断输

25、入的任何一个正整数 n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出 “不能分解 ”。 例如:当输入 100时,输出: 100=9+10+11+12+13+14+15+16 100=18+19+20+21+22 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include void fun(int n) int j, b, c, m, flag=0; for(b=1, b n 2; b+) *found* n=m; c=b; while(m! =0&m =c) *found

26、* m=m一 c; c+ *found* if(m! =0) printf( d=, n); for(j=b; j c一 1; j+)printf( d+, j); printf( d n, j); flag=1; if(flag=0) printf(不能分解 n); main() int n: printf(请输入一个整数: ); scanf( dt, &n); fun(n); 四、程序设计题 43 学生记录由学号和成绩组成, N名学生的数据已放入主函数中的结构体数组中,请编写函数 fun,其功能是:把分数最高的学生数据放入 b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高

27、的学生人数。 注意:部分源程序在文件 PROG1 C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #define N 16 typedef struct char num10; int s; STREC; int fun(STREC*a, STREC*b) main() STREC sN=GA05, 85, GA03, 76, GA02, 69, GA04, 85, GA01, 91, GA07, 72, GA08, 64, GA06, 87, GA015, 85, GA013, 91, GA012, 64, GA014

28、, 91, GA011, 91, GA017, 64, GA018, 64, GA016, 72; STREC hN; int i, n; FILE*out; n=fun(s, h); printf(The d highest score: n, n); printf( s 4d n, hi num, hi s); printf(1 n); out=fopen(out dat, w); fprintf(out, d n, n); for(i=0; i n; i+) fprintf(out, 4d n, hi s); fclose(out); 国家二级( C语言)机试模拟试卷 134答案与解析

29、一、选择题 1 【正确答案】 C 【试 题解析】 计算机算法的时间复杂度是指执行算法所需要的计算工作量,它不仅应该与所使用的计算机、程序、设计语言以及程序编制者无关,而且与算法实现过程中的许多细节也无关。可以用算法在执行过程中所需基本运算的执行次数来度量算法的工作量。算法所执行的基本运算次数还与问题的规模有关,对应一个固定的规模,算法所执行的基本运算次数还可能与特定的输入有关。所以本题答案为选项 C。 2 【正确答案】 C 【试题解析】 堆排序最坏情况下的时间复杂度为 O(nlog2n),希尔排序最坏情况下的时间复杂度为 O(n2),快速排序、冒 泡排序最坏情况下的时间复杂度为 O(n2)。所

30、以本题答案为 C选项。 3 【正确答案】 B 【试题解析】 C和 D选项均是线性结构,有一个以上根节点的数据结构一定是非线性结构,所以只有选项 B正确。 4 【正确答案】 B 【试题解析】 根据二叉树的基本性质,对任何一棵二叉树,度为 O的节点 (即叶子节点 )总是比度为 2的节点多一个。题目中度为 2的节点为 78个,则叶子节点为78+1=79个。所以本题答案为 B选项。 5 【正确答案】 C 【试题解析】 结构化程序的三种基本结构是顺序、选择和循环, 这三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。 6 【正确答案】 A 【试题解析】 系统总体结构图不支持详细设计,所以选项

31、A的描述错误,其他选项均正确。 7 【正确答案】 B 【试题解析】 软件需求规格说明应重点描述软件的目标,软件的功能需求、性能需求和运行环境等。功能需求是软件需求规格说明。给出软件要执行什么功能的详尽描述。性能需求是指定量地描述软件系统应满足的具体性能需求,即各种软件功能的速度、响应时间、恢复时间。外部接口指软件如何与人、系统的硬件及其他硬件和其他软件 进行交互。属性是指与软件有关的质量属性,如正确性、可用性、可靠性、安全性、可维护性等。约束条件包括影响软件实现的各种设计约束,如使用的标准、编程语言、数据库完整性方针、资源限制、运行环境等方面的要求。 8 【正确答案】 D 【试题解析】 数据库

32、管理技术的三个阶段是人工管理阶段、文件系统阶段和数据库系统阶段。人工管理阶段没有专门的软件对数据进行管理。 9 【正确答案】 B 【试题解析】 实体是概念世界中的基本单位,是客观存在并可以相互区别的事物。要建立表示学生借书活动的实体联系模型。能互 相区别并可以联系起来的实体是学生和图书。 10 【正确答案】 D 【试题解析】 一个教师可讲授多门课程,一门课程可由多个教师讲授,所以实体教师和课程间的关系是 m: n的关系。 11 【正确答案】 A 【试题解析】 计算机算法应该具有有穷性、确定性和有效性。有穷性是指一个算法应该包含有限的操作步骤而不能是无限的,所以选项 B正确;确定性是指算法中每一

33、个步骤应当是确定的,而不能是含糊的、模棱两可的,所以选项 C正确;算法可以使用自然语言、流程图、伪代码等多种描述方法来进行描述,所以选项D正确;算法 的有效性是指算法中每一个步骤应当能有效地执行,并得到确定的结果,但算法设计有 Bug也可能得不到预期结果,所以 A选项错误。 12 【正确答案】 B 【试题解析】 表达式 x =x+2等价于 x=x (x+2), x=1,所以结果为: 13=一2。 13 【正确答案】 C 【试题解析】 求模运算符 “ ”的操作数只能是整数,所以 C选项不合法。 14 【正确答案】 A 【试题解析】 C语言中,实数的指数形式一般为: aEn,其中 a为十进制数,

34、n为十进制整数,表示的值为: a10n; B、 C选项错在阶 码必须是整数, D选项错在无阶码,所以答案为 A项。 15 【正确答案】 A 【试题解析】 本题考查自加 1运算符, i+表示 i的当前值参与运算后,再自增1,所以表达式 k=i+等价于 k=i, i=i+1,所以答案选 A。 16 【正确答案】 A 【试题解析】 标识符分为关键字、预定义标识符、用户标识符,关键字不可以作为用户标识符,预定义标识符可以作为用户标识符,原来的预定义标识符将会被用户标识符覆盖,预定义标识符的原意失效,所以选项 A错误。 17 【正确答案】 D 【试题解析】 scanf()将严格按照格式规范接收输入的数据

35、, 51f。表示用小数形式输入宽度为 5的双精度浮点数,所以选项 A正确; lf表示用小数形式输入双精度浮点数,满足条件,所以选项 B正确; le表示用指数形式输入双精度浮点数,满足条件,所以选项 C正确;输入的数据宽度必须是十进制的整数,没有精度控制,所以 5 3f是错误的格式控制符,所以选项 D错误。 18 【正确答案】 A 【试题解析】 switch语句后的表达式只能是整型或字符型,所以 C选项错误;case后面必须是常量表达式,所以 D选项错误; switch()右括 号后面不能有分号,所以选项 B错误。 19 【正确答案】 A 【试题解析】 if分支语句的作用到语句的第一个分号结束,

36、所以本题中 if语句的作用范围为 a=b, b=c;由于 if条件为 false,所以这两条语句不执行,程序仅执行后面的 c=a语句,所以程序最终输出结果: 1, 5, 1。 20 【正确答案】 C 【试题解析】 for(表达式 1;表达式 2;表达式 3)语句,当表达式 2为 false时,循环体一次都不执行,所以选项 A错; while(表达式 )当表达式为 false时,循环体一次都不执行,所以选项 B错 误; do一 while语句循环体至少执行一次,所以 C选项正确。 21 【正确答案】 C 【试题解析】 在 dowhile 循环中,嵌套了一个 sWitch语句, switch语句中

37、两个 case语句分别执行 break和 continue,其中 break语句是跳出 switch语句,接着执行 dowhile 循环体剩下的部分:而 continue语句是直接进入 dowhile 的下一次循环。当输入一 1、一 2、 0时, y+=(一 1一 2+0)=一 3;当输入 1、 2时, x值累加为 3,所以输出 x, y值分别为 3、一 3。 22 【 正确答案】 D 【试题解析】 分析程序段,功能是累加数组右上部分的元素,所以t=1+2+3+5+6+9=26。 23 【正确答案】 A 【试题解析】 二维数组在定义时,第一维的长度可以不指定,但必须在定义的同时需要完成初始化,

38、另外,第二维长度必须指定,所以选项 B、 C错误;二维数组a23中定义了两行,但初始化的数值中有三行,所以选项 D错误。 24 【正确答案】 A 【试题解析】 C语言中函数的说明时形参名可以省略,也可以不同于实参的任何合法标识符,所以选项 B、 C、 D正确;选项 A中的第 2个形参没有类型,所以错误。 25 【正确答案】 D 【试题解析】 本题程序需要输出二维数组 x中第二行的各个元素值,即 x1这个一维数组的元素值。只有在两种情况下才会对 x1中的元素赋值: 外层 for循环中 i=0时,内层第二个 for循环的 k取值为 1此时 xki=x10=i, xkNi一1=x13=1; 外层 f

39、or循环中 i=1时,内层第一个 for循环的 i取值为 1、 2,xij=x1j=2,即 x11=2, x12=2。除了这两种情 况,其他情况不会修改x1中的值,所以最终 x1各个元素的值为: 1、 2、 2、 1。 26 【正确答案】 C 【试题解析】 静态局部变量只在第一次调用函数时初始化一次,其他调用都会保留上一次调用结束时的值。第一次调用时将 fun(a)的返回值赋给 s,静态局部变量初始化为 1,所以 n=4并返回, a自增为 2:第二次调用时静态局部变量 a取上一次调用结束时的值 2,所以 n=5并返回, a自增为 3。所以 s=4+5=9。 27 【正确答案】 A 【试题解析】

40、 字符数组初始化时,没有明确指定的元素值为 0, for循环中使用字符串输出函数 puts()打印二维数组中的每个元素, puts()接受字符数组名当作参数,将该字符数组存储的字符串打印出来, puts()不打印结束标志符 0,所以打印出的结果为 A。 28 【正确答案】 D 【试题解析】 函数 fun在字符指针 a和 b未遇到字符 0且 a指向的字符串长度与 b指向的字符串长度相同时,遍历两个字符串,并逐个比较 a指向的字符与 b指向的字符是否相同,所以程序结果是: 两个字符串长度不同,返回 0; 两个字符串长度相等,但两个字符串上的个别字符不同,返回值为 0: 两个字符串长度相等,字符串上

41、的相同位置上的字符全部相同,返回值 1。因此,此函数的功能是判断两个字符串是否相等。 29 【正确答案】 B 【试题解析】 字符数组只能在初始化的时候完成赋值,否则只能对数组元素逐个赋值,所以 2是错误的;数组定义如果不指定具体元素个数,则必须在定义时赋值,所以 4错误;可以将字符串直接赋给字符指针,使得指针指向字符串首地址,所以 1正确;在字符数组初始化时,可以直接使用字符串,所以 3正确。 30 【正确答案】 A 【试题解析】 子函数的功能是定义 整型变量指针 p,并使用 malloc()函数为指针p分配了内存空间,接着将参数 n的值赋给 p指针所指的整型对象,并返回 p指针所指对象,因此

42、,函数返回值等于传入的参数 n,最终结果为 5+10=15。 31 【正确答案】 B 【试题解析】 首先定义了一个具有 2个整数元素的结构体,同时定义了一个结构体数组变量 dataa并对其赋值,引用时数组变量从 0开始,所以 p a=10,+(p a)=11。 32 【正确答案】 D 【试题解析】 C语言文件是文本文件,所以 A选项错;若使用 fopen打开文件函数 打开文件时,指定打开方式为 a。则可以向文件追加信息,而不是覆盖原文件内容,故 B选项错误;在文件被打开后,使用文件定位函数 rewind或 fseek函数,可以将文件指针移到文件的任何位置,所以在写操作完成后,可以直接将文传指针

43、定位到文件首,接着读数据,而不需要先关闭文件,再打开读取,故 C选项错误;文件一旦使用完毕,应该使用关闭文件函数把文件关闭,以避免出现文件数据丢失等错误,所以 D选项正确。 33 【正确答案】 C 【试题解析】 注意打开文件并写入时使用了 for循环,而且每次写之前都使用fseek函数从文件开头写入,因此。后面的写入会覆盖前面的内容,因此在读出时,只有一个数组元素被读出,而且是最后一个,因此答案是 C选项。 34 【正确答案】 A 【试题解析】 宏定义一定要先代入再计算,本题中 F(k+j)、 F(j+k)可以替换为:F(k+j)=(k+j k+j)*k+j=(4+2 4+2)4+2=26;

44、F(j+k)=(j+k) (j+k)*(j+k)=6。 35 【正确答案】 A 【试题解析】 本题中只有 “&”运算符两个操作位都为 1时结果才为 1,只要有一个操作位为 0则结果 为 0,所以答案是 A选项。 36 【正确答案】 C 【试题解析】 结构体变量使用,运算符引用结构体成员变量,结构体指针使用一运算符引用结构体成员变量。另外,由于成员变量 num是字符数组,所以不能直接进行赋值,若要对 num赋空字符串值,可以把 num中第一个元素赋值为 0或0 ,或者用 strcpy()函数。 37 【正确答案】 A 【试题解析】 静态局部变量只在第一次调用函数时初始化一次,其他调用都会保留上一

45、次调用结束时的值。由于 main函数 for循环中 k的取值为 0, 1, 2,所以for循环 三次调用 g()函数,第 1次调用给静态变量赋初值,以后每次调用静态局部变量都保留上一次函数调用结束后的值,第 1次调用返回 9,第 2次调用时返回8,第 3次调用返回 7。 38 【正确答案】 B 【试题解析】 首先字符数组只有在初始化的时候整体赋值,否则只能对字符数组逐个赋值,所以选项 A错误;字符数组名是常量,不能改变,故选项 C错误;字符串包含结束符 0,但选项 D中在处理到 c2i= 0时,跳出循环,未能将其赋给 cli,所以选项 D也是错误的。 39 【正确答案】 D 【试题解析】 ge

46、ts的参数应该是成员变量 name数组的首地址,而 &p一 name是首先获取数组 name的首地址,然后再对首地址取地址符,所以这是错误的,正确参数应该是: gets(p一 name)。 40 【正确答案】 A 【试题解析】 分析程序可知,程序是首先以可写方式打开文件 data dat,然后使用 getchar()逐个读入输入的字符,写到文件中,直到输入的字符是 ! 时,停止写入文件;然后使用 rewind()将文件指针定位到文件开头位置,再调用 fgets()函数,将文件中的内容读入 str字符数组中,再用 puts()输出,直到遇到文件结尾符,关闭文件。其中写入文件时是逐个写入的,而读出时调用 fgets(s

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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