全国计算机等级《二级C语言程序设计》终极押密卷1整理版.docx
- 文档编号:5055996
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:14
- 大小:30.49KB
全国计算机等级《二级C语言程序设计》终极押密卷1整理版.docx
《全国计算机等级《二级C语言程序设计》终极押密卷1整理版.docx》由会员分享,可在线阅读,更多相关《全国计算机等级《二级C语言程序设计》终极押密卷1整理版.docx(14页珍藏版)》请在冰豆网上搜索。
全国计算机等级《二级C语言程序设计》终极押密卷1整理版
2013年9月全国计算机等级
《二级C语言程序设计》终极押密卷
(1)
一、选择题(每小题1分,共40分)
1两个或两个以上模块之间关联的紧密程度称为( A )。
A.耦合度B.内聚度C.复杂度D.数据传输特性
(模块的独立性是指每个模块保证完成系统要求的独立功能,并且与其他模块的联系少且接口简单。
衡量软件的模块独立性有内聚性和耦合性两个定性度量标准。
耦合性是模块间互相连接紧密程度的度量。
一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,以利于提高模块的独立性。
)
2简单的交换排序方法是( D )。
A.快速排序B.选择排序C.堆排序D.冒泡排序
解析:
所谓的交换排序方法是指借助数据元素之间的互相交进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。
3若i和k都是int类型变量,有以下for语句:
for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是(D )。
A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环
(循环条件k=1这个循环条件是一个为值1的赋值表达式,因此永真,为死循环,答案D)
4若有定义语句:
“intkl=10,k2=20;”,执行表达式(kl=kl>k2)&&(k2=k2>
k1)后,kl和k2的值分别为( A )。
A.0和1B.0和20C.10和1D.10和20
解析:
此表达式为逻辑表达式,k1=k1>k2的意义是,如果k1>k2,则k1为真,同理k2=k2>k1,如果k2>k1,则k2为真。
所以答案为A。
5下列叙述中正确的是( A )。
A.为了建立一个关系,首先要构造数据的逻辑关系
B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项
C.一个关系的属性名表称为关系模式
D.一个关系可以包括多个二维表
解析:
元组分量的原子性要求二维表中元组的分量是不可分割的基本数据项。
关系的框架称为关系模式。
一个称为关系的二维表必须同时满足关系的7个性质。
6有以下程序段
#include
main( )
{.
while(getchar( )!
='\n');
}
以下叙述中正确的是( C )。
A.此while语句将无限循环
B.getchar( )不可以出现在while语句的条件表达式中
C.当执行此while语句时,只有按回车键程序才能继续执行
D.当执行此while语句时,按任意键程序就能继续执行
解析:
主要是考查while和getchar函数,getchar函数是输入字符函数,while是循环语句,所以当输入的字符为换行符时将执行
7若有定义“intb[8],*p=b;”,则p+6表示( B )。
A.数组元素b[6]的值B.数组元素b[6]的地址
C.数组元素b[7]的地址D.数组元素b[0]的值加上6
解析:
指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。
所以题中p+6指的是将指针向后移动了6个存储单元,即指向b[6],存放的是b[6]的地址。
8以下程序段中,与语句“k—a>b?
(b>c?
1:
O):
0;”功能相同的是( A )。
A.if(a>b)&&(b>c)k=1;
elsek=0;
B.if((a>b)‖(b>c))k=1;
elsek=0;
C.if(a<=b)k=0;
elseif(b>c)k=1;
D.if(a>b)k=1;
elseif(b<=c)k=1;
elsek=0:
解析:
本题考查了双重三目运算符的用法。
例如:
表达式a>b?
c:
d可以看成,当a>b时取C的值,否则取d的值。
在本题中k=a>b?
(b>c?
1:
0):
0可以看做:
当b>c时为真,则k=a>b?
1:
0。
当b
0:
0。
也就是说,当a>b并且b>C时,k=1,否则k=0。
所以A选项符合题意。
9有以下程序:
#include
structord
{intX,y;)dt[2]={1,2,3,4};
main( )
{
structord*p=dt;
printf("%d,",++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是( D )。
A.1,2B.4,1C.3,4D.2,3
解析:
p一>x的值为1,++(p->x)作用是取p->x的值加1作为表达式的值即值为2,同理++(p->y)的值为3。
所以选D。
10设有定义:
“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是( C )。
A.t1=t2;B.t2.num1=tl.numl;
C.t2.mark=tl.mark;D.t2.num2=tl.num2;
解析:
结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。
所以C选项错
11若有定义语句:
“intx=10;”,则表达式x-=x+x的值为( B )。
A.-20B.-l0C.0D.10
解析:
表达式x-=x+X可以写成x=x-(x+x),所以X的值为-l0。
12有下列程序:
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;i returnsum; } main( ) {inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0; s=fun(a,5)+fun(b,4);printf("%d\n",s); } 程序执行后的输出结果是( C )。 、 A.45B.50C.60D.55 解析: 在函数intfun(intx[],intn)的定义中,变量sum为一个静态局部变量。 由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。 函数intfun(intx[],intn)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。 13若有定义语句: “intyear=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是( C )。 A.*p+=1;B.(*p)++;C.++(*p);D.*++P 解析: 此题考查的是指针的自加,*p+=1,即为*p=*p+1,其中B和D都相等,所以答案选择C 14有以下程序 #include voidfun(intx) {if(x/Z>1)fun(x/Z); printf("%d",x); } main() {fun(7);printf("\n");} 程序运行后的输出结果是(D)。 A.137B.731C.73D.37 解析: 本程序主要考查递归函数。 fun(7),首先将参数代入函数,因为(7/2)>1,所以执行f(3),依此类推直到f(1.5),(1.5/2)<1,所以执行打印函数,此时X值为3,然后退出f(1.5),返回f(3),打印x值即7。 所以选D。 15右两个关系R和S如下: 则由关系R得到关系S的操作是(C )。 A.自然连接B.并C.选择D.投影 解析: 选择: 是在数据表中给予一定的条件进行筛选数据。 投影: 是把表中的某几个属性的数据选择出来。 连接: 有自然连接、外连接,内连接等,连接主要用于多表之间的数据查询。 并: 与数学中的并是一样的。 两张表进行并操作,要求它们的属性个数相同并且需要相容。 16有以下程序: #include main( ) {intb[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l; for(i=0;i<3;i++) for(j=1;j<=i;j++)t+=b[i][b[j][i]]; printf("%d\n",t); } 程序运行后的输出结果是( C )。 A.1B.3C.4D.0 解析: 本题考查了两层for循环。 外层循环增量i的值作为内层循环执行次数的值使用。 17有以下程序 #include main( ) {charcl,c2; c1='A'+'8'-'4' c2='A'+'8'-'5'; printf("%C,%d\n",cl,c2); } 已知字母A的ASCIl码为65,程序运行后的输出结果是(A )。 A.E,69B.D,69C.E,DD.输出无定值 解析: 本值输出两个值,%c为输出一个字母,0/4d输出一个数字。 “A”的ASCIl码为65,再加4之后为69,也就是字母E,所以本题A正确。 18数据库设计中,用E—R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的( C)。 A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段 解析: E-R(Entity—Relationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。 19数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( C )。 A.DB包含DBS和DBMSB.DBMS包含DB和DBS C.DBS包含DB和DBMSD.没有任何关系 解析: 数据库系统DBS包括数据库DB和数据库管理系统DBMS! ! 20若有以下定义和语句: chars[10]="abcd! ",*s2="\nl23\\"; Drintf("%d%d\n",strlen(sl),strlen(s2)); 则输出结果是( A)。 A.55B.105C.107D.58 解析: \n和\\分别为转义字符,各占据一个字符的位置 21以下选项中表示一个合法的常量是(说明: 符号口表示空格)( B )。 A.9口9口9B.0XabC.123E0.2D.2.7e 解析: 当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数 22有以下程序: #include intf(intm) {staticintn=0; n+=m; returnn; } main( ) {intn=0; printf("%d,"f(++n)); printf("%d\n",f(n++)); } 程序运行后的输出结果是( A )。 A.1,2B.1,1C.2,3D.3,3 解析: 由题可知,输出是调用了f函数,其中有f(++n)和f(n++),其中n=0,所以输出的结果为l,2。 23有以下程序 #include main( ) {chara[3O],b[30]; scanf("%S",a); gets(b); printf("%s\n%s\\n",a,b); } 程序运行时若输入: howareyou? Iamfine<回车> 则输出结果是( B )。 A.howareyou? IamfineB.howareyou? Iamfine C.howareyou? IamfineD.howareyou? 解析: 此题主要考查scanf函数和gets函数的区别。 答案为B。 scanf("",&a)一遇到空格就认不出来,例如你输入hinihao则scanf只能取到hi,而若换成gets则都能去 24下列叙述中正确的是( D )。 A.可以用关系运算符比较字符串的大小 B.空字符串不占用内存,其内存空间大小是0 C.两个连续的单引号是合法的字符常量 D.两个连续的双引号是合法的字符串常量 解析: 比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,所以也要占用字节,两个双引号表示的是空字符串。 25有下列程序: main( ) {inti,j,x=0; for(i=0,i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++: } x++: } printf("x=%d\n"x); } 程序执行后的输出结果是(B )。 A.x=4B.x=8C.x=6D.x=12 解析: 在第1次外层for循环中,首先x++得到x=1。 进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。 在进入执行第2次外层for循环中,首先x++得到x=5。 进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加l两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。 26有以下程序: #include main( ) {FILE*fp; intk,n,i,a[6]={1,2,3,4,5,6}; fp=fopen("d2.dat","w"); for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]); fclose(fp); fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n); fclose(fp); printf("%d\n,%d\n,k,n); } 程序运行后的输出结果是(C )。 A.1,2B.3,4C.5,6D.123,456 解析: 此题是考查fprintf和fscanf,其中fprintf是向文件输出,文件为da2.dat文件,fscanf是向文件输入,所以根据程序循环写入和写出.可知答案为C。 27设x=011050,则x=x&01252的值是(A )。 A.0000001000101000 B.1111110100011001 C.0000001011100010 D.1100000000101000 解析: 本题主要考查按位与运算,x=Oll050的二进制形式为00010010000101000,Ol252的二进制形式为0000001010101010,两者相与得0000001000101000。 28设有以下语句 charchl,ch2;scanf("%c%C",&chl,&ch2); 若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是( B )。 A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符 C.A和B之间可以用回车间隔D.A和B之间用空格间隔 解析: scanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf("%c%c",&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。 29下列叙述中正确的是(C )。 A.对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n B.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2) C.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n) D.对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n) 解析: 分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。 30某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)( D )。 A.3B.4C.6D.7 解析: 有一个叶子节点而节点的总个数为7,根据题意,这个二叉树的深度为7 31有以下程序 #include #include main( ) {chara[10]=”abcd”; printf("%d,%d\n",strlen(a),sizeof(a)); } 程序运行后的输出结果是( B )。 A.7,4B.4,10C.8,8D.10,10 解析: strlen是求字符串的长度,结果为4,sizeof是求数组的长度,而数据在定义时已给出长度为10 32相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和( D )。 A.可重用性差B.安全性差C.非持久性D.冗余性 解析: 文件系统所管理的数据文件基本上是分散、相互独立的。 相对于数据库系统,以此为基础的数据处理存在3个缺点: 数据冗余大、数据的不一致性、程序与数据的依赖性强 33有以下程序: #includc voidfun(int*p) {printf("%d\n",p[5]);} main( ) {inta[10]={1,2,3,4,5,6,7,8,9,10}; fun(&a[3]); } 程序运行后的输出结果是( B )。 A.5B.6C.8D.9 解析: 由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。 34有以下程序: #include main( ) {chars[]="012xy\O8s34f4w2‘; inti;n=0;, for(i=0;s[i]! =0;i++) if(s[i]>='0'&&s[i]<='9')n++; printf("%d\n",n); } 程序运行后的输出结果是( B )。 A.0B.3C.7D.8 解析: 考查简单的C程序数组和循环。 for循环是指i=0,如果s/[3]! =0,则i自动加1。 if循环指的是s[i]中的元素大于等于0且小于等于9,则n加l,所以答案为B。 35软件生命周期中的活动不包括(B )。 A.软件维护B.市场调研C.软件测试D.需求分析 解析: 软件生命周期是指从软件的产生到消亡的一个过程,其中包含需求分析、软件的开发、软件测试、软件维护等阶段。 其中不包含市场调研,所以答案选择B。 36.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是(A )。 A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义 B.用户标识符可以由字母和数字任意顺序组成 C.在标识符中大写字母和小写字母被认为是相同的字符 D.关键字可用做用户标识符,但失去原有含义 解析: 用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。 37以下叙述中正确的是( B ) A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译 D.每个后缀为.C的C语言源程序都应该包含一个main函数 解析: C语言是一种成功的系统描述语言,具有良好的移植性,每个后缀为.C的C语言源程序都可以单独进行编译。 38下列关系表达式中,结果为“假”的是( B )。 A.(3+4)>6B.(3! =4)>2C.3<=4D.E.3F.(3<4)=1 解析: 在一个表达式中,括号的优先级高,先计算3! =4,为真即是l,1>2为假 39若有定义和语句: inta,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是( C )。 A.3,5,B.3,5,4C.3,5D.3,5 解析: 在输入3和5之间除逗号外不能有其他字符。 40数据库管理系统中负责数据模式定义的语言是( C)。 A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言 解析: 模式描述语言(DataDescriptionLanguage,DDL)来描述、定义的,体现、反映了数据库系统的整体观。 二、基本操作题(共18分) 41请补充main()函数,该函数的功能是: 把一个字符串中的所有小写字母字符全部转换成大写字母字符,其他字符不变,结果保存原来的字符串中。 例如,当str[M]="abcdefl23ABCD",结果输出: "ABCDEFl23ABCD"。 注意: 部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在横线上填人所编写的若干表达式或语句。 试题程序: #include #include #include #defineM80 voidmain() { intj; charstr[M]="abcdefl23ABCD"; char*pf=str; system("CLS"); printf("***originalstring***\n"); puts(str); 【1】 while(*(pf+j)) { if(*(pf+j)>='a'&&*(pf+j)<='Z') { *(pf+j)=【2】; 【3】; } else j++; } printf("****newstring****\n"); puts(str); system("pause");} 【1】j=0【2】*(pf+j)-32【3】j++ 【解析】由程序中可知,变量j为字符数组的下标,其初始值为0。 因此【l】处填“j=0”;大写字母的ASCIl码值比小写字母的4、32,要将小写字母变为大写字母,因此,【2】处填“*(pf+j)-32”;要将字符串数组中的所有小写字母变为大写字母,需要检查其中的每一个字符,因此,【3】处填“j++”。 三、程序改错题(共24分) 42下列给定的程序中,函数proc()的功能是: 用选择法对数组中的m个元素按从小到大的顺序进行排序。 例如,排序前的数据为: 1132-5214 则排序后的数据为: -52111432 请修改程序中的错误,使它能得到正确结果。 注意: 不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #defineM20 voidproc(inta[],intn) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级C语言程序设计 全国计算机 等级 二级 语言程序设计 终极 押密卷 整理