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

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

1、国家二级( C语言)机试模拟试卷 139及答案与解析 一、选择题 1 软件的需求分析主要产生的文档是 ( )。 ( A)可行性分析报告 ( B)软件需求规格说明书 ( C)概要设计说明书 ( D)集成测试计划 2 以下哪一项不是结构化程序设计的基本原则 ?( ) ( A)多态性 ( B)自顶向下 ( C)模块化 ( D)逐步求精 3 软件设计中划分模块的基本准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 4 箭头线在流程图中的意思是 ( )。 ( A)函数关系 ( B)数据流 ( C)控制流 ( D)判断关系 5 计算机算法中有穷性的意

2、思是 ( )。 ( A)算法程序的运行时间是有限的 ( B)算法程序所处理的数据量是有限的 ( C)算法程序的长度是有限的 ( D)算法只能被有限的用户使用 6 对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n1) 2的排序方法是 ( )。 ( A)快速排序 ( B)冒泡排序 ( C)直接插入排序 ( D)堆排序 7 关于计算机术语中的栈,说法正确的是 ( )。 ( A)栈按 “先进先出 ”组织数据 ( B)栈按 “先进后出 ”组织数据 ( C)只能在栈底插入数据 ( D)不能删除数据 8 在数据库设计过程的哪个阶段,需要将 E一 R图转换成关系数据模型 ( )。 ( A)需求分析

3、阶段 ( B)概念设计阶段 ( C)逻辑设计阶段 ( D)物理设计阶段 9 有三个关系 R、 S和 T如下:由关系 R和 S通过运算得到关系 T,则所使用的运算为 ( )。 ( A)并 ( B)自然连接 ( C)笛卡尔积 ( D)交 10 在数据库设计中,有三张关于学生选课的数据表,分别是学生信息表 Stu(其中包括:学生的学 号,姓名,性别,年龄,身份证号 ),课程信息表 Cou(其中包括:课程代号,课程名称 ),选课信息表 SC(其中包括:学生的学号,课程代号,课程成绩 ),则表 SC的关键字 (键或码 )为 ( )。 ( A)课程代号,课程成绩 ( B)学号,课程成绩 ( C)学号,课程

4、代号 ( D)学号,姓名,课程成绩 11 关于 C语言程序设计,以下叙述中不正确的是 ( )。 ( A) C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 ( B) C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件 ( C)用 C语言编写的程序称为源程序,它以 ASC 代码形式存放在一个文本文件中 ( D) C语言源程序经编译后生成后缀为 obj的目标程序 12 以下关于 C语言数值常量的选项中,合法的是 ( )。 ( A) 12 0Xa23 4 5e0 ( B) 028 5e一 3一 0xf ( C) 177 4e1 5 0abc ( D) 0x8A

