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

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

1、国家二级( C语言)机试模拟试卷 53 及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 ( B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 ( C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 ( D)线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性 2 下列叙述中正确的是 ( )。 ( A)栈是一种先进先出的线性表 ( B)队列是一种后进先出的线性表 ( C)栈与队列都是非线性结 构 ( D)以上三种说法都不对 3 软件测试的目的是 ( )。 ( A)评估软件可靠性 (

2、 B)发现并改正程序中的错误 ( C)改正程序中的错误 ( D)发现程序中的错误 4 在软件开发中,需求分析阶段产生的主要文档是 ( )。 ( A)软件集成测试计划 ( B)软件详细设计说明书 ( C)用户手册 ( D)软件需求规格说明书 5 软件生命周期是指 ( )。 ( A)软件产品从提出、实现、使用维护到停止使用退役的过程 ( B)软件从需求分析、设计、实现到测试完成的过程 ( C)软件的开发过程 ( D)软件的运行维护过程 6 面向对象方法中,继承是指 ( )。 ( A)一组对象所具有的相似性质 ( B)一个对象具有另一个对象的性质 ( C)各对象之间的共同性质 ( D)类之间共享属性

3、和操作的机制 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)并

4、11 计算机能直接执行的程序是 ( A)源程序 ( B)目标程序 ( C)汇编程序 ( D)可执行程序 12 以下叙述中正确的是 ( A) C语言规定必须用 main作为主函数名,程序将从此开始执行 ( B)可以在程序中 由用户指定任意一个函数作为主函数,程序将从此开始执行 ( C) C语言程序将从源程序中第一个函数开始执行 ( D) main的各种大小写拼写形式都可以作为主函数名,如: MAIN, Main等 13 以下选项中可用作 C程序合法实数的是 ( A) 3.0e0.2 ( B) 1.00E-01 ( C) E9 ( D) 9.12E 14 下列定义变量的语句中错误的是 ( A) i

5、nt _int; ( B) double int_; ( C) char For; ( D) float US$; 15 表达式: (int)(double)9/2)- 9%2 的值是 ( A) 0 ( B) 3 ( C) 4 ( D) 5 16 设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, 语句为变量 a1和 a2赋数值 10和 20,为变量 c1和 c2赋字符 X和 Y。以下所示的输入形式中正确的是(注: 代表空格字符) ( A) 10X回车 20Y回车 ( B) 10X20Y回车 ( C) 10X回车 20Y回车 ( D) 10X20Y回车 17 以下选项中不能作 为

6、 C语言合法常量的是 ( A) 0.1e+6 ( B) cd ( C) a ( D) 011 18 if语句的基本形式是: if (表达式 ) 语句,以下关于 “表达式 “值的叙述中正确的是 ( A)必须是逻辑值 ( B)必须是整数值 ( C)必须是正数 ( D)可以是任意合法的数值 19 有如下嵌套的 if语句 if(a b) if(a c) k=a; else k=c; else if(b c) k=b; else k=c; 以下选项中与上述 if语句等价的语句是 ( A) k=(a b): (b c): a:b):(b c): b:c); ( B) k=(a b): (a c): a:c

7、):(b c): b:c); ( C) k=(a b): a:b;k=(b c): b:c; ( D) k=(a b): a:b;k=(a c): a:c; 20 有以下程序 #include stdio.h main() int k=5; while(-k) printf(“%d“,k -= 3); printf(“n“); 执行后的输出结果是 ( A) 1 ( B) 2 ( C) 4 ( D)死循环 21 有以下程序 #include stdio.h main() int i,j; for(i=3; i =1; i-) for(j=1; j =2; j+) printf(“%d “,i+j

8、); printf(“n“); 程序的运行结果是 ( A) 4 3 2 5 4 3 ( B) 4 5 3 4 2 3 ( C) 2 3 3 4 4 5 ( D) 2 3 3 4 2 3 22 有以下程序 #include stdio.h main() int k=5,n=0; do switch(k) case 1: case 3: n+=1; k-; break; default: n=0; k-; case 2: case 4: n+=2; k-; break; printf(“%d“,n); while(k 0 程序运行后的输出结果是 ( A) 02356 ( B) 235 ( C) 2

