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

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

1、国家二级( C语言)机试模拟试卷 106及答案与解析 一、选择题 1 在关系代数运算中,有 5种基本运算,它们是 ( )。 ( A)并 ( )、差 (-)、交 ()、除 ()和笛卡儿积 () ( B)并 ( )、差 (-)、交 ()、投影 ()和选择 () ( C)并 ( )、交 ()、投影 ()、选择 ()和笛卡儿积 () ( D)并 ( )、差 (-)、投影 ()、选择 ()和笛卡儿积 () 2 在数据库系统的组织结构中,下列 ( )映射把用户数据库与概念数据库联系了起来。 ( A)外模式模式 ( B) 内模式外模式 ( C)模式内模式 ( D)内模式模式 3 下列关于线性链表的描述中,正

2、确的是 ( )。 、只含有一个指针域来存放下一个元素地址 、指针域中的指针用于指向该结点的前一个或后一个结点 (即前件或后件 ) 、结点由两部分组成:数据域和指针域。 ( A)仅 、 ( B)仅 、 ( C)仅 、 ( D)全部 4 下面关于数据库三级模式结构的叙述中,正确的是 ( )。 ( A)内模式可以有多个,外模式和模式只有一个 ( B)外模式可以有多个,内模式和模式只有一个 ( C)内 模式只有一个,模式和外模式可以有多个 ( D)模式只有一个,外模式和内模式可以有多个 5 设有关键码序列 (66, 13, 51, 76, 81, 26, 57, 69, 23),要按关键码值递增的次序

3、排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为 ( )。 ( A) 23, 13, 51, 57, 66, 26, 81, 69, 76 ( B) 13, 23, 26, 51, 57, 66, 81, 76, 69 ( C) 23, 13, 51, 57, 26, 66, 81, 69, 76 ( D) 23, 13, 51, 57, 81, 26, 66, 69, 76 6 下列哪一条不属于数据库设计的任务 ?( ) ( A)设计数据库应用结构 ( B)设计数据库概论结构 ( C)设计数据库逻辑结构 ( D)设计数据库物理结构 7 数据库技术的根本目标是 (

4、)。 ( A)数据存储 ( B)数据共享 ( C)数据查询 ( D)数据管理 8 需求分析阶段的任务是 ( )。 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 9 关系数据库管理系统能实现的专门关系运算包括 ( )。 ( A)排序 、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 10 数据管理技术发展的三个阶段中, ( )没有专门的软件对数据进行管理。 人工管理阶段 文件系统阶段 数据库阶段 ( A)仅 ( B)仅 ( C) 和 ( D) 和 11 下面说法正确的是 ( )。 ( A)一个 C程序可以有多个主

5、函数 ( B)一个 C语言的函数中只允许有一对花括号 ( C) C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内 ( D)在对 C程序进行编 译时,可以发现注释行中的拼写错误 12 下列不合法的用户标识符是 ( )。 ( A) j2_KEY ( B) Double ( C) 4d ( D) _8_ 13 以下 4个选项,不能看作一条语句的是 ( )。 ( A) ; ( B) int x=0, y=1, z=0; ( C) if(!a); ( D) if(b=0)m=1; n=2: 14 设 a和 b均为 int型变量,且 a=6、 b=11、 c=3,则能使值为 3的表达式是

6、 ( )。 ( A) b (c 4) ( B) b (c-a 5) ( C) b a-a 5 ( D) (b a)-(a 4) 15 以下程序的输出结果是 ( )。 main() inta=4, b=3, c=2, d=1; printf(“ d“, a b?a: d c?d: b); ( A) 1 ( B) 3 ( C) 2 ( D) 4 16 阅读以下程序 #include stdio h main() Int Case; float printF; printf(“请输入 2个数: “); scanf(, “ d f“, &Case, &printF); printf(“ d f n“,

