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

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

1、国家二级( C语言)机试模拟试卷 107及答案与解析 一、选择题 1 线性表常采用的两种存储结构是 ( )。 ( A)散列方法和索引方式 ( B)链表存储结构和数组 ( C)顺序存储结构和链式存储结构 ( D)线性存储结构和非线性存储结构 2 软件需求分析阶段的工作,可以分为四个方面:需求获取、编写需求规格说明书、需求评审和 ( )。 ( A)阶段性报告 ( B)需求分析 ( C)需求总结 ( D)都不正确 3 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 ( )。 ( A)需求分析 ( B)详细设计 ( C)软件设计 ( D)概要设计 4 对建立良好的程序设计风

2、格,下面描述正确的是 ( )。 ( A)程序应简单、清晰、可读性好 ( B)符号名的命名只要符合语法 ( C)充分考虑程序的执行效率 ( D)程序的注释可有可无 5 下列工具中,不属于结构化分析的常用工具的是 ( )。 ( A)数据流图 ( B)数据字典 ( C)判定树 ( D) N-S图 6 在软件生产过程中,需求信息的来源是 ( )。 ( A)程序员 ( B)项目经理 ( C)设计人员 ( D)软件用户 7 对关系 S和 R进行集合运算,结果中既包含 S中的所有元组也包含 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运算 ( C)差运算 ( D)积运算 8 设有

3、关键码序列 (Q, G, M, Z, A, N, B, P, X, H, Y, S, T, L, K, E),采用堆排序法进行排序,经过初始建堆后关键码值 B在序列中的序号是 ( )。 ( A) 1 ( B) 3 ( C) 7 ( D) 9 9 数据库的故障恢复一般是由 ( )来执行恢复。 ( A)电脑用户 ( B) 数据库恢复机制 ( C)数据库管理员 ( D)系统普通用户 10 下列选项中,不属于数据模型所描述的内容的是 ( )。 ( A)数据类型 ( B)数据操作 ( C)数据结构 ( D)数据约束 11 程序设计的任务包括 ( )。 ( A)编写程序代码并上机调试 ( B)确定所用数据

4、结构 ( C)确定所用算法 ( D)以上选项均正确 12 下列合法的标识符是 ( )。 ( A) 123 ( B) #256 ( C) a 55 ( D) abhj1_2_3 13 以下程序的运行结果是 ( )。 #include stdio h main() int a=3, b=4, c=8, d=4, m=1, n=3; printf(“ d n“, (m=a b)&(n=c d); ( A) 0 ( B) 1 ( C) 2 ( D) 3 14 以下选项中,能用作数据常量的是 ( )。 ( A) o18 ( B) o11 ( C) 0 8e2 5 ( D) 25L 15 有下列程序: m

5、ain() int m, n, p; scanf(“m= dn= dp= d“, &m, &n, &p); printf(“ d d d n“, m, n, p); 若想从键盘上输入数据,使变量 m中的值为 123, n中的值为 456, P中的值为789,则正确的输入是 ( )。 ( A) m=123n=456p=789 ( B) m=123 n=456 p=789 ( C) m=123, n=456, p=789 ( D) 123 456 789 16 以下关于 long、 int和 short类型数据占用内存大小的叙述中正确的是 ( )。 ( A)均占 4个字节 ( B)根据数据的大小来

6、决定所占内存的字节数 ( C)由用户自己定义 ( D)由 C语言编译系 统决定 17 有以下程序 #include stdio h main() int k=5, n=0; while(k 0) switch(k) default: break; case1: n+=k: case2: case3: n+=k: k-; printf(“ d n“, n); 程序运行后的输出结果是 ( A) 0 ( B) 4 ( C) 6 ( D) 7 18 有以下程序段 intj; float y; char name50; scanf(“ 2d f s“, &j, &y, name); 当 执行上述程序段,

7、从键盘上输入 55566 7777abc后, y的值为 ( )。 ( A) 55566 0 ( B) 566 0 ( C) 7777 0 ( D) 566777 0 19 若变量已正确定义,有以下程序段: i=0; do printf(“ d, “, i); while(i+); printf(“ d n“, i); 其输出结果是 ( )。 ( A) 0, 0 ( B) 0, 1 ( C) 1, 1 ( D)程序进入无限循环 20 设有条件表达式: (EXP)?i+; j-,则以下表达式中 (EXP)完全等 价的是 ( )。 ( A) (EXP=0) ( B) (EXP!=0) ( C) (E

8、XP=1) ( D) (EXP!=1) 21 有以下程序 #include stdio h main() int y=9; for(; y 0; y-) if(y 3=0)printf(“ d“, -y); 程序的运行结果是 ( )。 ( A) 741 ( B) 963 ( C) 852 ( D) 875421 22 若要求从键盘读入含有空格字符的字符串,应使用函数 ( )。 ( A) getc() ( B) gets() ( C) getchar() ( D) scanf() 23 当 a=4, b=5, c=7, d=6时,执行下面一段程序: if(a b) if(c d)x=1; els

