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

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

1、国家二级( C语言)机试模拟试卷 128及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)循环队列是队列的一种链式存储结构 ( B)循环队列是队列的一种顺序存储结构 ( C)循环队列是非线性结构 ( D)循环队列是一种逻辑结构 2 下列关于线性链表的叙述中,正确的是 ( )。 ( A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 ( B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 ( C)进行插入与删除时,不需要移动表中的元素 ( D)以上说法均不正确 3 一棵二叉树共有 25个结点,其中 5个是叶子结点,则度为 1的结点数为 (

2、 )。 ( A) 16 ( B) 10 ( C) 6 ( D) 4 4 在下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( )。 ( A)外模式 ( B)内模式 ( C)概念模式 ( D)逻辑模式 5 下列数据结构中,能够按照 “先进后出 ”原则存取数据的是 ( )。 ( A)栈 ( B)循环队列 ( C)队列 ( D)二叉树 6 下列数据结构中,属于非线性结构的是 ( )。 ( A)顺序 队列 ( B)带链队列 ( C)顺序栈 ( D)二叉树 7 在循环队列数据结构中,下列叙述中正确的是 ( )。 ( A)队头指针是固定不变的 ( B)队头指针一定大于队尾指针 ( C)队头指针可

3、以大于队尾指针,也可以小于队尾指针 ( D)队头指针一定小于队尾指针 8 计算机术语中算法的空间复杂度是指 ( )。 ( A)算法在执行过程中所需要的临时工作单元数 ( B)算法所处理的数据量 ( C)算法程序中的语句或指令条数 ( D)算法在执行过程中所需要的计算机存储空间 9 计算机软件设计过程中,符 合划分模块的准则的选项是 ( )。 ( A)低内聚低耦合 ( B)高内聚高耦合 ( C)低内聚高耦合 ( D)高内聚低耦合 10 计算机程序设计过程中,不属于结构化程序设计原则的是 ( )。 ( A)可封装 ( B)模块化 ( C)自顶向下 ( D)逐步求精 11 软件详细设计生产的图如下图

4、: 该图是 ( )。 ( A) N一 S图 ( B) PAD图 ( C)程序流程图 ( D) E一 R图 12 计算机数据库管理系统是 ( )。 ( A)操作系统的一部分 ( B)一种操作系统 ( C)一种编译系统 ( D)在操作系统支持下的系统软件 13 在 E一 R图中,用来表示属性的图形是 ( )。 ( A)椭圆形 ( B)矩形 ( C)菱形 ( D)三角形 14 有三个关系表 R、 S和 T,其内容如下:其中关系 T由关系 R和 S通过某种操作得到,该操作为 ( )。 ( A)选择 ( B)求差 ( C)求交 ( D)并 15 以下关于 C程序叙述中正确的是 ( )。 ( A)程序的执

5、行总是从程序的第一个函数开始,在 main函数结束 ( B)程序的执行总是从 main函数开始,在程序的最后一个函数中结束 ( C)程序的执行 总是从 main函数开始 ( D)程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 16 以下关于结构化程序设计的叙述中正确的是 ( )。 ( A)在 C语言中,程序的模块化是利用函数实现的 ( B)结构化程序使用 goto语句会很便捷 ( C)一个结构化程序必须同时由顺序、分支、循环三种结构组成 ( D)由三种基本结构构成的程序只能解决小规模的问题 17 若 a是数值类型,则逻辑表达式 a=1)(a! =1)的值是 ( )。 ( A)

6、 0 ( B) 1 ( C) 2 ( D)不知道 a的值,不能确 定 18 以下定义语句中正确的是 ( )。 ( A) int x=y=2; ( B) char A=65 b=b; ( C) float a=1, *b=&a, *c=&b; ( D) double a=0 0+1, b=1 1: 19 以下选项中符合 C语言语法的是 ( )。 ( A) x+1=y ( B) x+, y=x ( C) x=x+10=x+y ( D) float(x) 10 20 在 C程序中已经定义三个整型变量 x, y, z,要通过语句: scanf( d, d, d, &x, &y, &z); 给 x赋值

7、1、给 y赋值 2、给 z赋值 3,以下输入形式中错误的是 ( )。 (注:口代表一个空格符 ) ( A) 1, 2, 3 ( B)口口口 1, 2, 3 ( C) 1,口口口 2,口口口 3 ( D) 1口 2口 3 21 若要打印出字符 A,以下语句不正确的是 ( )。 (注:字符 A的 ASC 码值为65,字符 a的 ASC 码值为 97) ( A) printf( c n, a一 32); ( B) printf( c n, B1); ( C) printf( c n, 65); ( D) printf( d n, A); 22 C语言的合法常量是 ( )。 ( A) 3, 100 (

8、 B) 2 5E5 0 ( C) ( D) 002 23 设有定义: int a=1, b=2, c=3; 以下语句中执行效果与其他三个不同的是 ( )。 ( A) if(a b) c=a; a=b; b=c; ( B) if(a b)e=a, a=b, b=c; ( C) if(a b)c=a, a=b, b=c; ( D) if(a b)c=a; a=b, b=c; 24 有以下程序: #include void main() int y=1; while(y); y; printf(y= d n, y); 程序执行后的输出结果是 ( )。 ( A) y=0 ( B) y=一 1 ( C)

9、 y=1 ( D) while构成无限循环 25 有以下程序: #include void main() int i, j; for(i=1; i 3; i+) for(j=i; j 3; j+)printf( d* d= d, i, j, i*j); printf( n); ( A) 1*1=1 1*2=2 2*2=4 ( B) 1*1=1 1*2=2 2*1=2 2*2=4 ( C) 1*1=1 1*2=2 2*2=4 ( D) 1*1=1 1=1 2*1=2 2*2=4 26 有以下程序: #include void main() int i=7; do if(i 3=1) if(i 5

10、=2) printf(* d, i); break; i+: while(i! =0); printf( n); 程 序运行后的输出结果是 ( )。 ( A) *7 ( B) *3, *5 ( C) *5*3 ( D) *7*8 27 有以下程序: #include float f(float x); void main() float a=0; for(int i=2; i 5; i+)a+=f(float)i); printf( 3 0f n, A); float f(float x) return x*x+1; 程序运行后的输出结果是 ( )。 ( A) 32 ( B) 29 ( C)