7、 Case, printF); 以下说法正确的是 ( )。 ( A)定义语句出错, Case是关键字,不能用作用户自定义标识符, printF不能用作用户自定义标识符 ( B)定义语句出错, Int无法被识别 ( C)定义语句无错, scanf不能作为输入函数使用 ( D)定义语句无错, printf不能输出 Case的值 17 若有定义: float x=1 5; inta=1, b=3, c=2;则正确的 switch语句是 ( )。 ( A) switch(x) case 1 0: printf(“* n“); case2 0: printf(“* n“); ( B) switch(in

8、t)x); case1: printf(“* n“); case2: printf(“* n“); ( C) switch(a+b) case1: printf(“* n“); case2+1: printf(“* n“); ( D) switch(a+b) case1: printf(“* n“); case c: printf(“* n“); 18 有以下程序: main() int k=33; printf(“ d, o, x“, k, k, k); 执行后的输出结果是 ( )。 ( A) 33, 033, 0x21 ( B) 33, 033, 21 ( C) 33, 041, 021

9、( D) 33, 41, 21 19 当输入为 “Fool&Swalow“时,下面程序的执行结果是 ( )。 #include stdio h main() char c; while(c!=?) c=getchar(); putchar(c); ( A) Swalow ( B) Fool ( C) Fool? ( D) ?Swalow 20 下面程序段 的输出结果是 ( )。 #include stdio h main() float x=1 236547; printf(“tha“, (int)(x*1000+0 5) (float)1000); ( A) 1 237000 ( B)输出格

10、式说明与输出项不匹,输出无定值 ( C) 1 236000 ( D) 1 24 21 若变量都己正确说明,则以下程序段 ( )。 #include stdio h main() int a=8; int b=6: printf(a b?“&a: d“: “!b= d“, a, b); ( A)输出为: &a=8 ( B)输出为: !b=8 ( C)输出为: &a=8!b=6 ( D)全部错误 22 语句 “printf(“a bhow are y bou n“); ”的输出结果是 ( )。 ( A) a bhow are y bou ( B) a bhow are y bou ( C) how

11、areyou ( D) ahowarey bou 23 下面程序的运行结果是 ( )。 #include stdio h main() int i; for(i=1; i =5; i+) if(i 2)printf(“*“); else printf(“#“); ( A) *#*#* ( B) #*#*#* ( C) *#*# ( D) #*#* 24 以下关于 return语句的叙述中不正确的是 ( )。 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)如果一个函数有多个 return语句,那么不论运行到哪一个

12、 return语句,该函数将结束 ( D)没有 return语句的自定义函数在执行完最后一条语句时返回到调用处 25 有以下程序: main() int n=0; don+; printf(“ d n“, n); while(n =3); 程序的输出结果是 ( )。 ( A) 1 1 2 ( B) 1 2 3 ( C) 1 2 3 4 ( D) 1 2 26 下面程序的运行结果是 ( )。 #include stdio h void del(char*s) int i, j; char*a; a=s; for(i=0, j=0; ai!= 0; i+) if(ai =0&ai =9)sj=ai

13、; j+; sj= 0; main() char s=“aa89gggh“; del(s); printf(“ n s“, s); ( A) aa ( B) 89 ( C) gggh ( D) aa89gggh 27 下列说法不正确的是 ( )。 ( A) int*fun(); -fun是一个返回 int指针的函数 ( B) int(*fun)(); -fun是一个返回 int指针的函数 ( C) int(*array5)(); -array是一个有 5个元素的数组,每一个元素都是一个函数指针,指向一个返回 int的函数 ( D) int(*fun(int)(int); -fun是带有一个 i

14、nt参数的函数,返回值是一个雨数指针,这个指针指向带有一个 int参数并返回 int的函数 28 下列程序的输出结果是 ( )。 #include stdio h main() void fun(int*a, int*b) int a=1, b=2, *x=&a, *y=&b; int*k; fun(x, y); k=a; a=b; b=k; printf(“ d d“, a, b); ( A) 2 1 ( B) 1 2 ( C)编译出错 ( D) 0 0 29 下列二维数组初始化语句中,正确且与语句 int a3=1, 2, 3, 4, 5等价的是 ( )。 ( A) int a2=1, 2

15、, 3, 4, 5; ( B) int a3: 1, 2, 3, 4, 5, 0; ( C) int a3=1, 0, 2, 0, 3, 0; ( D) inta2=1, 2, 3, 4, 5, 6; 30 有以下字符串,说明表达式 strlen(s)值的是 ( )。 char s10=a, n, a, b, t, c; ( A) 10 ( B) 1 ( C) 6 ( D) 7 31 有以下程序: #include stdio h main() void fun(char*c, int d) char a=F, b=f; *c=*c+1; fun(&b, a); d+=1; printf(“

16、c, c n“, a, b); printf(“ c, c“, *C, d); 程序的输出结果为 ( )。 ( A) g, GF, g ( B) g, FF, g ( C) G, fF, G ( D) f, gf, g 32 若有以下定义,则对 a数组元素地址的正确引用是 ( )。 int a5, *p=a; ( A) p+5 ( B) *a+1 ( C) &a+1 ( D) &a0 33 判断字符串 s1是否大于字符串 s2,应该使用 ( )。 ( A) if(strcmp(s1, s2) 0) ( B) if(s1 s2) ( C) if(strcmp(s2, s1) 0) ( D) ig