9、e if(a c) if(b c) x=2; else x=3; else x=4; else x=5; 程序执行后, x的值为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 24 在 C语言程序中,以下说法正确的是 ( )。 ( A)函数的定义和函数的调用均不可以嵌套 ( B)函数的定义不可嵌套,但函数的调用可以 嵌套 ( C)函数的定义可以嵌套,但函数的调用不可以嵌套 ( D)函数的定义和函数的调用均可以嵌套 25 以下程序运行后的输出结果是 ( )。 #include stdio h main() void reverse(int a, int n) int b10=

10、1079, 8, 7, 6, 5, 4, 3, 2, 1; int i, s=0 int i, t; reverse(b, 10); for(i=0; i n 2; i+) for(i=0; i 3; i+)s+=bi; t=ai; ai=an-1-i; an-1-i=t; printf(“ d n“, s); ( A) 27 ( B) 6 ( C) 25 ( D) 30 26 设 v为整型变量, a=6, a的地址为 E2000, b=14, b的地址为 E2001;执行语句 b=&a; y=&a;后 y的值为 ()。 ( A) E2000 ( B) E2001 ( C) 6 ( D) 14

11、 27 若有以下程序段: struct st main() int n; struct st*p; int*m; p=s; ; int a=2, b=3, c=5; struct st s3=(101, &a, 102, &c, 103, &b; 则以下表达式中值为 5的是 ( )。 ( A) (*p) m ( B) *(p+1)- m ( C) *(p+)- n ( D) (p+) (*m) 28 在下列叙述中,错误的是 ( )。 ( A) C语言中,二维数组或多维数组是按行存放的 ( B)赋值表达式 b12=a23是正确的 ( C) char a1; a0=A与 int a1; a0=A等

12、价 ( D)数 组名后的方括号内可以为常量表达式,也可以为变量 29 若已包括头文件 stdio h和 string h,运行下面程序的输出结果是( )。 char s110=“12345“, s210=“089“, s3=“67“; strcat(strcpy(s1, s2), s3); puts(s1); ( A) 08967 ( B) 0894567 ( C) 089567 ( D) 089567 30 下列说法正确的是 ( )。 ( A) auto和 register将声明的对象说明为自动存储类对象, 这些对象可用在函数中或函数外 ( B)将变量其定义为 static类型,则其初值默认

13、为随机值 ( C) typedef说明符并不会为对象预留存留空间 ( D)如果一个对象被声明为 register,则对它应用一元运算符 &,意在取得其存储的地址 31 以下有关宏的描述不正确的是 ( )。 ( A)宏定义不做语法检查 ( B)双引号中出现的宏名不进行替换 ( C)宏名无类型 ( D)宏名必须用大写字母表示 32 以下程序段的输出结果为 ( )。 static char a=“programme“; char*p; p=a; for(p=a; p a+8; p+=2) putchar(*p); ( A) programme ( B) porto ( C)有语法错误 ( D) pr

14、og 33 下列关于 C语言数据文件的叙述中正确的是 ( )。 ( A)文件由 ASCII码字符序列组成, C语言只能读写文本文件 ( B)文件由二进制数据序列组成, C语言只能读写二进制文件 ( C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 ( D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 34 已知 char*s,下面正确的语句是 ( )。 ( A) s=“ABCDEF“; ( B) *s=“ABCDEF“; ( C) *s=“ABCDEF“; ( D) *s=A; 35 下列程序的运行结果是 ( )。 #include stdio h voi

15、d main() void fun(int*s, int*p) int a=2, 3, 4, 5, k, x; static int t=3; for(k=0: k 4: k+) *p=st: fun(a, &x); t-; printf(“ d, “, x); ( A) 5, 4, 3, 2, ( B) 2, 3, 4, 5, ( C) 2, 2, 2, 2, ( D) 5, 5, 5, 5, 36 以下函数 findmin拟实现在数组中查找最小值并作为函数值返回,但程序中有错导致不能实现预定功能 #define MAX 2147483647 int findmin(int x, int n

16、) int i, min; min=MAX; for(i=0; i n; i+) if(min xi)min=xi; return min; 造成错误的原因是 ( )。 ( A)定义语句 int i, min;中 min未赋初值 ( B)赋值语句 min=MAN;中,不应给 min赋 MAX值 ( C)语句 if(min Xi)min=Xi;中判断条件设置错误 ( D)赋值语句 min=MAX;放错了位置 37 以下程序的输出结果是 ( )。 #include stdio h main() struct st p=aa; int x; int*y; *p; printf(“ d n“, +(p

17、- x); int dt4=1, 2, 3, 4; struct st aa4=2, &dt0, 3, &dt0, 4, &dt0, 5, &dt0, ; ( A) 1 ( B) 2 ( C) 3 ( D) 4 38 有以下定义和语句: struct students int num; char name20; char c: struct int grade1; int grade2; s; : struct students w *pw; *pw=w: 下列赋值语句不正确的是 ( )。 ( A) w num=1002; ( B) w grade1=85; ( C) pw- num=1002

18、; ( D) w s grade2=85; 39 设有以下语句: char x=3, y=6, z; z=xy 2; 则 z的二进制值是 ( )。 ( A) 00010100 ( B) 00011011 ( C) 00011100 ( D) 00011000 40 有以下程序: #include stdio h main() FlLE*pf; char*s1=“China“, *s2=“Beijing“; pf=fopen(“abc dat“, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *文件位置指针回到文件开头 * fwrite(s1, 5, 1,

19、pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( )。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 二、程序填空题 41 给定程序中,函数 fun的功能是:在形参 SS所指字符串数组中查找与形参 t所指字符串相同的串,找到后返回该串在字符串数组中的位置 (下标值 ),未找到 则返回 -1。 ss所指字符串数组中共有 N个内容不同的字符串,且串长小于 M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。 不得增

20、行或删行,也不得更改程序的结构 ! #include stdio h #include string h #defiRe 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“, “while“, “switch“, “int“, “for“, tM; int n, i; printf(“ nThe original slring n n“); for(

21、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(“kqDont found! n“); else printf(“ nThe position is d n“, n); 三、程序修改题 42 给定程序 MODI1 C中函数 fun的功能是:判断一个整数是否足素数,若足返回 1,否则返回 0。 在 main()函数中,若 fun返回 1输出 YES,若 fun返回 0输出 NO!。请改正程序中的

22、错误,使它能得出正确的结果。注意:不要改动 main函数。不得增行或删行,也不得更改程序的结构 ! #include stdio h int fun(int m) int k=2: while(k =m&(m k) *found* k+ *found* if(m=k)return1; else return0; main() int n; printf(“ nPlease enter n: “); scanf(“ d“, &n); if(fun(n)printf(“YES n“); else printf(“NO!kn“); 给定程序 MODI1 C中函数 fun的功能是:判断一个整数是否足素

23、数,若足返回1,否则返回 0。 四、程序设计题 43 学生的记录由学号和成绩组成, N名学生的数据已在主函数中放入结构体数组s中,请编写函数 fun,它的功能是:把分数最低的学生数据放在 b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。注意:部分源程序在文件 PROG1 C文件中。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include stdio h #define N 16 typedef struct char num10; int s; STREC; int fun(STREC*a, STREC

24、*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“, 91, “GA011“, 91,“GA017“, 64), “GA018“, 64, “GA016“, 72); STREC hN; int i, n; FILE*out; n=fun(s, h); printf(“The d lowest score: n“, n); f

