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

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

1、国家二级( C语言)笔试模拟试卷 250 及答案与解析 1 数据库系统的核心是 ( )。 ( A)数据模型 ( B)数据库管理系统 ( C)数据库 ( D)数据库管理员 2 关系表中的每一横行称为一个 ( A)元组 ( B)字段 ( C)属性 ( D)码 3 下列数据结构中,能用二分法进行查找的是 ( )。 ( A)顺序存储的有序线性表 ( B)线性链表 ( C)二叉链表 ( D)有序线性链表 4 用树形结构表示实体之间联系的模型是 ( )。 ( A)关系模型 ( B)网状模型 ( C)层次模型 ( D)以上三个都是 5 将 E-R图转换到关系模式时,实体与联系都可以表示成 ( )。 ( A)

2、属性 ( B)关系 ( C)键 ( D)域 6 数据的完整性是指数据的正确性、有效性和 _。 ( A)可维护性 ( B)独立性 ( C)安全性 ( D)相容性 7 下列程序运行后的输出结果是 _。 main() int a=2, b=-1, c=2; if(a b) if(b 0) c=0; else c+; printf (“%dn“, c); ( A) 0 ( B) 1 ( C) 2 ( D) 3 8 下列叙述中,不属于结构化分析方法的是 ( ) ( A)面向数据流的结构化分析方法 ( B)面向数据结构的 Jackson方法 ( C)面向数据结构的结构化数据系统开发方法 ( D)面向对象的

3、分析方法 9 在软件开发过程中,软件结构设计是描述 _。 ( A)数据存储结构 ( B)软件体系结构 ( C)软件结构测试 ( D)软件控制过程 10 下列关于栈的描述中错误的是 _。 ( A)栈是先进后出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)对栈的插入与删除操作中,不需要改变栈底指针 11 若变量已正确定义并赋值,以下符合 C语言语法的表达式是 ( A) a: =b+1 ( B) a=b=c+2 ( C) int 18.5%3 ( D) a=a+7=c+b 12 在下列选项中,没有构成死循环的程序段是 ( )。 ( A) int i=100; for(; ) i=

