全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx

上传人:b****8 文档编号:30678326 上传时间:2023-08-19 格式:DOCX 页数:18 大小:40.87KB
下载 相关 举报
全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx_第1页
第1页 / 共18页
全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx_第2页
第2页 / 共18页
全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx_第3页
第3页 / 共18页
全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx_第4页
第4页 / 共18页
全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx

《全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx》由会员分享,可在线阅读,更多相关《全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx(18页珍藏版)》请在冰豆网上搜索。

全国计算机等级《二级C语言程序设计》终极押密卷4整理版.docx

全国计算机等级《二级C语言程序设计》终极押密卷4整理版

2013年9月全国计算机等级《二级C语言程序设计》终极押密卷(4)

一、选择题(每小题1分,共40分)

1设变量已正确定义,则以下能正确计算f=n!

的程序是(D  )。

A.f=0;for(i=1;i<=n;i++)f*=i;B.f=1;for(i=1;i

C.f=1;for(i=n;i>1;i++)f*=i;D.f=1;for(i=n;i>=2;i--)f*=i;

解析:

由n!

的数字定义可知n!

=n*(n-1)*(n-2)*…*1。

在选项A中,由于f的初值为0,在for循环语句中,f依次乘以l,2,3,…,n,最后计算得到f=n!

=0,所以选项A不正确。

在选项B中,f的初值为1,在for循环语句中,f依次乘以l,2,3,…,(n-1),最后计算得到f=(n-1)!

,所以选项B不正确。

在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C不正确。

在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!

,所以选项D正确。

2有以下程序:

#include

voidfun(int*s)

{staticinti=0;

do{s[J]=s[J]+s[j+I];}while(++j<2);

}

main(  )

{intk.a[l0]={1,2,3,4,5};

 for(k=1;k<3;k++)fun(a);

 for(k=0;k<5;k++)pfintf("%d",a[k]);

 printf("\n");

}

程序运行后的输出结果是(D  )。

A.12345B.23445C.34756D.35745

解析:

本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。

3有下列程序:

fun(intX,inty){return(x+y);)

main(  )

{inta=1,b=2,c=3,sum;

sum=fun((a++,b++,a+b),c++);

printf("%d\n",sum);

}

执行后的输出结果是(C  )。

A.6B.7C.8D.9

解析:

函数fun(intx,inty)的功能是返回x+Y的值。

在主函数中,变量a,b,c的初始值分别为1,2,3。

因此逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);”,其返回值等于8。

4现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。

structnode

{hardata;

structnode*next;)*P,*q,*r;

现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是( D )。

A.q-:

>next=r->next;p--:

>next=r;rm:

>next=q;

B.q-:

>next=r;q->next=r->next;r->next=q;

C.q-:

>next=r->next;r->next=q;p->next=r;

D.q-:

>next=q;p->next=r;q->next=r->next;

解析:

由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。

而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next:

r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。

5有以下程序:

#include

main(  )