25、or(i=0; i n; i+) printf(“ s 4d n“, hi num, hi s); printf(“ 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语言)机试模拟试卷 107答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。 2 【正确答案】 B 【试题解析】 软件需求分析阶段的工作,可以概括为四个方面:需求

26、获取、需求分析、编写需求规格说明书和需求评审。需求获取的目的是确定对目标系统的各方面需求。涉及到的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。需求分析是对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。编写需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方 便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。需求评审是对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。 3 【正确答案】 A 【试题解析】 软件生命周期的主要活动阶段为:可行性研究和计划制定、需求分析、软件设计

27、、软件实现、软件测试、运行和维护。其中需求分析是对开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能,编写软件规格说明书及初步的用户手册,提交评审。 4 【正确答案】 A 【试题解析】 程序设计应该简单易懂语 句结构应该简单直接,不应该为提高效率而把语句复杂化。 5 【正确答案】 D 【试题解析】 结构化分析的常用工具有数据流图、数据字典、判定树和判定表。 6 【正确答案】 D 【试题解析】 软件需求是指用户对目标软件系统在功能、性能、设计约束等方面的要求,是由用户提出的。 7 【正确答案】 A 【试题解析】 关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,新关系

28、中包含两个关系中的所有元组。 8 【正确答案】 B 【试题解析】 建堆的算法:首先将要排序的所有关键码放 到一棵完全二叉树的各个结点中 (这时的二叉树不具备堆的特性 ),然后,从 i=n 2(n为结点的个数 )的结点 K i 开始,逐步把以 K n 2 , K n 2-1 , K n 2-2 , 为根的子树排成堆,直到以 K 1 为根的树排成堆,就完成了建堆过程。此题中, n=16, i=16 2=8,即从第 8个结点开始,建堆完成后如下图: 所以经过初始建堆后关键码值 B在序列中的序号是 3。 9 【正确答案】 C 【试题解析】 数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责