9、35 ( D) 2356 23 以下关于 return语句的叙述中正确的是 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定义成 void类型的函数中可以有带返回值的 return语句 ( D)没有 return语句的自定义函数在执行结束时不能返回到调用处 24 已定义以下函数 int fun( int *p) return *p; fun函数返回值是 ( A)一个整数 ( B)不确定的值 ( C)形参 p中存放的值 ( D)形参 p的地址值 25 以下程序段完全正确的是 ( A) int *p; scanf(

10、“%d“, ( B) int *p; scanf(“%d“, p); ( C) int k, *p= scanf(“%d“, p); ( D) int k, *p; *p= scanf(“%d“, p); 26 设有定义 double a10 ,*s=a; 以下能够代表数组元素 a3的是 ( A) (*s)3 ( B) *(s+3) ( C) *s3 ( D) *s+3 27 有以下程序 #include stdio.h void f( int *q ) int i=0; for ( ;i 5; i+) (*q)+; main() int a5 =1,2,3,4,5, i; f(a); for

11、 (i=0;i 5; i+) printf(“%d,“, ai); 程序运行后的输出结果是 ( A) 6, 2, 3, 4, 5, ( B) 2, 2, 3, 4, 5, ( C) 1, 2, 3, 4, 5, ( D) 2, 3, 4, 5, 6, 28 有以下程序 #include stdio.h 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 a44=1,2,3,4, 11,12,13,14, 21,22,23,24, 31

12、,32,33,34; printf(“%dn“,fun(a,4,0); 程序的运行结果是 ( A) 4 ( B) 34 ( C) 31 ( D) 32 29 以下选项中正确的语句组是 ( A) char *s; s=“BOOK!“; ( B) char *s; s=“BOOK!“; ( C) char s10; s=“BOOK!“; ( D) char s; s=“BOOK!“; 30 若有定义语句: char *s1=“OK“, *s2=“ok“; 以下选项中,能够输出 “OK“的语句是 ( A) if (strcmp(s1,s2)!=0) puts(s2); ( B) if (strcmp

13、(s1,s2)!=0) puts(s1); ( C) if (strcmp(s1,s2)=1) puts(s1); ( D) if ( strcmp(s1,s2)=0) puts(s1); 31 有以下程序 #include stdio.h void fun(char *p) +p; printf(“%sn“,*p); main() char *a = “Morning“, “Afternoon“, “Evening“, “Night“; fun(a); 程序的运行结果是 ( A) Afternoon ( B) fternoon ( C) Morning ( D) orning 32 有以下程

14、序,程序中库函数 islower (ch)用以判断 ch中的字母是否为小写字母 #include stdio.h #include ctype.h void fun(char *p ) int i=0; while(pi) if(pi= i+; main() char s1100=“ab cd EFG !“; fun(s1); printf(“%sn“,s1); 程序运行后的输出结果 是 ( A) ab cd EFg ! ( B) Ab Cd EFg ! ( C) ab cd EFG ! ( D) aB cD EFG ! 33 有以下程序 #include stdio.h int f(int

15、x) int y; if (x = 0 | x= 1) return (3); y = x*x - f(x-2); return y; main() int z; z = f(3); printf(“%dn“, z); 程序的运行结果是 ( A) 0 ( B) 9 ( C) 6 ( D) 8 34 有以下程序 #include stdio.h int fun(int x,int n) static int sum=0, i; for(i=0;i n;i+) sum+=xi; return sum; main() int a=1,2,3,4,5, b=6,7,8,9, s=0; s=fun(a,

16、5)+fun(b,4); printf(“%dn“,s); 程序执行后的输出结果是 ( A) 55 ( B) 50 ( C) 45 ( D) 60 35 有以下结构体说明、变量定义和赋值语句 struct STD char name10; int age; char sex; s5,*ps; ps= 则以下 scanf函数调用语句有错误的是 ( A) scanf(“%s“,s0.name); ( B) scanf(“%d“, ( C) scanf(“%c“, ( D) scanf(“%d“,ps- age); 36 若有以下语句 typedef struct S int g; char h;

17、T; 以下叙述中正确的是 ( A)可用 S定义结构体变量 ( B)可用 T定义结构体变量 ( C) S是 struct 类型的变量 ( D) T是 struct S类型的变量 37 有以下程序 #include stdio.h #include string.h struct A int a; char b10; double c; ; struct A f(struct A t); main() struct A a=1001,“ZhangDa“,1098.0; a=f(a); printf(“%d,%s,%6.1fn“,a.a,a.b,a.c); struct A f(struct A t

18、) t.a=1002; strcpy(t.b,“ChangRong“); t.c=1202.0; return t; 程序运行后的输出结果是 ( A) 1002,ZhangDa,1202.0 ( B) 1002,ChangRong,1202.0 ( C) 1001,ChangRong,1098.0 ( D) 1001,ZhangDa,1098.0 38 设有宏定义: #define IsDIV(k,n) ( ( k%n=1) : 1 : 0) 且变量 m已正确定义并赋值,则宏调用: IsDIV(m,5) x = (ab) printf(“%dn“,x); 程序的运行结果是 ( A) 3 ( B

19、) 1 ( C) 2 ( D) 0 40 有以下程序 #include stdio.h main() FILE *fp; int k, n, a6=1,2,3,4,5,6; fp = fopen(“d2.dat“, “w“); fprintf(fp, “%d%d%dn“, a0,a1,a2); fprintf(fp, “%d%d%dn“, a3,a4,a5); fclose(fp); fp = fopen(“d2.dat“, “r“); fscanf(fp, “%d%d“, printf(“%d %dn“, k, n); fclose(fp); 程序运行后的输出结果是 ( A) 1 2 ( B

