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

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

1、国家二级 C语言机试(选择题)模拟试卷 17 及答案与解析 一、选择题 1 下列数据结构中,属于非线性结构的是 ( )。 ( A)循环队列 ( B)带链队列 ( C)二叉树 ( D)带链栈 2 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( )。 ( A)循环队列 ( B)栈 ( C)队列 ( D)二叉树 3 对于循环队列,下列叙述中正确的是 ( )。 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针一定小于队尾指针 ( D)队头指针可以大于队尾指针,也可以 小于队尾指针 4 算法的空间复杂度是指 ( )。 ( A)算法在执行过程中所需要的计算机存

2、储空间 ( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的临时工作单元数 5 软件设计中划分模块的一个准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 6 下列选项中不属于结构化程序设计原则的是 ( )。 ( A)可封装 ( B)自顶向下 ( C)模块化 ( D)逐步求精 7 面向对象方法中,继承是指 ( )。 ( A)一组对象所具有的相似性质 ( B)一个对象具有另一个对象的性质 ( C)各对象之间的共同性质 ( D)类之间共享属性和操作的机制 8 数据库管理系统是 ( )。 ( A)操作系

3、统的一部分 ( B)在操作系统支持下的系统软件 ( C)一种编译系统 ( D)一种操作系统 9 在 E R图中,用来表示实体联系的图形是 ( )。 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 10 有三个关系 R、 S和 T如下: 则关系 T是由关系 R和 S通过某种操作得到,该操作为 ( )。 ( A) 选择 ( B)投影 ( C)交 ( D)并 11 以下关于结构化程序设计的叙述中正确的是 ( A)结构化程序使用 goto语句会很便捷 ( B)在 C语言中,程序的模块化是利用函数实现的 ( C)一个结构化程序必须同时由顺序、分支、循环三种结构组成 ( D)由三种基本结构构成

4、的程序只能解决小规模的问题 12 对于一个正常运行的 C程序,以下叙述中正确的是 ( A)程序的执行总是从 main函数开始,在程序的最后一个函数中结束 ( B)程序的执行总是从程序的第一个函数开始 , 在 main函数结束 ( C)程序的 执行总是从 main函数开始 ( D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 13 以下选项中能表示合法常量的是 ( A) 1,200 ( B) 1.5E2.0 ( C) ( D) 007 14 以下定义语句中正确的是 ( A) int a=b=0; ( B) char A=65+1,b=b; ( C) float a=1,*b=

5、 ( D) double a=0.0; b=1.1; 15 若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是 ( A) x+1=y ( B) +x,y=x- ( C) x=x+10=x+y ( D) double(x)/10 16 若变量已正确定义为 int型,要通过语句 scanf(“%d,%d,%d“, 给 a赋值 1、给 b赋值 2、给 c赋值 3,以下输入形式中错误的是 (注: 代表一个空格符 ) ( A) 1,2,3 ( B) 1,2,3 ( C) 1,2,3 ( D) 123 17 以下不能输出字符 A的语句是 (注:字符 A的 ASCII码值为 65, 字符 a的

6、 ASCII码值为 97) ( A) printf (“%c n“, a-32); ( B) printf (“%d n“, A); ( C) printf (“%c n“, 65); ( D) printf (“%c n“, B-1); 18 若 a是数值类型,则逻辑表达式 (a=1)|(a!=1)的值是 ( A) 1 ( B) 0 ( C) 2 ( D)不知道 a的值,不能确定 19 设有定义: int a=1,b=2,c=3; 以下语句中执行效果与其它三个不同的是 ( A) if(ab) c=a,a=b,b=c; ( B) if(ab) c=a,a=b,b=c; ( C) if(ab)

7、c=a;a=b;b=c; ( D) if(ab) c=a;a=b;b=c; 20 有以下程序 #include main() int y=10; while(y-); printf(“y=%dn“, y); 程序执行后的输出结果是 ( A) y=0 ( B) y=-1 ( C) y=1 ( D) while构成无限循环 21 有以下程序 #include main() int i,j; for(i=1; i main() int i=5; do if (i%3=1) if (i%5=2) printf(“*%d“, i); break; i+; while(i!=0); printf(“n“)

8、; 程序的运行结果是 ( A) *2*6 ( B) *3*5 ( C) *5 ( D) *7 23 有以下程序 #include double f (double x); main() double a=0;int i; for ( i=0; i 30; i+=10 ) a += f( (double)i ); printf (“%3.0fn“, a); double f (double x) return x*x+1; 程序运行后的输出结果是 ( A) 500 ( B) 401 ( C) 503 ( D) 1404 24 若有以下函数首部 int fun(double x10, int *n

9、) 则下面针对此函数的函数声明语句中正确的是 ( A) int fun(double , int ); ( B) int fun(double *, int *); ( C) int fun(double *x, int n); ( D) int fun(double x, int *n); 25 有以下程序 #include main() int m=1,n=2,*p= r=p; p=q; q=r; printf(“%d,%d,%d,%dn“,m,n,*p,*q); 程序运行后的输出结果是 ( A) 2,1,1,2 ( B) 1,2,1,2 ( C) 2,1,2,1 ( D) 1,2,2,1

10、 26 若有以下定义 int x10, *pt=x; 则对 x数组元素的正确引用是 ( A) pt+3 ( B) * for(i=0;i 9;i+=2) s+=*(t+i); printf(“%dn“,s); 程序执行后的输出结果是 ( A) 20 ( B) 25 ( C) 45 ( D) 36 28 有以下程序 #include #define N4 void fun(int aN, int b) int i; for(i=0;i #include main() char p20=a, b, c, d, q=“abc“, r=“abcde“; strcat(p, r);strcpy(p+st

11、rlen(q), q); printf(“%dn“, strlen(p); 程序运行后的输出结果是 ( A) 11 ( B) 9 ( C) 6 ( D) 7 32 有以下程序( 说明:字母 A的 ASCII码值是 65 ) #include void fun (char *s) while( *s ) if( *s%2 ) printf(“%c“,*s); s+; main() char a =“BYTE“; fun (A); printf(“n“); 程序运行后的输出结 果是 ( A) BT ( B) YE ( C) YT ( D) BY 33 有以下程序 #include int fun(

12、) static int x=1; x+=1; return x; main() int i,s=1; for(i=1;i =5;i+) s+=fun(); printf(“%dn“,s); 程序运行后的输出结果是 ( A) 120 ( B) 11 ( C) 6 ( D) 21 34 有以下程序 #include void fun2(char a, charB) printf(“%c %c “,a,b); char a=A, b=B; void fun1() a=C; b=D; main() fun1( ); printf(“%c %c “,a,b); fun2(E, F); 程序的运行结果是

13、 ( A) A B E F ( B) C D E F ( C) A B C D ( D) C D A B 35 以下关于 typedef的叙述错误的是 ( A)用 typedef可以增加新类型 ( B) typedef只是将已存在的类型用一个新的名字来代表 ( C)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( D)用 typedef为类型说明一个新名,通常可以增加程序的可读性 36 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量 s、 p、 q均已正确定义,并用于指向链表结点,指针变量 s总是作为指针指向链表的第一个结点。 若有以下程序段 q=s;

14、 s=s- next; p=s; while(p- next) p=p- next; p-next=q; q- next=NULL;该程序段实现的功能是 ( A)删除尾结点 ( B)尾结点成为首结点 ( C)删除首结点 ( D)首结点成为尾结点 37 有以下程序 #include #define S(x) 4*(x)*x+1 main() int k=5, j=2; printf(“%dn“, S(k+j) ); 程序运行后的输出结果是 ( A) 33 ( B) 197 ( C) 143 ( D) 28 38 若有以下程序段 int r=8; printf(“%dn“,r1 ); 输 出结果是

15、 ( A) 16 ( B) 8 ( C) 4 ( D) 2 39 以下叙述中错误的是 ( A) gets函数用于从终端读入字符串 ( B) getchar函数用于从磁盘文件读入字符 ( C) fputs函数用于把字符串输出到文件 ( D) fwrite函数用于以二进制形式输出数据到文件 40 有以下程序 #include main() FILE *pf; char *s1=“China“, *s2=“Beijing“; pf=fopen(“abc.dat“,“wb+“); fwrite(s2,7,1,pf); rewind(pf);/*文件位置指针回到文件开头 */ fwrite(s1,5,1

16、,pf); fclose(pf); 以上程序执行后 abc.dat文件的内容是 ( A) China ( B) Chinang ( C) ChinaBeijing ( D) BeijingChina 国家二级 C语言机试(选择题)模拟试卷 17 答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 树是简单的非线性结构,所以二叉树作为树的一种也是一种非线性结构。 2 【正确答案 】 B 【试题解析】 栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据 3 【正确答案】 D 【试题解析】 循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列

