全国计算机等级考试二级c语言历年真题及解析(5)

2019-03-16 21:53

成才教育内部资料 0791-6290062 版权所有 翻印必究

D)do-while循环中,根据情况可以省略while

(23)有以下程序 #include main()

{ int a[ ]={1,2,3,4},y,?*p=&a[3]; --p; y=?*p;printf(\

}

程序的运行结果是 A)y=0 B)y=1 C)y=2 D)y=3

(24)以下数组定义中错误的是 A)int x[][3]={0};

B)int x[2][3]={{l,2},{3,4},{5,6}}; C)int x[][3]={{l,2,3},{4,5,6}}; D)int x[2][3]={l,2,3,4,5,6};

(25)下面说明不正确的是

A)char a[10]=\ B)char a[10],*p=a;p=\

C)char *a;a=\ D)char a[10],*p;p=a=\

(26)若有定义:int a[2][3];,以下选项中对a数组元素正确引用的是 A)a[2][!1] B)a[2][3] C)a[0][3] D)a[1>2][!1]

(27)若要求从键盘读入含有空格字符的字符串,应使用函数

A)getc() B)gets() C)getchar() D)scanf()

(28)阅读下列程序段,则程序的输出结果为 #include \

#define M(X,Y)(X)*(Y) #define N(X,Y)(X)/(Y) main()

{ int a=5,b=6,c=8,k; k=N(M(a,b),c);

21

printf(\ A)3 B)5 C)6 D)8

(29)在16位IBM-PC机上使用C语言,若有如下定义 struct data { int i; char ch; double f; } b;

则结构变量b占用内存的字节数是 A)1 B)2 C)7 D)11

(30)有以下程序 #include main()

{FILE *fp; int i,a[6]={l,2,3,4,5,6}; fp=fopen(\ fwrite(a,sizeof(int),6,fp);

fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp); fclose(fp); for(i=0;i<6;i++)printf(\ }

程序运行后的输出结果是 A)4,5,6,4,5,6, B)1,2,3,4,5,6, C)4,5,6,1,2,3, D)6,5,4,3,2,1,

(31)有以下程序 #include main()

{ int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i; for(i=0;i<12;i++) c[s[i]]++;

for(i=1;i<5;i++) printf(\ printf(\ }

程序的运行结果是 A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D)1 1 2 3

成才教育内部资料 0791-6290062 版权所有 翻印必究

(32)有以下程序 #include

void fun(int *a,int n)/*fun函数的功能是将a所指数组元素从大到小排序*/ { int t,i,j;

for(i=0;i

if(a[i]

main()

{ int c[10]={1,2,3,4,5,6,7,8,9,0},i; fun(c+4,6);

for(i=0;i<10;i++) printf(\ printf(\ }

程序的运行结果是

A)1,2,3,4,5,6,7,8,9,0, B)0,9,8,7,6,5,1,2,3,4, C)0,9,8,7,6,5,4,3,2,1, D)1,2,3,4,9,8,7,6,5,0,

(33)下面程序的输出结果是 #include #include main()

{ char *p1=\ strcpy(str+2,strcat(p1,p2)); printf(\A)xyzabcABC B)zabcABC C)xyabcABC D)yzabcABC

(34)以下函数返回a所指数组中最小的值所在的下标值 fun(int *a, int n) { int i,j=0,p; p=j;

for(i=j;i在横线处应填入的是 A)i=p B)a[p]=a[i] C)p=j D)p=i

(35)下列程序的运行结果为 #include

22

void abc(char*str) { int a,b;

for(a=b=0;str[a]!='\\0';a++) if(str[a]!='c') str[b++]=str[a]; str[b]='\\0';} void main()

{ char str[]=\ abc(str);

printf(\ A)str[]=abdef B)str[]=abcdef C)str[]=a D)str[]=ab

(36)有以下程序 #include #include

typedef struct{ char name[9]; char sex; float score[2]; }STU; void f(STU a)

{ STU b={\′m′,85?0,90?0}; int i; strcpy(a.name,b.name); a.sex=b.sex;

for(i=0;i<2;i++) a.score[i]=b.score[i]; }

main()

{ STU c={\′f′,95.0,92.0}; f(c);

printf(\e[1]); }

程序的运行结果是

A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90

(37)有以下程序 #include main()

{ FILE ?*fp; int a[10]={1,2,3},i,n; fp=fopen(\

for(i=0;i<3;i++) fprintf(fp,\ fprintf(fp,\ fclose(fp);

fp=fopen(\

成才教育内部资料 0791-6290062 版权所有 翻印必究

fscanf(fp,\ fclose(fp);

printf(\ }

程序的运行结果是 A)12300 B)123 C)1 D)321

(38)已知 int a=1,b=3则a^b的值为 A)3 B)1 C)2 D)4

(39)阅读下列程序,则运行结果为 #include \ fun()

{ static int x=5; x++; return x;} main()

{ int i,x; for(i=0;i<3;i++) x=fun();

printf(\ A)5 B)6 C)7 D)8