20、) 1 4 ( C) 123 4 ( D) 123 456 二、程序填空题 41 给定程序中,函数 fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为 2、 4、 6、 810,逆置后,从头至尾结点数据域依次为10、 8、 6、 4、 2。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h #include stdlib h #define N 5 typedef struct node int data; struct node

21、*next, NODE; /*found*/ 【 1】 fun(NODE*h) NODE*P, *q, *r; p=h; if(p=NULL) return NULL; q=p一 next; P一 next=NULL: while(q) /*found*/ r=q一 【 2】 ; q一 nexL=P, p=q, /*found*/ q=【 3】 , return p, NODE*creatlist(int a) NODE*h, *p, *q, int i; h=NULL; for(i=0; i N; i+) q=(NODE*)malloc(sizeof (NODE); q一 data=ai;

22、q一 next=NULL; if(h=NULL)h=p=q, elseP一 next=q; p=q, ) return h; void outlist(NODE*h) NODE*p; P=h; if(p=NULL) printf(“The list is NULL!n”); else printf(“ nHead”); do printf(“一 d”, p一 data), p=P一 next; ) while(P!=NULL); printf(“一 End n”); main() NODE*head; int aN=2, 4, 6, 8, 10, head=creatlist(a); prin

23、tf(“ nThe original list: n”); outlist(head); head=fun(head); printf(“ nThe list after iverting: n”); outlist(head); 三、程序修改题 42 下列给定程序中函数 fun的功能是:将 s所指字符串中出现的与 t1所指字符串相同的了串全部替换为 t2所指字符串,所形成的新串放在 w所指的数组中。要求t1和 t2所指字符串的长度相同。 例如,当 s所指字符串中的内容为 “abcdabfab”, t1所指子串中 的内容为 “ab”, t2所指子串中的内容为 “99”时,在 W所指的数组中的内

24、容应为 “99cd99t99”。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #inclucle stdlib h #include conio h #include stdio h #include string h void fun(char*s, char*t1, char*t2, char*w) char*P, *r, *a; strcpy(w, s); while(*w) P=w;r=t1; /*found*/ while(r) if(*r=*P)r+, P+, ) else break, if(*r

25、=0) a=w; r=t2; while(*r) /*found*/ *a=*r;a+; r+ w+=strlen(t2); else w+: void main() char s100, t1100, t2100, w100; system(“CLS”), printf(“nPlease enter string S: ”); scanf(“ s”, s), printf (“ nPlease enter substring t1: ”); scanf(“ s”, t1), printf (“ nPlease enter substring t2: ”); scanf(“ s”, t2);