4、i 10+1; if(i10)break; ( B) while(1); ( C) int k=0: do+k; while(k10.0)y=1.0/x; else y=1.0; printf(“%fn“,y); 该程序的输出结果是 ( A) 0.000000 ( B) 0.250000 ( C) 0.500000 ( D) 1.000000 17 有以下程序: main () char k; int i; for(i=1; i 3;i+) scanf(“%c“, switch(k) case 0: printf(“anothern“); case 1: printf(“numbern“);

5、程序运行时,从键盘输入 :01回车,程序执行后的输出结果是 ( A) another number ( B) another number another ( C) another number number ( D) number number 18 算法具有 5个特性,以下选项中不 属于算法特性的是 ( )o ( A)有穷性 ( B)简洁性 ( C)可行性 ( D)确定性 19 下列程序的输出结果是 _。 #include stdio h main () int a=2, c=5; printf(“a=%d, b=%dn“, a, c); ( A) a=%2, b=%5 ( B) a=2,

6、 b=5 ( C) a=%d, %d ( D) a=%d, b=%d 20 下面一组中都是 C语言关键字的是 _。 ( A) double Int for ( B) main while goto ( C) volatile break static ( D) malloc sizeof new 21 下列程序的输出结果是 ( )。 #include stdio.h void main() int a=0, b=1,C=2; if(+a 0 +b 0) +c; printf(“%d, %d, %d“, a, b, C) ; ( A) 0, 1, 2 ( B) 1, 2,3 ( C) 1, 1,

7、3 ( D) 1, 2,2 22 有以 下程序 #include stdio.h main() FILE *fp;int i=20,j=30,k,n; fp=fopen(“D1v.dat“,“w“); fprintf(fp,“%dn“,i);fprintf(fp,“%dn“,j); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d%d“,printf(“%d%dn“,k,n); fclose(fp); 程 序运行后的输出结果是 ( )。 ( A) 20 30 ( B) 20 50 ( C) 30 50 ( D) 30 20 23 有以下程序 m

8、ain() int a44=1, 4, 3, 2, 8, 6, 5, 7, 3, 7, 2,5, 4, 8, 6, 1, i, j, k, t; for(i=0; i 4; i+) for(j=0; j 3; j+) for(k=j+1; k 4; k+) if(aji aki)t=aji; aji=aki; aki=t; /*按列排序 */ for(i=0; i 4; i+)printf(“%d, “, aii); ( A) 1, 6, 5, 7, ( B) 8, 7, 3, 1, ( C) 4, 7, 5, 2, ( D) 1, 6, 2, 1, 24 能正确表示 “当 x的取值在 1,1

9、0和 100,110范围内为真,否则为假 ”的表达式是 ( ) ( A) (x 1)int i,k,n; fp=fopen(“data.dat“,“w+“); for(i=1;i 6;i+) fprimtf(fp,“%d“,i); if(i%3=0)fprintf(fp,“n“); rewind(fp); fscanf(fp,“%d%d“, k,n);printf(“%d%dn“,k,n); fclose(fp); 程序运行后的输出结果是 ( )。 ( A) 0 0 ( B) 123 45 ( C) 1 4 ( D) 1 2 27 已知字母 a的 ASCII码为十进制数的 97,下面程序的输出

10、结果是 _。 main() char c1,c2; c1=a+5-3; c2=a+6-3; printf(“%c, %dn“,c1, c2); ( A) 100,d ( B) c, 100 ( C) c, d ( D)输出格式不对,结果不确定 28 下面程序段中 ,输出 *的个数是 char *s=“ta018bc“; for(;*s!=0;s+)printf(“*“); ( A) 9 ( B) 5 ( C) 6 ( D) 7 29 有以下程序 :#include stdio.h void swap(char * x,ehar * y) char t; t= *x; *x: *y; *y=t;

11、main ( ) char *s1 =“abc“, * s2 =“123“; swap(s1 ,s2); printf(“%s,%s n“ ,s1 ,s2);程序执行后的输出结果是 ( )。 ( A) 123,abe ( B) abe,123 ( C) 1bc,a23 ( D) 321,cba 30 函数 rewind 的作用是 ( A)使文件位置指针重新返回文件的开始位置 ( B)将文件位置指针指向文件中所要求的特定位置 ( C)使文件位置指针指向文件的末尾 ( D)使文件位置指针自动移至下一个字符位置 31 有以下说明和定义语句 struct student int age; char n

12、um 8; ; struct student stu3=20, “200401”, 21, “200402”), 19, “200403”; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是 ( A) (p+)- num ( B) p- num ( C) (*p).num ( D) stu3.age 32 若有以下定义: int t32;,能正确表示 t数组元素地址的表达式是 _。 ( A) Print(“%d%d%d%dn“,a03,al2,a2 1,a30); ( A) 650 ( B) 1470 ( C) 5430 ( D)输出值不定 34 以下

13、只有在使用时才为该类型变量分配存储单元的存储类说明是 _。 ( A) auto和 static ( B) auto和 register ( C) register和 static ( D) extern和 register 35 设有说明 int(*ptr)M;其中的标识符 ptr是 _。 ( A) M个指向整型变量的指针 ( B)指向 M个整型变量的函数指针 ( C)一个指向具有 M个整型元素的一维数组的指针 ( D)具有 M个指针元素的一维指针数组,每个元素都只能指向整型变量 36 关于语句 “for(表达式 1;表达式 2;表达式 3)”,下面说法中错误的是 ( ) ( A) for语句

14、中的三个表达式可以同时省略 ( B) for语句可以用于循环次数不确定的情况 ( C) for语句中表达式 2只能是关系表达式或逻辑表达式 ( D) for语句中表达式 1和表达式 3可以是逗号表达式 37 分析下列程序: #include stdio.h main() int*p1,*p2,*p; int a=6,b=9; p1=p2= if(a b)p=p1;p1=p2;p2=p; printf(“%d,%d“,*p1,*p2); printf(“%d,%d“,a,b); 程序的输出结果为 ( )。 ( A) 9,6 6,9 ( B) 6,9 9,6 ( C) 6,9 6,9 ( D) 9

15、,6 9,6 38 下列程序的运行结果为 ( )。 #include stdio h void abc(char*str) int a,b,i,j; for(i=j=0; stri!=0; i+) if(stri!=a) strj+=stri; strj=0; void main() char str=“abcdef“; abc(str); printf(“str%s“, str); ( A) str=bcdef ( B) str=abcdef ( C) str=a ( D) str=ab 39 有以下程序的输出结果是 ( ) void f(int v , int w) int t; t=v;

