计算机等级考试二级C语言2015年考试预测题(五)及答案一、选择题(1)下列选项中,不是算法的基本特征的是()。A)完整性B)可行性C)有穷性D)拥有足够的情报(2)结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法。A)对象B)数据结构C)数据流D)目标(3)下列工具中为需求分析常用工具的是()。A)PADB)PFDC)N-SD)DFD(4)线性表进行二分法检索,其前提条件是()。A)线性表以顺序方式存储,并按关键码值排好序B)线性表以顺序方式存储,并按关键码的检索频率排好序C)线性表以链式方式存储,并按关键码值排好序D)线性表以链式方式存储,并按关键码的检索频率排好序(5)下列选项中不属于结构化程序设计方法的是()。A)自顶向下B)逐步求精C)模块化D)可复用(6)下列关于结构化程序设计原则和方法的描述中,错误的是()。A)选用的结构只准许有一个入口和一个出口B)复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现C)不允许使用GOTO语句D)语言中所没有的控制结构,应该采用前后一致的方法来模拟(7)软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。A)阶段性报告B)需求评审C)总结D)都不正确(8)下列关于软件测试的描述中正确的是()。A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能地多发现程序中的错误D)软件测试的目的是使程序符合结构化原则(9)用链表表示线性表的优点是()。A)便于随机存取B)花费的存储空间较顺序存储少C)便于插入和删除操作D)数据元素的物理顺序和逻辑顺序相同(10)在数据库设计中,将E-R图转换为关系模式的过程属于()。A)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段(11)以下叙述错误的是()。A)C语言区分大小写B)C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C)整数和实数都能用C语言准确无误地表示出来D)在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示(12)下列叙述中错误的是()。A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中,大、小写字母代表不同标识(13)下列选项中可作为C语言合法常量的是()。A)-80B)-080C)-8e1.0D)-80.0e(14)下列定义变量的语句中错误的是()。A)int_int;B)doubleint_;C)charFor;D)floatUS$;(15)下列关于函数的叙述中正确的是()。A)每个函数都可以被其他函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数(16)当a=1、b=2、c=3、d=4时,执行下面程序段后,x的值是()。if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;elsex=3;elsex=6;elsex=7;A)1B)6C)3D)2(17)以下程序的输出结果是()。#includestdio.hmain(){inta=4,b=3,c=2,d=1;printf(%d,ab?a:dc?d:b);}A)1B)3C)2D)4(18)若有语句:char*line[5];下列叙述中正确的是()。A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针(19)以下程序:#includestdio.hmain(){charstr[10];scanf(%s,&str);printf(%s\n,str);}运行上面的程序,输入字符串howareyou,则程序的执行结果是()。A)howB)howareyouC)hD)howareyou(20)设x和y都是int类型,且x=1,y=2,则printf(%d%d,x,y,(x,y))的输出结果是()。A)12B)122C)1,2D)输出值不确定(21)以下程序的输出结果是()。#includestdio.hmain(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++;switch(b%3){default:m++;case0:m++;break;}}printf(%d\n,m);}A)1B)2C)3D)4(22)定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};则下面的语句输出结果是()。for(i=0;i3;i++)printf(%d,x[i][2-i]);A)159B)147C)357D)369(23)有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列叙述中正确的是()。A)以上的说明形式非法B)NODE是一个结构体类型C)OLD是一个结构体类型D)OLD是一个结构体变量(24)下列数组定义中错误的是()。A)intx[][3]={0};B)intx[2][3]={{l,2},{3,4},{5,6}};C)intx[][3]={{l,2,3},{4,5,6}};D)intx[2][3]={l,2,3,4,5,6};(25)以下叙述错误的是()。A)变量的作用域取决于变量定义语句的位置B)全局变量可以在函数以外的任何部位进行定义C)局部变量的作用域可用于其他函数的调用D)一个变量说明为static存储类型是为了限制其他编译单元的引用(26)若定义函数int*func(),则函数func的返回值为()。A)一个实数B)一个指向整型变量的指针C)一个指向整型函数的指针D)一个整型函数的入口地址(27)若有以下定义,则正确引用数组元素的是()。inta[5],*p=a;A)*&a[5]B)*a+2C)*(p+5)D)*(a+2)(28)以下对C语言中联合类型数据的正确叙述是()。A)定义了联合变量后,即可引用该变量或该变量中的任意成员B)一个联合变量中可以同时存放其所有成员C)联合中的各个成员使用共同的存储区域D)在向联合中的一个成员进行赋值时,联合中其他成员的值不会改变(29)有以下函数定义:intfun(doublea,doubleb){returna*b;}若以下选项中所用变量都已正确定义并赋值,错误的函数调用是()。A)if(fun(x,y)){……}B)z=fun(fun(x,y),fun(x,y));C)z=fun(fun(x,y)x,y);D)fun(x,y);(30)执行以下语句段后,xy的值是()。int*pt,xy;xy=200;pt=&xy;xy=*pt+30;A)200B)170C)260D)230(31)下述程序的输出结果是()。#includestdio.hvoidmain(){inta[20],*p[4];inti,k=0;for(i=0;i20;i++)a[i]=i;for(i=0;i4;i++)p[i]=&a[i*i+1];for(i=0;i4;i++)k=k+*(p+i);printf(%d,k);}A)10B)18C)6D)数组元素引用不合法,输出结果不定(32)下面各语句行中,能正确进行赋值字符串操作的是()。A)chars[5]={'a','b','c','d','e'};B)char*s;gets(s);C)char*s;s=ABCDEF;D)chars[5];scanf(%s,&s);(33)下面程序的输出结果是()。#includestdio.hmain(){chara[]={'a','b','c','d','f','g'},*p;p=a;printf(%c\n,*p+4);}A)aB)bC)eD)f(34)下面函数的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A)将字符串s复制到字符串t中B)比较两个字符串的大小C)求字符串的长度D)将字符串t续接到字符串s中(35)下列程序的运行结果是()。#includestdio.hvoidsub(int*s,int*y){staticintm=4;*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k;intx;printf(\n);for(k=0;k=4;k++){sub(a,&x);printf(%d,,x);}}A)5,4,3,2,1,B)1,2,3,4,5,C)0,0,0,0,0,D)4,4,4,4,4,(36)设q1和q2是指向一个int型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。A)k=*q1*(*q2);B)q1=k;C)q1=q2;D)k=*q1+*q2;(37)下列程序的输出结果为()。main(){unionun{char*name;intage;intpay;}s;s.name=zhaoming;s.age=32;s.pay=3000;printf(%d\n,s.age);}A)32B)3000C)0D)不确定(38)以下有关宏替换的叙述不正确的是()。A)使用宏定义可以嵌套B)宏定义语句不进行语法检查C)双引号中出现的宏名不替换D)宏名必须用大写字母表示(39)下列程序执行输出的结果是()。#includestdio.hf(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i2;i++)k=f(a++);printf(%d\n,k);}A)3B)4C)5D)6(40)已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是()。A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,是指向的输入数据放在内存中的起始位置D)一个存储区,存放要读的数据项二、填空题(6)若有定义:inta=4,b=5,c=6;接着顺序执行下列语句后,变量b中的值是___________。c=(a-=(b-5));c=(a%3)+(b=1);(7)以下程序运行后的输出结果是___________。main(){inta,b,c;a=10;b=20;c=(a/b1)&&(a%b1);printf(%d%d%d\n,a,b,c);}(8)以下程序运行后的输出结果是___________。#definePower2(x)x*xmain(){inti=6,j=8;printf(%d\n,Power2(i+j));(9)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,b);for(i=0;i3;i++)printf(%4d,b[i]);printf(\n);}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;im;i++){x=ar[i][0];for(j=0;jn;j++)if(___________)x=ar[i][j];br[i]=x;}}(10)下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。main(){inti,j;for(i=0;___________;i++){j=i*10+8;if(j%4!=0)continue;pr