11、33 ( D) 28 28 对函数 int fun(float x10, int*n)声明正确语句是 ( )。 ( A) int fun(float, int); ( B) int fun(float*, int*); ( C) int fun(float*x, int n); ( D) int fun(float x, int*n); 29 有以下程序: #nclude void main() int x=1, y=2, *p=&x, *q=&y, *r; r=p; p=q; q=r; printf( d, d, d, d n, x, y, *P, *q); 程序运行后的输出结果是 ( )。

12、 ( A) 2, 1, 1, 2 ( B) 1, 2, 1, 2 ( C) 1, 2, 2, 1 ( D) 2, 1, 2, 1 30 若有以下定义: int a10, *pt=x; 则对 a数组元素的正确引用是 ( )。 ( A) pt+4 ( B) *&a10 ( C) *(pt+10) ( D) *(a+5) 31 有以下程序: #nclude void main() int i, s=0, t=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i=0; i 9; i+=2)s+=*(t+i); printf( d n, s); 程序执行后的输出结果是 ( )。 ( A) 2

13、5 ( B) 20 ( C) 40 ( D) 36 32 有以下程序: #include #define N 4 void fun(int aN, int b) int i; for(i=0; i N; i+)bi=aii; void main() int xN=1, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 11, yN, i; fun(x, y); for(i=0; i N; i+)printf( d, , yi); printf( n); 程序运行后的输出结果是 ( )。 ( A) 1, 3, 5, 9, ( B) 1, 2, 3, 4, ( C) 1, 3, 7,

14、0, ( D) 3, 4, 8, 10 33 C语言中定义了字符指针, char*c,则将 c指向一个字符串的是 ( )。 ( A) char ss=text; c=ss; ( B) scanf( s, c); ( C) c=getchar(); ( D) *c=text; 34 若有定义语句: char str8=abcdef 0 0; 则 strlen(str)的值是 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 35 有以下程序: #include #include void main() char s115=a, b, c, d, s2=abcd, s3=abcde