17、结构所以对头指针有时可能大于队尾指针有时也可能小于队尾指针。 4 【正确答案】 A 【试题解析】 算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择 A。 5 【正确答案】 B 【试题解析】 一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间 的耦合性和提高模块内的内聚性,有利于提高模块的独立性。 6 【正确答案】 A 【试题解析】 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用 goto语句,所以选择 A。 7 【正确答案】 D 【试题解析】 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接

18、获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。 8 【正确答案】 B 【试题解析】 数据库管理系统是数据库的机构,它 是一种系统软件,负责数据库中数据组织、数据操纵、数据维护、控制及保护和数据服务等。是一种在操作系统之上的系统软件。 9 【正确答案】 C 【试题解析】 在 E R图中实体集用矩形,属性用椭圆,联系用菱形。 10 【正确答案】 D 【试题解析】 在关系 T 中包含了关系 R与 S中的所有元组,所以进行的是并的运算。 11 【正确答案】 B 【试题解析】 滥用 goto语句将使程序的流程毫无规律 ,可读性差 ,对于初学者来说尽量不要使用 ,所以

19、 A错误。一个结构化程序可以包含顺序 .分支。循环结构中的 一种或多种 ,所以 C错误。由三种基本结构构成的程序可以解决任何复杂的问题 ,所以D错误。 12 【正确答案】 C 【试题解析】 任何一个 C程序都是从主函数 main 开始 ,至主函数 main 结束 ,所以选择 C选项。 13 【正确答案】 D 【试题解析】 A选项中整型常量应表示为 1200,不能包含 “,“。 B选项中 E后面的指数必须为整数。 C选项中转义字符以 “开始 ,若要表示字符 “,应写为 “。 14 【正确答案】 B 【试题解析】 A选项语句中 b 变量还没有定义不能直接用于给 a变 量赋值。 C选项语句中 *b。