16、v=w;w=t; main( ) int x=1,y=3,z=2; if(x y) f(x,y); else if(y z) f(y,z); else f(x,z); printf(“%d,%d,%dn”,x,y,z); ( A) 1,2,3 ( B) 3,1,2 ( C) 1,3,2 ( D) 2,3,1 40 在 C语言中,函数返回值的类型最终取决于 ( A)函数定义时在函数首部所说明的函数类型 ( B) return语句中表达式值的类型 ( C)调用函数时主调函数所传递的实参类型 ( D)函数定义时形参的类型 41 有下列程序: #include stdio.h void fun(cha

17、r *a, char *B) while(*a=*)a+; while(*b=*A) b+;a+; main() char *s=“*a*b*“,t80; fun(s,t);puts(t); 程序的运行结果是 ( )。 ( A) *a*b ( B) a*b ( C) a*b* ( D) ab 42 数据结构分为线 性结构和非线性结构 ,带链的队列属于【 】。 43 按照 “先进先出 ”的原则组织数据的结构是 _。 44 软件工程研究的内容主要包括:【 】技术和软件工程管理。 45 软件的【 】设计又称为总体结构设计,其主要任务是建立软件系统的总体结构。 46 在最坏情况下,冒泡排序所需要的比较

18、次数为【 】。 47 已知 “int a=2, b=2, c=3; ”,则执行完语句 “a*=18+(b+)-(+C; ”后, a的值是_。 47 若变量 a, b已定义为血类型并赋值 21和 55,要求用 printf函数以 a=21, b=55的形式输出,请写出完整的的输出语句 _。 48 在面向对象方法中, ( )描述的是具有相似属性与操作的一组对象。 49 以下程序的输出结果是【 】。 #include main() p=a; p+; 50 以下程序中函数 f的功能是在数组 x的 n个数 (假定 n个数互不相同 )中找出最大最小数 ,将其中最小的数语第一个数兑换,把最大的数语最后一个数

19、对换。请填空。 #include stdio.h void f(int x ,int n) int p0,p1,i,j,t,m; i=j=x0; p0=p1=0; for(m=0;m n;m+) if(xm i) i=xm;p0=m; else if(xm j) j=xm;p1=m; t=xp0;xp0=xn-1;xn-1=t; t=xp1;xp1=11 ; 12=t; main( ) int a10,u; for(u=0;u 10;u+) scanf(“%d“, f(a,10); for(u=0;u 10;u+) printf(“%d“,au); printf(“n“); 51 下列程序段的

20、输出结果是【 】。 main() char b=“Hello, you“; b5=0; printf(“%sn“, B) ; 52 有下列程序: #include stdio.h main() char C; while(c= getchar ()!=, ) putchar(+c); 程序运行时,如果从键盘输入: A, B, CR,则输出结果为 _。 53 下面程序的功能是根据公式 e 1+1 1!+1 2!+1 3!+1 4!+计算 e的近似值,精度要求为 10-5。请填空。 main() int n; double e 1.0, t 1.0; for(n 1;【 】 n+); 【 】 e+

21、=t; printf(“%fn“, e); 54 函数 YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 其构成规律是,第 0列元素和主对角线元素均为 1,其余元素为其左上方和正上方元素之和,数据的个数每行递增 1。请将程序 补充完整。 #defint N 6 void YangHui(int*NN) int i,j; x00=1 for(i=1; i N; i+) xi 0=【 】 =1 for(j=1;j i;j+ ) xij=【 】 ; 55 函数 viod fun(float * sn, int n)

22、的功能是:根据以下公式计算 S,计算结果通过形参指针 sn传回; n通过形参传入, n的值大于等 于 0。请填空。 s=1-1/3+1/5-1/7+1/(2n+1) void fun(float * sn, int n) floats 0.0, w, f -1.0; int i 0; for(i 0; i n; i+ +) f【 】 * f; w f/(2i+1); s+ + w; 【 】 s; 56 下面程序中函数 creat用于建立一个带头结点的单向链表,新产生的结点总是插在链表的末尾,单向链表的头指针作为函数值返回。将程序补充完整。 #include stdiao.h struct li

23、st char data; struct list * next;; struct list * creat() struct list *h, *p, *q; char ch; h【 】 malloc(sizeof(struct list); p=q=h; ch=getchar(); while(ch! ?) p【 】 malloc(sizeof(struct list); p- data ch;q- next=p; q=p; ch=getchar(); p- next 0; 【 】; 国家二级( C语言)笔试模拟试卷 250 答案与解析 1 【正确答案】 B 【试题解析】 数据库系统由数据

24、库 (数据 )、数据库管理系统 (软件 )、数据库管理员 (人员 )、硬件平台 (硬件 )、软件平台 5个部分构成。其中数据库管理系统是数据库系统的核心,它负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据 服务等工作。 2 【正确答案】 A 【试题解析】 关系表中 ,每一行称为一个元组 ,对应表中的一条记录 ;每一列称为一个属性 ,对应表中的一个字段 ;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。 3 【正确答案】 A 【试题解析】 二分法查找只适用于顺序存储的有序表。 4 【正确答案】 C 【试题解析】 层次模型是最早发展起来的数据库模型,其基本结构是树形结构。 5

25、【正确答案】 B 【试题解析】 把概念模型转换成关系数据模型就是把 E-R图转换成一组关系模式,每一个 实体型转换为一个关系模式,每个联系分别转换为关系模式。 6 【正确答案】 D 【试题解析】 数据模型的完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。 7 【正确答案】 C 8 【正确答案】 D 9 【正确答案】 B 【试题解析】 从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要设计 (又称结构设计 )将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模 式。

26、10 【正确答案】 B 【试题解析】 栈是一种特殊的线性表,又称先进后出表 (First In Last Out,FILO)。 11 【正确答案】 B 【试题解析】 选项 A)中包含一个不合法的运算符 “: =”;选项 C)应改为(int)18.5%3;选项 D)可理解为两个表达式: a+7=c+b 和 a=a+7,其中第一个是错的,因为 C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项 B),它实际上相当于 a=(b=c+2),进而可分解为两个表达式:b=c+2和 a=b。 12 【正确答案】 C 【试题解析】 本题考查死循环的知识。选项 A中, for循环没