{char*s="[2]34";intk=0,a=0;

 whil(s[k+1]!

='\0')

{k++;

 if(k%2=o){a=a+(s[k]-'0'+1);continue;}

 a=a+(s[k]-'0');

 printf("k=%da=%d\n",k,a);

}

程序运行后的输出结果是(C  )。

A.k=6a=11B.k=3a=14C.k=4a=12D.k=5a=15

解析:

输出结果:

k=1a=2k=2a=4k=3a=7k=4a=12

6若a是数值类型,则逻辑表达式(a==1)II(a!

=1)的值是(A  )。

A.1B.0C.2D.不知道a的值,不能确定

解析:

由于a==l和a!

=1两者互斥,即总有一个为真,因此二者的或也必定为真。

7阅读以下程序:

#include

main(  )

{intcase;floatprintF;

printf("请输人2个数:

");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

该程序在编译时产生错误,其出错原因是(A  )。

A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

解析:

本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。

单精度printF不是关键字,因为标识符区分大小写。

所以A不正确。

8有以下程序:

#include

main(  )

 {inta=1,b=2;

 for(;a<8;a++){b+=a;a+=2;)

 printf("%d,%d\n",a,b);

}

程序运行后的输出结果是(D  )。

A.9,18B.8,11C.7,11D.10,14

解析:

第一次执行循环前,a=1,满足a<8,执行循环后,b=3,a=3。

执行完a++操作后,a=4。

由于a<8,执行第二次循环后,b=7,a=6,执行完a++操作后,a=7。

由于a<8,执行第三次循环后,b=14,a=9,执行完a++操作后a=10。

此时不满足a<8,跳出循环。

9有以下程序:

#include

main(  )

{inta,b,k,m,*pl,*p2;

 k=1,m=8;

 p1=&k,p2=&m;

 a=/*pl-m;b=*p1+*p2+6;

 printf("%d",a);printf("%d\n",b);

}

编译时编译器提示错误信息,你认为出错的语句是(A  )。

A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

解析:

本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。

a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

10在学生管理的关系数据库中,存取一个学生信息的数据单位是(D  )。

A.文件B.数据库C.字段D.记录

解析:

一个数据库由一个文件或文件集合组成。

这些文件中的信息可分解成一个个记录。

11下列叙述中正确的是(B  )。

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

解析:

循环队列是线性结构,所以C选项错误,存储结构是数据在计算机中的表示,循环队列在计算机内是顺序存储结构,所以答案选择B。

12以下关于return语句的叙述中正确的是( B )。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

解析:

return语句又称为返回语句。

该语句的格式如下:

“return;”和“return(<表达式>);”。

其中,return是关键字。

该语句有两种格式:

不带返回值格式和带返回值格式。

该语句用在被调用函数中,在被调用函数中执行到该语句时,将结束对被调用函数的执行,并把控制权返回给调用函数,继续执行调用函数后边的语句。

在带有返回值的情况下,将return语句所带的表达武的值返回给调用函数,作为被调用函数的值。

在被调用函数中,可以用return语句,也可以不用return语句。

如果要求被调用函数有返回值,则一定要用return语句,采用return(<表达式>);格式。

如果被调用函数不需要返回值,并且当被调用函数的所有语句执行完后进行返回,则被调用函数可以不用return语句。

13有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为(D  )

A.选择B.投影C.交D.并

解析:

关系的并运算是指由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元素。

由题可以看出,T是R和S的并运算得到的。

14设有以下程序段:

structMP3

{charname[20];

 charcolor;

 floatprice;

}std,*ptr;

ptr=&std:

若要引用结构体变量std中的color成员,写法错误的是(A  )。

A.std.colorB.ptr->colorC.std->colorD.(*ptr)color

解析:

本题中要引用结构体变量std中的color,要使用指针,而std.color不是一个指针类型,所以答案选择A

15有以下程序:

#include

voidexch(intt[])

{t[0]=t[5];}

main(  )

{intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;

 while(i<=4){exch(&x[i]);i++;}

 for(i=0;i<5;i++)printf("%dl"x[i]);

 printf("\n");

}

程序运行后输出的结果是(D  )。

A.246810B.13579C.12345D.678910

解析:

本题中exch函数是用数组中的第6个元素对第1个元素进行赋值,所以数组的值应该为678910。

16表达式a+=a-=a=9的值是(D)。

A.9B.-9C.18D.0

解析:

+=、-=、=等符号优先级相同结合性是由右至左,所以选D。

17数据库管理系统是(B  )。

A.操作系统的一部B.在操作系统支持下的系统软件

C.一种编译系统D.一种操作系统

解析:

数据库系统属于系统软件的范畴

18以下选项中叙述错误的是(A  )。

A.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

B.在同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

C.C程序函数中定义的自动变量,系统不自动赋确定的初值

D.C程序函数的性能不可以说明为static型变量

解析:

静态变量不是每调用一次就赋一次初值,而是将需要定义许多相同的具有相同属性的值时,使用静态变量来节省空间,所以A选项错误

19有以下程序段:

inti,n;

for(i=0;i<8;i++)

{n=rand(  )%5;

switch(n)

{casel:

case3:

printf("%d\n",n);break;

case2:

case4:

print?

("%d\n",n);continue;

case(  ):

exit(0);

}

printf("%d\n",n);

}

以下关于程序段执行情况的叙述,正确的是( A )。

A.for循环语句固定执行8次

B.当产生的随机数n为4时结束循环操作

C.当产生的随机数n为1和2时不做任何操作

D.当产生的随机数n为0时结束程序运行

解析:

程序中的if循环是固定地执行8次,属于计数器,程序是从中随机抽取一个数,然后对5进行求余再输出,共抽取8个数。

所以答案为A。

20有以下程序:

#include

main(  )

{FILE*fp;charstr[10];

 fp=fopen("myfile,dat","");

 {puts("abe",ip);fclose(fp);

 fp=fopen("myfile.dat","a*");

 fprintf(fp,"%d",28);

 rewind(fp);

 fscanf(fp,"%S",str);puts(str);

 fclose(fp);

}

程序运行后的输出结果是(C  )。

A.abcB.28cC.abc28D.内类型不一致而出错

解析:

本题考查文件的操作,首先打开文件,进行写操作,把“abc”写入“myfile”文件,再打开“myfile.data"文件,输入28,在键盘上接收字符,输出并关闭文件。

本题结果为abc28

21以下程序的输出结果是(A  )。

main(  )

{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;

for(i=1;i<3;i++)

for(j=0;j<=i;j++)s+=a[i][j];

printf("%d\n",s);

}

A.18B.19C.20D.21

解析:

循环的作用是求行下标从l到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。

22下列选项中,能够满足“若字符串sl等于字符串s2,则执行ST”要求的是(A)。

A.if(stremp(s2,s1)==0)ST;B.if(s1==s2)ST;C.if(strcpy(sl,s2)==l)ST;D.if(sl,s2==O)ST;

解析:

strcmp(char*,char*),函数strcmp用于比较两个字符串的长度,长者为大,若字符个数也一样,则从左至右依次比较相同位上的字符,字符大小按ASCIl表值计算,直到最后一个字符,若还相同,则两个字符串相等,返回值0。

选项A中if(strcmp(s2,sl)==0)ST,若s2等于sl,则返回值0,0等于0,所以逻辑表达式strcmp(s2,sl)==0为真,执行ST。

23下列关于数据库设计的叙述中,正确的是(A  )。

A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典

解析:

在数据库设计时必须在需求分析阶段建立数据字典,确定数据库中所需要的数据。

24有两个关系R和T如下:

则由关系R得到关系T的操作是(D  )。

A.选择B.投影C.交D.并

解析:

选择是建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特定标准的原始关系行

25针对简单程序设计,以下叙述的实施步骤顺序正确的是(A  )。

A.确定算法和数据结构、编码、调试、整理文档

B.编码、确定算法和数据结构、调试、整理文档

C.整理文档、确定算法和数据结构、编码、调试

D.确定算法和数据结构、调试、编码、整理文档

解析:

C语言中程序中的步骤实现为:

先确定程序中的算法和数据结构,然后进行程序的编码,再进行对程序的调试,最后进行文档的整理和记录。

使用这种步骤可以方便程序的编写以及在完成后提高代码的重用性

26以下叙述中错误的是( A )。

A.函数的返回值类型不能是结构体类型,只能是简单类型

B.函数可以返回指向结构体变量的指针

C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员

D.只要类型相同,结构体变量之间可以整体赋值

解析:

函数返回值类型可以是简单类型和结构体类型。

27若有定义:

“inta[2][3];”,则对a数组的第i行第J列元素的正确引用为( A )。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

解析:

通过地址来引用数组元素的方法有下列5种:

(1)a[i][j];

(2)*(a[i]+j);(3)*(*(a+j)+j);(4)*(a[i][j]);(5)(&a[o][0]+3*i+j)。

故A正确。

28软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指(B  )。

A.模块间的关系B.系统结构部件转换成软件的过程描述

C.软件层次结构D.软件开发过程

解析:

软件的过程设计是指系统结构部件转换成软件的过程描述

29设有定义:

“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的(A  )。

A.charstr[]="string";c=str;B.scanf(%s,c):

C.c=getchar(  );D.*c="strin9";

解析:

选项B是从键盘上输入字符串,选项C是接收字符,选项D不正确

30以下选项中不能用做C程序合法常量的是(A  )。

A.1,234B.‘\123’C.123D.“\x7G”

解析:

A选项中逗号是一个操作符

31有以下程序:

#include

intfun(intX,inty)

{if(X!

=y)return((x+y)/2);

elsereturn(x);

}

main(  )

{inta=4,b=5,c=6;

printf("%d/n",fun(2*a,fun(b,c)));

}

程序运行后的输入结果是(B  )。

A.3B.6C.8D.12

解析:

此题考查的是函数fun(),fun(b,c)=5,然后fun(2*a,5)=fun(8,5)=6。

32有以下程序:

#include

#include

main(  )

{charstr[][20][{"One*World","One*Dream!

"},*p=str[1];

 prinft("%d,",strlen(p));printf("%s\n",p);

}

程序运行后的输出结果是(C  )。

A.9,0ne*WorldB.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

解析:

本题输出两个结果,第一个是求字符串的长度。

第二个是输出的字符串,数组的下标是从0开始的,所以当str取1的时候,应为“One*Dream!

33有以下函数

intfun(char*X,char*y)

{intn=0;

 while((*x===*y)&&*x!

='\O'){x++;y++;n++;}

 returnn;

}

函数的功能是(B  )。

A.查找X和y所指字符串中是否有'\o'

B.统计x和Y所指字符串中最前面连续相同的字符个数

C.将Y所指字符串赋给X所指定存储空间

D.统计X和Y所指字符串中相同的字符个数

解析:

由题中while(*x==*y&&*x!

='\n')可知此函数是统计x和y所指向的字符串中最前面的联系相同的字符的个数。

34if语句基本形式是:

if(表达式)语句,以下关于“表达式”值的叙述中正确的是(D  )。

A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

解析:

考查if循环语句。

if(表达式),其中表达式是一个条件,条件中可以是任意的合法的数值。

35软件需求规格说明书的作用不包括( B )。

A.软件设计的依据B.软件可行性研究的依据

C.软件验收的依据D.用户与开发人员对软件要做什么的共同理解

解析:

《软件可行性分析报告》是软件可行性研究的依据。

36下列关于栈的叙述中,正确的是( B )。

A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则

C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对

解析:

栈是先进后出,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。

37设有如下定义语句:

intm[]={2,4,6,8,10},*k=m;

以下选项中,表达式的值为6的是(A  )。

A.*(k+2)B.k+2C.*k+2D.*k+=2

解析:

本题考查数组和指针,*k指针是指向rn数组的首地址,所以要使表达武的值为6,只需要指针指向第m[2],所以答案选择A。

38以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是(B  )。

A.switch(a)

{casel:

a=b;break;

default:

a++;

}

B.switch(a==l)

{case0:

a=b;break;

casel:

a++;

}

C.switch(a)

{default:

a++;break;

casel:

a=b;

}

D.switch(a==l)

{casel:

a=b;break;

case0:

a++;

}

解析:

题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。

39有以下程序段:

charname[20】;intnum;

scanf("name=%Snum=%d",name,&num);

当执行上述程序段,并从键盘输入:

name=Lilimum=1001<回车>后,name的值为( A )。

A.LiliB.name=LiliC.Lilinum=D.name=Lilinum=1001

解析:

考查简单的C程序。

由题可知,程序中输入name的值为Lili,所以输出的必定是Lili,答案选择A。

40下列描述错误的是( C )。

A.继承分为多重继承和单继承

B.对象之间的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

解析:

对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

二、基本操作题(共18分)

41请补充函数proc(),函数proc()的功能是求7的阶乘。

注意:

部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。

试题程序:

#include

longproc(intn)

{

 if(【1

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

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1