17、strcmp(s1, s2) 34 若输入 bcdefgh、 m、 abcdefg,以下程序的输出结果为 ( )。 #include stdio h #include string h main() int i; char string20, str320; for(i=0; i 3; i+)gets(stri); if(strcmp(str0, str1) 0)strcpy(string, str0); else strcpy(string, str1); if(strcmp(str2, string) 0)strcpy(string, str2); printf(“ s“, string)

18、; ( A) bcdefgh ( B) m ( C) abcdefg ( D) bcdefgh或 abcdefg 35 请阅读以下程序: #include stdiO-h #include string h void fun(int b) main() static int i=0; int k, a5=1, 3, 5, 4, 9; Dobi+=bi+1; fun(a); while(+i 2); for(k=0; k 5; k+)printf(“ d“, ak); 上面程序的输出是 ( )。 ( A) 13579 ( B) 48579 ( C) 48549 ( D) 48999 36 在下述

19、程序中,判断 i j共执行的次数是 ( )。 main() int i=0, j=10, k=2, s=0; for(; ) i+=k; if(i j)printf(“ d“, s); break; s+=i; ( A) 4 ( B) 7 ( C) 5 ( D) 6 37 下列程序的输出结果是 ( )。 #include stdio h main() struct st int y, x, z; ; unlon long i; int j; char k; )un; printf(“ d, d n“, sizeof(struct st), sizeof(un); ( A) 6 2 ( B) 6

20、, 4 ( C) 8, 4 ( D) 8, 6 38 以下对联合类型叙述正确的是 ( )。 ( A)可以对联合变量名直接赋值 ( B)使用联合变量的目的是为了节省内存 ( C)任何一个联合变量可以同时引用联合中的不同成员 ( D)联合类型定义中不能同时出现结构类型的成员 39 以下程序中 c的二进制值是 ( )。 char a=2, b=4, c; c=ab 2 ( A) 00000011 ( B) 00010100 ( C) 00011100 ( D) 00011000 40 有以下程序 #include stdio h main() FILE*fp; int i=20, j=30, k,

21、n; fp=fopen(“d1 dat“, “w“); fprintf(fp“ d n“, i); fprintf(fp, “ d n“, j); fclose(fp); fp=fopen(“d1 dat“, “r“); fscanf(fp“ d d“, &k, &n); printf(“ d d n“, k, n); fclose(fp); 程序运行后的输出结果是 ( )。 ( A) 20 30 ( B) 20 50 ( C) 30 50 ( D) 30 20 二、程序填空题 41 给定程序的功能是:从键盘输入若干行文本 (每行不超过 80个字符 ),写到文件myfile4 txt中,用 -

22、1作为字符串输入结束的标志 。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数 ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h #include stdlib h void WriteText(FILE*); void ReadText(FILE*); main() FILE*fp; if(fp=fopen(“myfile4 txt“, “w“)=NU

23、LL) printf(“open fail! n“); exit(0); WriteText(fp); fclose(fp); if(fp=fopen(“myfile4 txt“, “r“)=NULL) printf(“open fail! n“); exit(0); ReadText(fp); fclose(fp); *found* void WriteText(FILE_1_) char str81; printf(“ nEnter string with-1 to end: n“); gets(str); while(strcmp(str, “-1“)!=0) *fbund* fputs