20、 *c表示的是一个实型变量的地址 ,不能再将 b=c;两个操作。而 B,C,D选项由于条件不成立 ,所以什么也没有做 ,所以选择C选项。 20 【正确答案】 B 【试题解析】 执行 y - -直到值为 0,由于 y - -是先用再减 ,所以退出循环时 ,y的值为-1。 21 【正确答案】 A 【试题解析】 外循环第一次 i的值为 1,内循环第一次 j的初值为 1,打印 1*1=1,内循环第二次 j的值为 2,打印 1*2=2,内循环第三次 j的值为 3,打印 1*3=3,打印回车换行 ,退出内循环。外循环第二次 i的值为 2,内循环第一次 j的初值为 2,打印 2*2=4,内循环第二次 j的值

21、为 3,打印 2*3=6,打印回车换行 ,退出内循环 ?外循环第 3次 ,i的值为 3,内循环第一次 j的初值为 3,打印 3*3=9,打印回车换行 ,退出内循环。 22 【正确答案】 D 【试题解析】 do.while 语句是先执行后判断 ,所以第一次先执行循环体 ,判断i%3= =1的条件 ,由于 i为 5所以余数为 2,条件不成立 ,执行 i+,i的值为 6,判 断while条件为真 ,第二次执行循环体 ,同第一次循环体的执行过程一样 ,i的值变为 7,判断 while条件为真 ,第三次执行循环体 ,此时 i%3= =1条件成立 ,判断 i%5=2也成立 ,打印 *与 i的值 ,即 *7