(40)有以下程序 #include void fun(char *t,char *s) { while(*t!=0) t++; while((*t++=*s++)!=0); }

main()

{ char ss[10]=\ fun(ss,aa); printf(\ }

程序的运行结果是

A)accxyy,bbxxyy B)acc,bbxxyy

C)accxxyy,bbxxyy D)accbbxxyy,bbxxyy

二、填空题

请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。

(1)需求分析的最终结果是产生 【1】 。

(2)为了便于对照检查,测试用例应由输入数据和预期的 【2】 两部分组成。

(3)数据结构分为逻辑结构与存储结构,线性链表属于 【3】 。

(4)某二叉树中度为2的结点有18个,则该二叉树中有 【4】 个叶子结点。

(5) 【5】 是数据库设计的核心。

(6)已有定义:char c=′ ′;int a=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为? 【6】 ?。

(7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为 【7】 。

(8)下面程序的功能是:计算1 10之间的奇数之和与偶数之和,请填空。 #include main()

{ int a,b,c,I; a=c=0;

for(I=0;I<=10;I+=2) {a+=I;

【8】 ; c+=b; }

printf(\偶数之和=%d\\n\printf(\奇数之和=%d\\n\

(9)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。 #define N 4

void rotade(int a[][N],int b[][N]) { int I,j;

for(I=0;I

{ b[I][N-1]= 【9】 ; 【10】 =a[N-1][I]; } }

(10)以下程序的输出结果是 【11】 。 #include

23

成才教育内部资料 0791-6290062 版权所有 翻印必究

void swap(int ?*a, int ?*b) { int ?*t; t=a; a=b; b=t; }

main()

{ int i=3,j=5,?*p=&i,?*q=&j;

swap(p,q); printf(\ %d\\n\ }

(11)下面程序的运行结果是 【12】 。 #include #define SIZE 12 main()

{ char s[SIZE]; int I;for(I=0;I

sub(s,7,SIZE-1);

for(I=0;I

sub(char*a,int t1,int t2) { char ch; while (t1

(12)以下程序的输出结果是 【13】 。 #include main()

{ int a[5]={2,4,6,8,10},?*p; p=a; p++; printf(\?*p);

}

(13)设有定义\{int a; float b; char c;} abc, *p_abc=&abc;\则对结构体成员a的引用方法可以是abc.a和p_abc 【14】 a。

(14)以下程序的运行结果是 【15】 。 #include main()

{ FILE *fp; int a[10]={1,2,3,0,0},i; fp=fopen(\ fwtite(a,sizeof(int),5,fp);

24

fwrite(a,sizeof(int),5,fp); fclose(fp);

fp=fopen(\ fread(a,sizeof(int),10,fp); fclose(fp);

for(i=0;i<10;i++)printf(\ }

一、选择题 (1)D

【解析】 软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。 (2)A

【解析】 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。 (3)C

【解析】 对象的基本特点:标识惟一性、分类性、多态性、封装性和模块独立性。 (4)D

【解析】 滥用goto 语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。 (5)A

【解析】 程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。 (6)C

【解析】 数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。 (7)B

【解析】 顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(i-1)L计算得到,从而实现了随机存取。

成才教育内部资料 0791-6290062 版权所有 翻印必究

对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。 (8)C

【解析】 树是N(N>0)个结点的有限集合,当?N=0?,时称为空树,对于空树没有根结点,即根结点的个数为0,对于非空树有且只有一个根结点,所以树的根结点数目为0或1。 (9)C

【解析】 数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有\集成\、\共享\的特点。

(10)B

【解析】 数据库系统(Database System,简称DBS),包括数据库(Database,简称DB)和数据库管理系统(Database Management System,简称DBMS)。

(11)D

【解析】 选项D)为两条语句。

(12)C

【解析】 C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。

(13)B

【解析】 在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

(14)C

【解析】 求余运算符\两边的运算对象必须是整型,而选项B)和D)中 \两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。

(15)B

【解析】 选项A)中包含一个不合法的运算符\选项C)应改为(int)18.5%3;选项D)可理解为两个表达

25

式:a+7=c+b和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。

(16)B

【解析】 由于在main()函数中,变量 i=4,所以就调用fun(4),则输出\k=4\。然后变量k增1等于5,变量i增1等于5,所以main()函数的\语句输出\

(17)B

【解析】 在本题中,选项B)实际是先计算关系表达式\的值是0还是1,再比较该值与字符'Z'之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。

(18)B

【解析】 本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。

本题中,由于前一个表达式的值为\假\所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。

(19)B

【解析】 两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没有变化,程序输出的结果为3,5,3。

(20)C

【解析】 C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。

(21)C

【解析】 本题考察变量的自加\和自减\问题。当y 的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式--y的值,y的自减要先于输出语句执行,故输出结果为8 5 2。

(22)C

【解析】 do while语句的一般形式为:do 循环体语句 while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。


全国计算机等级考试二级c语言历年真题及解析(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新概念第一册全册练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: