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

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

1、国家二级( C语言)笔试模拟试卷 61及答案与解析 1 在计算机中,算法是指 _。 ( A)查询方法 ( B)加工方法 ( C)解题方案的准确而完整的描述 ( D)排序方法 2 栈和队列的共同点是 _。 ( A)都是先进后出 ( B)都是先进先出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 3 已知二叉树 BT的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是 _。 ( A) cedba ( B) acbed ( C) dccab ( D) deabc 4 在下列几种排序方法中,要求内存量最大的是 _。 ( A)插入排序 ( B)选择排序 ( C)快速排

2、序 ( D)归并排序 5 在设计程序时,应采纳的原则之一是 _。 ( A)程序结构应有助于读者理解 ( B)不限制 goto语句的使用 ( C)减少或取消注解行 ( D)程序越短越好 6 下列不属于软件调试技术的是 _。 ( A)强行排错法 ( B)集成测试法 ( C)回溯法 ( D)原因排除法 7 下列叙述中,不属于软件需求规格说明书的作用的是 _。 ( A)便于用户、开发人员进行理解和交流 ( B)反映出用户问题的结构,可以作为软件开发工作的基础和依据 ( C)作为确认测试和验收的依据 ( D)便于开发人员进行需求分析 8 在数据流图 (DFD)中,带有名字的箭头表示 _。 ( A)控制程

3、序的执行顺序 ( B)模块之间的调用关系 ( C)数据的流向 ( D)程序的组成成分 9 SQL语言又称为 _。 ( A)结构化定义语言 ( B)结构化控制语言 ( C)结构化查询语言 ( D)结构化操纵语言 10 视图设计一般有 3种设计次序,下 列不属于视图设计的是 _。 ( A)自顶向下 ( B)由外向内 ( C)由内向外 ( D)自底向上 11 以下所列的 c语言常量中,错误的是 _。 ( A) 0xFF ( B) 1.2e0.5 ( C) 2L ( D) 72 12 若 a为 int类型,且其值为 3,则执行完表达式 a+=a-=a*a后, a的值是_。 ( A) -3 ( B) 9

4、 ( C) -12 ( D) 6 13 C语言中,运算对象必须是整型数的运算符是 _。 ( A) % ( B) / ( C) %和 / ( D) * 14 设 x、 y、 t均为血型变量,则执行语句 x=y=3; t=+x|+y;后, y的值为_。 ( A)不定值 ( B) 4 ( C) 3 ( D) 1 15 已知字母 A的 ASC 码为十进制数的 65,下面程序的输出是 _。 main() char ch1,ch2; ch1=A+5-3; ch2=A+6-3; printf(“%d,%cn“,ch1,ch2); ( A) 67, D ( B) B, C ( C) C, D ( D)不确定的

5、值 16 在下列叙述中,正确的一条是 _。 ( A)对 while循环、 do-while循环和 for循环,可以用 continue语句跳出循环 ( B)表达式 1+2 3和 sizeof(3.8)的结果分别为 24和 8 ( C)函数 fputc(c, stdout)与 putchar(c)的结果相同 ( D)在有参函数中,定义函数中指定的形参变量在程序一开始执行时便分配内存单元 17 若有以下定义,则正确的 swish语句是 _。 float x;int a,b; ( A) switch(x) case 1.0:printf(“*n“); case 2.0:printf(“*n“); (

6、 B) switch(x) case 1,2:printf(“*n“); case 3:printf(“*n“); ( C) switch(a+b) case 1:printf(“n“); case 1+2:printf(“*n“); ( D) switch(a+b); case 1:printf(“*n“); case 2:printf(“*n“); 18 当 a=1, b=3, c=5, d=4时,执行下面一段程序后, x的值为 _。 if(a b) if(c d) x=1; else if(a c) if(b d) x=2; elsex=3; elsex=6; elsex=7; ( A)

7、 1 ( B) 2 ( C) 3 ( D) 6 19 以下程序段的输出结果是 _。 int x=5; do ptintf(“%2dn“,x-); while(!x); ( A) 5 ( B)无任何输出 ( C) 4 ( D)陷入死循环 20 设有如下的函数 _。 f(x) float x; printf(“n%d“,x*x); 则函数类型 ( A)与参数 x类型相同 ( B)是 void ( C)是 int ( D)无法确定 21 设 a、 b和 c都是 int型变量,且 a=3、 b=4、 c=5,则下面的表达式中,值为 0的表达式是 _。 ( A) a printf(“%x“,d1); (

8、 A) cde ( B)字符 c的 AScII码值 ( C)字符 c的地址 ( D)出错 23 设有如下程序 #include stdio.h main() int *k, *j,i=100; j= k= printf(“%dn“”,*k); 上述程序的输出结果是 _。 ( A)运行错误 ( B) 100 ( C) i的地址 ( D) j的地址 24 设有以下语句,其中不是对 a数组元素的正确引用的是: _(其中 0i 10) int a10=0,1,2,3,4,5,6,7,8,9,*p=a; ( A) ap-a ( B) *( s0=a0,s1=a1; pp=s; p=(int*)mallo