24、(_2_, fW); fputs(“ n“, fw); gets(str); void ReadText(FILE*fr) char str81; printf(“ nhaRead file and output to screen: n“); fgets(str, 81, fr); while(!feof(fr) *found* printf(“ s“, _3_); fgets(str, 81, fr); 三、程序修改题 42 给定程序 MODI1 C中函数 fun的功能是:从整数 1到 55之间,选出能被 3整除、且有一位上的数是 5的那些数,并把这些数放在 b所指的数组中,这些数的个数作

25、为函数值返回。规定,函数中 a1放个位数, a2放十位数。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 #include stdio h int fun(int*b) int k, a1, a2, i=0; for(k=10; k =55; k+) *found* a2=k 10; a1=k-a2*10: if(k 3=0&a2=5)|(k 3=0&a1=5) bi=k; i+; *found* return k; main() int a100, k, m; m=fun(a); printf(“The result is:

26、n“); for(k=0; k m; k+)printf(“ 4d“, ak); printf(“ n“); 四、程序设计题 43 请编写一个函数 fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 x是数组名, n是 x中的数据个数, max存放最大值, index存放最大值所在元素的下标。注意:部分源程序 存在文件 PROG1 C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdlib h #include stdio

27、h void fun(int a, int n, int*max, int*d) main() int i, x20, max, index, n=10; void NONO(); for(i=0; i n; i+)xi=rand() 50; printf(“ 4d“, xi); printf(“ n“); fun(x, n, &max, &index); printf(“Max= 5d, Index= 4d n“, max, index); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i, x

28、20, max, index, n=10, j; fp=fopen(“in dat“, “r“); wf=fopen(“out dat“, “W“); for(i=0; i 10; i+) for(j=0; j n; j+)fscaf(fp, “ d, “, &xj); fun(x, n, &max, &index); fprintf(wf, “Max= d, Index= d n“, max, index); fclose(fp); fclose(wf); 国家二级( C语言)机试模拟试卷 106答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 并、差、笛卡儿积、投影和选择是 5种

29、基本的运算,其他运算即交、连接和除,均可以通过 5种基本的运算来表达。 2 【正确答案】 A 【试题解析】 数据库有两层映像,即外模式模式和模式内 模式映像。模式内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。 3 【正确答案】 D 【试题解析】 在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点 (即前件或后件 )。 4 【正确答案】 B 【试题解析】 数据库的三级模式结构是指数据库系统的

30、外模式、模式和内模式。一个数据库可以有多个 外模式,但只有一个模式和一个内模式。 5 【正确答案】 A 【试题解析】 快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。 6 【正确答案】 A 【试题解析】 数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据库及其应用系统开发全过程,将数据库设计分为以下 6个阶段:需求分析、概念结构设计、逻辑结构设计、 物理结构设计、数据库实施和数据库的运行和维护。 7 【正确答

31、案】 B 【试题解析】 数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。 8 【正确答案】 D 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。 9 【正确答案】 B 【试题解析】 关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。 10 【正确答案】 A 【试题解析】 数据管理技术发展的三个阶段中,

32、只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。 11 【正确答案】 C 【试题解析】 本题涉及 C语言基本的 3个知识点: C语言规定一个程序只允许 有一个主函数,一个函数内可以允许有多个花括号; C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。 12 【正确答案】 C 【试题解析】 在 C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划

33、线组成,并且第一个字符必须是字母或下划线。 13 【正确答案】 D 【试题解析】 if语句是用来判定所给的条件是否满足,根据判定的结果 (真或假 )决定执行给出的两种操作之一。在 if和 else后面可以只含一个内嵌的 操作语句,也可以有多个操作语句,此时用花括号 “”将几个语句括起来成为一个复合语句。选项 D)中没有将两个操作语句括起来,不能看作一条语句。 14 【正确答案】 D 【试题解析】 选项 D)括号内的运算分别是 b a=11 6=5和 a c=6 4=2,最后得到 5-2=3。 15 【正确答案】 D 【试题解析】 本题首先判断 a b,当 a b时结果等于 a。否则等于 “dc

34、?d=b”,因为 a b+所以直接输出 a的值,注:这里 “a: d c?d: b”是用来干扰考生的。 16 【正确答案】 B 【试题解析】 C语言是一种大小写敏感的语言,因此 Int应为 int,而 Case printF则可以使用。 17 【正确答案】 C 【试题解析】 在 C语言中, switch()后的一对圆括号中可以是整型表达式或字符表达式。 case语句后面的常量表达式的类型必须与 switch后圆括号中的表达式类型相同,各 case语句标号的值应该互不相同。选项 A)中 case后面的常量表达式为实型。所以不正确:选项 D)中 case后面出现了变量表达式,所以选项 D)错误。