29、执行故障恢复。 10 【正确答案】 A 【试题解析】 数据模型描述的内容包含数据结构、数据操作和数据约束。 11 【正确答案】 D 【试题解析】 程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项 A)、 B)、 C)等方面。 12 【正确答案】 D 【试题解析】 C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。 “#”、 “ ”不允许出现在标识符中。 13 【正确答案】 A 【试题解析】 逻辑与 (&)运算符的功能是:当 “&”运算符两边的运算对象均为1时,整个表达式的值为 1,否则为 0。因为 a=3 b=4,即 m=0

30、,所以整个表达式的值为 0。 14 【正确答案】 D 【试题解析】 本题考查常量定义。数据常量可有 10进制、 8进制、 16进制、指数法等, 8进制数字为 0-7,第一个字符为 0,而不是 0,因此选项 A)和 B)错误。为指数法时,指数部分须为整形,因此选项 C)错误,选项 D)中数字后加入 L是说明此变量为长整型。 15 【正确答案】 A 【试题解析】 scanf()函数中格式控制字符串是为了输入数据用的,无论其中 有什么字符,在输入数据时,按照一一对应的位置原样输入这些字符。 16 【正确答案】 D 【试题解析】 不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。 lo

31、ng、 int和 short类型数据占用内存大小是由选择何种 c编译系统决定的。 17 【正确答案】 D 【试题解析】 因为没有 break语句,当 k=2的时候,会顺序执行两条语句, k=l的时候,会顺序执行 3条语句。 18 【正确答案】 B 【试题解析】 因为在输入格式控制符中指定变量 j的输入格式控制符为 “2d” 即变量 j所占的宽度为 2,所以变量 j只接收输入数据的前两位,从第 3位开始直到空格之间的输入整数都会被保存到变量 y中。因为 y为浮点型数据所以输出结果为选项 B)。 19 【正确答案】 B 【试题解析】 dowhile 循环的执行过程如下: 执行 do后面的循环体中的

32、语句。 计算 while后一对圆括号中表达式的值。当值为非 0时,转去执行步骤 ;当值为 0时,执行步骤 。 退出 dowhile 循环。对于本题变量 i的初始值等于 “0”,接着执行 do后面的循环体中的语句,输出变量 i的值 0。再判断 while后面 括号中表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,所以再次输出 i的值 “1”。 20 【正确答案】 B 【试题解析】 条件表达式的形式为: “表达式 17表达式 2:表达式 3”。其含义为:当 “表达式 1”的值为非零时,求出 “表达式 2”的值,此时 “表达式 2”的值就是整个条件表达式的值:当 “

33、表达式 1”的值为零时,求出 “表达式 3”的值,此时 “表达式 3”的值就是整个条件表达式的值。对于本题来说,当表达式 EXP为非 0值时条件成立,即执行语句 i+;当 EXP等于 0时,执行语句 j-;这等 同于条件表达式 “(EXP!=0)?i+; i+; ”。 21 【正确答案】 C 【试题解析】 y的初值为 9,所以在 for循环中,当 y的值为 9、 6或 3时, if语句的条件成立,执行输出语句,输出表达式 -y的值。因为自减符号在 y的前面,所以首先 y自减 1,然后再输出 y的值,故输出结果为 8 5 2。 22 【正确答案】 B 【试题解析】 scanf()语句中用 “空格