9、c(sizeof(int); *pp=s11; p=*pp; printf(“%dn“,*p); ( A) 1 ( B) 7 ( C) 9 ( D) 11 26 有以下程序: #include stdio.h main() char c6; int i=0; for(;i6;ci=getchar(),i+); for(i=0;i 6;i+)putchar(ci; printf(“n“); 如果从键盘上输入: ab回车 c回车 def回车 则输出结果为 _。 ( A) a b c d e f ( B) a b c d ( C) ab c d ( D) abcdef 27 在调用函数时,如果实参是

10、简单变量,它与对应形参之间的数据传递方式是_。 ( A)地址传递 ( B)单向值传递 ( C)由实参传递给形参,再由形参传递给实参 ( D)传递方式由用户指定 28 以下程序 #include stdio.h #include string.h main() char*p1=“abc“,*p2=“ABC“,str50=“xyz“; strcpy(ar+2,strcat(p1,p2); printf(“%sn“,str); 的输出是 _。 ( A) xyzabcABC ( B) zabeABC ( C) yzabcABC ( D) xyabcABC 29 以下程序 int aa33=2,4,6;

11、 main() int i,*p= for(i=0;i 2;i+) if(i=0)aaii+1=*p+1; else +p; printf(“%d“,*p); 的输出是 _。 ( A) 23 ( B) 26 ( C) 33 ( D) 36 30 以下程序的输出结果是 _。 #include stdio.h #include siring.h fun(char *w,int n) char t,*s1,*s2; s1=w;s2=w+n-1; while(s1 s2) t=*s1+; *s1=*s2-; *s2=t; main() char *p; p=“1234567“; fun(p,strle

12、n(p); puts(p); ( A) 1234567 ( B) 7654321 ( C) 1711717 ( D) 7177171 31 下面程序 main() int x=100, a=10, b=20, ok1=5, ok2=0; if(a b) if(b!=15) if(!ok1) x=1; else if(ok2)x=10; x=1; printf(“%dn“,x); 的输出是 _。 ( A) -1 ( B) 0 ( C) 1 ( D)不确定的值 32 下面程序 main() int x=32; printf(“%dn“,x=x 1); 的输出是 _。 ( A) 100 ( B) 1

13、60 ( C) 120 ( D) 64 33 设有以下定义和语句,输出的结果是 (用 small模式编译,指针变量 2个字节 )_。 struct date long *cat; struct date *next; double dog; too; printf(“%d“,sizeof(too); ( A) 20 ( B) 16 ( C) 14 ( D) 12 34 以下程序的输出结果是 _。 #include stdio.h #define FUDGE(y) 2.84+y #define PR(a) printf(“%d“,(int)(a) #define PRINT1(a) PR(a);

14、putchar(n) main() int x=2; PRINT1(FUDGE(5)*x); ( A) 11 ( B) 12 ( C) 13 ( D) 15 35 以 下程序段给数组所有的元素输入数据,请选择正确答案填入。 #includestdio.h main() int a10,i=0; while(i 10)scanf(“%d“,_); ( A) a+(i+) ( B) ( B) enum aon=9,two=-1,three; ( C) enum a=“one“,“two“,“three“; ( D) enum a“one“,“two“,“three“; 37 字符 (char)型数

15、据在微机内存中的存储形式是 _。 ( A)反码 ( B)补码 ( C) EBCDIC码 ( D) ASCII码 38 下面程序的输出是 _。 typedef union long x2; int y4; char z8; MYTYPE; MYTYPE them; mare() printf(“%dn“,sizeof(them); ( A) 32 ( B) 16 ( C) 8 ( D) 24 39 有以下程序,程序运行后的输出结果是 _。 int f(int b4) int i,j,s=0; for(j=0;j 4;j+) i=j; if(i 2)i=3-j; s+=bij; return s;

16、 main() int a44=1,2,3,4,0,2,4,6,3,6,9,12,3,2,1,0; printf(“%dn“,f(a); ( A) 22 ( B) 11 ( C) 18 ( D) 16 40 不能把字符串 “Hello!“赋给数组 b的语句是 _。 ( A) char b10=H,e,l,l,o,!; ( B) char b10=h,e,l,l,o,!; ( C) char b10;strcpy(b,“Hello!“); ( D) char b10=“Hello!“; 41 下面程序的输出是 _。 main() int x=3,y=6,a=0; while(x+!=(y-=1)

17、 a+=1; if(y x)break; printf(“x=%d,y=%d,a=%dn“,x,y,a); ( A) x=4,y=4,a=1 ( B) x=5,y=5,a=1 ( C) x=5,y=4,a=3 ( D) x=5,y=4,a=1 42 若有程序 fun(int a,int b) static int c=0; c+=a+b; rerurn c; main() int x=5,y=3,z=7,r; r=fun(y,x+y),z); r=fun(x,y); printf(“%dn“,r); 上面程序的输出结果是 _。 ( A) 23 ( B) 15 ( C) 19 ( D) 18 4

18、3 下面程序的输出是 _。 main() char *s=“12134211“; int v1=0,v2=0,v3=0,v4=0,k; for (k=0;sk;k+) switch(sk) default:v4+; case1:v1+; case3:v3+; case2:v2+; printf(“v1=%d,v2=%d,v3=%d,v4=%dn“,v1,v2,v3,v4); ( A) v1=4,v2=2,v3=1,v4=1 ( B) v1=4,v2=9,v3=3,v4=1 ( C) v1=5,v2=8,v3=6,v4=1 ( D) v1=8,v2=8,v3=8,v4=8 44 下面程序的输出是

19、 _。 main() int k=11; printf(“k=%d,k=%o,k=%xn“,k,k,k); ( A) k=11,k=12,k=11 ( B) k=11,k=13,k=13 ( C) k=11,k=013,k=0xb ( D) k=11,k=13,k=B 45 下面程序段中 c的二进制值是 _。 char a=3,b=6,c; c=ab 1; ( A) 1011 ( B) 1111 ( C) 11110 ( D) 11100 46 以下叙述中正确的是 _。 ( A) C语言比其他语言高级 ( B) C语言可以不用编译就能被计算机识别执行 ( C) C语言以接近英语国家的自然语言和

20、数学语言作为语言的表达形式 ( D) C语言出现的最晚,具有其他语言的 切优点 47 下列司用于 C语言用户标识符的 组是 _。 ( A) void define WORD ( B) a3_b3 _123 Car ( C) For -abc IFCase ( D) 2a DO sizeof 48 fgetc函数的作用 是从指定文件读入 个字符,该文件的打开方式必须是_。 ( A)只读 ( B)追加 ( C)读或读写 ( D)以上均正确 49 请选出正确的程序段 _。 ( A) int *p scanf(“%d“,p); ( B) int *s,k; *s=100; ( C) int *s,k;

21、 char *p,c; s= p= *p=a; ( D) int *s,k; char *p,e; s= p= s=p; *s=1; 50 若有下面的说明和定义,则 sizeof(struct aa)的值是 _。 struct aa int r1;double r2;float r3; union uuchar u15;long u22ua; mya; ( A) 30 ( B) 29 ( C) 24 ( D) 22 51 排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【 】和选择排序等。 52 当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情

22、况称为【 】。 53 【 】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。 54 为了便于对照检查,测试用例应由输入数据和预期的【 】两部分组成。 55 【 】是从二维表列的方向进行的运算。 56 将以下程序写成三目运算表达式是【 】。 if(a b)max=a; else max=b; 57 若有以下定义: char a; int b; float c; double d; 则表达式 a*b+d-c值的类型为【 】。 58 下面程序的输出结果是【 】。 unsigned fun6(unsigned num) unsigned k=1; do k*=hum%10; num/=1

23、0; while(num); return(k); main() unsigned n=26; printf(“%dn“, fun6(n); 59 设 x和 y均为 int型变量, 且 x=1, y=2,则表达式 double(1+x/y)的值为【 】。 60 下面程序的运行结果是【 】。 main() int i=0, j=10, k=2, s=0; for(;) i+=k; if(i j) printf(“%dn“, s); break; s+=i; 61 在内存中,存储字符 x要占用 1个字节,存储字符串 “x“要占 用【 】个字节。 62 以下程序的运行结果是【 】。 #include

24、 stdio.h main() int a=1, b=2, c; c=max(a, b); printf(“max is%dn“, c); max(int x, int y) int z; z=(x y)? x:y; return(z); 63 以下程序是用递归方法求数组中的最大值及其下标值。请填空。 #define M 10 void findmax(int *a, int n, int i, int *pk) if(i n) if(ai a *pk)【 】; findmax(a, n, i+1, i+)scanf(“%d“ , a+i); findmax(a, M, 0, 。 49 【正确

25、答案】 C 【试题解析】 本题的 A和 B犯了一个同样的错误,即指针变量 p定义后并没有指向具体的变量,因此不能进行赋值操作。另外,在选项 D中, s是 int指针变量, p是 char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量 p的值赋给整型指针变量 s。 50 【正确答案】 D 【试题解析】 结构伸变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等 于最长的成员的长度。结构体变量 aa中,成员 r1占 2个字节, r2占 8个字节, r3占 4个字节,共用体 ua占 8个字节,所以共占用 2+8+4+8=22

26、个字节。 51 【正确答案】 交换排序 【试题解析】 常见的排序方法有插入排序 (包括简单插入排序法和希尔排序法等 )、交换排序 (包括冒泡排序和快速排序法等 )和选择排序 (包括简单选择排序和堆排序等 )。注意:常见的排序方法及其作用机制和区别。 52 【正确答案】 上溢 【试题解析】 入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先 将队尾指针进一 (即 rear=rear+1),并当 rear=m+1时置 rear =1;然后将新元素插入队尾指针指向的位置。当循环队列非空 (s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为 “上

27、溢 ”。 53 【正确答案】 封装 【试题解析】 面向对象技术中包括以下几个基本概念,即对象、类、方法、消息、继承和封装,其中封装是一种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。 54 【正确答案】 输出结果 【试题解析】 注意:测试的基本方法和步骤。 55 【正确答案】 投影 【试题解析】 在关系模型的数据语言中,一般除了运用常规的集合运算, (并、交,差、笛卡尔积等 )外,还定义了一些专门的关系运算,如投影、选择、连接等。投影是从二维表的列方向上进行的运算。 56 【正确答案】 max=(a b)?a: b; 【试题解析】 本题考查三目运算符的用法,条件运算符要求有三个操作对

28、象,称三目 (元 )运算符,它是 C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3所以,我们可以写成 (a, b)?a: b,它是一个 “条件表达式 ”。执行顺序是:如果 (a b)条件为真,则条件表达式取值 a,否则取值b。注意:逗号表达式的执行原理。 57 【正确答案】 double或双精度型 【试题解析】 C语言中,如果运算符两边的数据类型不同,将进行类型转换,根据转换规则,短整型转为长整型;整型转换为实型。注意:数据类型的强制转换。 58 【正确答案】 12 【试题解析】 dowhile 循环的一个比较显著的特点是:先执行一次循环体然后再判断循环

29、的条件是否满足,若满足则接着进入下一次循环,否则就退出循环。注意: 3种循环结构的比较。 59 【正确答案】 1 【试题解析】 本题考查两个知识点一是 x/y的值为整型即为 0,二是数字 1存放在 double中是 double类型。 60 【正确答案】 30 【试题解析】 题目中 for(; )表示: for循环的初始化表达式,条件表达式和修正表达式都省略了,表示进行 for循环和 for循环的终止都没有限制。注意: while循环的执行原理。 61 【正确答案】 2 【试题解析】 计算机存储一个字符用 1个字节,存储字符串时,每个字符用占用1个字节,另在字符串的有效字符之后存储 1个字符串

30、的结束标记符。所以存储字符串 “X”要占用 2个字节,存储字符 x只要 1个字节。注意: sizeof()函数和 strlen()函数的作用。 62 【正确答案】 max is 2 【试题解析】 函数通过参数来传递数据是单向的,只能由实参传给形参而不能由形参传给实参,但是可以通过函数的返回值将函数中的数据带回。注意:函数的两种调用方式及函数调用的语法要求。 63 【正确答案】 *pk=ai 【试题解析】 通过参数传递, findmax函数接收到 4个参数,分别是数组 a(需要对其中的数据按 照题目的要求进行计算 )、 10(数组 a中的元素个数 )、 0(数组 a的起始位置 )、指针变量 n(对数组 a中的元素进行遍历 )。我们了解了这些参数的作用后,再对递归调用的函数进行分析,就不难得出结论了。注意:通过对本例中递归函数的分析掌握递归算法的执行原理。 64 【正确答案】 SO 【试题解析】 题中需要注意两个问题:一是 for循环的修正表达式共执行两次 “i-”操作;二是 *pi是对某个字符的引用。 65 【正确答案】 4321

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

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

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