15、; strcat(s1, s3); strcpy(s1+strlen(s2), s2); printf( d n, strlen(s1); 程序运行后的输出结果是 ( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 36 有以下程序 (说明:字母 A的 ASC 码值是 65): #include void fun(char*s) while(*s) if(*s 2)printf( c, *s); s+; void main() char a=BYTE; fun(a); printf( n); 程序运行后的输出结果是 ( )。 ( A) BYTE ( B) YT ( C) YE (

16、 D) BY 37 有以下程序: #include int fun() static int x=2; return x+=1: void main() int i, s=0; for(i=1; i =5; i+)s+=fun(); printf( d n, s); 程序运行后的输出结果是 ( )。 ( A) 25 ( B) 11 ( C) 15 ( D) 20 38 有以 下程序: #include void fun2(char a, char b) printf( c c, a, b); char a=1, b=2; void funl() a=3; b=4; void main() fu

17、nl(); printf( c c, a, b); fun2(5, 6); 程序运行后的输出结果是 ( )。 ( A) 1234 ( B) 3456 ( C) 1212 ( D) 3434 39 关于 C语言中的 typedef的叙述不正确 的是 ( )。 ( A)用 typedef为类型说明一个新名,通常可以增加程序的可读性 ( B) typedef只是将已存在的类型用一个新的名字来代替 ( C)用 typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 ( D)用 typedef可以增加新类型 40 程序中已构成如下图所示的不带头节点的单向链表结构,指针变量 s, p, q

18、均已正确定义,并用于指向链表节点,指针变量 S总是作为指针指向链表的第一个节点。 若有以下程序段: q=s; s=s一next; p=s; while(p一 next)p=p一 next; p一 next=q; q一 next=NULL;该程序段实现的功能是 ( )。 ( A)首节点成为尾节点 ( B)删除首节点 ( C)尾节点成为首节点 ( D)删除尾节点 二、程序填空题 41 给定程序中,函数 fun的作用是:不断从终端读入整数,由变量 a统计大于 0的个数,用变量 c来统计小于 0的个数,当输入 0时结束输入,并通过形参 pa和pb把统计的数据传回主函数进行输出。 请在程序的下画线处填入

19、正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在 BLANKl C中。不得增行或删 行,也不得更改程序的结构 ! 试题程序: #include void fun(int*px, int*py) *found* int 1; scarnf(“ d”, &k); *found* while2 if(k0)a+; if(k #include #define MAXLINE 20 fun(char*pstr6) int i, j; char*P; for(i=0; i0) P=*(pstr+i); *found* *(pstr+i)=pstr+j; *(pstr+j)=P; mai

20、n() int i; char*pstr6, str6MAXLINE; for(i=0; i #include void NONO(); int fun(char*t) main() char s26; printf(“请输入一个字母组成的字符串: ”); gets(s); if(fun(s)prinff(“ s是由连 续字母组成的字符串 n”, s); else prinff(“ s不是由连续字母组成的字符串 ! n”, s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE* fp, *wf; int i; char s

21、26, *P; fp=fopen(“in dat”, “r”); wf=fopen(“out dat”, “w”); for(i=0; isj) t=si; si=sjsj=t; 四、程序设计题 43 【正确答案】 int fun(char*t) int len=strlen(t); if(1en2) return 0 char before_ch=t0; char current ch; int flag=1: for(int i=1; ti!=0; +i) current_ch=ti; if(beforech!=currentch一 1) flag=0: break; beforech=c

22、urrent_ch; return flag; 【试题解析】 函数 fun的功能是判断指针 t指向的字符串是否是由连续递增的字母构成,返回值为整数, 0代表不满足条件。根据题目要求,字符串长度必须大于等于 2,所以首先需要对 t指向的字符串进行长度判断,小于 2的字符串返回 0。接 着需要对字符串中的连续字符,逐个进行比较。 C语言中字符变量可以当作整数使用,所以当前字符只有是前一个字符的 ASC 码 +1,才能说它们是连续递增字母序列,然后比较后一个字符与当前字符的 ASC 码,如果字符串中的所有字符都满足条件,则返回 1;否则说明该字符串不满足要求,此时设置 flag=0,后面的字符也就不需要再比较了,跳出循环返回即可。

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

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

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