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

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

1、国家二级( C语言)机试模拟试卷 115及答案与解析 一、选择题 1 有以下程序: #include #define N 4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii; main() int xN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, yN, i; fun(x, y); for(i=0; i N; i+)pfintf(“ d, , yi); pfintf(“ n“); 程序运行的结果是 ( )。 ( A) 1, 2, 3, 4, ( B) 1, 0, 7, 0, ( C) 1, 4, 5, 9, ( D

2、) 3, 4, 8, 0, 2 有以下程序: #include main() char a=4; printf(“ d n“, a=a 1); 程序运行的结果是 ( )。 ( A) 40 ( B) 16 ( C) 8 ( D) 4 3 一个栈的初始状态为空。现 将元素 1、 2、 3、 4、 5、 A、 B、 C、 D、 E依次入栈,然后再依次出栈,则元素出栈的顺序是 ( )。 ( A) 12345ABCDE ( B) EDCBA54321 ( C) ABCDE12345 ( D) 54321EDCBA 4 有以下程序: #include struct st int x, y; data2=1

3、, 10, 2, 20; main() struct st*p=data; printf(“ d, “, P- Y); printf(“ d n“, (+P)- x); 程序运行的结果是 ( )。 ( A) 10, 1 ( B) 20, 1 ( C) 10, 2 ( D) 20, 2 5 在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 ( )。 ( A) O(n) ( B) O(n2) ( C) O(log2n) ( D) O(nlog2n) 6 假定已建立以下数据链表结构,且指针 p和 q已指向如下图所示的结点:则以下选项中可将 q所指结点从链表中删除并释放该结点的语句是

4、 ( )。 ( A) (*)p next=(*q) next; free(p) ( B) b=q- next; free(q) ( C) p=q; free(q) ( D) P- next=q- next; free(q) 7 有以下程序段: int a, b, C; a=10; b=50; C=30; if(a b)a=b, b=c; c=a; printf(“a= d b= d c= d“, a, b, c); 程序的输出结果是 ( )。 ( A) a=10 b=50 C=10 ( B) a=10 b=50 C=30 ( C) a=10 b=30 C=10 ( D) a=10 b=30 C

5、=50 8 有以下程序: #include int fun(int(*s)4, int n, int k) int m, i; m=s0k; for(i=1; i n; i+)if(sik m)m=sik; return m; main() int a 44=1, 2, 3, 4, 11, 12, 13, 14, 21, 22, 23, 24, 31,32, 33, 34; printf(“ d n“, fun(a, 4, 0); 程序运行的结果是 ( )。 ( A) 4 ( B) 34 ( C) 31 ( D) 32 9 有以下程序: #include main() int i=5; do

6、if(i 3=1) if(i 5=2) printf(“* d“, i); break; i+: while(i! =0); printf(“ n“); 程序运行的结果是 ( )。 ( A) *7 ( B) *3*5 ( C) *5 ( D) *2*6 10 有以下程序: #include #include int fun(int n) int*p; p=(int*)malloc(sizeof(int); *p=n; return*p; main() int a; a=fun(10); printf(“ d n“, a+fun(10); 程序运行的结果是 ( )。 ( A) 0 ( B) 10

7、 ( C) 20 ( D)出错 11 有以下程序: #include main() int x=1, y=2, z=3; if(x y) if(y z)printf(“ d“, +z); else printf(“ d“, +y); printf(“ d n“, x+); 程序运行的结果是 ( )。 ( A) 3 3 1 ( B) 4 1 ( C) 2 ( D) 1 12 若有定义语句: double x5=1 0, 2 0, 3 0, 4 0, 5 0, *p=x,则错误引用 x数组元素的是 ( )。 ( A) *p ( B) x5 ( C) *(p+1) ( D) *x 13 有以下程序:

8、 #include void fun(int a, int b) int t; t=a; a=b; b=t; main() int c10: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, i; for(i=0; i 10; i+=2)fun(ci, ci+1); for(i=0; i 10; i+)printf(“ d, “, ci); printf(“ n“); 程序运行的结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 ( B) 2, 1, 4, 3, 6, 5, 8, 7, 0, 9 ( C) 0, 9, 8, 7, 6, 5, 4, 3