27、有任何控制语句就会一直执行下去,所以不可能通过控制表达式的值结束循环。循环体内, i=i10+1这个表达式的值永远小于 10,所以永远不会跳出循环,是死循环;选项 B中, while中表达式永远是非 0,不会结束循环;选项 C中,当 k10时,结束循环;选项 D中, while(s);后面没有任何表达式而是直接加了一个分号,会一直执行,形成死循环。 13 【正确答案】 B 【试题解析】 p 指向了 a3的地址,且 *p=a3=4,又有 *q=p-2;则 q 指向了 a5的地址,且 *q=a5=6,最后输出为 10。 14 【正确答案】 A 【试题解析】 根据运算符的优先级:逻辑非算术运算关系运

28、算逻辑与逻辑或赋值运算,可以计算得到为 A。其中 C选项因为 a、 b均不为 0,所以结果为 1。 15 【正确答案】 C 16 【正确答案】 D 【试题解析】 本题考查 if语句中的一种表达方式 ,即 :if卐 lse if叀 该表达式的语句是 : if(表达式 1) 语句 1 else if(表达式 2) 语句 2 else if(表达式 3) 语句 3 else 语句 4 厖 本题执行 else y=1.0,并且以 “%f“输出。 17 【正确答案】 C 【试题解析】 switch 语句的执行过程是:在 switch 后面的表达式的值和 case后面常量表达式的值吻合时,就执行后面的语句

29、如果在该语句的后面没有 break语句,则继续执行下一个 case,直到遇到 break 语句或 switch 多分支的结束,在 switch 语句中, break 语句的作用是使流程跳出 switch 结构,终止 Switch 语句的执行本题中在 for循环中嵌套了 swish语句,每循环一次通过 scanf()函数从键盘上输入一个 k值,然后执行 switch 语句。 for循环共循环了 2次,当 i=1时,从键盘上输入 0,使得 k的值为 0,执行 switch 语句中 case:0后面的语句,输出another,接着执行 case:0下面的语句输出 number,退出 switch 语