34、 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf()函数不能输入空格; getchar()函数用于输入字符,其调用形式为:ch=getchar(), getchar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量 ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。 gets()函数的调用形式为: gets(str_adr),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 gete()函数的调用形

35、式为: ch=getc(pt)其中 pf是文件指针。函数的功能是从 pf指 定的文件中读入一个字符,并把它作为函数值返回。 23 【正确答案】 B 【试题解析】 本题考查 if else语句。第一个 if语句,先判断条件, a b成立,则执行下面的语句:第二个 if语句,先判断条件, e d不成立,则执行其对应的else语句:第三个 if语句,先判断条件, a c成立,执行其后语句;第四个 if语句,先判断条件, b c成立,执行语句 x=2。 24 【正确答案】 B 【试题解析】 本题考查函数调用的基本概念。因为函数的结果是一个未知量,而函数定义时不能使用未知量,所以函数定义不可 以嵌套,但

36、是函数调用可以嵌套。 25 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。函数 reverse将数组 b进行了逆置,此时 b10=10, 9, 8, 7, 6, 5, 4, 3, 2, 1,后面 for语句的功能是将 b中的后 3个数累加,并将结果放在 s中,最后将 s输出,结果 s=1+2+3=6。 26 【正确答案】 D 【试题解析】 &是取地址运算符, y=&a是将 a的地址赋给 y,而 a的地址没有发生变化,因此 y的值为 E2000。 27 【正确答案】 B 【试题解析】 本题考查 如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量 s3,并赋了

37、初值。在主程序中,定义了一个指向结构体变量 s的指针 p,要使表达式的值为 5,就应该引用 s1 m的值,使指针 p指向s1, +p可以实现将 p指针加 1,指向 s1。 28 【正确答案】 D 【试题解析】 本题考查数组的 4个知识点: C语言中,二维数组或多维数组元素排列的顺序是按行存放; 不同数组的元素之间可以相互赋值; 字符型数组中存放的是字符, int型数组中存放的是字符对应的 ASCII码值,虽然在计算 机内部字符常量都是作为整型量来处理的,其对应的整数值就是 ASCII码值,但两者并不完全等价; 数组名后的方括号内可以为常量,也可以为常量表达式,但不可以为变量。 29 【正确答案

38、】 A 【试题解析】 本题考查字符串复制函数和字符串连接函数:字符串复制函数strcpy(s1, s2)是把 s2的字符串复制给 s1,执行后 s1=089;字符串连接函数strcat(s1, s2),功能是把 s2字符串连接到 s1字符串的末尾,执行后 s1=08967。 30 【正确答案】 C 【试题解析】 这种声明也具 有定义的作用,并将预留存储空间。 register说明的声明等价于 auto说明的声明,所不同的是, register暗示了声明的对象将被频繁地访问,将尽可能存储在寄存器中。如果一个对象被声明为 regtster,则将不能对它应用一元运算符 &,声明为 register但

39、实际按照 auto类型处理的对象的地址进行计算是非法的。 static将声明的对象说明为静态存储类。这种对象可以用在函数内部或者函数外部。在函数内部,该说明符将引起存储空间的分配,具有定义的作用。在函数外部,该说明符将引起声明对象为具有内部链接。另外, 若将其定义为 static类型,则其初值默认为 0。 函数内部的 extern声明表明,被声明的对象的存储空间定义在其他地方。在函数外部,说明声明的对象具有外部链接。 typedef说明符并不会为对象预留存留空间。 31 【正确答案】 D 【试题解析】 本题考查宏的使用规则: 字符替换格式: #define标识符字符串,标识符称为宏名,无类型;

40、 双引号中出现的宏名不替换; 宏名的定义通常用大写字母,但不是必须用大写; 宏定义不是赋值语句,不做语法检查。 32 【正确答案】 B 【试题 解析】 本程序首先定义了静态字符数组 a,然后将指针 p指向数组 a的首地址,第一次 for循环, p=a, p指向数组的第一个元素, *q是取指针 p所指地址的内容,输出 p;第二次 for循环, p=p+2,则 p指向数组的第三个元素, *p是取指针 p所指地址的内容,输出 0;第三次 for循环, p=p+2,则 p指向数组的第 5个元素, *p是取指针 p所指地址的内容,输出 r;第四次 for循环, p=p+2,则 p指向数组的第 7个元素,

