版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二级C语言笔试模拟321一、选择题1、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈顺序是_。 A12345ABCDE BEDCBA54321 CABCDE12345 D54321EDCBA2、下列叙述中正确的是_。 A循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 C在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 D循环队列中元素的个数是由队头指针和队尾指针共同决定的3、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。 AO(n
2、) BO(n2) CO(log2n) DO(nlog2n)4、下列叙述中正确的是_。 A顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C顺序存储结构能存储有序表,链式存储结构不能存储有序表 D链式存储结构比顺序存储结构节省存储空间5、数据流图中带有箭头的线段表示的是_。 A控制流 B事件驱动 C模块调用 D数据流6、在软件开发中,需求分析阶段可以使用的工具是_。 AN-S图 BDFD图 CPAD图 D程序流程图7、在面向对象方法中,不属于“对象”基本特点的是_。 A一致性 B分类性 C多态性 D标识唯一性8、一
3、间宿舍可住多个学生,则实体宿舍和学生之间的联系是_。 A一对一 B一对多 C多对一 D多对多9、在数据管理技术发展的i个阶段中,数据共享最好的是_。 A人工管理阶段 B文件系统阶段 C数据库系统阶段 D三个阶段相同10、有三个关系R、S和T如下: RABm1n2 S BC1335 T ABCm13 由关系R和S通过运算得到关系T,则所使用的运算为_。 A笛卡尔积 B交 C并 D自然连接11、以下不能用于描述算法的是_。 A文字叙述 B程序语句 C伪代码和流程图 DE-R图12、以下选项中合法的实型常量是_。 A0 B3.13e-2.1 C.914 D2.0*1013、以下叙述中正确的是_。 A
4、a是实型变量,a=10在C语言中是允许的,因此可以说:实型变量中可以存放整型数 B在赋值表达式中,赋值号的右边可以是变量,也可以是任意表达式 C若有int a=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0 D若有int a=4,b=9;执行了a=b;b=8;之后,a的值为9,b的值为414、以下选项中合法的变量是_。 A5a B_10_ CA% Dsizeof15、不能正确表示数学式的表达式是_。 Aa/c*b Ba*b/c Ca/b*c Da*(b/c)16、有以下程序: #includestdio.h main() int a=3; printf(%dn,(a+=a
5、-=a*a); 程序运行后的输出结果是_。 A3 B9 C0 D-1217、若变量已正确定义,以下选项中非法的表达式是_。 Aa!=4|b Ba=1/2*(x=y=20,x*3) Ca%4 DA+3218、有以下程序: #includestdio.h main() int x=35,B;char z=B; B=(x)(zb); printf(%dn,B.; 程序运行后的输出结果是_。 A1 B0 C35 D6619、与数学表达式xyz对应的C语言表达式是_。 A(x=y)|(y=x) B(x=y=z) C(x=y)!(y=z) D(x=y)(y=z)20、有以下程序: #includestdi
6、o.h main() double x=2.0,y; if(x0.0)y=0.0; else if(x5.0)(!x)y=1.0/(x+2.0); else if(x10.0)y=1.0/x; else y=10.0; printf(%fn,y); 程序运行后的输出结果是_。 A0.000000 B0.250000 C0.500000 D1.00000021、有以下程序: #includestdio.h main() int i,sum; for(i=1;i6;i+)sum+=i; printf(%dn,sum); 程序运行后的输出结果是_。 A随机值 B0 C15 D1622、有以下程序:
7、#includestdio.h main() int a=3; do printf(%d,a-=2); while(!(-a); printf(n); 程序运行后的输出结果是_。 A1 B1,-2, C3,0, D1,023、有以下程序: #includestdio.h void fun(int a,int b,int c) a=b;b=c;c=a; main() int a=10,b=20,c=30; fun(a,b,c); printf(%d,%d,%dn,c,b,a); 程序运行后的输出结果是_。 A10,20,30 B30,20,10 C20,30,10 D0,0,024、有以下程序:
8、 #includestdio.h main() int c6=10,20,30,40,50,60,*p,*s; p=c;s=c5; printf(%dn,s-p); 程序运行后的输出结果是_。 A5 B50 C6 D6025、有以下程序: #includestdio.h main() int a3=0,i,j,k=2; for(i=0;ik;i+) for(j=0;jk;j+)aj=ai+1; pnntf(%dn,a1); 程序运行后的输出结果是_。 A0 B2 C1 D326、有以下程序: #includestdio.h main() int a5=2,4,6,8,10,*p,* *k; p
9、=a;k=p; pnntf(%d,(p+); printf(|%dn,* *k); 程序运行后的输出结果是_。 A4 6 B4 4 C2 2 D2 427、有以下程序: #includestdio.h main() int aa33=2,4,6,i,*p=aa00; for(i=0;i2;i+) if(i=0)aaii+1=*p+1; else+p; printf(%d,*p); 程序运行后的输出结果是_。 A2 6 B2 3 C4 3 D4 628、以下fun函数返回数组中最大值的下标: #includestdio.h int fun(int*s,int n) int i,k; for(i=
10、0,k=i;in;i+) if(sisk)_; return(k); 在横线处应填入的内容是_。 A+k Bi=k Ck+ Dk=i29、有以下程序: #includestdio.h int fun(char s) char*p=s; while(*p!=0)p+; return(p-s); main() printf(%dn,fun(0ABCDEF); 程序运行后的输出结果是_。 A1 B6 C7 DO30、若有以下程序段: char str412=aa,bbb,ccccc,d,*strp4; int i; for(i=0;i4;i+)strpi=stri; 不能正确引用字符串的选项是_。
11、Astr0 Bstrp Cstrp3 D*strp31、有以下程序: #includestdio.h #includestring.h void fun(char*s) char a10; strcpy(a,STRING); S=a; main() char*p=PROGRAM; fun(p); printf(%sn,p); 程序运行后的输出结果是_。(此处口代表空格) ASTRING BSTRING CSTRING DPROGRAM32、有以下程序: #includestdio.h void fun(int n,int*s) int f; if(n=1)*s=n+1; else fun(n-
12、1,f); *s=f; main() int x=0; fun(4,x); printf(%dn,x); 程序运行后的输出结果是_。 A3 B1 C2 D433、有以下程序: #includestdio.h main() char c25=6938,8254,*p2; int i,j,s =0; for(i=0;i2;i+) pi=ci; for(i=0;i2;i+) for(j=0;pij0;j+=2) s=10*s+pij-0; printf(%dn,s); 程序运行后的输出结果是_。 A9284 B9824 C6982 D638534、有以下程序: #includestdio.h voi
13、d fun(int*s) static int j=0; do sj+=sj+1;while(+j2); main() int i,a10=1,2,3,4,5; for(i=l;i3;i+)fun(a); for(i=1;i5;i+)printf(%d,ai); printf(n); 程序运行后的输出结果是_。 A34756 B5745 C5795 D3574535、有以下程序段: int*p; p=_malloc(sizeof(int); 若要求使p指向一个int型的动态存储单元,在横线处应填入的是_。 A(int*) Bint Cint* D(*int)36、有以下程序: #include
14、stdio.h #define SUB(X,Y)(X+1)*Y main() int a=3,b =4; printf(%dn,SUB(a+,b+); 程序运行后的输出结果是_。 A25 B20 C12 D1637、有以下程序: #includestdio.h #define f(x)x*x*x main() int a =3,s,t; s=f(a+1); t=f(a+1); printf(%d,%dn,s,t); 程序运行后的输出结果是_。 A10,64 B10,10 C64,10 D64,6438、若有以下程序段: struct stint n;struct st*next; stmct
15、st a3=5,a1,7,a2,9,0,*p; p=a0; 则以下选项中值为6的表达式是_ Ap-n B(*p).n Cp-n+ D+(p-n)39、有以下程序: #includestdio.h main() int i=1; i=ii; printf(%dn,i); 程序运行后的输出结果是_。 A1 B-1 C0 D740、以下程序用来统计文件中字符的个数(函数feof用以检查文件是否结束,结束时返回非零) #includestdio.h main() FILE*fp; long num=0; fp=fopen(fname.dat,r); while(_)fgetc(fp);num+; pr
16、intf(num=%dn,num); fclose(fp); 下面选项中,填入横线处不能得到正确结果的是_。 Afeof(fp)=NULL B!feof(fp) Cfeof(fp) Dfeof(fp)=0二、程序填空题41、下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt中,用-1作字符串输入结束的标识,然后将文件的内容显示在屏幕上。文件的读写分别由函数ReadText和Write-Text实现。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序在文件BLANK1.C中,不得增行或删行,也不得更改程序的
17、结构! #includestdio.h #includestring.h #includestdlib.h void WriteText(FILE*); void ReadText(FILE*); main() FILE*fp; if(fp=fopen(myf-le4.txt,w)=NULL) printf(open fail!n);exit(0); WriteText(fp); fclose(fp); if(fp=fopen(myfile4.txt,r)=NULL) printf(open fail!n);exit(0); ReadText(fp); fclose(fp); /* * * *
18、 * * * * * *found* * * * * * * * * */ void WriteText(FILE _) char str81; printf(nEnter string with -1 to end:n); gets(str); while(strcmp(str,-1)!=0) /* * * * * * * * * *found* * * * * * * * * */ fputs(_,fw);fputs(n,fw); gets(str); void ReadText(FILE*fr) char str81; printf(nRead file and output to sc
19、reen:n); fgets(str,81,fr); while(!feof(fr) /* * * * * * * * * *found* * * * * * * * * */ printf(%s,_); fgets(str,81,fr); 三、程序修改题42、下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中;高位仍在高位,低位仍在低位。 例如,当s中的数为7654321时,t中的数为7531。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构! #includest
20、dio.h /* * * * * * * * * *found* * * * * * * * * */ void fun(long s,long t) long s1=10; *t=s% 10; while(s0) s= s/100; *t=s%10*s1+*t; /* * * * * * * * * *found* * * * * * * * * */ s1=s1*100; main() long s,t; printf(nPlease enter s:); scanf(%ld,s); fun(s,t); printf(The result is:%ldn,t); 四、程序设计题43、学生记
21、录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中。注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。 注意:部分源程序在文件PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #includestdio.h #define N 16 typedef struct char num10; irit s; STREC; int fun(STREC*a,STREC*b) main() STREC sN=CA05,85,GA03,76,GA02,69
22、,GA04,85, GA01,91,GA07,72,CA08,64,GA06,87, GA015,85,CA013,91,GA012,64,GA014,91, CA011,91,CA017,64,CA018,64,GA016,72; STREC hN; int i,n; FILE*out; n=fun(s,h); printf(The%d lowest score: n,n); for(i=0;in;i+) printf(%s%4dn,hi.num,hi.s); printf(n); out=fopen(out.dat,w); fprintf(out,%dn,n); for(i=0;in;i+
23、) fprintf(out,%4dn,hi.s); fclose(out); 答案:一、选择题1、B解析 栈是按“先进后出”的原则组织数据,所以入栈最早的最后出栈,所以选择B选项。2、D解析 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A选项错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C选项错误。3、C解析 当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。4、A解析 链式存储结构既可以针对线性结构也可以针对非线性结构,所以选项B
24、与C错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以选项D错误。5、D解析 数据流图中带箭头的线段表示的是数据流,即沿箭头方向传送数据的通道,一般在旁边标注数据流名。6、B解析 在需求分析阶段可以使用的工具有数据流图(DFD图)、数据字典(DD)、判定树与判定表,所以选择B选项。7、A解析 对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。所以选择A选项。8、B解析 因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。9、C解析 数据管理发展至今已经历了三个阶段:人工管理阶段、
25、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C选项。10、D解析 自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的有序组可知R与S进行的是自然连接操作。11、D解析 算法的描述有伪代码、流程图、N-S结构图等。E-R是实体联系模型,所以选择D选项。12、C解析 A选项为整型数据,B选项中e后面必须为整数,D选项是表达式,不是常量,所以选择C选项。13、B解析 A选项中a是实型变量,a=10在C语言中是允许的,但是实型
26、变量中不可以存放整型数。C选项中执行a=b后,a的值变为b的值,为9,b的值不变,仍为9。D选项中执行a=b后,a的值为9,b的值为9,执行b=a后,a的值为9,b的值也为9,所以选择B选项。14、B解析 变量的命名要符合标识符的命名规则,即由下画线、字母或数字组成,且必须以下画线或字母开头,也不能和关键字相同,所以选择B选项。15、C解析 /号和*号的优先级处于平级,结合性都是自左至右,所以选择C,C式子表示的是。16、D解析 首先计算a*a,结果为9,然后执行a=a-9,即3-9,结果为-6,然后执行a=(-6)+(-6),即a=的值为-12,所以选择D选项。17、B解析 B选项中a即表示
27、a为字符常量,再给a赋值1/2*(x=y=20,x*3)是不正确的。18、A解析 本题重点考查逻辑运算符和关系运算符的相关知识。已知变量x为整型变量,并赋值为35,变量z为字符型变量,并赋值为B。语句B=(x)(zb);中,(x)的值为1,B的ASCII码小于b的ASCII码,所以(zb)的值也为1,|结果为1,因此A选项正确。19、D解析 本题考查关系表达式和逻辑表达式。y大于等于x同时y小于等于z,因此x=y和y=z是逻辑与的关系,D选项正确。20、C解析 本题重点考查if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if(x5.0)(!x),即条件为0,继续执行i
28、f(x10.0),条件为1,即执行y=1.0/x;。依据printf()函数输出类型中f是以小数形式输出单、双精度实数,因此C选项正确。21、A解析 本题重点考查for语句。变量没有初始化的情况下,默认值与编译器有关系,不同的编泽器有不同的值。因此A选项正确。22、B解析 本题重点考查do-while语句,该循环语句的特点是:先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环,如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。变量a赋初值为3,每循环一次需执行语句a-=2一次,同时循环条件使变量a自减1,所以第一次循环后变量a变为1,第2次循环后变量a变为-
29、2,因此B选项正确。23、B解析 函数调用中发生的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参,因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。B选项正确。24、A解析 首先初始化一维数组c6,语句p=c;指将c0元素的地址赋给指针变量p;语句s=c5;指将c5元素的地址赋给指针变量s。程序最后输出s-p,即结果为5,因此A选项正确。25、D解析 该题首先初始化一维数组a3所有元素都为0;执行嵌套循环for语句,当i=0、j=0时,a0=a0+1=1;当i=0、j=1时,a1=a0+1=2;当i=1、j=0时,a0=a1+1=3;当i=1、j=1
30、时,a1=a1+1=3。因比D选项正确。26、D解析 首先通过p=a使p指向数组的第1个元素,所以输出2;在输出2以后,由于p+,即p就指向数组的第2个元素,* *k就是取出p所指向元素的值,而p指向的是数组的第2个元素,即输出4。因此D选项正确。27、B解析 观察题目,可以发现,*p=aa00语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa01=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa00,输出2,而i=1时执行了+p操作使指针向后移动指向了aa01,所以在输出*p时应为3,因此B选项正确。28、D解析 fun函数的功能是返回数
31、组中最大值的下标。通过for循环语句,每次将最大的数给k,即k=i,因此D选项正确。29、C解析 本题考查字符串作为函数参数以及while语句。本题中传入字符串OABCDEF,然后执行fun后,就得到了该字符串中字符的个数,不包括结尾符,该字符串有7个字符,所以答案为C。30、B解析 本题考查字符串指针作为函数参数。本题中p作为字符串指针传入fun中,p指向的内容并没有发生变化,所以选项B正确。31、D解析 本题考查字符串指针作为函数参数。本题中p作为字符串指针传入fun中,p指向的内容并没有发生变化,所以选项D正确。32、C解析 本题考查函数的递归调用。将函数参数带入函数中,一步步递归即可得到结果,结果为2,选项C正确。33、D解析 本题中首先是将二维字符数组c赋值指针数组p,然后遍历p找到两个字符串中的偶数位置的字符并组成一个数值输出,根据代码执行即可得到结果为6385。34、B解析 本题主要考查do-while语句。执行fun函数后,a数组里面的元素变为35745,输出后四个字符,所以结果为5745,选项B正确。35、A解析 本题考查malloc函数。题目中要求p指向一个int型的动态存储单元,那
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论