30、句,当 i=2时,从键盘上输入 1,使得 k的值为 1,执行 switch 语句中 case 1后面的语句,输出 number,退出 switch 语句当 i=3时退出循环故最后的输出为 another、number和 number,所 以, 4个选项中选项 C符合题意。 18 【正确答案】 B 【试题解析】 一个算法应当具有以下 5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出。简洁性不属于这 5个特性,所以本题应该选择 B。 19 【正确答案】 D 20 【正确答案】 C 【试题解析】 C语言中的关键字有 32个关键字 (参见 C语言教程 ),本题中只有C符合题意。 2

31、1 【正确答案】 C 【试题解析】 本题考查 if语句。先判断 if语句的条件是否成立, +a- 0,此条件成立,又因为是进行逻辑或运算 ,在己知其中一个运算对象为真的情况下,不必判断另外一个运算符的真假,即不进行 +b操作,就可以直接得出整个表达式的值为逻辑 1,执行下列的 +c。 22 【正确答案】 A 23 【正确答案】 A 【试题解析】 本题利用多重 for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。 24 【正确答案】 C 【试题解析】 本题考查逻辑与 (110和 100,

32、110是逻辑或的关系,因此只要将前两个表达式用逻辑或运算符连接起来即可,所以最后的表达式: (x 1)并且无返值。 31 【正确答案】 D 【试题解析】 本题考核的知识点是结构体数组元素成员的引用。结构体变量也有地址,因此可以把它的地址赋值给一个指针变量,然后通过该指针变量来引用结构体的成员,选项 A和选项 B就是通过指针变量来引用结构体的成员,故选项 A和选项 B 都正确,也可以通过结构体数组元素的成员引用,选项 C和选项 D属于这种情况,而在选项 D中 stu3.age不正确 ,因为结构体数组 stu共有三个元素,其下标应该为 0, 1, 2所以, 4个选项中选项 D符合题意。 32 【正

33、确答案】 C 【试题解析】 A和 B 两个表达式都已越界了; *t2是目标变量,即一个整数,而不是地址值。 33 【正确答案】 A 【试题解析】 对未给出初始值的整数数组元素,被默认初始化为零。 34 【正确答案】 B 【试题解析】 auto变量和 register变量在使用时,系统自动为其分配存储单元;退出时自动释放这些存储单元另做它用。 35 【正确答案】 C 【试 题解析】 (*pd)M中,由于一对圆括号的存在,所以 *首先与 prt结合,说明 ptr是一个指针变量,然后与 M结合,说明 prt的基类型是一个包含 M个 int型元素的数组。 36 【正确答案】 C 37 【正确答案】 A

34、 【试题解析】 通过 p1=p+使用指针 p指向数组 a1,所以 输出结果为 4。 50 【正确答案】 x0 x0 【试题解析】 函数 f()通过 for循环逐个比较数组 x中的元素,循环结束后, p0和 p1 分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值 xp0和数组的最后一个元素 xn-1) 交换位置,再将最小值 xp1和第一个元素 (x0)进行交换,所以空白处应该填入 x0。 51 【正确答案】 Hello 【试题解析】 字符串中,数值 0或符号 0表示字符串的结束。本题中, b5被赋了 0值,表明字符串 b的第六个字符就是结 束标志。因此,只输出前五个字符,即 Hel

35、lo。 52 【正确答案】 B 【试题解析】 因为 c是字符类型变量,它只能接收一个字符,所以 c=A,字符型变量在参与算术运算的时候是用其相应的 ASCII码参与运算的,这样 +c得到字母 B 的 ASCII码,用 putchar函数输出是输出其相应的字符,所以是 B。 53 【正确答案】 t le-5; t=t/n; 54 【正确答案】 xii xi-1j-1+xi-1j或 xi-1j+xi-1j-1 【试题解析】 在程序中有两重循环。在第一层 for循环中将每行的第 0列赋值为1,对角线上的元素赋值为 1,显然在第一个空白处应该填入对角线上的元素即xii,在第二重循环中给每行其他元素赋值,而在每行中除了第 0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空白处应该填入 xi-1j-1+xi-1j。 55 【正确答案】 -1或 -1.0或 -1 * sn 56 【正确答案】 (struct list *) (struct list *) return(h)

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

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

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