26、if(strlen(t1)=strlen(t2) fun(s, t1, t2, w); printf(“ nThe result is: s n”, w), else printf(“Error: strlen(t2) n”), 四、程序设计题 43 假定输入的字符串中只包含字母和 *号。请编写函数 fun,其功能是:除了尾部的 *号之外,将字符中其他的 *号伞部删除。形参 P已 指向字符串中最后的一个字母。在编写函数时,不得使用 C语言提供的宁符串函数。 例如,字符串中的内容为 “*A*BC*DEF*G*”,删除后,字符串中的内容应当是 “ABCDEFG*”。 注意:部分源程序给出如下。 请

27、勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include conio h #include stdio h void fun(char*a, char*P) void main() char s81, *t, printf(“Enter a string: n”); gets(s); t=S; while(0 t) t+: t一一; *指针 t指向字符串尾部 * while(*t=*) t一一 ; *指针 t指向最后一个字母 * fun(s, t), printf(“The string after deleted: n”);

28、 puts(s), 国家二级( C语言)机试模拟试 卷 53 答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以一般要多于顺序存储结构。 2 【正确答案】 D 【试题解析】 栈是一种先进后出的线性表,队列是一种先进先出的线性表,栈与队列都是线性结构。 3 【正确答案】 D 【试题解析】 软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能。不是为了评估软件或改正错误。 4 【正确答案】 D 【试题解 析】 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说

29、明书、需求评审四个方面。所以选择 D。 5 【正确答案】 A 【试题解析】 通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。 6 【正确答案】 D 【试题解析】 继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定 义它们,所以说继承是指类之间共享属性和操作的机制。 7 【正确答案】 D 【试题解析】 层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维

30、表来表示,所以三种数据库的划分原则是数据之间的联系方式。 8 【正确答案】 C 【试题解析】 因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。 9 【正确答案】 C 【试题解析】 数据库系统的三级模式是概念模式、外模式和内模式。概念模式是数据库系统中全局数据逻辑 结构的描述,是全体用户公共数据视图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,所以选择 C。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法。 10 【正确答案】 B 【试题解析】 关系 T中的元组是 R关系中有而 S 关系中没有的元组的集合

31、,所以进行的是差的运算。 11 【正确答案】 D 【试题解析】 计算机能直接执行的程序是二进制的可执行程序 ,扩展名为 .exe,所以选择 D选项。 12 【正确答案】 A 【试题解析】 C语言中的主函数唯一 为 main()函数不能任意指定 ,所以 B选项错误, C语言从主函数 main()开始 ,到主函数 main()结束 ,所以 C选项错误,主函数必须写成小写的 main,不能混淆大小写 ,所以 D选项错误。 13 【正确答案】 B 【试题解析】 A选项中 E 后面的指数必须为整数, C语言规定 ,E 之前必须要有数字 ,所以 C选项错误, E 后面必须要有数字 ,且必须为整数 ,所以

32、D选项错误。 14 【正确答案】 D 【试题解析】 C语言规定 ,变量命名必须符合标识符的命名规则, D选项中包含了非法字符 “$“,所以错误,标识符由字母 ,数字或下划线组成 ,且第一个字符必须是大小写英文字母或者下划线 ,而不能是数字,大写字符与小写字符被认为是两个不同的字符 ,所以 For不是关键字 for。 15 【正确答案】 B 【试题解析】 先将整型数据 9强制转换成 double型 ,然后除以 2得到的结果与double型保持一致 ,即为 4.5,然后将 4.5强制转换成整型数据 4,然后计算 9%2的值为 1,最后计算 4-1的值为 3,所以选择 B 选项。 16 【正确答案】

33、 C 【试题解析】 输入数据的格式必须与 scanf()的格式控制串完全匹配 ,如果 A、 B、D选项中在数字 10后面均输入了空格 ,则会将空格赋给变量 c1,而不是把 X赋给 c1,所以选择 C选项。 17 【正确答案】 B 【试题解析】 要想表示字符串常量应该用双引号表示 ,即 “cd“,单引号 用于表示字符常量 ,所以 B 选项中的表示方法错误。 18 【正确答案】 D 【试题解析】 if语句中的表达式可以是任意合法的数值 ,如常量 ,变量表达式,所以 D选项正确。 19 【正确答案】 B 【试题解析】 题目中嵌套语句的含义是当 a b 且 a c成立 ,则将 a的值赋给 k,如果 a

34、 b 成立而 a c不成 立将 c的值赋给 k,如果 a b不成立而 b c成立 ,将 b的值赋给 k,如果如果 a b 不成立且 b c也不成立 ,将 c的值赋给 k?判断条件表达式只有 B 选项可以表示这个含义 . 20 【正确答案】 A 21 【正确答案】 B 【试题解析】 第一次执行外循环 ,i的值为 3,第一次执行内循环 j的值为 1,j =2条件成立 ,打印 i+j的值 ,即 4;第二次执行内循环 j的值为 2,j =2 条件成立 ,打印 i+j的值 ,即 5;再判断条件不成立 ,打印回车换行符 ,跳出内循环,第二次执行外循环 ,i的值为 2,内循环的执行同第一次一样 ,所以打 印

35、 3和 4,打印回车换行 ,结束内循环,第三次执行外循环 i的值为 1,同理内循环中打印 2和 3,打印回车换行符 ,结束内循环。 22 【正确答案】 C 【试题解析】 k 的值为 5,逐个对 case语句进行匹配 ,均不匹配 ,执行 default下的语句 n=0;k- -;在执行 case2:后面的空语句 ,与 case4:后面的 n+=2;k-;执行 break 语句跳出 switch 判断 ,打印 n 的值 ,即 2,经过第一次循环后 ,k的值为 3,然后进行 k 0 k- -;再执行break 语句跳出循环 ,此时打印 n 的值 3,此时 k的值为 2,第三次执行循环体 k 的值为

36、2,满足条件 ,执行 case2:case4:后面的语句 n+=2,k-,跳出循环体,打印 n的值 5,此时 n不小于 5了条件 k 0 的左端 *p 是指针所指内存空间的 值, 即 pi-1=pi-1-32,意思是将 pi-1中的字符转换为大写。因此 D选项正确。 33 【正确答案】 C 【试题解析】 主函数中调用 f函数,同时将数值 3传递给变量 x,执行条件与if(x=0|x= 1);此时条件不成立,跳过 return (3);,直接执行语句 y=x*x-f(x-2); 这里 f(x-2)为函数的递归调用,再次调用 f函数,此时 x=1,条件语句 条件成立,返回 3给 f(1), y=3

37、*3-3=6,最后将 6返回主函数,并进行输出。因此 C选项正确。 34 【正确答案】 D 【试题解析】 内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。 fun(a,5)的值是15,再次调用后 sum=15,所以 fun(b,4)=45, s=45+15=60。因此 D选项正确。 35 【正确答案】 D 【试题解析】 本题考查结构体的相关知识,题目中需要输入一个变量, scanf 要求参数为指针,而 D选 项中 ps- age为一个变量,不是指针,所以错误。 36 【正确答案】 B 【试题解析】 本题考查 typedef 重

38、新声明一种结构体类型,那么 T为结构体类型,而不是结构体变量,所以 B 选项正确。 37 【正确答案】 B 【试题解析】 本题考查结构体变量的引用以及作为函数参数,题目虽然看似复杂,其实比较容易, f函数的参数是结构体变量,然后对参数重新赋值并返回,所以该题目的答案为 B 选项。 38 【正确答案】 A 39 【正确答案】 A 【试题解析】 本题考查位运算符以及相关运算, 为按位或, *t!= 0; t+) *(a+)=*t; *将 p以后的所有 *号保留下来 * *a= 0; *在字符串最后加上字符串结束标识 * 【试题解析】 本题用两个循环语句米实现。第 1个循环的作用是将指针 p所指 7母以前所有非 *号的字符保留下来,即删除指针 p 以前所 有的 *号;第 2个循环的作用是将指针 p 以后的所有 *号保留下来。最后在新串的结尾加上结束符。

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

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

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