5、 10, 000 3 e5 13 若有定义: double d=68; int i=0, k=21;,则以下选项中不符合 C语言规定的赋值语句是 ( )。 ( A) i一 (d+k) =(i+k); ( B) i=d 3; ( C) d=(d+, i+); ( D) i=(int)! d; 14 若有代数式 (其中 e仅代表自然对数的底数,不是变量 ),则以下能够正确表示该代数式的 C语言表达式是 ( )。 ( A) sqrt(fabs(pow(n, x)+exp(x) ( B) sqrt(fabs(pow(n, x)+pow(x, e) ( C) sqrt(abs(n x+e x) ( D)

6、 sqrt(fabs(pow(x, n)+exp(x) 15 有关 C语言标识符,以下选项中不合法的是 ( )。 ( A) &a ( B) FOR ( C) print ( D) _00 16 有以下序: #include void main() int num1, num2; int i=10; double d=12 34: nunl=sizeof(i); num2=sizeof(d); pfintf( d, d n, s1, s2); 在 VC 6 0平台上编译运行,程序运行后的输出结果是 ( )。 ( A) 16, 4 ( B) 2, 8 ( C) 4, 8 ( D) 1, 4 17

7、有以下程序: #nclude void main() char a, b, c, d; scanf( c c, &a, &b); c=getchar(); d=getchar(); pfintf( c c c c n, a, b, c, d); 运行程序后输入数据 (代表回车符 ) 34 56 则输出结果是 ( )。 ( A) 34 ( B) 3456 ( C) 34 ( D) 34 18 以下关于 C语言中逻辑运算符两侧运算对象的叙述中正确的是 ( )。 ( A)只能是整数 0或非 0整数 ( B)可以是任意合法的表达式 ( C)可以是结构体类型的数据 ( D)只能是整数 0或 1 19 有

8、以下程序: #nelude main() int a=0, b=0, C=0, d=0; if(a=1)b=1; c=2; else d=3; pfintf( d, d, d, d n, a, b, c, d); 程序运行后的输出结果是 ( )。 ( A) 1, 1, 2, 0 ( B) 0, 0, 0, 3 ( C)编译有错 ( D) 0, 1, 2, 0 20 有以下程序: #include main() int x=1, y=0, a=0, b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; cas

9、e 2: a+; b+; break; case 3: a+; b+; printf(a= d, b= d n, a, b); 程序运行后的输出结果是 ( )。 ( A) a=2, b=2 ( B) a=2, b=1 ( C) a=1, b=1 ( D) a=1, b=0 21 以下程序段中的变量已正 确定义: for(i=0; i 4; i+, i+) for(k=l; k 3; k+); printf(*); 程序段的输出结果是 ( )。 ( A) * ( B) * ( C) * ( D) * 22 有以下程序段: #nclude int i, n; for(i=0; i 8; i+) n

10、=rand() 5; switch(n) case 1: case 3: printf( d n, n); break; case 2: case 4: printf( d n, n); continue; case 0: exit(0); pfintf( d n, n); 以下关于程序段执行情况的叙述,正确的是 ( )。 ( A) for循环语句固定执行 8次 ( B)当产生的随机数 n为 4时结束循环操作 ( C)当产生的随机数 n为 1和 2时不做任何操作 ( D)当产生的随机数 n为 0时结束程序运行 23 有以下程序: #include int f(int x); main() in

11、t n=1, m; m=f(f(f(n); printf( d n, m); int f(int x) retum x*2; 程序运行后的输出结果是 ( )。 ( A) 8 ( B) 2 ( C) 4 ( D) 1 24 以下叙述中错误的是 ( )。 ( A)可以给指针变量赋一个整数作为地址值 ( B)函数可以返回地址值 ( C)改变函数形参的值,不会改变对应实参的值 ( D)当在程序的开头包含头文件 stdio h时,可以给指针变量赋 NULL 25 设已有定义: float x;,则以下对指针变量 P进行定义且赋初值的语句中正确的是 ( )。 ( A) int*p=(float)x; (

12、B) float*p=&x; ( C) float p=&x; ( D) float*p=1024; 26 以下数组定义中错误的是 ( )。 ( A) int x 23=1, 2, 3, 4, 5, 6; ( B) int x3=0; ( C) int x3=1, 2, 3, 4, 5, 6; ( D) int x 23=1, 2, 3, 4, 5, 6; 27 有以下程序: #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; main() int k10=1,

13、 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) 321678 ( B) 876543 ( C) 1098765 ( D) 345678 28 有以下程序: #include #define N 4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii一 aiN一 1一 i; main() int xNN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

14、, 12, 13, 14, 15,16, yN, i; fun(x, y); for(i=0; i N; i+)printf( d, , yi); printf( n); 程序运行后的输出结果是 ( )。 ( A)一 3,一 1, 1, 3 ( B) 12, 3, 0, 0 ( C) 0, 1, 2, 3 ( D)一 3,一 3,一 3,一 3 29 设有定义: char s81; int i=0;,以下不能将一行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是 ( )。 ( A) gets(s); ( B) while(si+=getchar()! = n); si= 0;

15、 ( C) scanf( s, s); ( D) doscanf( c, &si); while(si+! = n); si= 0; 30 设有定义: char P=1, 2, 3, *q=p;,以下不能计算出一个 char型数据所占字节数的表达式是 ( )。 ( A) sizeof(p) ( B) sizeof(char) ( C) sizeof(*q) ( D) sizeof(p0) 31 有以下程序: #include #include main() char str20=One*World, One*Dream! , *p=str1; printf( d, , strlen(p); p

16、rintf( s n, p); 程序运行后的输出结果是 ( )。 ( A) 10, One*Dream! ( B) 9, One*Dream! ( C) 9, One*World ( D) 10, One*World 32 有以下程序: #nclude main() char s=012xy 08s34f4w2; int i, n=0; for(i=0; si! =0; i+) if(si =0&si =9)n+; printf( d n, n); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 3 ( C) 7 ( D) 8 33 有以下程序: #include fun(int x

17、, int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1, m=1, k; k=fun(j, m); printf( d, , k); k=fun(j, m); printf( d n, k); 程序执行后的输出结果是 ( )。 ( A) 5, 11 ( B) 5, 5 ( C) 11, 11 ( D) 11, 5 34 在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是 ( )。 ( A) auto和 static ( B) extem和 register ( C) auto和 register

18、( D) static和 register 35 下面结构体的定义语句中,错误的是 ( )。 ( A) struct ordint x; int y; int z; struct ord a; ( B) struct ordint x; int y; intz; ; struct ord a; ( C) struct ordint x; int y; int z; a; ( D) structim x; int y; int z; a; 36 有以下程序: #inelude typedef structint b, p; A; void f(A c) *注意: C是结构变量名 * int j;

19、 c b+=1: c p+=2; main() int i; A a=1, 2; f(a); printf( d, d n, a b, a p); 程序运行后的输出结果是 ( )。 ( A) 2, 4 ( B) 1, 2 ( C) 1, 4 ( D) 2, 3 37 读取二进制文件的函数调用形式为: fread(buffer, size, count, fp);,其中buffer代表的是 ( )。 ( A)一个内存块的字节数 ( B)一个整型变量,代表待读取的数据的字节数 ( C)一个文件指针,指向待读取的文件 ( D)一个内存块的首地址,代表读人数据存放的地址 38 有以下程序: #incl

20、ude #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 ( C) 20 ( D)出错 39 有以下程序: #include main() unsigned char a=8, c; c=a 3; printf( d n, c); 程序运行后的输出结果是 ( )。 ( A) 16 ( B) 1 ( C) 32 ( D) 0 40 以下叙

21、述中正确的是 ( )。 ( A)在 C语言中,预处理命令行都以 “#”开头 ( B)预处理命令行必须位于 C源程序的起始位置 ( C) #include必须放在 C程序的开头 ( D) C语言的预处理不能实现宏定义和条件编译的功能 二、程序填空题 41 下列给定程序的功能是:从键盘输入若干行字符串 (每行 不超过 80个字符 ),写入文件 myfile4 txt中,用 #作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数 ReadText和 WriteText实现。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLAN

22、K1 C中。不得增行或删行,也不得更改程序的结构! #include #include #include void WriteText(FILE*); void ReadText(FILE*); main() FILE*fp; if(fp=fopen(myfile4 txt, W)=NULL) printf(open fail! n); exit(0); WriteText(fp); fclose(fp); if(fp=fopen(myfile4 txt, r)=NULL) printf(open fail! 1 n); exit(0); ReadText(fp); fclose(fp); *

23、found* void WfiteText(FILE【 1】 ) char str81; printf( nEnter string with #to end: n); gets(str); while(strcmp(str, #1)! =0) *found* fputs(【 2】 , tw); fputs( n, fw); gets(str); void ReadText(FILE*fr) char str81; printf(Read file and output to screen: n); fgets(str, 81, fr); while(! feof(fr) *found* pr

24、intf( s, 【 3】 ); fgets(str, 81, fr); 三、程序修改题 42 下列给定程序中,函数 fun的功能是:从整数 10到 55之间,查找能被 3整除且有一位上的数值是 5的数,把这些数放在 b所指的数组中,这些数的个数作为函数值返回。规定函数中 a1放个位数, a2放十位数。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MOD11 C中,不得增行或删行,也不得更改程序的结构! #nclude intfun(int*b) int k, a1, a2, i=0; for(k=10; k =55; k+) *found* a2=k 100; al=

25、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: n); for(k=0; k m; k+) printf( 4d, ak); printf( n); 四、程序设计题 43 某 学生的记录由学号、 8门课程成绩和平均分组成,学号和 8门课程的成绩已在主函数中给出,请编写函数 fun,其功能是:求出该学生的平均分,并放入记录的 ave成员中。 例如,学生的成绩是: 85 5, 76, 69 5, 85, 91

26、, 72, 64 5, 87 5,则他的平均分应为 78 875。 注意:部分源程序在文件 PROGl C中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #include #define N 8 typedef struct char num10; double sN; double ave; STREC; void fun(STREC*a) main() STREC s=GA005, 85 5, 76, 69 5, 85, 91, 72, 64 5, 87 5; int i; void NONO(); fun(&s); printf(Th

27、e ssstudentdata: ns num); for(i=0; i N; i+) printf( 4 1f n, s si); printf( nave= 7 3f n, s ave); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*out; int i, j; STREC s10= GA005, 85 5, 76, 69 5, 85, 91, 72, 64 5, 87 5, GA001, 82 5, 66, 76 5, 76, 89, 76, 46 5, 78 5, GA002, 72 5, 56, 66 5, 6

28、6, 79, 68, 46 5, 58 5, GA003, 92 5, 76, 86 5, 86, 99, 86, 56 5, 88 5, GA004, 82, 66 5, 46 5, 56, 76, 75, 76 5, 63 5, GA006, 75 5, 74, 71 5, 85, 81, 79, 64 5, 71 5, GA007, 92 5, 61, 72 5, 84, 79, 75, 66 5, 72 5, GA008, 72 5, 86, 73 5, 80, 69, 63, 76 5, 53 5, GA009, 66 5, 71, 74 5, 70, 61, 82, 86 5, 5

29、8 5, GA010, 76, 66 5, 75 5, 60, 76, 71, 96 5, 93 5, ; out=fopen(out dat, W); for(i=0; i 10; i+) fun(&si); fprintf(out, 7 3f n, si ave); fclose(out); 国家二级( C语言)机试模拟试卷 139答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 A错误,可行性分析阶段产生可行性分析报告。 C错误,概要设计说明书是总体设计阶段产生的文档。 D错 误,集成测试计划是在概要设计阶段编写的文档。 B正确,需求规格说明书是后续工作如设计、编码等需要的重要

30、参考文档。 2 【正确答案】 A 【试题解析】 结构化程序设计的思想包括:自顶向下、逐步求精、模块化,不包括多态性。 3 【正确答案】 B 【试题解析】 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能地低,模块的内聚度 应尽可能地高。 4 【正确答案】 C 【试题解析】 在程序的数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。 5 【正确答案】 A 【试题解析】 算法原则上能够精确地运行

31、,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。 6 【正确答案】 D 【试题解析】 除了堆排序算法的比较次数是 (nlog2n),其他的都是 n(n一 1) 2。 7 【正确答案】 B 【试题解析】 栈是按 “先进后出 ”的原则组织数据的,数据的 插入和删除都在栈顶进行操作。 8 【正确答案】 C 【试题解析】 ER图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于逻辑设计阶段。 9 【正确答案】 D 【试题解析】 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以

32、 B错误。笛卡尔积是用 R集合中元素为第一元素, S集合中元素为第二元素构成的有序对,所以 C错误。根据关系 T可以很明显地看出是从关系 R与关系 S中取得相同的关系组所以取得是交运算, 选择 D。 10 【正确答案】 C 【试题解析】 学号是学生表 S的主键,课号是课程表 C的主键,所以选课表 SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择 C。 11 【正确答案】 A 【试题解析】 C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以 A错误。由 C语言构成的指令序列称 C源程序, C源程序经过 C语言编译程序编译之后生成一个后缀为 obj的二进制文

33、件 (称为目标文件 );最后要由 “连接程序 ”把此 obi文件与 C语言提供的各种库函数连接起来生成一个后缀 为 EXE的可执行文件。 12 【正确答案】 A 【试题解析】 C语言中八进制整型常量的开头是数字 0,十六进制整型常量的数字开头是 0x;但八进制不能有 8或 9,所以选项 B错, C选项中 2e1 2中 e后面的指数不是整数, D选项中 3 e5小数点后面缺少数字,另外。也不用用逗号作为千分位分隔符。 13 【正确答案】 B 【试题解析】 只有整数才能求余, d是双精度型,所以不能求余,选项 B不符合C语言赋值规定。选项 A和 D将进行强制数据转换,选项 C为变量自加,逗号运算符

34、和赋值运算符连用,都符合 C语言规范 。 14 【正确答案】 A 【试题解析】 B选项中函数 pow(x, e)错误应该直接使用 exp(x)函数。 C选项中函数 abs(n x+e x)错误,应该使用 fabs()返回浮点数的绝对值。 D选项中 pow(x, n)参数顺序错误。 15 【正确答案】 A 【试题解析】 C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为 C语言中区分大小写,所以 B选项中的 “FOR”可以作为标识符来用。 A)选项中含有非法字符 &,所以选择 A。 16 【正确答案】 C 【试题解析】 sizeof()函数用来获取

35、数据类型的存储空间大小 (字节数 ),整型和双精度型在 C语言中分别占用 4个字节和 8个字节,所以选项 C正确。 17 【正确答案】 D 【试题解析】 用格式符 c输入字符时,回车符是分隔符,不能被输入,但getchar()可以接收包括回车符在内的字符,所以程序运行时输入的第一个回车符将被字符变量 c接收,字符变量 d接收输入的字符 5,所以输出的结果是 3, 4,回车, 5,选项 D正确。 18 【正确答案】 B 【试题解析】 在 C语言的逻辑运算法则里,允许运 算符两侧是任意合法的表达式,因此选项 B正确,选项 A和选项 C不正确;结构体是构造类型,所以不能进行逻辑运算,因此,选项 C不

36、正确。 19 【正确答案】 C 【试题解析】 if语句只执行后面的一个语句或一个用大括号包括的程序段。本题中 if语句中的条件若为真,则只执行 b=1;这一条语句,后面的 c=2是一个和 if分支结构无关的语句,因此,再后面的 else语句便成为一个独立的语句,因为前面没有 if分支与其对应,因此会在编译过程中出错。如果改成 if(a=1)b=1;c=2elsed=3:则编译正确。 20 【正确答案】 B 【试题解析】 case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行 switch语句时,根据 switch的表达式,找到与之匹配的 case语句,就从此case子句执行下去,

37、不再进行判断,直到碰到 break或函数结束为止。所以执行内层 switch(y)时只执行了 a+,此时 a的值为 1。然后执行外层 case 2语句的a+; b+; a为 2, b为 1。所以结果为 B。 21 【正确答案】 C 【试题解析】 由于内层循环 for(k=1; k 3; k+)后面直接跟了空语句 “; ”所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“*,选择 C。 22 【正确答案】 D 【试题解析】 case常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行 switch语句时,根据 switch的表达式,找到与之匹配的 case语句,就

38、从此case子句执行下去,不再进行判断,直到碰到 break或函数结束为止。简单地说, break是结束整个循环体,而 continue是结束单次循环。 B选项中当产生的随机数 n为 4时,要执行打印操作。 C选项中当产生的随机数为 1和 2时,分别执行case 3与 case 4后面语句的内容。由于存在 break语句,所以 for循环不是固定执行 8次,执行次数与产生的随机数 n有关系。 23 【正确答案】 A 【试题解析】 第一次调用 m=f(f(f(1),第二次为 m=f(f(2),第三次为 m=f(4),即返回值为 8。 24 【正确答案】 A 【试题解析】 不能将一个整数直接赋给指

39、针变量作为地址,所以 A是错误的。函数的返回值可以是地址。即指针。函数调用中行参的变化不会传递给实参。 25 【正确答案】 B 【试题解析 】 指针是用来存放地址的变量,用 (类型名 *指针变量名 )的形式定义。赋值时应将某个变量地址赋给指针变量,所以选择 B。 26 【正确答案】 D 【试题解析】 D选项中 x23定义的是一个两行三列的二维数组,而在给数组元素赋值时却赋成了三行,所以错误。 27 【正确答案】 A 【试题解析】 本题中的函数 fun()是将数组 k中前 5个元素倒序,所以返回后数组 k中的元素排列是 5, 4, 3, 2, 1, 6, 7, 8, 9, 10。所以打印输出 k

40、2到 k7元素的值,即 321678,所以选择 A。 28 【正确答案】 A 【试题解析】 本题中由 fun函数可知, b0=a00一 a03=1一 4=一 3,b1=a11 12=67=一 1, b2=a22 21=1110=1, b3=a33一31=16一 13=30所以主函数中打印 y数组元素的值为 A选项。 29 【正确答案】 C 【试题解析】 字符串的输入不能使用 scanf( s, s);而应该使用 gets(s)。 30 【正确答案】 A 【试题解析】 根据题 目中的定义可以知道 sizeof(p),计算的是数组 p中所有元素所占用的字节数,而不是 char*型数据所占字节数。

41、31 【正确答案】 A 【试题解析】 p是指向二维字符数组第二行 One*Dream!的数组指针,所以长度是 10,打印输出的也是该字符串。 32 【正确答案】 B 【试题解析】 本题中遇到 0字符循环结束,所以只统计 0之前的数字字符,所以为 3。 33 【正确答案】 A 【试题解析】 声明静态局部变量:函数调用结束后,其占用的存储单元不释放,在下次该函 数调用时,该变量保留上一次函数调用结束时的值。本题子函数 fun中的变量 i和 m均为静态局部变量。所以第一次调用 fun函数,返回 m的值为5,第二次再调用 fun函数时, i的值为 3, m的值已经是 5了,所以执行if=m+1, i的

42、值变为 9, m=i+x+y=9+1+1=11。 34 【正确答案】 C 【试题解析】 auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。 register:为了提高效率, C语言允许将局部 变量的值放在CPU中的寄存器中,这种变量叫 “寄存器变量 ”,只有局部自动变量和形式参数可以作为寄存器变量。 extern:外部变量 (即全局变量 )是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。 stati

43、c:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。 35 【正确答案】 A 【试题解析】 A选项 stmct ordint x; int y; int z; struct ord a;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成 B选项或者 D选项的格式。 36 【正确答案】 B 【试题解析】 结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择 B。

44、 37 【正确答案】 D 【试题解析】 fread(buffer, size, count, fp)功能是从一个文件 流中读数据,读取 count个元素,每个元素 size字节,如果调用成功返回 count。 buffer:用于接收数据的内存地址,大小至少是 size*count字节; size:单个元素的大小,单位是字节; count:元素的个数,每个元素是 size字节; stream:输入流。 38 【正确答案】 C 【试题解析】 (int*)malloclsizeof(int)的作用是开辟一个长度为 sizeof(int)存储空间,并通过强制类型转换 (int*)将此存储空间的地址赋给

45、了一个整型的指针变量然后执行语句 *p=n,使得 *P的值为 10,并通过 return返回此值,即 a的值为 10。然后在主函数中输出 a+fun(10)=10+10=20。 39 【正确答案】 B 【试题解析】 无符号整型变量 a的值为 8,二进制表示为 00001000,右移 3位后为 00000001,即十进制的 1,所以输出 1。 40 【正确答案】 A 【试题解析】 预处理命令是以 “#”开头的命令,它们不是 C语言的可执行命令,这些命令应该在函数之外书写,一般在源文件的最前面书写,但不是必须在起始位置书写,所以 B、 C错误。 C语言的预处理能够实现 宏定义和条件编译等功能,所以

46、 D错误。 二、程序填空题 41 【正确答案】 1 *fw 2 str 3 str 【试题解析】 填空 1:定义函数,函数的形参是一个文件类型的指针。 填空 2:此处考查 fputs函数的形式,应填入 str。 填空 3:依据 pfintf函数的格式,输出字符串内容,即 printf( s, str);。 三、程序修改题 42 【正确答案】 1 a2=k 10; 2 return i; 【试题解析】 1 a2存放十位数,所以是 a2=k 10,此处是一个书写错 误。 2根据题意,要返回能被 7整除的数的个数,从循环体中可以知道其个数是由 i来计算的,所以返回的是 i。 四、程序设计题 43 【正确答案】 void fun(STREC*a) int i: a一 ave=0 0; for(i=0; i N; i+) a一 ave=a一 ave+a一 si; *求各门成绩的总和 * a一 ave=aave N; *求平均分 * 【试题解析】 本题考查自定义形参的相关知识点,程序流程是这样

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

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

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