22、,然后执行 break 语句 ,跳出循环。所以选择 D选项。 23 【正确答案】 C 【试题解析】 本题重点考察函数的定义和调用,第一次循环, a=0, i=0;返回值a=0*0+1=1;第二次循环, a=1, i=10;返回值 a=10*10+1+1=102;第三次循环,a=102, i=20;返回值 a=20*20+1+102=503;第四次循环, a=503, i=30;不符合i30,跳出循环,最后结果输出 a=503。 24 【正确答案】 B 【试题解析】 函数声明的一般形式为:类型说明符 被调函数名 (类型 形参,类型 形参 ) ; 或为:类型说明符 被调函数名 (类型,类型 ) ;

23、由于函数首部为 int fun(double x10, int *n),因此 B选项正确。 25 【正确答案】 D 【试题解析】 int m=1,n=2,*p=即指针变量 p指向 m,指针变量 q指向 n, r=p; p=q; q=r;即通过指针变量 r,将指针 p 和指针 q指向交换。因此最后输出 1,2,2,1。 26 【正确答案】 D 【试题解析】 没有 A选项的引用形式。 *与 后, p数组中存储的元素为 a,b,c,d,a,b,c,d,e ;执行语句 strcpy(p+strlen(q), q); 得到的结果是将 q所指向的字符串拷贝至 p+strlen( q)开始的存储位置,因为

24、strlen的值为 3,即 p+3 开始存储 q中的元素。所以执行完 strcpy(p+strlen(q),q)语句后,字符数组 p20的存储元素为 a,b,c, a,b,c;所以 strlen(p)的结果为 6。因此 C选项正确。 32 【正确答案】 B 【试题解析】 本题中执行 fun(a)时,会取 a的第一个字母 B,因为 B 的 ASCII码为 66,所以不会输出 B,函数只会输出 ASCII码为奇数的字母, Y的 ASCII码为89, T 的 ASCII码为 84, E 的 ASCII码为 69。因此 B 选项正确。 33 【正确答案】 D 【试题解析】 fun 函数中的变量 x为静

25、态局部变量,占用固定的内存单元,下一次调用时仍可以保留上次调用时的值。也就是说,如果多次调用 fun函数, x的定义只在第一个调用时有效,从第二次调用开始, x的定义相当于不存在,直接使用上次 x的值。 fun 函数被调用了 5次,每次调用后的返回值累加到 s上。 5次调用后, x的值为 6, s的值为 21。因此 D选项正确。 34 【正确答案】 B 【试题解析】 本题考察的是变量的作用范围。如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用 范围内,外部变量被 “屏蔽 “,即不起作用。本题中,在 fun1()和 main()函数内访问的是全局变量 a和 b,在 fun2()函

26、数中访问的是形参变量 a和 b。所以, main()函数中的 printf()函数输出的是在 fun1()函数中被改变的全局变量 a和 b 的值 C D,而 fun2()函数中输出的是传递给它的实参值 E F。因此 B选项正确。 35 【正确答案】 A 【试题解析】 typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用 typedef可以增强移植性。所以 A选项 错误。 36 【正确答案】 D 【试题解析】 本题考查链表的操作,本题中首先是 s指向了它的下个节点,题目中说明了 s总是指向链表的第一个节点,然后 while循环找到链表的最后一个元素,然

27、后最后一个元素指向了之前链表的头节点,之前头节点指向了空节点,所以本题实现的效果是使首节点成为尾节点。选项 D正确。 37 【正确答案】 C 【试题解析】 本题考查带参数的宏定义, S为带参数的宏定义,运行 S(k+j)为4*(k+j)*k+j+1=143,选项 C正确。 38 【正确答案】 C 【试题解 析】 本题考查位运算,属于基础知识,题目中将整型变量 8,二进制表达为 00001000,右移一位为 00000100,即 4,选项 C正确。 39 【正确答案】 B 【试题解析】 本题考查字符处理函数和文件做操函数,属于基础知识,其中 B选项 getchar是用于从终端读入字符。 40 【正确答案】 B 【试题解析】 本题考查文件操作函数, fwrite和 rewind 函数,题目中先是将 s2字符串写入 adc.dat中,然后将写指针回到文件开头,然后写入 s1字符串,那么s1字符串就将前五个字符覆盖,所以最 终结果为 Chinang,选项 B正确。

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

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

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