35、18 【正确答案】 D 【试题解析】 本题考 查不同进制间的转换。 printf输出函数中输出变量的格式,由输出格式符决定。题中 “ o”格式符表示以八进制的形式输出; “ x”格式符表示以十六进制的形式输出。 “33”的八进制和十六进制分别是 41和 21。 19 【正确答案】 C 【试题解析】 本程序是通过 getchar()函数读入字符,并通过 putchar()函数将字符逐个输出,当用户输入 “?”时停止输出。 20 【正确答案】 A 【试题解析】 本题中, (int)(x*1000+0 5)的结果为 1237, (float)1000是将 1000强制转换成 flat类型;整个表达式

36、 (int)(x*1000+0 5) (float)1000的结果为1 237000,再以实数 (6位小数 )形式输出。 21 【正确答案】 A 【试题解析】 本题考查 printf的输出格式和条件表达式 “?: ”的使用。 printf函数输出时, “& d n”和 “! d n”中的 “&”和 “!”都是直接输出: 条件表达式的基本格式为: a?b: c。其运算规则为:当 a为非 0时,整个表达式的值取 b的值,当 a为 0时,整个表达式取 c的值。 printf函数中如果在格 式说明符之前插入任何字符都将原样输出。本题中 a b为真,所以返回 “&a=d”。 22 【正确答案】 C 【试

37、题解析】 “b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致 “b”格式符前面的字母不能输出: “ ”格式符表示输出单引号字符; “ ”格式符表示输出反斜线字符。 23 【正确答案】 A 【试题解析】 分析程序可知,程序循环 5次,然后利用 if语句决定每次循环时输出的字符。当 i为奇数时, i 2=1, if(i 2)为真,输出 “*”:当 j为偶数时, i2=0, if(i 2)为假,执行 else语句,输出 “#”,所以当 i取 1、 3、 5值时输出 “*”,当 i取 2、 4值时输出 “#”。 24 【正确答案】 A 【试题解析】 return语句主要用于返回函数的值

38、。在一个自定义函数中,可以根据不同的情况设置多条 return语句返回函数的值,也可以不包含 return语句。 25 【正确答案】 C 【试题解析】 本题考查 dowhile 循环。在 dowhile 构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到 n=3,whik循环表达式仍然 成立,接着执行直到 n=4,表达式不成立跳出循环,结束程序。 26 【正确答案】 B 【试题解析】 本题中 del(char*s)函数实现的功能是:逐个读入 s数组中的字符,如果遇到数字,则将其重新存在 s中,遇到非数字字符则跳过。所以最后输出的应该是字符串 s中的所有数字。

39、27 【正确答案】 B 【试题解析】 该函数中 fun是一个函数指针。指向一个返回 int的函数。 28 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。分析题目可知 fun函数的形参是指向实参的指针,但 main()函数中调用 fun()函数时,实参是指针变量 x、 y(分别为指向 a和 b的指针 ), a、 b的值在函数调用前后未发生变化,因而 a=1, b=2,即输出 1 2。 29 【正确答案】 B 【试题解析】 此题考查的是二维数组的初始化。题干中数组 a的第二个下标为3。由此可知数组 a是一个 2行 3列的数组,初始化时未赋初值的元素的值自动为0,所以与选项 B)是等

40、价的。最后一个元素的值为 0。 30 【正确答案】 C 【试题解析】 strlen(s)返回 s字符串中字符的个数,若 s是一个数组,则返回数组元素的 个数。 31 【正确答案】 A 【试题解析】 此题考查的是函数参数的传递。 main函数中首先调用 fun函数,fun函数的功能是使字符 c的 ASCII码值加 1并输出,使 d加 1并输出对应的字符; fun(&b, a)输出 “g, G”,但是由于 fun函数的第一个参数进行的是地址传递,而第二个参数进行的是值传递,所以 main函数中的州 printf函数输出 “F,g”。 32 【正确答案】 D 【试题解析】 本题考查如何引用数组元素的

