二级C语言真题3.docx
《二级C语言真题3.docx》由会员分享,可在线阅读,更多相关《二级C语言真题3.docx(29页珍藏版)》请在冰豆网上搜索。
二级C语言真题3
二级C语言真题2017年09月-(3)
一、选择题
1、设某棵树的度为3,其中度为3,1,0的节点个数分别为3,4,15。
则该树中总节点数为______。
A.22 B.30 C.35 D.不可能有这样的树
2、线性表的长度为n。
在最坏情况下,比较次数为n-1的算法是______。
A.寻找最大项 B.同时寻找最大项与最小项
C.顺序查找 D.有序表的插入
3、下列叙述中正确的是______。
A.循环队列是队列的链式存储结构
B.能采用顺序存储的必定是线性结构
C.所有的线性结构都可以采用顺序存储结构
D.具有两个以上指针的链表必定是非线性结构
4、设表的长度为n。
在下列结构所对应的算法中,最坏情况下时间复杂度最低的是______。
A.希尔排序 B.有序链表查找
C.堆排序 D.循环链表中寻找最大项
5、下面不属于结构化程序设计原则的是______。
A.模块化 B.自顶向下 C.可继承性 D.逐步求精
6、对软件系统总体结构图,下面描述中错误的是______。
A.深度等于控制的层数
B.扇入是一个模块直接调用的其他模块数
C.扇出是一个模块直接调用的其他模块数
D.原子模块一定是结构图中位于叶子节点的模块
7、软件集成测试不采用______。
A.一次性组装 B.自顶向下增量组装
C.自底向上增量组装 D.迭代式组装
8、将数据库的结构划分成多个层次,是为了提高数据库的物理独立性和______。
A.规范程度 B.操作独立性 C.逻辑独立性 D.降低数据冗余
9、公司的开发人员可以同时参加多个项目的开发,则实体开发人员和实体项目间的联系是______。
A.一对一 B.一对多 C.多对一 D.多对多
10、定义学生选修课程的关系模式如下:
SC(S#,Sn,C#,Cn,G.(其属性分别为学号、姓名、课程号、课程名、成绩)
则该关系的主键为______。
A.S# B.C# C.S#,C# D.S#,C#,G
11、以下叙述中正确的是______。
A.C语言源程序即使不编译,也是可以直接运行的
B.一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构
C.使用N-S流程图只能描述简单的算法
D.复杂算法是指不能分解成子任务的算法
12、下面说法正确的是______。
A.使用只包含3种基本结构的算法可以求解复杂的问题
B.C语言源程序需要把所有过长的函数保存在单独的源文件中才能通过编译
C.有一些特殊的程序语法错误,只有在运行时才能被发现
D.一些完成简单任务的C语言程序,可以不包含main()函数
13、以下选项中,算术表达式的值与其他3个不同的是______。
A.3/5. B.3./5 C.3/5 D.3.0/5.0
14、以下完全正确的一组常量是______。
A.-12U12.E0 B.01a.12e3 C.0.3L1.2e-1 D.0x0123.
15、以下字符常量中,输出后仍是原英文字母的是______。
A.'\s' B.'\t' C.'\n' D.'\r'
16、有以下程序:
#include<stdio.h>
#include<math.h>
main()
{
ints;floatn,t,pai;
t=1,pai=0,n=1.0,s=1;
while(fabs(t)>1.0e-6)
{
pai+=t;
n+=2;s=-s;t=s/n;
}
printf("total=%f\n",pai);
}
程序所计算的是______。
A.1-1/2!
+1/3!
-1/5!
+1/7!
-… B.1+1/3+1/5+1/7+1/9-…
C.1+1/2+1/3+1/4+1/5-… D.1-1/3+1/5-1/7+1/9-…
17、有如下程序:
#include<stdio.h>
main()
{
inta=0,b=1;
if(a++&&b++)
printf("T");
else
printf("F");
a=b++;
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是______。
A.Fa=1,b=2 B.Fa=1,b=1 C.Ta=0,b=2 D.Ta=0,b=1
18、以下各选项中的代码段执行后,变量y的值不为1的是______。
A.intx=5,y=0;if(5)y=1; B.intx=5,y=0;if(x)y=1;
C.intx=10,y=0;if(x=y)y=1; D.intx=5,y=10;if(x=y)y=1;
19、设有定义:
intm=1,n=2;
则以下if语句中,编译时会产生错误信息的是______。
A.if(m>n)m--
elsen--;
B.if(m=n){m++;n++;}
C.if(m<0&&n<0){}
D.if(m>0);
elsem++;
20、有以下程序:
#include<stdio.h>
voidmain()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{case0:
m++;n++;break;
case10:
n++;break;
default:
k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
程序运行后的输出结果是______。
A.451 B.354 C.154 D.132
21、有下列程序:
#include<stdio.h>
main()
{inta=-1,b=2;
for(;a++&&b--;)
printf("%d,%d,",a,b);
printf("%d,%d",a,b);
}
程序执行后的输出结果是______。
A.0,1,1,0,1,0 B.0,1,1,0 C.0,1,1,1 D.0,1,1,1,1,1
22、有以下程序:
#include<stdio.h>
#defineN4
intfun(inta[][N])
{inti,y=0;
for(i=0;i<N;i++)
y+=a[1][i]+a[N-1][i];
for(i=0;i<N-1;i++)
a[i][i]=a[i][i]*a[i][i];
returny;
}
main()
{inty,x[N][N]={{11,21,13,4},
{15,6,17,8},
{9,1,11,12},
{3,4,15,6}};
y=fun(x);
printf("%d,%d,%d",y,x[N-3][N-3],x[N-3][N-2]);
}
程序执行后的输出结果是______。
A.74,36,17 B.74,6,17 C.82,36,17 D.82,6,17
23、以下程序拟调用getmax函数,找出4个变量中最大的一个,但程序不完整。
具体程序如下:
#include<stdio.h>
intgetmax(intx,inty)
{returnx>yx:
y;}
voidmain()
{
inta,b,c,d,mx;
scanf("%d%d%d%d",&a,&b,&c,&d);
printf("max=%d\n",______);
}
以下选项若填入下划线处,不能实现上述功能的是______。
A.getmax(getmax(getmax(a,b),c),d) B.getmax(getmax(a,b),getmax(c,d))
C.getmax(a,getmax(b,getmax(c,d))) D.mx=(getmax(a,b),getmax(c,d))
24、以下叙述中错误的是______。
A.在同一源程序文件中,函数名必须唯一
B.凡是带有返回值的库函数,都不能通过加分号而作为独立的语句出现
C.不同函数中的形式参数可以同名
D.返回基本数据类型的库函数的调用,均可以出现在赋值号右边的表达式中
25、关于函数返回值,以下说法错误的是______。
A.函数返回值可以是整个数组
B.函数返回值可以是一个数
C.函数返回值可以是一个指针
D.函数返回值可以是一个函数的入口地址
26、有下列程序:
#include<stdio.h>
#defineN4
intfun(inta[][N])
{inti,y=0;
for(i=0;i<N;i++)
y+=a[0][i]+a[N-1][i];
for(i=1;i<N-1;i++)
y+=a[i][0]+a[i][N-1];
returny;
}
main()
{inty,x[N][N]={{1,2,3,4},
{2,1,4,3},
{3,4,1,2},
{4,3,2,1}};
y=fun(x);
printf("%d",y);
}
程序执行后的输出结果是______。
A.40 B.35 C.30 D.32
27、设有如下程序段:
(a)inta[2]={0};
(b)intb[]={0};
(c)charC[2]="ABC";
(d)chard="ABC";
则以下叙述正确的是______。
A.只有数组a、b的定义是合法的 B.数组a、b、c、d的定义都是合法的
C.只有数组c、d的定义是合法的 D.只有数组c的定义是合法的
28、有以下程序:
#include<stdio.h>
voidswap(int*pa,int*pb)
{
intt;
t=*pa;*pa=*pb;*pb=t;
}
voidfun(int*ds,intn)
{
inti,midx;
midx=0;
for(i=1;i<n;i++)
if(ds[i]<ds[midx])midx=i;
swap(ds,ds+midx);
}
voidmain()
{
intdata[]={37,31,26,17,61,12},i;
for(i=0;i<5;i++)
fun(data+i,6-i);
for(i=0;i<6;i++)
printf("%3d",data[i]);
printf("\n");
}
程序的运行结果是______。
A.613731261712 B.373126176112
C.176112373126 D.121726313761
29、设有定义:
intx[2][3];,则以下选项中不能表示数组元素x[0][1]的是______。
A.*(*x+1) B.*(*(x+1)) C.(*x)[1] D.*(&x[0][0]+1)
30、有以下程序:
#include<stdio.h>
voidfun(doublex,double*y,double*z)
{*y=*y-1.0;*z=*z+x;}
main()
{doublea=2.5,b=9.0,*pa,*pb;
pa=&a;pb=&b;
fun(b-a,pa,pb);
printf("%f\n",a);
}
程序运行后的输出结果是______。
A.8.000000 B.9.000000 C.1.500000 D.10.500000
31、使用数组名作为函数的实参时,传递给形参的是______。
A.数组第一个元素的值 B.数组的首地址
C.数组中全部元素的值 D.数组元素的个数
32、有下列程序:
#include<stdio.h>
voidfun(inta[],intn,intflag)
{inti=0,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(flag?
(a[i]>a[j]):
(a[i]<a[j]))
{t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{intc[10]={7,9,10,8,3,5,1,6,2,4},i;
fun(c,10,1);
fun(c,8,0);
for(i=0;i<10;i++)
printf("%d,",c[i]);
}
程序执行后的输出结果是______。
A.8,7,6,5,4,3,2,1,9,10, B.3,4,5,6,7,8,9,10,2,1,
C.9,10,1,2,3,4,5,6,7,8, D.10,9,8,7,6,5,4,3,1,2,
33、有以下程序:
#include<stdio.h>
inta=5;
intfunc(inta)
{ intb=1;
staticintc=5;
a++;b++;++c;
return(a*b*c);
}
main()
{intk,a=4;
for(k=0;k<3;k++)
printf("%d,",func(a));
}
程序执行后的输出结果是______。
A.72,147,256, B.60,60,60, C.72,98,128, D.60,70,80,
34、有以下程序:
#include<stdio.h>
main()
{charb[]="abcdefg",*chp=b;
while(*chp)
{if((ehp-b)%3==0)
putchar(*chp);
++chp;
}
}
程序的运行结果是______。
A.cf B.defg C.adg D.aceg
35、有下列程序:
#include<stdio.h>
#include<string.h>
main()
{charv[4][10],*p[4],*t;
inti,j;
for(i=0;i<4;i++)
{p[i]=v[i];
scanf("%s",p[i]);
}
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(strcmp(p[i],p[j])>0)
{t=p[i];p[i]=p[j];p[j]=t;}
for(i=0;i<4;i++)
printf("%s",p[i]);
}
程序执行时若输入:
WelcomeyoutoBeijing<回车>,则输出结果是______。
A.BeijingWelcometoyou B.BeijingtoWelcomeyou
C.WelcomeyoutoBeijing D.toyouBeijingWelcome
36、以下涉及字符串数组、字符指针的程序片段,没有编译错误的是______。
A.charline[];line="=============":
B.char*name[10],*str;name="HelloWorld";
C.charstr1[10],str2[10]="prog.c";str1=str2;
D.charname[10],*str="HelloWorld";
37、若要使int型变量a、b、c、d的值都为0,以下写法中错误的是______。
A.autointa,b,c,d;a=b=c=d=0; B.autointa=b=c=d=0;
C.autointa=0,b=a,c=b,d=c; D.staticinta,b,c,d;
38、有如下程序:
#include<stdio.h>
main()
{
inta=1,b;
b=(a>>2)%3;
printf("%d,%d",a,b);
}
程序运行后的输出结果是______。
A.1,1 B.2,0 C.1,0 D.2,1
39、有下列程序:
#include<stdio.h>
main()
{ intx=3,y=5,z1,z2;
z1=y^x^y:
z2=x^y^x;
printf("%d,%d\n",z1,z2);
}
程序执行后的输出结果是______。
A.7,7 B.5,3 C.8,8 D.3,5
40、有下列程序:
#include<stdio.h>
#include<string.h>
typedefstructstu{
charname[9];
chargender;
intscore;
}STU;
STUf(STUa)
{STUc={"Sun",'f',90};
strcpy(a.name,c.name);
a.gender=c.gender;
a.score=c.score;
returna;
}
main()
{ STUa={"Zhao",'m',85},b={"Qian",'f',95};
b=f(a);
printf("%s,%c,%d,%s,%c,%d",a.name,a.gender,a.score,b.name,b.gender,b.score);
}
程序执行后的输出结果是______。
A.Zhao,m,85,Sun,f,90 B.Zhao,m,85,Qian,f,95
C.Sun,f,90,Sun,f,90 D.Sun,f,90,Qian,f,95
二、程序填空题
41、下列给定程序中,函数fun的功能是:
求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长小于N。
请在程序的下划线处填入正确的内容,使程序得出正确的结果。
注意:
部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#include<stdio.h>
#include<string.h>
#defineM5
#defineN20
intfun(char(*ss)[N],int*n)
{ inti,k=0,len=N;
/********found********/
for(i=0;i<______;i++)
{len=strlen(ss[i]);
if(i==0) *n=len;
/********found********/
if(len______*n)
{*n=len;
k=i;
}
}
/********found********/
return(______);
}
main()
{charss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"};
intn,k,i;
printf("\nTheoriginalstringsare:
\n");
for(i=0;i<M;i++)puts(ss[i]);
k=fun(ss,&n);
printf("\nThelengthofshorteststringis:
%d\n",n);
printf("\nTheshorteststringis:
%s\n",ss[k]);
}
三、程序修改题
42、下列给定程序中函数fun的功能是:
将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。
例如,若输入“Ab,cD”,则输出“AB,CD”。
请改正程序中的错误,使它能得出正确的结果。
注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include<conio.h>
#include<stdio.h>
#inelude<string.h>
char*fun(chart