1、计算机二级C语言考试上机冲刺试题 32014年计算机二级C语言考试上机冲刺试题(3)一、选择题(每小题1分,共40小题,共40分) 1下列叙述中正确的是()。 A对长度为n的有序链表进行查找,最坏情况下需要的比较次数为n B对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n2) C对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n) D对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n) 2下列叙述中正确的是()。 A数据的逻辑结构与存储结构必定是一一对应的 B由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
2、C程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构 D以上三种说法都不对 3软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是()。 A编辑软件 B操作系统 C教务管理系统 D浏览器 4软件(程序)调试的任务是()。 A诊断和改正程序中的错误 B尽可能多地发现程序中的错误 C发现并改正程序中的所有错误 D确定程序中错误的性质 5数据流程图(DFD)是()。 A软件概要设计的工具 B软件详细设计的工具 C结构化方法的需求分析工具 D面向对象方法的需求分析工具 6软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。 A定义阶段 B
3、开发阶段 C维护阶段 D上述三个阶段 7数据库管理系统中负责数据模式定义的语言是()。 A数据定义语言 B数据管理语言 C数据操纵语言 D数据控制语言 8在学生管理的关系数据库中,存取一个学生信息的数据单位是()。 A文件 B数据库 C字段 D记录 9数据库设计中,用ER图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的()。 A需求分析阶段 B逻辑设计阶段 C概念设计阶段 D物理设计阶段 10有两个关系R和T如下: 则由关系R得到关系T的操作是( )。 A选择 B投影 C交 D并以下叙述正确的是( )。 AC语言程序是由过程和函数组成的 BC语言函数可以嵌套调用,例如:fun(
4、fun(x) CC语言函数不可以单独编译 DC语言中除了main函数,其他函数不可作为单独文件形式存在 12以下关于C语言的叙述中正确的是( )。 AC语言中的注释不可以夹在变量名或关键字的中间 BC语言中的变量可以在使用之前的任何位置进行定义 C在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 DC语言的数值常量中夹带空格不影响常量值的正确表示 13以下C语言用户标识符中,不合法的是( )。 A_1 BAaBc Ca b Da-b 14若有定义:“double a=22;int i=0,k=18;”,则不符合C语言规定的赋值语句 是()。 Aa=a+,i+;Bi=(a+k) mai
5、n() char a,b,C,d; scanf(cC,&a,&b); c=getchar();d=getchar(); printfccccn,a,b,C,d); 当执行程序时,按下列方式输入数据(从第l列开始,代表回车j注意:回车也是 一个字符) 12 34 则输出结果是()。 A1234B12 C12D12 3 34 16以下关于C语言数据类型使用的叙述中错误的是()。- A若要准确无误差地表示自然数,应使用整数类型 B若要保存带权多位小数的数据,应使用双精度类型 C若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型 D若只处理“真”和“假”两种逻辑值,应使用逻辑类型 17
6、若a是数值类型,则逻辑表达式(a= =1)I I(a!=1)的值是()。 A1 B0 C2 D不知道a的值,不能确定 18以下选项中与“if(a= =l)a=b;else a+;”语句功能不同的switch语句是()。 Aswitch(a) Bswitch(a= =l) case l:a=b;break;case 0:a=b;break; default:a+; case l:a+; Cswitch(a) Dswitch(a= =l) default:a+;break; case l:a=b;break; case l:a=b; case 0:a+; 19有如下嵌套的if语句: if(aif(
7、aelse k=C: else if(belse k=C; 以下选项中与上述if语句等价的语句是()。 Ak=(aBk=(ac)?b:c); Ck=(aDk=(a20有以下程序: #include main() int i,j,m=1; for(i=1;i0;j-) if(i*j3)break; m*=i+j; ) printf(m=dn,m); ) 程序运行后的输出结果是()。 Am=6 Bm=2 Cm=4 Dm=3有以下程序: #include main() int a=1,b=2; for(;a8;a+)b+=a;a+=2;) printf(d,dn,a,b); ) 程序运行后的输出结果
8、是()。 A9,18 B8,11 C7,11 D10,14 22有以下程序,其中k的初值为八进制数: #include main() int k=011; printfdn,k+; 程序运行后的输出结果是()。 A12 B11 C10 D9 23下列语句组中,正确的是()。 Achar*s;s=Olympic; Bchar sE73;s=Olympic; Cchar*S;s=Olympic; Dchar sET3;s=Olympic; 24以下关于return语句的叙述中正确的是()。 A一个自定义函数中必须有一条return语句 B一个白定义函数中可以根据不同情况设置多条return语句 C
9、定义成void类型的函数中可以有带返回值的return语句 D没有return语句的自定义函数在执行结束时不能返回到调用处 25下列选项中,能正确定义数组的语句是()。 Aint num02008; B.int num ; Cint N=2008;int numN; D#define N 2008; int numN; 26有以下程序: #include void fun(char*C,int d) *c=*c+1,d=d+1; printf(c,c,*c,d); main() char b=aa=A; fun(&b,a);printf(c,cn,b,a); ) 程序运行后的输出结果是()。
10、Ab,B,b,A Bb,B,B,A Ca,B,B,a Da,B,a,B 27若有定义int(*pt)3;,则下列说法正确的是()。 A定义了基类型为int的三个指针变量 B定义了基类型为int的具有三个元素的指针数组pt C定义了一个名为*pt、具有三个元素的整型数组 D定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组 28设有定义double a10,*s=a;,以下能够代表数组元素a3的是()。 A(*s)3 B*(s+3) C*s3 D.*s+3 29有以下程序: #include main() int a5=1,2,3,4,5),b5=0,2,1,3,o,i,s=0
11、; for(i=o;i5;i+)s=s+abi; printf(”dn”,s); ) 程序运行后的输出结果是()。 A6 B10 C11 D15 30有以下程序: #include main() int b33=(0,1,2,0,1,2,0,1,2,i,j,t=l; for(i=0;i3;i+) for(j=1;j0)return tn-1+f(t,n-1); else return 0; ) 程序运行后的输出结果是()。 A4 B10 C14 D6 34有以下程序: #include int fun() static int x=1; X*=2;return X; main() int i,
12、S=1; for(i=1;iyear=1980 DwSyear=1980; 39有以下程序: #include main() int a=2,b=2,C=2; print(dn,ab&c); 程序运行后的输出结果是()。 A0 B1 C2 D3 40有以下程序: #include main() FILE*fp;char str10; fp=fopen(myfile,dat,); puts(abe,ip);fclose(fp); fp=fopen(myfiledat,a*); fprintf(fp,d,28); rewind(fp); fscanf(fp,S,str);puts(str); fc
13、lose(fp); 程序运行后的输出结果是()。 Aabc B28c Cabc28 D内类型不一致而出错基本操作题(共18分) 请补充main()函数,该函数的功能是:如果数组arr的前一个元素比后一个元素小,则把它保存在数组bb中并输出。 例如,若数组中的元素为:“40,68,62,33,35,52,48,95,66,73”,则输出:“40,33,35,48,66”。 注意:部分源程序给出如下。 请勿改动函数()main和其他函数中的任何内容,仅在main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define M l0 void mai
14、n() int i,n=0; int arrM=(40,68,62,33,35,52,48,95,66,73); int bbM; system(CLS); for(i=0;i【1】;i+) if(arri【2】; printf(n*display bb*n); for(i=0;iprintf(bbd=2d,【3】); 程序改错题(共24分) 给定程序中,函数proc()的功能是:使数组中的元素的值缩小5倍。 请修改程序中的错误,使它能得出正确的结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include fl
15、oat mlO; /*found* int proc(void) int j; printf(In subfunc after callingn); for(j=0;j10;j+) /*found* printf(f,mj5); void main() int i; printf(In main before callingn); for(i=0;i10;i+) mi=i+20; printf(f,mi); proc(); printf(nln main after callingn); for(i=0;i10;i+) printf(f,mi5); 程序设计题(共18分) 学生的记录由学号和成
16、绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc(),其功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。 试题程序: #include #define M l6 typedef struct char numl0; int S; STREC: void proc(STREC a) int i,j; STREC t; for(i=1;i排序* for(j=0;jif(ajs的记录,高分在前* t=aj;aj=aj+1;aj+1=t;) voi
17、d main() STREC stuM=GA005,85),GA003,76, GA002,69,GA004,85),GA001,91), GA007,72),GA008,64),GA006,87), GA015,85),GA013,91),GA012,64), GA014,91),GA011,66),GA017,64, GA018,64),GA016,72; int i; proc(stu); printf(The data after sorted:n); for(i=0;i if(i4= =0) 每行输出4个学生记录 printf(n); printf(s4d,stui,num,stui
18、s); printf(n); 选择题 1C。【解析】-分法查找只适用于顺序存储的有序表,对于长度为n的有序线性表,最坏情况只需比较log2n次。 2D。【解析】数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。数据的存储结构(也称数据的物理结构)是指数据的逻辑结构在计算机存储空间中的存放形式。通常一种数据的逻辑结构根据需要可以表示成多种存储结构。 3C。【解析】编辑软件和浏览器属于工具软件,教务系统是应用软件。 4A。【解析】调试的目的是发现错误或导致程序失效的错误原因,并修改程序以修正错误。调试是测试之后的活动。 5D。【解析】数据流程图是一种结构化分析描述模型,用来对系统的功能需求进行
19、建模。 6B。【解析】开发阶段在开发初期分为需求分析、总体设计、详细设计3个阶段,在开发后期分为编码、测试两个子阶段。 7C。【解析】模式描述语言(Data Description Language,DDL)来描述、定义的,体现、反映了数据库系统的整体观。 8D。【解析】一个数据库由一个文件或文件集合组成。这些文件中的信息可分解成一个个记录。 9C。【解析】E-R(EntityRelationship)图为实体一联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。 10D。【解析】选择是建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特定标准的原始关系行。 1
20、1B。【解析】c语言程序是由主函数和若干子函数构成的,可以嵌套使用。主函数调用子函数,子函数在定义时是并列的,子函数可相互调用或被多次调用。 12B。【解析】C语言中的变量必须在使用前定义,注释不记入程序,只是作为一种解释程序的标识,方便其他用户修改及查看。 13D。【解析】标识符主要由英文字母、数字和下划线构成,但开头字符一定是字母或下划线。 14C。【解析】运算符要求两个运算对象都为整型。C中a为double型,不符合要求。 15C。【解析】当程序调用9etchar时,程序就等着用户接键。用户输入的字符被存放在键盘缓冲区中,直到用户按回车为止(回车字符也放在缓冲区中)。如用户在按回车之前输
21、入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓)中区中的字符读完为后,才等待用户按键。因此,程序中c的值为输入的第 一个回车符。 16D。【解析】C语言中没有逻辑类型。 17A。【解析】由于a= =l和a!=1两者互斥,即总有一个为真,因此二者的或也必定为真。 18B。【解析】题中当a的值为l时,关系表达式a= =l的值为真,即1,因此程序将跳转到easel执行a+操作,与题干程序刚好相反。 19c。【解析】条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式做
22、真假检测,然后根据结果返回两个表达式中的一个作为运算的结果。?:。在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。 20A。【解析】本题考查了多重for循环。当(i*j)3时,跳出循环,本题中i=1,j=3,i*J后值为3,所以执行下边语句:m*=i+j,也可写成m=m*i+j,这时要注意优先级,所以m的值为6。D。【解析】第一次执行循环前,a=1,满足a8,执行循环后,b=3,a=3。执行完a+操作后,a=4。由于a8,执行第二次循环后,b=7,a=6,执行完a+操作后,a=7。由于a8,执行第三次循环后,b=14,a=9,执行完a+操作后a=10。此时不满足a8,跳出循环。 22D。【解析】八进制数k=011得十进制值为9,因此题中输出的是k的十进制值,输出完成后才执行 k+操作。 23A。【解析】给字符串数组赋值时,要先定义数组长度,然后再赋值。可以只给部分元素赋初值,当()中值的个数少于元素个数时,只给前面部分元素赋值。数组的下标是从0开始的,所以s7代表从s0到s6七个元素。其格式可以写成:char数组名常量=字符,字符
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1