41、地址。选项 A)中, p+5引用的是 a5的地址,而数组 a只有 5个元素,即 a0、 a1、 a2、 a3、 a4,所以引用错误;选项 B)中, *a+1指的是将数组 a的第一个元素加 1;选项 C)中,这种引用方式错误;选项 D)中, &a0引用的是数组的首地址。 33 【正确答案】 C 【试题解析】 本题考查字符串比较函数 strcmp(),调用形式: strcmp(str+1,str+2),其中 str+1、 str+2分别是字符串存储区的首地址,函数功能:比较字符串str1和 str2,当 str1 str2时,返回值为负数;当 str1=str2时,返回 0;当 str1str2,

42、返回值为正数。注意:不能使用关系运算符比较两个字符串的大小: 34 【正确答案】 B 【试题解析】 本题考查字符比较函数和字符复制函数: strcmp(s1, s2):函数功能:比较字符串 str1和 str2比较的是字符的 ASCII码的值,当 str1 str2时,返回值为负数;当 str1=str2时,返回 0:当 str1 str2,返回值为正数。 35 【正确答案】 C 【试题解析】 本题考查的是 for循环以及 while循环。 fun函数中定义了静态变量 i=0, fun(a)使得 a0=a0+a1=4, a1=a1+a2=8,此时 i的值变为 1, +i2不成立,所以 do-w

43、hile循环结束,输出数组 a的各元素即得到 48549。 36 【正确答案】 D 【试题解析】 分析程序, i+=k;使得 i的值每次增加 2然后再和 j进行比较看 ij是否成立, i的变化过程为: i=2, i=4, i=6, i=8, i=10, i=12,此时 i j成立,所以判断 j i共执行的次数为 6次。 37 【正确答案】 B 【试题解析】 本题考查的是结构和数组元素所占的字节数。题目中定义的结构 st因为包 含 x、 y、 z这 3个元素,所以 size(struct st)2+2+2=6;而联合体所占的字节数,由于最后存入的元素会把前面存入的元素覆盖掉,所以联合体所占的字节

44、数就是占据最多存储单元的元素所占的字节数, sizeof(un)=sizeof(long)=4。 38 【正确答案】 B 【试题解析】 由于联合体是同一存储区域由不同类型的变量共享,所以不可以直接对联合体变量名进行赋值,且联合体中的空间在某一时刻只能保持某一成员的数据;另外台体中可以出现结构类型的成员。 39 【正确答案】 A 【试 题解析】 本题主要考查按位异或和右移运算。 b=4的二进制为 00000100, b 2后为 00000001, a=2的二进制为 00000010,两者异或为 00000011。 40 【正确答案】 A 【试题解析】 分析程序段,首先以只写方式打开文件,利用 f

45、printf函数将 i和 j的值写入到文件 dl dat中,然后关闭文件:再以只读方式打开文件,利用格式化输入函数 fscanf将文件中的数据赋值给 k和 n,最后输出 k和 n的值,分别是 20和 30。 二、程序填空题 41 【正确答案】 (1)*fw (2)str (3)str 【试题解析】 第一空:此处是补充函数参数名,参数类型已知是 FILE文件指针, fbuts(“ n“, fw)是将字符 “ n”写入文件,可知 fw是文件指针名,因此第一空处应该是 void WriteText(FILE*fw);第二空: while(strcmp(str“-1“)!=0)循环的结束标志是 str

46、字符串等于 “-1”时循环退出,如果 str不等于 “-1”,执行循环体内容:用 fbuts函数将 str字符串写入文件。 fputs函数的调用形式是: fputs(s, fp),其中 s是指向字符串的指针 或字符串数组名, fp是指向将要被写入的文件的文件指针,因此第二处应该是 fputs(str fw)。第三空: while(!feof(fr)循环的作用是不断读取文件直到到达文件尾,每次最多读 81个,将读到的数据放在 str字符串里,并用 printf输出到屏幕,因此第三处应该是 printf(“ s“str)。 三、程序修改题 42 【正确答案】 (1)a2=k 10; (2)return i; 【试题解析】 (1)第一标识下 “a2=k 10; ”是截取十位数,截取个位数是 k 10,而截取十位数是 k 10,因此第一标识下应改成 “a2=k 10; ”。 (2)变量 i是标识数组 b的下标也就是数组的个数,题目中 “return k; ”返回的是循环条件表达式中的变量,所以这里应该将 “return k; ”改为 “return i; ”。 四、程序设计题 43 【正确答案】 int i; *max=a0; *d=0; *把数组的第 1个元素值赋值给最大值变量 *max* for(i=1; i n; i+) if(max ai)

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

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

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