1、二级C真题 +答案真题 第一套一、选择题(1)下列叙述中正确的题( )A、算法的空间复杂度与算法所处理的数据存储空间有关B、算法的空间复杂度是指算法程序控制结构的复杂程度C、算法的空间复杂度是指算法程序中指令的条数D、压缩数据存储空间不会降低算法的空间复杂度 /A(2)下列各组排序法中,最坏情况下比较次数相同的是( )A、希尔排序与堆排序 B、简单插入排序与希尔排序C、简单选择排序与堆排序 D、冒泡排序与快速排序 /D(3)设栈的存储空间为S(1:50),初始状态为top=50 。现经过一系列正常的入栈与退栈操作后,top=20 ,则栈中的元素个数为( )A、31 B、30 C、21 D、20
2、 /A(4)某二叉树共有400个结点,其中有100个度为1的结点,则该二叉树中的叶子结点数为( )A、149 B、150 C、151 D、不存在这样的二叉树 /D(5)下面属于“类-对象”主要特征的是( )A、对象一致性 B、对象无关性 C、类的多态性 D、类的依赖性 /C(6)下面不属于需求分析阶段工作的是( )A、需求获取 B、可行性研究C、需求分析 D、撰写软件需求规格说明书 /B(7)软件生命周期是指( ) /DA、软件的需求分析、设计与实现 B、软件的开发与管理C、软件的实现和维护 D、软件产品从提出、实现、使用维护到停止使用退役的过程(8)在数据库的三级模式结构中,描述数据库中全体
3、数据的全局逻辑结构和特征的是()A、内模式 B、用户模式 C、外模式 D、概念模式 /D(9)大学中每个年级有多个班,每个班有多名学生,则实体班级和实体学生之间的联系是( )A、一对多 B、一对一 C、多对一 D、多对多 /A(10)有3个关系R、S和T如下: R S ABC a1nb2mc3fd5e ADc4a5e7 ABCDABCDc3f4a1n5 T则由关系R、S得到关系T的操作是( ) /CA、交 B、投影 C、自然连接 D、并(11)以下选项中,合法的C语言常量是( ) /AA、1.234 B、C+ C、“2.0” D、2Kb(12)有以下程序:#include int s,t,A=
4、10; double B=6; s=sizeof(A); t=sizeof(B); printf(%d,%dn,s,t);在VC6平台上编译运行,程序运行后的输出结果是( )A、4,8 B、4,4 C、2,4 D、10,6 /A(13)关于程序模块化,以下叙述错误的是( ) /AA、程序模块化可以提高程序运行的效率 B、程序模块化可以提高程序编制的效率C、程序模块化可以提高程序代码复用率 D、程序模块化可以提高调试程序的效率(14)以下选项中不能在C语言程序中用作用户标识符的是( ) /AA、auto B、scanf C、Float D、_3_14(15)设有语句:printf(%2dn,20
5、10);则以下叙述正确的是( ) /AA、程序运行时输出2010 B、程序运行时输出20C、程序运行时输出10 D、指定的输出宽度不够,编译出错(16)以下不属于C语言整型常量的是( ) /BA、0L B、-018 C、0Xa D、200U(17)有以下程序:#includemain() int x=1,y=0; if(!x) y+; else if(x=0) if(x) y+=2; else y+=3; printf(%dn,y);程序运行后的输出结果是( ) /CA、1 B、2 C、0 D、3(18)若变量已正确定义,在if(W) printf(%dn,k);中,以下不可替代W的是( )A
6、、ab+c B、ch=getchar() C、a=b+c D、a+ /A(19)有以下程序:#includemain() int a=0,b=0; for(;a7;a+) if(a%2=0) continue; b+=a; continue; printf(%dn,b);程序运行后的输出结果是( )A、0 B、4 C、1 D、9 /D(20)有以下程序:#includemain() char a=5,b; a+; printf(%d, %d n,a-5+255,b=a-5);程序运行后的输出结果是( )A、256,1 B、1,256 C、255,1 D、256,0 /A(21)有以下程序:#i
7、ncludemain() int a=7,b=0; do b+=a; a-=1; while(a-); printf (%d, %d n, b, a);程序运行后的输出结果是( )A、28,0 B、28,1 C、16,0 D、16,-1 /D(22)有以下程序:#includemain() int x, a=1,b=1; while(1) scanf(%d,&x); if(x0) a*=x;break; if(x0) b*=x;continue; printf (%d, %d n, a, b); 程序运行时输入:-1 -2 0 1 2,则输出结果是( )A、1,2 B、2,2 C、-1,1 D
8、、-2,1 /A(23)有以下程序:#include#define N 4void fun(int aN, int b) int i; for(i=0;iN;i+) bi=aii - aiN-1-i;main() int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, yN , i; fun(x,y); for(i=0; iN; i+) printf (%d n, yi); printf(n);程序运行后的输出结果是( ) /AA、-3,-1,1,3 B、-12,-3,0,0 C、0,1,2,3 D、-3,-3,-3,-3(24) 有以下程序:#incl
9、udemain() int x32=0, i; for(i=0; i3; i+) scanf(%d, xi); printf (%3d%3d%3d n, x00,x01,x10);程序运行时输入:2 4 6,则输出结果是( ) /DA、 2 4 6 B、2 0 0 C、2 4 0 D、2 0 4(25) 有以下程序:#includeint m1(int x, int y) if(x=y) return 2*x+1; else return y;int m2(int x, int y) if(x=y) return 2*y+1; else return x;main() int i, t1=10
10、, t2=0; for(i=1; i=4; i+) t1=m1( i, t1); t2=m2( i,t2); printf (t1=%d t2=%d n, t1, t2);程序运行后的输出结果是( ) /AA、t1=9 t2=4 B、t1=4 t2=9 C、t1=9 t2=9 D、t1=1 t2=4(26) 有以下程序:#includevoid f(int) ;main() void f(int); f(5);void f( int n ) printf(%dn,n);以下叙述中错误的是( ) /AA、f函数中不可以出现return语句 B、在主函数中,f(5);可以正确调用f函数C、在主函数
11、后的其他函数可以正确调用f函数 D、f函数无返回值,应当定义成void类型(27)有以下程序:#includemain() int i=3,j=5, *p=&i, *q=&j, *r; r=&q; printf (%d,%d,%d, %d, %d n, i,j,*p,*q,*r);程序运行后输出结果是( ) /AA、3,5,3,5,5 B、5,3,5,3,5 C、3,5,3,5,3 D、3,5,3,3,5(28)以下不能使指针s所指存储单元的值增1的选项是( ) /CA、 (*s)+; B、*s=*s+1; C、*s+; D、+*s(29)以下语句中存在语法错误的是( ) /AA、 char
12、ss620; ss1=right; B、char ss20=right?; C、 char *ss6; ss1=right?; D、char *ss=right?;(30)有以下程序:#includeint fun() static int x=1; x*=2; return x;main() int i, s=1; for( i=1; i=3; i+) s*=fun(); printf(%dn,s);程序运行后输出结果是( ) /DA、30 B、10 C、0 D、64(31)有以下程序(字符a的ASCII码值为97):main() char *s=abc; do printf(%d,*s%1
13、0);+s; while(*s); 程序运行后输出结果是( ) /BA、abc B、789 C、7890 D、979899(32) 有以下程序:#include#includemain() int i,len; char b=Welcome you to Beijing!; len=strlen(b); for( i=0; ilen; i+) if( bi = ) strcpy(b,b+i+1); i=0; printf(%sn, b);程序运行后输出结果是( ) /AA、Beijing! B、to Beijing! C、Welcome you to Beijing! D、you to Bei
14、jing!(33)以下关于字符串处理的叙述正确的是( ) /AA、进行字符串复制时,目的串的存储空间必须足够大B、两个字符串进行比较时,短的一个必定比长的一个小C、计算一个字符串的长度时,应包含串尾的结束标志D、两个字符串连接时,对存储空间的大小没有要求(34)有以下程序: /A#includedouble fun(int n) static double f=1; f*=n; return f;main() int i; double s=0; for(i=1; i6; i+) s+=fun(i); printf(%lfn, s);程序计算的是( )A、s=1!+2!+3!+4!+5! B、
15、s=1+2+3+4+5 C、s=1*2*3*4*5 D、s=1! *2! *3! *4! *5! (35)下面结构体的定义语句中,错误的是( ) /AA、struct ord int x;int y; int z; struct ord a; B、struct ord int x;int y; int z; struct ord a;C、struct ord int x;int y; int z; a; D、struct int x;int y; int z; a; (36) 有以下程序:#includemain() FILE*fp; int a10=1,2,3,i,n; fp=fopen(d
16、1.dat,w); for(i=0;i3;i+) fprintf(fp,%d,ai); fprintf(fp,n); fclose(fp); fp=fopen(d1.dat,r); fscanf(fp,%d,&n); fclose(fp); printf(%dn,n);程序运行后输出结果是( )A、123 B、12300 C、1 D、321(37) 有以下程序:#include#define MUL1(x,y) x*y#define MUL2(x,y) (x)*(y)#define MUL3(x,y) (x*y)main() int m=2,n=3; printf(%d, %d ,%dn ,
17、MUL1(m,m+n) *2, MUL2(m,m+n) *2,MUL3(m,m+n)*2);程序运行后输出结果是( )A、10,20,14 B、20,20,20 C、10,10,10 D、14,14,14(38) 有以下程序:#includevoid fun(int a) if(a1) fun(a-1); printf(%d,a);main() int q=5; fun(q); printf(n);程序运行后输出结果是( )A、1 2 3 4 5 B、5 4 3 2 1 C、0 1 2 3 4 5 D、5 4 3 2 1 0(39)以下关于C语言文件的叙述中正确的是( )A、文件由数据序列组成
18、,其类型可以为二进制文件或文本文件B、文件由记录序列组成,其类型可以为二进制文件或文本文件C、文件由字符序列组成,其类型可以为二进制文件或文本文件D、文件由数据序列组成,其类型只能是二进制文件(40)设有定义和语句(假设short int型数据占2字节)short int *pi, *pj;pi=pj=( short*) malloc(2); 则以下叙述正确的是( )A、pi和pj指向了同一个short int型存储单元B、pi和pj指向了2个连续的short int型存储单元的首地址C、pi和pj分别指向了一个short int型存储单元D、pi和pj分别指向了2个short int型存储单
19、元二程序填空题 函数fun的功能是:将一副扑克牌编号为1,2,3,.53,54,以某种特定的方式洗牌,这种方式是将这幅牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,如第一次这样洗牌后的结果为:1,28,2,29,.53,27,54. 两次洗牌后的结果为:1,41,28,15,2,42.53,40,27,14,54. 程序的功能是:输出经过n次这样洗牌后的结果。 请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构! 试题程序: #include void fun(int
20、a55, int n) int i,k;/*found*/ int 【1】55; for(i=0;in;i+) for(k=1;k=27;k+) b2*k-1=ak;/*found*/ b【2】*k=ak+27; for(k=1;k=54;k+)/*found*/ ak= 【3】; main() int m, a55,i; for(i=1;i55;i+) ai=i; printf(请输入洗牌次数:); scanf(%d,&m); fun(a,m); for(i=1;i55;i+) printf(%d,ai); printf(n); 三程序修改题 给定程序MODI1.C中,函数fun的功能是:判
21、断输入的任何一个正整数n,是否等于某个连续正整数序列之和。若是,则输出所有可能的序列,否则输出“不能分解”。 例如:当输入100时,输出:100=9+10+11+12+13+14+15+16 100=18+19+20+21+22 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #include void fun(int n) int j, b, c, m, flag=0; for(b=1; b=c) /*found*/m=m-c;c+/*found*/ if(m!=0) printf(%d=,n); fo
22、r(j=b; jc-1;j+) printf(%d+,j); printf(%dn,j); flag=1; if(flag=0) printf(不能分解n); main() int n; printf(请输入一个整数:); scanf(%d,&n); fun(n); 四程序设计题 请编写函数fun,其功能是:判断t所指字符串中的字母是否连续递增字母序列组成(字符串长度大于等于2)。例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。 注意:部分源程序存放在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。 试题程序:
23、#include #include void NONO(); int fun(char*t) main() char s26; printf(请输入一个字母组成的字符串:);get(s); if(fun(s) printf(%s是由连续字母组成的字符串.n,s); else printf(%s不是由连续字母组成的字符串.n,s); NONO(); void NONO() FILE*fp,*wf; int i; char s26,*p; fp=fopen(c:testin.dat,r); wf=fopen(c:testout.dat,w); for(i=0;i10;i+) fgets(s,26,
24、fp); p=strchr(s,n); if(p)*p=0; if(fun(s) fprintf(wf,%sn,s+2); else fprintf(wf,%sn,strrev(s); fclose(fp); fclose(wf);int fun(char*t) int len=strlen(t); if(len2) return 0; char before_ch=t0; char current_ch; int flag=1; for(int i=1; ti!=0;+i) current_ch = ti;if(before_ch != current_ch -1 ) flag=0;Break;before_ch = current_ch;Return flag;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1