41、 *p是取指针 p所指地址的内容,输出 m;结束循环。 33 【正确答案】 D 【试题解析】 本题考查数 据文件的基本概念: 文件由数据流形式组成,可以按数据的存放形式分为二进制文件和文本文件: C语言既能读写文本文件,又可以读写二进制文件。 34 【正确答案】 C 【试题解析】 “s”是代表数组首地址的地址常量,不是变量, “=”左边不能出现常量,因此 s=ABCDE“语法错误。 “*s”和 “s”一样; ”s”是指变量地址,不能给其赋字符串。 35 【正确答案】 A 【试题解析】 分析 fun函数程序段,可知 fun函数要实现的功能是将 s中第 (t+1)个元素前面 (含该元素 )的元素逆

42、置赋给数组 p。由于 fun函数定义了静态变量t=3,因此,在主函数中调用函数劬 (a, &x)时,就是将数组 a中前 4个元素逆置赋给数组 x,最后输出 x数组。 36 【正确答案】 D 【试题解析】 在 C语言中,一个整型变量占用 4个字节的内存单元,并按整型数的存储方式存放数据,允许存放的数值范围是: -2147483648 2147483647。所以在这个题目中定义的宏变量 MAx的值就是整数范围内最大的数值,因而对于任意一个整数来说,其值都比 max小,而判断最小值,是当找到的数比 min小时,才交换。 37 【正确答案】 C 【试题解析】 程序首先将指针 p指向结构体数组 aa的首

43、地址,通过 p- x引用了结构体数组 aa0的第一个成员 2; +(p- x)是将 p- x的值加 1,所以输出结果为 3。 38 【正确答案】 B 【试题解析】 本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。在本题中 student这个结构体中包含了结构体 s。所以对结构体变量 w中 grde1成员的引用是 w s grade1或 w- s- grade1。 39 【正确答案】 B 【试题解析】 本题考查的是 位运算符的应用。 x和 y写成二进制表示分别为x=00000011, y=00000110,由于左移位运算符 “ ”的优先级高于按位异或运算符 “”,

44、左移两位后 y 2=00011000,此结果和 x按位异或后 xy2=00011011。 40 【正确答案】 B 【试题解析】 本题考查函数 fwrite的使用。函数 fwrite的调用形式为: int fwrite(char*pt, unsigned n, FILE*fp):其功能是把 pt所指向的 n*size个字节输出到 fp所指文件中,第二次调用该函数时,从文件 的第一个位置开始写入,之前已有的会被覆盖掉,如果第二次写入的长度没有第一次的长,则后面短出的部分保留原样。 二、程序填空题 41 【正确答案】 (1)N (2)i (3)-1 【试题解析】 第一空: “for(i=0; i _

45、1_; i+)”补充循环的结束条件, fun的参数 (*ss)M是指向 N行 M列的字符串数组,循环是逐行查找是否存在 t所指的字符串,因此循环次数是 N次,故第一空处应为 “N”。第二空: “if(strcmp(ssi,t=0)return_2_; ”说明两个字符串相 同,按照题干要求,应返回该串在字符串数组中的位置 i,故第二空处为 “i”。第三空: “if(n=_3_)printf(“ nDontt found! n“); ”, fun函数未找到则返回 -1,因此这里是判断 n是否等于 -1,如果n等于 -1标识没有找到,在屏幕上输出 “Dont found!”因此第三空处为 “-1”。

46、 三、程序修改题 42 【正确答案】 (1)k+; (2)if(m=k)素数是只能被 1和本身整除的正整数 ( 1),所以判别 n是否为素数,只要有一次相除余数为 0, n就不是素数,否则 n为 素数 c。 【试题解析】 (1)第一个标识下 “k+”语句没有结束符分号,所以将 “k+”改为“k+”。 (2)第二个标识下的 “if(m=k)”语句应该是判断 m是否素数,而原题中是将 k的值赋给 m,并不表示是否 m等于 k,所以第二个标识下 “if(m=k)”应该改为“if(m=mk)”; 四、程序设计题 43 【正确答案】 int i, j=0, min=a0 s; for(i=0; i N; i+) if(min ai s) j=0; bj+=ai; min=ai s; else if(min=ai s) bj+=ai; return j; 【试题解析】 (1)要把最低分数的学生数据放在数组中,首先求出最低分数,再使用一个 for循环把所有的成绩进行比较,找出最低的分数来。 (2)找出所有与最低分数相等的学生,并将最低分数的人数累加。

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

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

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