[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编18及答案与解析.doc

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

1、国家二级( C语言)机试历年真题试卷汇编 18及答案与解析 一、选择题 1 下列叙述中错误的是 ( )。 ( A)算法的时问复杂度与算法所处理数据的存储结构有直接关系 ( B)算法的空间复杂度与算法所处理数据的存储结构有直接关系 ( C)算法的时间复杂度与空间复杂度有直接关系 ( D)算法的时间复杂度与算法程序执行的具体时间是不一致的 2 在满足实体完整性约束的条件下 ( )。 ( A)一个关系中应该有一个或多个候选关键字 ( B)一个关系中只能有一个候选关键字 ( C)一个关系中必须有多个候 选关键字 ( D)一个关系中可以没有候选关键字 3 下面描述中,不属于软件危机表现的是 ( )。 (

2、 A)软件过程不规范 ( B)软件开发生产率低 ( C)软件质量难以控制 ( D)软件成本不断提高 4 下列各项中不属于需求分析阶段任务的是 ( )。 ( A)确定软件系统的功能需求 ( B)确定软件系统的性能需求 ( C)需求规格说明书评审 ( D)制定软件集成测试计划 5 待排序的关键码序列为 (15, 20, 9, 30, 67, 65, 45, 90),要按关键码值递增的顺序排序,采取简单选择排序 法,第一趟排序后关键码 15被放到第 ( )个位置。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 6 构成计算机软件的是 ( )。 ( A)源代码 ( B)程序和数据 ( C)程

3、序和文档 ( D)程序、数据及相关文档 7 在黑盒测试方法中,设计测试用例的主要根据是 ( )。 ( A)程序内部逻辑 ( B)程序外部功能 ( C)程序数据结构 ( D)程序流程图 8 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( )。 ( A)外模式 ( B)内模式 ( C)概念模式 ( D)逻辑模式 9 在关系模型中,每一个二维表称为一个 ( )。 ( A)关系 ( B)属性 ( C)元组 ( D)主码 (键 ) 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( )。 ( A)自然连接 ( B)交 ( C)除 ( D)并 11 以下叙述

4、中正确的是 ( )。 ( A)我们所写的每条 C语句,经过编译最终都将转换成二进制的机器指令 ( B)程序必须包含所有三种基本结构才能成为一种算法 ( C)如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确 表达 ( D)只有简单算法才能在有限的操作步骤之后结束 12 以下叙述中正确的是 ( )。 ( A)计算机只接收由 0和 1代码组成的二进制指令或数据 ( B)计算机只接收由 0和 1代码组成的十进制指令或数据 ( C)计算机可直接接收并运行 C源程序 ( D)计算机可直接接收并运行任意高级语言编写的源程序 13 以下叙述中错误的是 ( )。 ( A) C程序在运行过程中所有

5、计算都以十进制方式进行 ( B) C程序在运行过程中所有计算都以二进制方式进行 ( C)所有 C程序都需要编译链接无误后才能运行 ( D) C程序中字符变量存放的是字符的 ASCII值 14 若有定义语句: int a=3, b=2, c=1; 以下选项中错误的赋值表达式是 ( )。 ( A) a=(b=4)+c; ( B) a=b=c+1; ( C) a=(b=4)=3; ( D) a=1+(b=c=4): 15 有以下程序: #include main() int x, y, z; x=y=1; z=x+; y+; +y; printf(“ d d d n“, x, y, z); 程序运行

6、后的输出结果是 ( )。 ( A) 2 3 2 ( B) 2 3 3 ( C) 2 3 1 ( D) 2 2 1 16 以下选项中,合法的实数是 ( )。 ( A) 4 5E2 ( B) E1 3 ( C) 7 11E ( D) 1 2E1 2 17 以下能正确输出字符 a的语句是 ( )。 ( A) printf(“ s“, “a“); ( B) printf(“ s“, a); ( C) printf(“ c“, “a“); ( D) printf(“ d“, a); 18 有以下程序段: int m=33, n=66; m=m n; n=n m; m=m n; 执行上述语句后, m和 n

7、的值分别是 ( )。 ( A) m=66, n=33 ( B) m=33, n=66 ( C) m=66, n=66 ( D) m=33, n=33 19 有以下程序段,若变量已正确定义并赋值 if(ab)printf(“x= d“, x); else printf(“y= d“, y); if(a main() int x: for(x=5; x0; x一一 ) if(x一一 main() char b, c; int i; b=a; c=A; for(i=0; i main() int y=9; for(; y0; y一一 ) if(y 3=0) printf(“ d”,一一 y); 程序

8、的运行结果是 ( )。 ( A) 875421 ( B) 963 ( C) 741 ( D) 852 23 下列叙述中正确的是 ( )。 ( A)可以用关系运算符比较字符串的大小 ( B)空字符串不占用内存,其内存空间大小是 0 ( C)两个连续的单引号是合法的字符常量 ( D)两个连续的双引号是合法的字符串常量 24 以下叙述中正确 的是 ( )。 ( A)语句 int a3=1, 2, 4, 5;是错误的初始化形式 ( B)语句 int a43=1, 2, 4, 5;是错误的初始化形式 ( C)在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 ( D)语句 int a43=1, 2

9、, 4, 5;是错误的初始化形式 25 在以下给出的表达式中,与 while(E)中的 (E)不等价的表达式是 ( )。 ( A) (E=0) ( B) (E 0 E 0) ( C) (!E=0) ( D) (E!=0) 26 有以下程序: #include void main() char ch80=“123abcdEFG“: int j; long s=0; puts(ch); for(j=0; chj 0; j+) if(chi=A chj main() int i, j=0; char a=“How are you“, b10=0; for(i=0; ai; i+) if(ai=) b

10、j+=ai+1; printf(“ s n“, b); 程序运行后的输出结果是 ( )。 ( A) ay ( B) How are you ( C) we ( D) Hay 30 以下关于字符串的叙述中正确的是 ( )。 ( A) C语言中有字符串类型的常量和变量 ( B)两个字符串中的字符个数相同时才能进行字符串大小的比较 ( C)可以用关系运算符对字符串的大小进行比较 ( D)空串比空格打头的字符串小 31 有以下程序: #include void fun(int *s) static int j=0; do sj+=sj+1; while(+j main() int a10=11, 12

11、, 13, 14, 15, 16, 17, 18, 19, 20, *p=a, i=9; printf(“ d d d n“, apa, pi, *(&ai); 程序运行后的输出结果是 ( )。 ( A) 11 20 20 ( B) 12 20 20 ( C) 11 19 19 ( D) 12 19 20 33 有以下程序: #include #include void fun(double *p1, double*p2, double *s) s=(double *)calloc(1, sizeof(double); *s=*p1+*(p2+1); main() double a2=1 1,

12、 2 2, b2=10 0, 20 0, *s=a; fun(a, b, s); printf( “ 5 2f n“, *s); 程序的输出结果是 ( )。 ( A) 11 10 ( B) 1 10 ( C) 12 10 ( D) 21 10 34 设 fp为指向某 二进制文件的指针,且已读到此文件末尾,则函数 feof(fp)的返回值为 ( )。 ( A)非 0值 ( B) 0 ( C) 0 ( D) NULL 35 以下叙述中正确的是 ( )。 ( A)如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息 ( B)即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可

13、以不同 ( C)设变量 p是一个指针变量,则语句 p=0;是非法的,应该使用 p=NULL; ( D)指针变量之间不能用关系运算符进行比较 36 若要使用 C数学库中的 sin函 数,需要在源程序的头部加上 #include math h。关于引用数学库,以下叙述中正确的是 ( )。 ( A)将数学库中 sin函数的源程序插入到引用处,以便进行编译链接 ( B)将数学库中 sin函数链接到编译生成的可执行文件中,以便能正确运行 ( C)通过引用 math h文件,说明 sin函数的参数个数和类型,以及函数返回值类型 ( D)实际上,不引用 math h文件也能正确调用 sin函数 37 有以下

14、程序: #include main() char x=2, y=2, z; z=(y1); printf(“ d n“, z); 程序的输出结果是 ( )。 ( A) 4 ( B) 1 ( C) 0 ( D) 8 38 以下关于宏的叙述错误的是 ( )。 ( A)宏替换不具有计算功能 ( B)宏是一种预处理指令 ( C)宏名必须用大写字母构成 ( D)宏替换不占用运行时间 39 有以下程序: #include struct sint a; int b; ; main() struct s a, *p=&a; a a=99; printf(“ d n“, _); 程序要求输出结构体中成员 a的数

15、据,以下不能填入横线处的内容是 ( )。 ( A) a a ( B) *p a ( C) p一 a ( D) (*p) a 40 若有以下程序: #include struct sint a; int b; ; main() FILE *fp; int i, a6=1, 2, 3, 4, 5, 6, k; fp=fopen(“data dat“, “w+“); for(i=0; i6; i+) fseek(fp, 0L, 0); fprintf(fp, “ d n“, ai); rewind(fp); fscanf(fp, “ d“, &k); fclose(fp); printf(“ d n

16、“, k); 则程序的输出结果是 ( )。 ( A) 123456 ( B) 1 ( C) 6 ( D) 21 二、程序填空题 41 下列给定程序中,函数 fun的功能是:统计所有小于等于 n(n 2)的素数的个数,素数的个数作为函数值返回。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h int fun(int n) int i, j, count=0; printf(“The prime number between 3 to d n“, n); for(i=3; i =n

17、; i+) *found* for(【 1】; j i; j+) *found* if(【 2】 j=0) break; *found* if(【 3】 =i) count+: printf(count 15? “ 5d“: “ n 5d“, i); return count; main() int n=20, r; r=fun(n); printf(“ nThe number of prime is: d n“, r); 三、程序修改题 42 下列给定程序中,函数 fun的功能是:用选择法对数组中的 n个元素进行升序排列。 请修改程序中的错误,使它能得出正确的结果。 注意:不得增行和删行,也

18、不得更改程序的结构 ! 试题程序: #include stdio h #define N 20 void fun(int a, int n) int i, j, t, p; for(j=0; j n一 1; j+) *found* p=j for(i=j; i n; i+) if(ai ap) *found* p=j; t=ap; ap=aj; aj=t; main() int aN=9, 6, 8, 3,一 1, i, m=5; printf(“排序前的数据: “); for(i=0; i m; i+) printf(“ d“, ai); printf(“ n“); fun(a, m); p

19、rintf(“排序后的数据: “); for(i=0; i m; i+) printf(“ d“, ai); printf(“ n“); 四、程序设计题 43 请编写函数 fun,其功能是:计算并输出下列多项式的值, S=(11 2)+(1 31 4)+(1 (2n一 1)一 1 2n) 例如,若主函数从键盘给 n输入 8后,则输出为 S=0 662872。 注意:要求 n的值大于 1但不大于 100。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio h double fun(int n) main()

20、 int n; double s; void NONO(); printf(“Input n: “); scanf(“ d“, &n); s=fun(n): printf(“ ns= f n“, s); NONO(); void NONO() int n, i; double s; for(i=0; i 10; i+) s=fun(n); 国家二级( C语言)机试历年真题试卷汇编 18答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量。数据的存储结构直接决定数据输入,而这会影响算法 所执行的基本运算次数, A项正确。算法的空间复杂度是指执

21、行这个算法所需要的内存空间,其中包括输入数据所占的存储空间, B项正确。而算法的时间复杂度与空间复杂度没有直接关系, C项错误。算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节所影响,而算法的时间复杂度与这些因素无关,所以是不一致的, D项正确。 2 【正确答案】 A 【试题解析】 实体完整性约束要求关系的主键中属性值不能为空值,因此本题答案为 A。 3 【正确答案】 A 【试题解析】 软件危机主要表现在:软 件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的

22、发展和应用需求的增长。因此本题答案为 A。 4 【正确答案】 D 【试题解析】 需求分析阶段的工作包括:需求获取、需求分析、编写需求规格说明书、需求评审,因此本题答案为 D。 5 【正确答案】 B 【试题解析】 简单选择排序的算法可以描述为:前面的元素己经有序,扫描剩下的线性表,找到最小的元素,将它交换到剩余表的最前面,直到剩余表为空。所以第 一趟排序后,将选出的最小元素与 15交换, 15被放在第 3个位置。 6 【正确答案】 D 【试题解析】 计算机软件的定义为:与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。答案选 D。 7 【正确答案】 B 【试题解析】

23、黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能规格说明,因此本题答案为 B。 8 【正确答案】 B 【试题解析】 数 据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据库的物理存储结构与物理存取方法,因此本题答案为 B。 9 【正确答案】 A 【试题解析】 关系模型采用二维表来表示,一个二维表表示一

24、个关系。 10 【正确答案】 C 【试题解析】 如果 T=R S,则 T称为 R除以 S的商。在除运算中, T的域由 R中那些不出现在 S中的域所组 成,对于 T中的任一有序组,由它与关系 S中每个有序组所构成的有序组均出现在关系 R中。因此本题选择 C。 11 【正确答案】 A 【试题解析】 顺序、选择、循环是 C语言程序的三个基本结构,一个 C语言算法可以由其中一种或者多种构成,选项 B错误;三种基本结构能解决所有的问题,而且 C语言只能有这三种结构,选项 C错误; C语言算法的特点之一就是有穷性,任何一个算法都必须能在有限的操作步骤之后结束,选项 D错误; C语言程序编译时将每条可执行语

25、句转换为二进制的机器指令,答案选 A。 12 【正确答案】 A 【试 题解析】 二进制数中只有两个字符 0和 1,表示具有两个不同稳定状态的元器件。例如,电路中有无电流,有电流用 1表示,无电流用 O表示。类似的还比如电路中电压的高低,晶体管的导通和截止等;二进制数运算简单,大大简化了计算中运算部件的结构,故选项 A正确。 13 【正确答案】 A 【试题解析】 C程序在运行过程中,所有计算都以二进制方式进行。 14 【正确答案】 C 【试题解析】 b=4不能作为左值, (b=4)=3出现编译错误。 15 【正确答案】 C 【试题解析】 考查逗号表达式。逗 号表达式的计算过程是分别计算所有表达式

26、的值,并把最后一个表达式的值作为整个逗号表达式的值。 x=y=1;将 x、 y初始化为 1,逗号表达式 z=x+, y+, +y;中先计算 z=x+,得到 x=2, z=1,计算y+,得 y=2,再计算 +y,得 y=3。所以最终结果为 x=2, y=3, z=1,答案选 C。 16 【正确答案】 A 【试题解析】 实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。十进制小数形式由数字和小数组成,必须有小数点,且小数点的位置不受限制。指数形式由十进制 数加阶码标志 “e”或 “E”以及阶码 (只能为整数,可以带符号 )组成。 4 5E2为指数形式实数, A项正确

27、。 E1 3阶码标志前缺少十进制数,并且阶数不是整数, B项错误。 7 11E缺少阶数, C项错误。 1 2E1 2阶数不是整数, D项错误。 17 【正确答案】 A 【试题解析】 输出函数 printf()的一般形式为 “printf(“格式控制字符串 “,输出项1,输出项 2, )” ,输出项的形式要和格式控制字符串中的格式控制符保持一致, “ s”为输出字符串, “ c”为输出单个字符, “ d”为以十进制形式输出带符号 整数,答案选 A。 18 【正确答案】 A 【试题解析】 m=m n; n=n m; m=m n;语句实现了 m和 n的交换。故正确选项为 A。 19 【正确答案】 A

28、 【试题解析】 程序的逻辑是当 a b时,执行语句 “printf(“x= d“, x); ”和语句“j+; ”,否则执行语句 “printf(“y= d“, y); ”和语句 “i+; ”,由此答案选 A。 20 【正确答案】 B 【试题解析】 本题主要考查 if选择语句的嵌套和自加自减运算符的用法。其中x+和 x一一是先参与计算,再自加自减 。 x一 5时,判断 if条件 x一一 5,先比较 x 5是否成立,而 5 5显然不成立,此时 x自减 1即 4,执行 else后的语句,先输出 4,;然后 x再自加 1为 5,接着执行第 2次 for循环,此时经过 for循环中的 x一一后, x变为

29、 4 0,执行 if语句,由于 4 5,条件成立, x先自减 1为 3,然后执行 printf语句,输出 3,;接着执行第三次 for循环,经 x一一后, x值为 2 0,判断 2 5成立, x先自减为 1,然后输出 1,;接着执行第四次 for循环,经 x一一后, x值为 0,否循环表达式中判断条件 x 0不成立,结束本次循环。故最后输 出结果是 4, 3, 1,。 21 【正确答案】 B 【试题解析】 字符常量与其 ASCII码值一一对应,计算时一般用字符常量对应的 ASCII码参与运算,输出时会依据输出函数的不同决定输出是字符或者对应的ASCII码值。该程序的运算逻辑是, i从 0循环到

30、 5,若 i为奇数则输出 i+b; a+i对应的字符即小写字符,若 i为偶数则输出 i+c; A+i对应的字符即大写字符。答案选 B。 22 【正确答案】 D 【试题解析】 该程序的运行过程是 y从 9开始自减,每次判定 y是否能被 3整除,若是,则输出一一 y后的 值,能被 3整除的 y值分别为 9、 6、 3,所以答案选D。 23 【正确答案】 D 【试题解析】 A项错误,关系运算符不能比较字符串大小,可以用函数库中的字符串比较函数来比较字符串的大小; B项错误,空字符串占用一个字节的内存; C项错误,字符常量是用单引号把一个字符括起来。 D项正确,两个连续的双引号是一个字符串常里,称为空

31、串。 24 【正确答案】 C 【试题解析】 考查二维数组的初始化。初始化二维数组的时候可以对其部分元素赋初值,选项 B错。还可以对数组的全部元素赋初值,此时第一维的元素个数可以不 指定,也可以分行赋值,只对部分元素赋初值,选项 A、 D错。 C的描述正确,答案选 C。 25 【正确答案】 A 【试题解析】 E为 0, while条件为假,而 E为 0, (E=0)为真,所以选择 A。 26 【正确答案】 D 【试题解析】 程序中的 for循环用来控制输出数组 ch中的单个字符, if条件语句用来判断该字符是否是大写字母,如果是,则执行语句 chj=chj+a一 A;,该语句的功能是把大写字母转

32、换为小写字母;如果不是,则原样输出字符。故本题中程序的功能是将字符数组 ch中的大写字 母转换成小写字母。 27 【正确答案】 D 【试题解析】 定义一维数组 (没有初始化 )时,数组的维数需为常量或者常量表达式,不可以用变量,更不可以省略,所以答案选 D。 28 【正确答案】 B 【试题解析】 调用函数的时候只有保证调用语句的函数名和被调函数的函数名、参数列表一致才能保证调用的正确性, B正确。 C语言对大小写敏感,选项 A错。用户自定义的函数名需要遵循用户标识符的命名规则,由字母、数字、下画线组成,并且第一个字符不能为数字,选项 C错。一个函数每次只能使用一个return语句,但是该 函数

33、体中可以有多个返回点,也就是有多条 return语句,每次只从其中一点返回,选项 D错。答案选 B。 29 【正确答案】 A 【试题解析】 本题的功能是:一旦出现空格,即把空格后面的字符输出。主要依据 if(ai=)bj+=ai+1;,即把数组 a中空格后的字符存放到数组 b中。 30 【正确答案】 D 【试题解析】 字符串比较的方法是:依次对 s1和 s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小 (比较字符大小的依据是其 ASCII码值 )。空格是一种字符,所以空串肯定比空格打头的字符串小。 31 【正确答案】 A 【试题解析】 主函数 ma

34、in()中第一个 for循环中共调用函数 fun()两次:第一次调用时, do一 while循环的循环体执行两次,结束后 a10=(3, 5, 3, 4, 5),静态变量 j=2,由于静态变量定义时的初始化只运行一次,所以第二次调用时, j保留第一次调用结束时的值 2, do一 while循环执行一次,结束后 a10=3, 5, 7,4, 5,所以第二个 for循环输出数组 a下标范围为 1到 4之间的元素,所以答案选 A。 32 【正确答案】 A 【试题解析】 a表示数组 a的第一个元素的地址, *p=a则将 p指向了数组 a的第一个元素的地址, pa=0,所以 apa即为 a0, pi相当

35、于 ai即 a9,输出第一个结果为 11、第二个结果为 20。取地址运算符 &和取值运算符 *互为逆运算,所以 *(&ai)的值仍为 ai即 a9,输出第三个结果为 20,答案选 A。 33 【正确答案】 B 【试题解析】 函数 fun()的功能是用 calloc()函数重新分配了 1个长度为sizeof(double)的连 续空间,并把返回的内存地址赋值给 s,之后往新分配的内存中写入数据。由于函数传递过程中形参指针指向的变化不能影响到实参指针的指向,所以函数 fun()并不能改变 s的指向, *s与 a0等价,格式输出的结果为1 10,答案选 B。 34 【正确答案】 A 【试题解析】 本

36、题考查的是文件指针 feof的运用。当文件读到结尾时, feof(fp)为非零值,否则为 0。 35 【正确答案】 A 【试题解析】 空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存储单元, A正确。指针的赋值运算只能在同一 数据类型之间进行,故选项 B错。语句 p=0和 p=NULL是一样的,都是把一个空指针赋给指针变量 p,故选项C错。指针之间能进行关系运算,比较的是地址值的大小,选项 D错。答案选A。 36 【正确答案】 C 【试题解析】 考查文件包含处理。文件包含命令的功能是把指定的文件添加到预处理部分,从而把指定的文件和当前的源程序文件连接起来,该文件则包含了程序要调用的

37、函数的声明。由此,选项 A、 B、 D表述错误。答案选 C。 37 【正确答案】 C 【试题解析】 x、 y的 ASCII码为 2,对应二进制为 0010, y 1的结果为0100, x 1的结果为 0001,而 0100&0001的结果为 0,所以答案选 C。 38 【正确答案】 C 【试题解析】 宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母。 39 【正确答案】 B 【试题解析】 本题考查指针变量的引用。有三种引用方式: 结构体变量成员名; (*p)成员名; p一成员名。题目中要求输出结构体中成员 a的数据,p为指针, *p为结构体变量,所以 *p a不能引用结

38、构体中成员 a的数据。故 B选项错误。 40 【正确答案 】 C 【试题解析】 本题考查文件操作函数, fseek用于二进制方式打开的文件,并移动文件,读写指针位置。将文件内部的位置指针重新指向一个流 (数据流文件 )的开头,所以最后只保留了 6。故 C选项正确。 二、程序填空题 41 【正确答案】 (1)j=2 (2)i (3)j 【试题解析】 填空 1: j的初始化要从 2开始,因为要判断一个数是否为素数,即将其除以从 2开始的数字,看有没有被整除的。 填空 2:如果碰到有个数字 j可以被 i整除,那么表示这个数不是素数,要用break直接 结束循环,这个时候的 j肯定小于 i。 填空 3

39、: j =i,表示在上面 if(i j=0)没有成功,所以会循环执行 for(j=2; ji; j+),以致最后 j =i,这样可以知道该数字 i就是素数。 三、程序修改题 42 【正确答案】 (1)p=j; (2)p=i; 【试题解析】 本题考查:选择法排序。 (1)这里是一个语法错误,缺少一个 “; ”号。 (2)p用来存放进行比较的两个数组元素中,较小元素的下标,因此此处应为p=i。 四、程序设计题 43 【正确答案】 double fun(int n) int i; double s=0 0; for(i=1; i =n; i+) s=s+(1 0 (2*i一 1)一 1 0 (2*i); *计算 S=(11 2)+(1 31 4)+(1 (2n一 1)一 1 2n)* return s; 【试题解析】 对于求多项式值的题目,一般都使用循环语句来累加计算多项式的通项。本题中多项式的通项为 1 (2n一 1)一 1 2n,循环变量的取值范围为 1n。注意,存放累加和的 变量 s要定义为实型,累加时要进行类型转换。

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

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

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