1、二级 C 语言笔试-120 及答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.x,y,z 被定义为 int 型变量,若从键盘给 x,y,z 输入数据,正确的输入语句是(分数:1.00)A.INPUT x、v、z;B.scanf(“ddd“,i4;i+)printf(“ s“ ,pi);printf(“/n“ );(分数:1.00)A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPQRSTD.AEIM27.阅读下面程序段,则执行后的结果为#include“stdio.h“main()int m=4,n=2,k;k=fun
2、(m,n);printf(“d/n“,k);fun(int m,int n)return(m*m*m-n*n*n);(分数:1.00)A.64B.8C.56D.028.下面程序的运行结果是( )。#includestdio.hvoid delch(char *s)int i,j;char*a;a=s;for(i=0,j=0;ai!=/0 ;i+)if(ai=0 p1=a;p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k) printf(“c“,*(p1+k);(分数:1.00)A.gaeB.gaC.LanguageD.有语法错36.下面程序中有错误的行是( )。(每行
3、程序前面的数字表示符号)1 main()2 3 int a3=1;4 int i;5 scanf(“d“,int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是( )。for(i=0; i3; i+)printf(“ d“ ,xi2-i);(分数:1.00)A.1 5 9B.1 4 7C.3 5 7D.3 6 942.下列叙述中,正确的是(分数:1.00)A.用 E-R 图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数
4、据模型43.以下程序的输出结果是( )。#includestdio.hint fun(int n,int *s)int f1,f2;if(n=0|n=1)*s=1;elsefun(n-1,s=char*p1=p;char*q1;for(i=0;*p!=/0;p+,i+)p=p1+i;if(*p!=*q)continue;for(q1=q+1,p=p+1;*p!=/0for(i=1;i=5;i+)f(i);f(j)int j;static int a=1000;auto int k=1;+k;printf(“d+d+d=d/n“,a,k,j,a+k+j);a+=10;(分数:2.00)填空项 1
5、:_67.已知存储结构如下所示,请填空。data next(分数:2.00)填空项 1:_68.已知 head 指向一个带头结点的单向链表,链表中每个结点包含数据域(data)和指针域(next),数据域为整型。以下函数求出链表中所有链结点数据域的和值,作为函数值返回。请在下划线内填入正确内容。int data;struct link*next; main()struct link*head;sum(head);sum( 【19】 );struct link*p;int s=0;p=head-next;while(p)s+=p-data;p=p-next;return(s);(分数:2.00)
6、填空项 1:_69.下面程序的运行结果是 【20】 。main()int y,a;y=2,a=1;while(y-!=-1)doa*=y;a+;while(y-);printf(“d,d“,a,y);(分数:2.00)填空项 1:_二级 C 语言笔试-120 答案解析(总分:90.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.x,y,z 被定义为 int 型变量,若从键盘给 x,y,z 输入数据,正确的输入语句是(分数:1.00)A.INPUT x、v、z;B.scanf(“ddd“,i4;i+)printf(“ s“ ,pi);printf(“/n“ );(分数
7、:1.00)A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPQRST D.AEIM解析:命题目的 考查用指针对字符串数组的引用。解题要点 字符串数组中的每个元素是一个指向字符串的字符指针,可用一个指向指针的指针来指向一个字符串数组,题中 p 即为一个这样的指针,pi则指向了数组 alpha 的第 i+1 各元素。考点链接 用带下标的指针变量引用一维数组中的元素。27.阅读下面程序段,则执行后的结果为#include“stdio.h“main()int m=4,n=2,k;k=fun(m,n);printf(“d/n“,k);fun(int m,int n)retur
8、n(m*m*m-n*n*n);(分数:1.00)A.64B.8C.56 D.0解析:命题目的 函数之间的数据传递。解题要点 如果没有指明函数值类型,则默认函数返回值的类型为 int 型。考点链接 顺序程序结构的执行过程。28.下面程序的运行结果是( )。#includestdio.hvoid delch(char *s)int i,j;char*a;a=s;for(i=0,j=0;ai!=/0 ;i+)if(ai=0 p1=a;p2=b;for(k=0;k=7;k+)if(*(p1+k)=*(p2+k) printf(“c“,*(p1+k);(分数:1.00)A.gae B.gaC.Langu
9、ageD.有语法错解析:命题目的 考查用指针来引用字符数组元素的方法。解题要点 指针 p1+k 相当于指针 P1 向后移动了 k 个字符的位置,指针 p2 同理。36.下面程序中有错误的行是( )。(每行程序前面的数字表示符号)1 main()2 3 int a3=1;4 int i;5 scanf(“d“,int x33=1,2,3,4,5,6,7,8,9;则下面语句的输出结果是( )。for(i=0; i3; i+)printf(“ d“ ,xi2-i);(分数:1.00)A.1 5 9B.1 4 7C.3 5 7 D.3 6 9解析:命题目的 考查二维数组元素的引用方法。解题要点 题中通
10、过二维数组的行、列下标来定位元素的位置从而实现元素的引用。考点链接 二维数组和数组元素的址。42.下列叙述中,正确的是(分数:1.00)A.用 E-R 图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 B.用 E-R 图只能表示实体集之间一对一的联系C.用 E-R 图只能表示实体集之间一对多的联系D.用 E-R 图表示的概念数据模型只能转换为关系数据模型解析:命题目的 本题主要考查了用 E-R 图表示实体之间联系的方法。解题要点 两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换
11、。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。43.以下程序的输出结果是( )。#includestdio.hint fun(int n,int *s)int f1,f2;if(n=0|n=1)*s=1;elsefun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;void main()int x;fun(6,&x);printf(“/nd“ ,x);(分数:1.00)A.7B.13 C.9D.10解析:命题目的 考查函数的递归调用。解题要点 n=0 或 n=1 是递归的终止条件。然后利用已知值逐步递推求出未知值。考点链接
12、通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。44.执行下面的程序后,a 的值为( )。main()int a,b;for(a=1,b=1;a=10;a+)if(b3=1)b+=3;continue;b=5; (分数:1.00)A.7B.8C.9D.10 解析:命题目的 考查 continue 语句的使用。解题要点 continue 语句的作用是结束本次循环,直接进入到下次循环中。45.以下叙述中不正确的是(分数:1.00)A.在不同的函数中可以使用相同的名字的变量B.函数中的形式参数是局部变量C.在一个函数内定义的变量只在本函数范围内有效D.在一个函数内的复合语句中定义的变量在
13、本函数范围内有效 解析:命题目的 考查函数中的基本知识。解题要点 C 语言在函数中说明的变量为局部变量,只在函数内起作用但不会影响到其他函数。所以在不同的函数中使用相同的函数名不代表是同一函数,A)项正确。在函数定义时声明的参数只在函数内部起作用,是函数的局部变量,B)正确。在一个函数中定义的变量是这个函数的局部变量,所以只在这个函数内起作用,C)正确。复合语句中定义的变量其作用域是这个复合语句,不会扩大到整个函数,所以 D)项错误。考点链接 函数的书写风格。46.下面程序段的输出为#include“stdio.h“main()printf(“d/n“,122);(分数:1.00)A.0B.4
14、7C.48 D.24解析:命题目的 考查位运算的运算原理。解题要点 为左移运算符,运算符的左边是移位对象;右边是整型表达式,代表左移的位数,左移时,右端(低位)补 0;左端(高位)移出的部分舍弃。47.设有一共用体变量定义如下:union datalong w;float x;int y;char z;union data beta;执行下列语句后,正确的共用体变量 beta 的值是( )。beta.w=123456;beta.y=888;beta.x=3.1416;beta.z=x;(分数:1.00)A.123456B.888C.3.1416D.X 解析:命题目的 考查了共用体的基本概念。解
15、题要点 因为共用体的所有成员共同占据一段存储空间,所以成员数据后赋的值会覆盖掉先赋的值,最后共用体变量中保留的就是最后一次赋的值。考点链接 共用体变量所占存储单元字节数的计算。48.具有 3 个结点的二叉树有(分数:1.00)A.2 种形态B.4 种形态C.7 种形态D.5 种形态 解析:命题目的 考查二叉树的基础知识。解题要点 具有 3 个结点的二叉树具有以下的几种形态:*考点链接 二叉树的结构及画法。49.若有以下说明和语句:char *language=“FORTRAN“,“BASIC“,“PASCAL“,“JAVA“,“C“;char*q;q=language+2;则语句 printf
16、(“o/n“,*q);( )。(分数:1.00)A.输出的是 language2元素的地址B.输出的是字符串 PASCALC.输出的是 language2元素的值,它是字符串 PASCAL 的首地址 D.格式说明不正确,无法得到确定的输出解析:命题目的 考查用指针数组来引用数组元素的方法。解题要点 题中指针数组 language 中的每个元素都是一个指向一个字符串的字符指针。通过这个指针可以引用到字符串中的每一个字符。题中的 q 是双重字符指针,q=language+2 则使指针 q 指向了数组language 的第三个元素,是字符串“PASCAL”的首地址。50.请阅读以下程序:#inclu
17、destdio.hmain()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 2:a+,b+;break; printf(“a=d,b=d/n“ ,a,b);上面程序的输出结果是( )。(分数:1.00)A.a=2,b=1 B.a=1,b=1C.a=1,b=0D.a=2,b=2解析:命题目的 考查 switch 语句的使用。解题要点 switch 语句的执行过程为:进入 switch 结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的 case,以此作为入口,执行 switch 结构中后面的各
18、语句,直到遇到 break 语句,则跳出 switch 语句,如果各 case 都不匹配时则执行 default 后面的语句。考点链接 if 语句及 if 嵌套语句的使用。二、填空题(总题数:19,分数:40.00)51.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、 【1】 和选择排序等。(分数:2.00)填空项 1:_ (正确答案:交换排序)解析:命题目的 需要考生记住常见的排序方法。解题要点 常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。考点链接 常见的排序方法及其作用机制和区别。52.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为 【2】 。(分数:2.00)填空项 1:_ (正确答案:上溢)
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1