[计算机类试卷]国家二级(C语言)机试模拟试卷104及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试模拟试卷104及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试模拟试卷104及答案与解析.doc(31页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试模拟试卷 104及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)数据的存储结构会影响算法的效率 ( B)算法设计只需考虑结果的可靠性 ( C)算法复杂度是指算法控制结构的复杂程度 ( D)算法复杂度是用算法中指令的条数来度量的 2 设数据集合为 D=1, 2, 3, 4, 5。下列数据结构 B=(D, R)中为非线性结构的是 ( )。 ( A) R=(1, 2), (2, 3), (3, 4), (4, 5) ( B) R=(1, 2), (2, 3), (4, 3), (3, 5) ( C) R=(5, 4), (4, 3), (3, 2), (2
2、, 1) ( D) R=(2, 5), (5, 4), (3, 2), (4, 3) 3 某二叉树共有 150个结点,其中有 50个度为 1的结点,则 ( )。 ( A)不存在这样的二叉树 ( B)该二叉树有 49个叶子结点 ( C)该二叉树有 50个叶子结点 ( D)该二叉树有 51个叶子结点 4 循环队列的存储空间为 Q(1: 50),初始状态为 front=rear=50。经过一系列正常的入队与退队操作后, front=rear=25,此后义正常地插入了一个元素,则循环队列中的 元素个数为 ( )。 ( A) 51 ( B) 50 ( C) 49 ( D) 1 5 下列排序方法中,最坏情
3、况下时间复杂度 (即比较次数 )低于 O(n2)的是 ( )。 ( A)快速排序 ( B)简单插入排序 ( C)冒泡排序 ( D)堆排序 6 下面描述正确的是 ( )。 ( A)软件测试是指动态测试 ( B)软件测试可以随机地选取测试数据 ( C)软件测试是保证软件质量的重要手段 ( D)软件测试的目的是发现和改正错误 7 下面图中属于软件设计建模工具的是 ( )。 ( A) DFD图 (数据流程图 ) ( B)程序流程图 (PFD图 ) ( C)用例图 (USE_CASE图 ) ( D)网络工程图 8 数据库 (DB)、数据库系统 (DBS)和数据库管理系统 (DBMS)之间的关系是 ( )
4、。 ( A) DB包括 DBS和 DBMS ( B) DBMS包括 DB和 DBS ( C) DBS包括 DB和 DBMS ( D) DBS、 DB和 DBMS相互独立 9 医院里有不同的科室,每名医生分属不同科室,则实体科室与实体医生问的联系是 ( )。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 10 有 3个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( )。 ( A)投影 ( B)选择 ( C)交 ( D)差 11 以下叙述错误的是 ( )。 ( A)任何能通过编译和运行的算法都一定能得到所期望的结果 ( B)一个算法所包含的操作步骤应该是有限
5、的 ( C)算法中每一条指令必须有确切的含义 ( D)算法可以用各种描述方法来进行描述 12 若有定义语句: int x=10: 则表达式 x-=x+x的值为 ( )。 ( A) 10 ( B) -20 ( C) 0 ( D) -10 13 若有定义: double a=22; int i=0 k=18; 则不符合 C语言规定的赋值语句是 ( )。 ( A) a=a+, i+; ( B) i=(a+k) =(i+k); ( C) i=a 11; ( D) i=!a; 14 以下选项中,合法的 C语言实数是 ( )。 ( A) 4e0 ( B) 4 3e0 2 ( C) E4 8 ( D) 0
6、29E 15 以下选项中,与 k=n+完全等价的表达式是 ( )。 ( A) k=n, n=n+1 ( B) n=n+1, k=n ( C) k=+n ( D) k+=n+1 16 以下叙述错误的是 ( )。 ( A)若用户标识符的命名与预定义标识符相同,命名无效 ( B)若用户标识符的命名与关键字相同,将产生编译错误 ( C)若用户标识符的命名与预定义标识符相同,预定义标识符失去原有含义 ( D)若用户标识符的命名与预定义标识符相同,可能引发运行错误 17 没有定义: doublex;,以下选项中不能将输人数据 3 14读入赋给变量 x的是( )。 ( A) scanf(“ 4 2f“, &
7、x); ( B) scanf(“ 1f“, &x); ( C) scanf(“ 1e“, &x); ( D) scanf(“ 41f“, &x); 18 若有定义: float x=1 5: int a=1, b=3, c=2; 则正确的 switch语句是 ( )。 ( A) switch(a+b) case1: printf(“* n“); case2+1: printf(“* n“); ( B) switch(int)x); casel: printf(“* n“); case2: printf(“* n“); ( C) switch(x) case1 0: printf(“* n“);
8、 case2 0: printf(“* n“); ( D) switch(a+b) case1: printf(“* n“); case c: printf(“* n“); 19 有以下程序段: #include stdio h 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 n“, 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=50 b=30 c=50 2
9、0 以下关于循环语句的叙述中正确的是 ( )。 ( A) dowhile 语句的循环体至少执行一次 ( B) while语句的循环体至少执行一次 ( C) for语句的循环体至少执行一次 ( D)上述 A、 B、 C说法均正确 21 有以下稃序: #include stdio h main() int x, y=0, z=0, t; do scanf(“ d“, &x); t=x 0: switch(t) ease 0: break; ease1: y+=x; continue; z+=x; while(x); printf(“ d, d n“, y, z); 程序运行时输入: -1 1 -2
10、 2 0回车,则输出结果是 ( )。 ( A) 1, 1 ( B) 1, 0 ( C) 3, -3 ( D) 3, 0 22 有以下程序: #include stdio h main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i 3; i+) for(j=i; j =i; j+) t+=bibji; printf(“ d n“, t); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 4 ( C) 1 ( D) 9 23 以下选项中能正确定义二维数组的选项是 ( )。 ( A) double a3=2*3; (
11、B) double a3; ( C) double a3=; ( D) double a23=1 0, 2 0, 3 0, 4 0; 24 若有函数定义如下: int fun(int x, int y) return x-y; 则以下涉及上述函数的说明语句错误的 ( )。 ( A) int fun(int x, y); ( B) int fun(int, int); ( C) int fun(int a, int b); ( D) int i, fun(int x, int y); 25 有以下程序: #include stdio h #define N4 main() int aNN=0,
12、i, j, k; for(i=0; i N 2; i+) for(j=i; j N-i; j+) aij=aN-i-1j: i+l; for(k=i+1: k N-i-1; k+) aki=akN-i-1: i+1; for(j=0; j N; j+) printf(“ 2d“, a1j); printf(“ n“); 执行后的输出结果是 ( )。 ( A) 1 2 2 1 ( B) 1 1 1 1 ( C) 2 1 1 2 ( D) 2 2 2 2 26 有以下程序: #include stdio h int f(int n); main() int a=3, s; S=f(a); s=s+
13、f(a); printf(“ d n“, s); int f(int n) statie int a=1; n+=a+: return n; 程序运行后的输出结果是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 27 有以下程序: #include stdio h main() ehar s6=“abcd“, “abc“, “ab; int i; for(i=0; i 3; i+)puts(si); 执行后的输出结果是 ( )。 ( A) babcd abc ab ( B) a a a ( C) abcd bcd cd ( D) a b C 28 若有以下函数: int
14、fun(char*a, char*b) int bk=0: while(*a!= 0)&(*b!= 0)&strlen(a)=strlen(b) if(*b!=*a)bk=0; break; a+; b+; bk=1; return bk; 此函数的功能是 ( )。 ( A)判断 a和 b两个字符串是否相等 ( B)将字符串 a改名为字符串 b ( C)将字符串变量 a的值赋给字符串变量 b ( D)检查字符串 a和 b中是否有 0 29 设有如下定 义和语句: 1char*s; s=“string“; 2char s7; s=“string“; 3char s=“string“; 4char
15、 s=s, t, r, i, n, g; 其中定义项可以作为字符串使用的是 ( )。 ( A) 1和 4 ( B) 1和 2 ( C) 1和 3 ( D) 3和 4 30 有以下程序: #include stdio h #include stdlib h int fun(int n) int*p; P=(int*)malloe(sizeof(int); *p=n; return*p; main() int a; a=fun(10); printf(“ d n“, a+fun(10); 程序的运行结果是 ( )。 ( A) 10 ( B) 20 ( C) 0 ( D)出错 31 有以下程序: #
16、include stdio h strut S int a, b; data2=10, 100, 20, 200; main() struct S P=data1; printf(“ d n“, +(p a); 程序运行后的输 H结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 32 以下叙述中正确的是 ( )。 ( A)当对文件的读 (写 )操作完成之后,必须将它关闭,否则可能导致数据丢欠 ( B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 ( C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第 1个数据
17、( D) C语言中的文件是流式文件,因此只能顺序存取数据 33 有以下程序: #include stdio h nlain() FILE*fp; int i, a6=1, 2, 3, 4, 5, 6, k; fp=fopen(“datadat“, “w+b“); fwite(&a0, sizeof(int), 1, fp); for(i=1; i 6; i+) fseek(fp, 0L, 0); fwrite(&ai, sizeof(int), 1, fp); fseek(fp, 0L, 0); fread(&k, sizeof(int), 1, fp); felose(fp); printf
18、(“ d n“, k); 程序运行后 的输出结果是 ( )。 ( A) 123456 ( B) 21 ( C) 6 ( D) 654321 34 有以下程序: #include stdio h #define S(x)(x x)*x main() int k=6, j=3; printf(“ d, d n“, S(k+j), S(j+k); 程序运行后的输出结果是 ( )。 ( A) 57, 39 ( B) 57, 57 ( C) 9, 9 ( D) 39 39 35 若要通过位运算使整型变量 a中的各位数字全部清零,以下选项正确的是 ( )。 ( A) a=a&0; ( B) a=a 10;
19、 ( C) a=a0; ( D) a=!a: 36 程序中若有以下的说明定义和语句: #include stdio h #include string hstruct STRchar hum10; int s; ; main()struct STR t, *p; p=&t; 则不能给变量 t的 s成员赋整数 99,给 num成员赋空串的语句组是 ( )。 ( A) (*p) s=99; (*p) num=“ “; ( B) p- s=99; p- num0=0; ( C) (*p) s=99; p- num0= 0; ( D) p- s: 99; strcpy(*p) num, “ “); 3
20、7 有以下程序: #include stdio h int fun(int a) int b=2; static int c=2; b+: c-; return(a+b+c); main() int k, a=2; for(k=0; k 3; k+)printf(“ d“, fun(a); printf(“ n“); 执行后的输出结果是 ( )。 ( A) 678 ( B) 666 ( C) 654 ( D) 456 38 有定义语句: int i; char s110, s210=“Program“;则能正确给 s1数组赋字符串的语句是 ( )。 ( A) for(i=0; i =7; i+
21、)s1i=s2i; ( B) s1=s2; ( C) while(s2)s1+=s2+; ( D) for(i=0; s2i; i+)sli=s2i; 39 以下程序拟读取一个姓氏,查找其对应的年龄并输出: #include stdio h #include string h #include stdlib h struct personchar name10; int age; ; struet person group6=“zhang“, 18, “wang“, 20, “li“, 19, “zhao“, 18, “liu“ 19 , *p; main() int i, flag=0; p
22、=(struet person*)malloc(sizeof(struet person); gets(&p- name); for(i=0; i 6; i+) if(stremp(p- name, groupi name)=0) printf(“ d n“, groupi age); flag=1; if(flag=0)printf(“No find! n“); 程序有语法错误,出错的是 ( )。 ( A) gets(&p- name); ( B) p=(struet person*)malloc(sizeof(struet person) ( C) if(stremp(p- name, g
23、roupi name)=0) ( D) printf(“ d n“, groupi age) 40 有以下程序: #include stdio。 h #include stdlib h main() FILE*fp; char ch, str5; if(fp=fopen(“file txt“, “wb+“)=NULL) printf(“error! n“); exit(0); ch=getchar(); while(ch!=!) fputc(ch, fp); ch=getchar(); rewind(fp); do fgets(str, 4, fp); puts(str); while(!fe
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 模拟 104 答案 解析 DOC