9、, 2, 1 ( D) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 14 以下关于宏的叙述中正确的是 ( )。 ( A)宏名必须用大写字母表示 ( B)宏定义必须位于源程序中所有语句之前 ( C)宏替换没有数据类型限制 ( D)宏调用比函数调用耗费时间 15 在面向对象方法中,不属于 “对象 ”基本特点的是 ( )。 ( A)一致性 ( B)分类性 ( C)多态性 ( D)标识惟一性 16 有以下程序: #include void fun(int a, int n) int i, t; for(i=0; i n 2; i+)t=ai; ai=an 1 i; an 1 i=t; m

10、ain() int k10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; fun(k, 5); for(i=2; i 8; i+)printf(“ d“, ki); printf(“ n“); 程序运行的结果是 ( )。 ( A) 3456787 ( B) 876543 ( C) 1098765 ( D) 321678 17 C源程序中不能表示的数制是 ( )。 ( A)二进制 ( B)八进制 ( C)十进制 ( D)十六进制 18 有以下程序: #include int fun(int a, int b) if(b=0)return a; else return(fun

11、(-a, -b); main() printf(“ d n“, fun(4, 2); 程序运行的结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 19 计算机能直接执行的程序是 ( )。 ( A)源程序 ( B)目标程序 ( C)汇编程序 ( D)可执行程序 20 以下叙述中错误的是 ( )。 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 ( C)用户定义的函数中若没有 return语句,则应当定义函数为 void类型 ( D)函数的 return语句中可以没有表达式 21 若有

12、定义语句: char s10=“1234567 0 0“;,则 strlen(s)的值是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 22 执行以下程序段后, w的值为 ( )。 int w=A, x=14, y=15; w=(x y)&(w a); ( A) 1 ( B) NULL ( C) 1 ( D) 0 23 有以下程序: #include main() int i, j; for(i=3; i =1; i-) for(j=1; j =2; j+)printf(“ d“, i+j); prinTf(“ n“); 程序运行的结果是 ( )。 ( A) 2 3 4

13、3 4 5 ( B) 4 3 2 5 4 3 4 5 ( C) 2 3 3 4 2 3 ( D) 4 5 3 4 2 3 24 以下选项中正确的定义语句是 ( )。 ( A) double a; b; ( B) double a=b=7; ( C) double a=7, b=7; ( D) double, a, b; 25 一间宿舍可住多个学生,则实体宿舍和学生之间的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 26 以下选项中不能作为 C语言合法常量的是 ( )。 ( A) cd ( B) 0 1e+6 ( C) a ( D) 011 27 数据流图中带

14、有箭头的线段表示的是 ( )。 ( A)控制流 ( B)事件驱动 ( C)模块调用 ( D)数据流 28 若变量已正确定义为 int型,要通过语句 scanf(“ d, d, d“, &a, &b,&c);给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (u代表一个空格 )( ). ( A) uuu1, 2, 3 ( B) lu2u3 ( C) 1, uuu2, uuu3 ( D) 1, 2, 3 29 如有表达式 (w)?( x): (+y),则其中与 w等价的表达式是 ( )。 ( A) w=1 ( B) w=0 ( C) w! =1 ( D) w! =0 30 软

15、件开发中,需求分析阶段可以使用的工具是 ( )。 ( A) N-S图 ( B) DFD图 ( C) PAD图 ( D)程序流程图 31 在数据管理技术发展的三个阶段中,数据共享最好的是 ( )。 ( A)人工管理阶段 ( B)文件系统阶段 ( C)数据库系统阶段 ( D)三个阶段相同 32 下列叙述中正确的是 ( )。 ( A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 ( B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化 ( C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化 ( D)循环队列中元素的个数由队头指针和队映尾指针共同决定 33 有三个关系 R

16、、 S和 T如下 : 由关系 R和 S通过进行运算得到关系 T,则所使用的运算为 ( )。 ( A)笛卡尔积 ( B)交 ( C)并 ( D)自然连接 34 下面的函数调用语句中 func函数的实参个数是 ( )。 func(f=! (v1, v2), (v3, v4, v5), (v6, max(v7, v8) ( A) 3 ( B) 4 ( C) 5 ( D) 8 35 以下不能正确表示代数式 的 C语言表达式是 ( )。 ( A) 2*a*b c d ( B) a*b c d*2 ( C) a c d*b*2 ( D) 2*a*b c*d 36 以下叙述中正确的是 ( )。 ( A) C

17、程序的基本组成单位是语句 ( B) C程序中的每一行只能写一条语句 ( C)简单 C语句必须以分号结束 ( D) C语言必须在一行内写完 37 若有定义语句: int m=5, 4, 3, 2, 1, i=4;,则下面对 m数组元素的引用中错误的是 ( )。 ( A) m-i ( B) m2*2 ( C) mm0 ( D) mmi 38 有以下程序: #include main() struct STU char name9; char sex; double score2; ; struct STU a=“Zhao“, m, 85 0, 90 0, b=“Qian“, f, 95 0, 92

18、 0; b=a; printf(“ s, c, 2 Of, 2 Of n“, b name, b sex, b score0,b score1); 程序运行的结果是 ( )。 ( A) Qian, f, 95, 92 ( B) Qian, f, 85, 90 ( C) Zhao, f, 95, 92 ( D) Zhao, m, 85, 90 39 有以下程序: #include main() FILE*pf; char*s1=“China“, s2=“Beijing“; pf=fopen(“abc dat, “wb+“); fwrite(s2, 7, 1, pf); rewind(pf); *

19、文件位置指针回到文件开头 * fwrite(s1, 5, 1, pf); fclose(pf); 以上程序执行后 abc dat文件的内容是 ( )。 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 40 下列叙述中正确的是 ( )。 ( A)顺序存储结构的存储空间一定是连续的,链式存储结构的存储空间不一定是连续的 ( B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 ( C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 ( D)链式存储结构比顺序存储结构节省存储空间 二、程序填空题 41 下列给定的程

20、序中,函数 fun()的功能是:求出以下分数序列的前 n项和。 21, 3 2, 5 3, 8 5, 13 8, 21 13, 和值通过函数值返回 main()函数。例如,若输入 n=5,则应输出 8 391667。 注意: 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的横线上填入所编写的若干表达式或语句。 【试题源程序】 #include #include double fun(int n、 ) int a=2, b=1, c, k; double 【 1】 ; for(k=1; k =n; k+) s=s+1 0*a b: c=a; a+= 【 2】 ; b=c; re

21、turn(s); main() int n=5; printf(“ nThe value of function is: If n“, 【 3】 ); 三、程序修改题 42 下列给定程序中,函数 fun()的功能是:将 n个无序整数从小到大排序。请改正程序指定部位的错误,使它能得到正确结果。 注意: 不要改动函数 main(),不得增行或删行,也不得更改程序的结构。 【试题源程序】 #include #include void fun(int n, int*a) int i, j, P, t; for(j=0; j n 1; j+) P=j; *found* for(i=j+1; i n 1;

22、 i+) if(aP ai) *found* t=i; if(P! =j) t=aj; aj=ap; ap=t; void putarr(int n, int*z) int i; for(i=1; i =n; i+, z+) printf(“ 4d“, *z); if(! (i 10) printf(“ n“); printf(“ n“); void main() int aa20=9, 3, 0, 4, 1, 2, 5, 6, 8, 10, 7, n=11; printf(“ n nBefore sorting d numbers: n“, n); putarr(n, aa); fun(n,

23、 aa); printf(“ nAfter sorting d numbers: n“, n); putarr(n, aa); 四、程序设计题 43 学生的记录由学号和成绩组成, N名学生的数据已在主函数中放入结构体数组s中 ,请编写函数 fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意: 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 【试题源程序】 #include #define N 16 typedef struet char num10; int s; STREC; int fun(STREC a) main() ST

24、REC sN= “GA005“, 85, “GA003“, 76, “GA002“, 69, “GA004“, 85,“GA001“, 91, “GA007“, 72, “GA008“, 64, “GA006“, 87,“GAO15“, 85, “GA013“, 91, “GA012“, 64, “GA014“, 91,“GA011“, 66, “GA017“, 64, “GA018“, 64, “GA016“, 72 ; int i; FILE, *out; fun(s); printf(“The data after sorted: n“); for(i=0; i N; i+) if(i)

25、 4=0) printf(“ n“); printf(“ s 4d“, si num, si s); printf(“ n“); 国家二级( C语言)机试模拟试卷 115答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 数组 x有 4列。 fun函数中 for循环的作用是将二维数组的对角线元素赋给 b0, b1, b2, b3。在主函数中,二维数组初始化为 1, 2, 3,4, 5, 6, 7, 8, 9, 10,对角线元素为 1, 0, 7, 0。 2 【正确答案】 C 【试题解析】 移位运算符的优先级比赋值运算符优先级高,故语句 “a=a 1”先进行 a的二进制移位运算,左移一位

26、相当于原数乘以 2, a 1结果为 4*2=8,没有超过 char类型的范围,将 8赋值给 a,并输出 a的值。 3 【正确答案】 B 【试题解析】 栈是按照 “先进后出 ”的原则组织数据的,入栈的顺序为12345ABCDE,则依次出栈的顺序应为其逆序,即 EDCBA54321。 4 【正确答案】 C 【试题解析】 程序定义了结构体数组 data,初值为 data0=1, 10,data1=2, 20。结构体指针 p指向数组的首地址,指向 data, 0, +p则指向data1,所以输出 p- y, (+p)- x即输出 data0 y和 data1 x。 5 【正确答案】 C 【试题解析】

27、二分查找的最坏情况需要不断的二分直至无法再分。对于有序的线性表,二分查找法只需比较 log2n次。 6 【正确答案】 D 【试题解析】 删除结点 q,首先将 q的上一个结点 p的指针域指向 q的下一个结点,即 p- next=q- next,然后释放结点 q, free(q)。 7 【正确答案】 A 【试题解析】 a=10, b=50, a b, if语句判断条件不成立,执行 c=a,得到c=10, a和 b的值不变。 8 【正确答案】 C 【试题解析】 函数 fun通过数组指针引用二维数组,其作用是遍历 s1k sn 1k,找出二维数组第 k列的最大值。 9 【正确答案】 A 【试题解析 】

28、 在 do while循环中,总是先执行循环体后判断循环条件,所以循环体至少会被执行一次。在循环中,如果满足 (i 3=1)&(i 5=2)那么输出 i的值,退出循环;否则 i+,如果 i=0则跳出循环。 10 【正确答案】 C 【试题解析】 fun函数的功能是申请一个 int型指针 p,把 p指向的存储空间赋值为 n,并返回 n。 fun(10)的返回值为 10,所以 a=fun(10)后 a的值为 10,a+fun(10)=20。 11 【正确答案】 D 【试题解析】 else子句总是与前面最近的不带 else的 if相结合,与书写格式无关,所以程序中的 else语句与第二个 if语句配对

29、,且 if和 else都在第一个 if的控制范围内。首先判断 x y不成立,退出第一个 if语句,执行 printf(“ d n“,x+)。输出结果为 1。 12 【正确答案】 B 【试题解析】 直接引用一维数组元素的表达式为:数组名 下标 。数组大小为 n时,下标的取值范围为 0 (n 1),所以本题中 x的下标为 0 4, x5溢出, B项错误。还可以通过指针引用一维数组元素。指针 p指向该数组,所以 *p表示x0, A项正确;指针 p+1指向数组 x的第二个元素的地址, *(p+1)表示 x1, C项正确;数组名 x为 x数组元素的首地址, *x表示对 x0的引用, D项正确。 13 【

30、正确答案】 A 【试题解析】 函数 fun交换了参数值,但只是交换了形参的值,结果并不会传递给实参。所以数组 c没有发生变化,原样输出。 14 【正确答案】 C 【试题解析】 A项错误,宏名可以是任何合法的 C语言标识符,没有对大小写的强制性要求,只是习惯用大写字母表示; B项错误,宏定义可以根据需要写在任何位置; D项错误,宏调用在编译前由编译预处理程 序完成,不占用运行的时间。 15 【正确答案】 A 【试题解析】 对象的基本特点有: 标识惟一性,是指对象是可区分的; 分类性,是指可将具有相同属性和操作的对象抽象成类; 多态性,是指同一个操作可以是不同对象的行为; 封装性,是指对象的内部对

31、外不可见,在外面不可直接使用对象的处理能力,也不能直接修改对象的内部状态; 模块独立性,是指模块内部各部分及模块间的关系的一种衡量标准。 16 【正确答案】 D 【试题解析】 程序中函数 fun的作用是将数组 A的前 n个元素逆置, fun(k, 5)的结果是 数组 k的前五个元素 1、 2、 3、 4、 5变为 5、 4、 3、 2、 1。输出数组中第3个至第 8个元素。 17 【正确答案】 A 【试题解析】 C语言中整型常量可以用十进制、八进制数、十六进制数来表示。虽然计算机只能识别二进制数,但二进制不能用源程序表示。 18 【正确答案】 B 【试题解析】 fun函数是一个递归函数,其功能

32、是:当 b的值为零时,返回此时a的值;否则,返回 fun(-a, -b),即将 a和 b的值分别减 1后返回 fun(a, b)。当b不断递减时, a也不断递减,直到 b为零。执行过程为:执行 fun(4, 2), b=2,返回 fun(3, 1),此时 b=1,返回 fun(2, 0), b=0,返回 a的值 2。 19 【正确答案】 D 【试题解析】 源程序指代码程序,在经过编译器编译后形成目标程序,目标文件是二进制文件,需要经过链接,将所包含的头文件与自身的目标文件链接,最后形成可执行程序,才能被计算机执行。汇编程序是由汇编语言写成的程序,计算机不能直接执行。 20 【正确答案】 B 【

33、试题解析】 用户定义的函数有两种: void函数,可以没有 return语句,如果有 return语句,也不可以 返回任何表达式;、 指定返回类型函数,至少有一个返回语句。在一个函数内,可以根据需要在多处出现 return语句,但无论有多少个 return语句, return语句只会被执行一次然后退出函数,并且只能返回一个函数值。 21 【正确答案】 A 【试题解析】 C语言规定以字符 0作为字符串结束的标识符。 strlen函数返回的是字符串的长度,不包含字符 0,所以值是 7。 22 【正确答案】 C 【试题解析】 因为 x=14, y=15都是非零整数,因此 x y=1。大写字母的ASC

34、II码值小于 小写字母, w a也为真,因此 (x y)&(w a)的值为 1。 23 【正确答案】 D 【试题解析】 外层主循环 i从 3减到 1执行了 3次,嵌套的内层循环 j从 1增到2,执行 2次,每次输出 i+j的值,得到 3+1, 3+2, 2+1, 2+2, 1+1, 1+2。每次换行发生在外循环完成一次循环之后。 24 【正确答案】 C 【试题解析】 同一类型变量的定义时,不同变量之间需要用 “, ”分隔;定义变量时初始化赋值不能用等号连接;变量类型说明后面不能用逗号,而是用空格分离。 25 【正确答案】 B 【试题解析】 实体间的联系有如下情况: 一对一 (1: 1); 一对

35、多 (1: m); 多对多 (m: n)。本题中,一间宿舍对应多个学生,而一个学生能住在一间宿舍,那么宿舍和学生之间的联系是一对多,学生和宿舍的联系是多对一。 26 【正确答案】 A 【试题解析】 常量包括整型常量、实型常量、字符常量和字符串常量等。单引号表示字符常量,但不能包含字符串。表达字符串常量时需用双引号。 27 【正确答案】 D 【试题解析】 数据流图基本符号的含义: 矩形表示数据的外部实体; 圆角的矩形表示变换 数据的处理逻辑; 缺少右半边的矩形表示数据的存储; 箭头表示数据流。 28 【正确答案】 B 【试题解析】 scanf函数要求除格式控制符以外的字符都要原样输入。逗号是非格

36、式符,所以需要原样输入,否则就不能正确读人数据。 29 【正确答案】 D 【试题解析】 条件表达式形式为 ?: 。表达式 1的值为真,结果为表达式 2的值;表达式 1的值为假,结果为表达式 3的值。可见表达式 w等价于 w! =0。 30 【正确答案】 B 【试题解析】 结构化解析方法是结构 化程序设计理论在软件需求解析阶段的运用,数据流图 (Data Flow Diagram, DFD)是结构化解析常用的工具之一,数据字典、判定树和判定表也是常用的结构化分析工具。程序流程图、 NS图、 PAD图等图形工具用于详细设计的过程中。 31 【正确答案】 C 【试题解析】 数据库系统阶段实现了数据共

37、享,具有数据的集成性,这使得数据可被多个应用所共享,还可以极大地减少数据冗余性;在人工管理阶段,数据不保存,没有对数据进行管理的软件,数据不能共享;文件系统阶段是数据库系统发展的初级阶段,它提供了简单的 数据共享与数据管理能力,但是这种能力十分有限。 32 【正确答案】 D 【试题解析】 循环队列是顺序存储的线性结构,是队列常采用的形式,故 A项错误。循环队列中的元素是动态变化的:每一次人队,队尾指针就进一;每一次出队,队头指针就进一,所以队头指针和队尾指针一起反映了队列中元素的动态变化情况, BC两项错误。从队头指针指向的后一个位置与队尾指针指向的位置之间的元素即为队列中所有的元素,因此 D

38、项正确。 33 【正确答案】 D 【试题解析】 交和并运算要求关系 R和 s具有相同的属性, BC两项错误。 R与S的笛卡尔积是一个 4元关系,有 4个元素, A项错误。 R与 S有公共的属性 B,可通过公共属性的相等值进行连接,这种连接称之为自然连接。 34 【正确答案】 A 【试题解析】 函数调用中,实参之间应该用逗号分隔。本题中的实参有 3个,为f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8)。 35 【正确答案】 D 【试题解析】 *与优先级相同,采用左结合的方式。 D项计算的是代数式 的值。 36 【正确答案】 C 【试题解析】 C程序的基本组成单

39、位是函数, A项错误; C程序以分号作为每个语句结尾,一行能写多条语句,也可以将一条语句分几行书写, BD两项错误;简单 C语言语句必须以分号结束, C项正确。 37 【正确答案】 C 【试题解析】 数组的下标从零开始,数组 m中有 5个元素,所以数组 m即为m0=5, m1=4, m2=3, m3=2, m4: 1, C项, m0=5,引用数组元素为 m 5,溢出,引用错误。 38 【正确答案】 D 【试题解析】 在 C语言中,相同类型变量可以通过等号直接赋值,按照每个成员在结构体中的顺序一一对应赋初值,已知 a name=“Zhao“, a sex=f,a score0=85 0, a s

40、core1=90 0,则 b=a, b name: “Zhao“,b sex=m, b score0=85 0, b score1=90 0。 39 【正确答案】 B 【试题解析】 pf是一个文件指针, fopen(“abc dat“, “wb+“)执行后, pf指向可读写的二进制文件 abc dat。语句 fwrite(S2, 7, 1, pf);是将 s2的前 7*1个字符的内容写入 pf中,即 Beijing。 rewind(pf)是将文件位置指针移回到文件开头,语句 fwrite (s1, 5, 1, pf)是从文件的开头位置,将 s1的前 5*1个字符的内容写入,替换掉原来位置上的内

41、容,所以结果为 Chinang。 40 【正确答案】 A 【试题解析】 顺序存储结构中,所有元素在物理上连续,所以存储空间一定连续;链式存储结构中,所有元素在逻辑上连续,存储空间不一定连续。线性表可以采用顺序存储结构,也可采用链式存储结构;顺序存储结构和链式存储结构都是既可用于线性结构,也可以用于非线性结构。采用链式存储结构,不仅要存储元素的值,还需附加 字段表示元素间的逻辑关系,因此,链式存储结构需要更多的存储空间。 二、程序填空题 41 【正确答案】 【 1】 s=0 0 【 2】 b 【 3】 fun(n) 【试题解析】 填空【 1】:此处要对变量 s进行声明,因为后面有对 s的累加操作

42、,所以 s一定要进行初始化,即 s=0 0。 填空【 2】:此处是循环求和,由数列可以看出后一项分数的分子是前一项分母与分子之和,即 a=a+b或者 a+=b。 填空【 3】:此处进行子函数调用。 三、程序修改题 42 【正确答案】 (1)错误: for(i=i+1; i n 1; i+) 正确: for(i=j+1; i n; i+) (2)错误: t=i; 正确: p=i; 【试题解析】 错误 (1):选择排序法是在外循环中从第一个元素开始,依次与比它小的元素进行交换,直到交换完第 n 1个元素,最后一个元素就是最大的元素,循环次数为 n 1次,如果设定循环次数为 n次,则最后一次第 n个

43、元素与自己交换;内循环是找出比当前元素更小的元素,故是从当前需要交换的元素的下一个元素开始,直到第 n个元素。故 for(i=j+1; i n 1; i+)应改为 for(i=j+1; i n; i+)。 错误 (2): t是 fun函数中用来交换两个元素的辅助变量,不是交换元素下标的变量,因此 t=i;是错误的。 p是用来记录当前最小元素下标的,当 ap ai时,把i赋给 p。所以 “t=i; ”应改为 “p=i; ”。 四、程序设计题 43 【正确答案】 int fun(STREC a) STREC tmp; int i, j; for(i=0; i N; i+) for(j=i+1; j N; j+) if(ai s aj s) tmp=ai; ai=aj; aj=tmp; 【试题解析】 采用冒泡排序的方法,对结构体中按照成绩 s进行降序排列,将其结果仍存入当前结构体中。

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

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

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