二级C语言12.docx
- 文档编号:26252837
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:28
- 大小:28.02KB
二级C语言12.docx
《二级C语言12.docx》由会员分享,可在线阅读,更多相关《二级C语言12.docx(28页珍藏版)》请在冰豆网上搜索。
二级C语言12
二级C语言-1-2
(总分:
81.00,做题时间:
90分钟)
一、{{B}}选择题{{/B}}(总题数:
35,分数:
51.00)
1.以下程序的输出结果是______。
intf()
{staticinti=0;
ints=1;
s+=i;i++;
returns;
}
main()
{inti,a=0;
for(i=0;i<5;i++)
a+=f();
printf("%d/n",a);
∙A.20
∙B.24
∙C.25
∙D.15
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]函数f中变量i为静态变量,函数f调用结束后变量i所占据的存储单元不会释放,而在主函数中f被调用5次,具体过程如下:
第1次调用f:
s=s+i=1+0=1,i=i+1=1,主函数中a=a+f()=0+1=1第2次调用f:
s=s+i=1+1=2,i=i+1=2,主函数中a=a+f()=1+2=3第3次调用f:
s=s+i=1+2=3,i=i+1=3,主函数中a=a+f()=3+3=6第4次调用f:
s=s+i=1+3=4,i=i+1=4,主函数中a=a+f()=6+4=10第5次调用f:
s=s+i=1+4=5,i=i+4=5,主函数中a=a+f()=10+5=15所以printf语句的输出结果为15。
2.下列程序段的输出结果为{{U}}{{/U}}。
#include<stdio.h>
main()
{staticchara[]="language";
char*p;
p=a;
for(p=a;p<a+8;p+=2)
putchar(*p);
}
∙A.language
∙B.lnug
∙C.有语法错误
∙D.lang
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本程序首先定义了静态字符数组a,然后将指针p指向数组a的首地址。
第1次for循环,p=a,p指向数组的第1个元素,*p是取指针p所指地址的内容,输出1;第2次for循环,p=p+2,则p指向数组的第3个元素,*p是取指针p所指地址的内容,输出n;第3次for循环,p=p+2,则p指向数组的第5个元素,*p是取指针p所指地址的内容,输出u;第4次for循环,p=p+2,则p指向数组的第7个元素,*p是取指针p所指地址的内容,输出g,结束循环。
3.下列选项中不属于结构化程序设计方法的是{{U}}{{/U}}。
∙A.自顶向下
∙B.逐步求精
∙C.模块化
∙D.可复用
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]结构化程序设计的主要原则概括为自顶向下、逐步求精和限制使用GOTO语句。
4.以下选项中能表示合法常量的是{{U}}{{/U}}。
∙A.整数:
1,200
∙B.实数:
1.5E2.0
∙C.字符斜杠:
'/'
∙D.字符串:
"/007"
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]选项A),1200中间不能有逗号,否则编译时会认为是1或出错。
选项B),2.0错误,必须为整数。
选项C),要表示字符斜杠常量'/',应该在反斜杠的前面再加上一个反斜杠。
选项D),字符串常量是用一对双引号括起来的一串字符。
5.有以下程序
main()
{intm=12,n=34;
printf("%d%d",m++,++n);
printf("%d%d/n",n++,++m);
}
程序运行后的输出结果是
∙A.12353514
∙B.12353513
∙C.12343514
∙D.12343513
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]自增运算符“++”,放在变量之前表示在使用变量之前,先使变量的值加1;放在变量之后表示在使用变量之后,再使变量的值加1。
第一条输出语句,先输出m=12,m再自加1,变成13,n先自加1再输出,输出n=35;第二条输出语句,先输出n=35,n再自加1,变成36,m先自加1再输出,输出m=14。
6.执行下面的语句后,表达式++x>b?
x:
b-->++x?
++b:
x的值为______。
intx=5,b=5;
∙A.6
∙B.7
∙C.8
∙D.9
(分数:
2.00)
A. √
B.
C.
D.
解析:
7.树是结点的集合,它的根结点的数目是{{U}}{{/U}}。
∙A.有且只有1个
∙B.1或多于1
∙C.0或1
∙D.至少有2个
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]树具有明显的层次关系,即树是一种层次结构。
在树结构中,根结点在第一层上。
当树为非空时,树中有且只有一个根结点,当树为空时,树中根结点的数目为0。
8.以下叙述中正确的是______。
∙A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失
∙B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖
∙C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据
∙D.C语言中的文件是流式文件,凶此只能顺序存取数据
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]B选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。
C选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。
D选项中,C语言中的文件可以进行随机读写。
故本题答案为A。
9.为了避免嵌套的if-else的二义性,C语言规定:
else与______配对。
∙A.缩排位置相同的if
∙B.其之前最近的if
∙C.其之后最近的if
∙D.同一行上的if
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]在if语句中又包含—个或多个if语句称为if语句的嵌套。
应当注意if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。
10.有如下程序
main()
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf("%f/n",y);}
该程序的输出结果是
∙A.0.000000
∙B.0.250000
∙C.0.500000
∙D.1.000000
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]该题目测验考生对if…elseif结构的理解,比较简单。
x的值满足x<10.0的关系,所以程序将执行y=1.0/x;语句,y的值应该等于0.5。
最后,用printf函数输出时,%f的输出格式为小数点后保留6位。
11.有以下程序:
main()
{intx=102,y=012;
printf("%2d,%2d/n",x,y);
}
执行后输出结果是{{U}}{{/U}}。
∙A.10,01
∙B.02,12
∙C.102,10
∙D.02,10
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]x的值为十进制数102,而y的值为八进制数012,根据题意将y用十进制表示为10%md,m为指定输出数据的宽度,若位数小于m则左端补以空格,若位数大于m则按实际输出。
所以答案是C。
12.有以下程序:
#include<stdio.h>
voidfunl(char*p)
{
char*q;
q=p;
while(*q!
='/0')
{
(*q)++;
q++;
}
}
main()
{
chara[]={"Program"},*p;
p=&a[3];
fun1(p);
printf("%s/n",a);
}
程序执行后的输出结果是______。
∙A.Prphsbn
∙B.Prohsbn
∙C.Progsbn
∙D.Program
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析](*q)++是q所指的字符加1,q++就是指针移到下一个字符,因此B选项正确。
13.以下语句或语句组中,能正确进行字符串赋值的是()。
∙A.char*sp;*sp="right!
";
∙B.chars[10];s="right!
";
∙C.chars[10];*s="right!
";
∙D.char*sp="right!
";
(分数:
1.00)
A.
B.
C.
D. √
解析:
在选项A中,首先定义了一个字符指针sp,然后将个字符串赋给甲所指的地址,这是错误的。
因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。
选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。
因为数组名是一个指针常量,不可以被改变。
选项C首先定义了—个字符数组,然后将—个字符串赋给数组的第一个元素,这也是错误的。
因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。
选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将个常字符型指针赋给sp。
这是可行的。
所以,4个选项中选项D符合题意。
14.以下叙述正确的是{{U}}{{/U}}。
∙A.在C语言程序中,main函数必须位于程序的最前面
∙B.C语言程序的每行中只能写一条语句
∙C.C语言本身没有输入输出语句
∙D.在对一个C语言程序进行编译的过程,可发现注释中的拼写错误
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]考查C语言的几个基本概念。
[解题要点]选项A)中,main函数可以放在程序的任何位置,不一定要放在程序的最前面,不论main函数放在什么位置,程序的执行却总是从main函数开始的;选项B)中,因为C语言的语法限制不严格,所以可以多条语句放在同一行上;选项C)是正确的,C语言中没有专门的输入输出语句,输入输出是通过使用输入输出库函数来实现的;选项D)是错误的,因为C语言中的注释是不会被编译的。
[考点链接]掌握算法的相关特性。
15.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。
∙A.可行性分析
∙B.需求分析
∙C.详细设计
∙D.程序编码
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。
其中需求分析阶段常用的工具是数据流图和数据字典。
本题答案为B)。
16.以下程序的输出结果是{{U}}{{/U}}。
main()
{inta,i;a=0;
for(i=1;i<5:
i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;}
}prinf("%d/n",a};}
∙A.31
∙B.13
∙C.10
∙D.20
(分数:
1.00)
A. √
B.
C.
D.
解析:
[解析]本题考查用于多分支选择的switch语句,其一般形式为:
switch(表达式)case常量表达式1:
语句1;case常量表达式2:
语句2;case常量表达式n:
语句n;default:
语句n+1;}其语义是:
计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。
17.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为{{U}}{{/U}}
∙A.a<>0
∙B.!
a
∙C.a=0
∙D.a
(分数:
1.00)
A.
B.
C.
D. √
解析:
18.算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性,这个性质称为
∙A.可行性
∙B.有穷性
∙C.正确性
∙D.确定性
(分数:
1.00)
A.
B.
C.
D. √
解析:
[解析]算法中的每一个步骤都必须是有明确意义的,不允许有多义性。
算法的这个性质即为算法的确定性。
19.有以下程序
#include<stdio.h>
structS
{inta,b;}data[2]={10,100,20,200};
main()
{structSp=data[1];
printf("%d/n",++(p.a));
}
程序运行后的输出结果是______。
∙A.21
∙B.11
∙C.20
∙D.10
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]声明data是结构体型S的数组。
初始化时data[0].a=10;data[0].b=100;data[1].a=20;data[1].b=200。
主函数中p=data[1];即p.a=data[1].a;p.b=data[1].b;执行语句printf("%dn",++(p.a));打印输出时p.a先增1再打印。
即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。
20.C语言提供的合法的数据类型关键字是_______。
∙A.Double
∙B.float
∙C.integer
∙D.Char
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]选项A和D中第—个字母大写,不正确;选项C是PASCAL中的整型关键字,不是C语言中的关键字。
21.有以下程序:
#include<stdio.h>
main()
{intx=102,y=012;
printf("%2d,%2d/n",x,y);
}
执行后的输出结果是{{U}}{{/U}}。
∙A.10,01
∙B.02,12
∙C.102,10
∙D.02,10
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]y=012是将八进制数12赋给变量y。
格式符%d,用于输出十进制整数;%md,m为指定的输出值的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。
本题是将八进制数12也按十进制数输出,八进制数12转换为十进制数为10,输出结果为102,10。
22.设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是
∙A.n=0;while((ch=getchar())!
='/n')n++;
∙B.n=0;while(getchar()!
='/n')n++;
∙C.for(n=0;getehar()!
='/n';n++);
∙D.n=0;for(ch=getchar();ch!
='/n';n++);
(分数:
2.00)
A.
B.
C.
D. √
解析:
[解析]选项D中ch=getchar()的操作,在for语句中所处的位置决定了此操作仅做一次,即只能从键盘上接收一个字符。
如果该字符是回车符,则只循环一次就退出;如果输入一个非回车字符,则程序进入无限循环。
23.在printf的格式字符中,e格式字符的作用是{{U}}{{/U}}。
∙A.以十六进制无符号形式输出整数
∙B.以带符号的十进制形式输出整数
∙C.以指数形式输出实数
∙D.以字符形式输出,且只输出一个字符
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题考查printf。
函数的格式。
格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。
24.在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。
与程序的效率相比,人们更重视程序的
∙A.安全性
∙B.一致性
∙C.可理解性
∙D.合理性
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]结构化程序设计方法设计出的程序具有明显的优点。
其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。
其中,人们更重视前者。
25.有以下程序
main()
{inti=1,j=l,k=2;
if((j++||k++)&&i++)printf("%d,%d,%d/n",i,j,k);
执行后输出的结果是
∙A.1,1,2
∙B.2,2,1
∙C.2,2,2
∙D.2,2,3
(分数:
1.00)
A.
B.
C. √
D.
解析:
[解析]本题考核的知识点是if语句的应用。
首先计算if语句后面的表达式值,先计算运算符&&前面括号里的“‖”运算.在“‖”运算中先计算j++,值为1(j的值为2),为真,后面的k++将不再计算,k的值依旧为2。
计算&&后面的表达式i++,值为1(i的值变为2)。
整个表达式的值为真,所以执行后面的输出语句,最后输出的i,j和k的值为2,2和2.所以,C选项为所选。
26.有以下程序
structS{intn;inta[20];};
voidf(int*a,intn)
{inti;
for(i=0;i<N-1;i++) A[I]+=I;}
main()
{inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0;i<S.N;i++) PRINTF("%D",S.A[I]);}
程序运行后的输出结果是______。
∙A.2,4,3,9,12,12,11,11,18,9,
∙B.3,4,2,7,9,8,6,5,11,10,
∙C.2,3,1,6,8,7,5,4,10,9,
∙D.1,2,3,6,8,7,5,4,10,9,
(分数:
2.00)
A. √
B.
C.
D.
解析:
27.下面的关键字中,不能够从循环体中跳到循环体外的是______。
∙A.goto
∙B.break
∙C.return
∙D.continue
(分数:
1.00)
A.
B. √
C.
D.
解析:
[解析]在C语言中,可以用break语句和continue语句跳出本层循环和结束本次循环。
goto语句可跳出多层循环,如果在函数的循环体内使用return语句,就会直接结束循环返回函数值。
28.数据库设计中反映用户对数据要求的模式是______。
∙A.内模式
∙B.概念模式
∙C.外模式
∙D.设计模式
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]数据库系统的三级模式是概念模式、外模式和内模式。
概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户的公共数据视图。
外模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的局部数据描述,因此选择C。
内模式又称物理模式,它给出了数据库物理存储结构与物理存取的方法。
29.若有定义:
inta[4][10];,则以下选项中对数组元素a[i][i]引用错误的是______。
(0<=i<4,0=i<10)
∙A.*(&a[0][0]十10*i+j)
∙B.*(a+i)+j
∙C.*(a+i)+j)
∙D.*(a[i]+j)
(分数:
2.00)
A.
B. √
C.
D.
解析:
[解析]本题中选项B是错误的引用,*(a+i)+j只代表了a[i][j]的地址。
30.下列程序的输出结果是______。
#include<stdio.h>
main()
{
inti=1,j=3;
printf("%d,",i++);
{
inti=0;
i+=j*2;
printf("%d,%d,",i,j);
}
printf("%d,%d/n",i,j);
}
∙A.1,6,3,1,3
∙B.1,6,3,2,3
∙C.1,6,3,6,3
∙D.1,7,3,2,3
(分数:
2.00)
A.
B. √
C.
D.
解析:
31.有以下程序
#include<stdio.h>
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d/n",i;fprintf(fp,"%d/n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d/n",k,n);
fclose(fp);}
程序运行后的输出结果是
∙A.2030
∙B.2050
∙C.3050
∙D.3020
(分数:
2.00)
A. √
B.
C.
D.
解析:
[解析]本题中,最主要的是掌握几个有关文件函数的应用。
函数名:
fopen功能:
打开一个文件调用方式FILE*fP;fP=fopen(文件名,使用文件方式);函数名:
fprintf功能:
传送格式化输出到一个文件中调用方式:
fprintf(文件指针,格式字符串,输出表列);函数名:
fclose功能:
关闭一个文件调用方式:
fclose(文件指针);函数名:
fscanf功能:
从磁盘文件执行格式化输入调用方式:
fscanf(文件指针,格式字符串,输入列表)。
32.判断字符串s1是否大于字符串s2,应该使用{{U}}{{/U}}。
∙A.if(strcmp(s1,s2)<0)
∙B.if(s1>s2)
∙C.if(strcmp(s2,s1)<0)
∙D.if(strcmp(s1,s2))
(分数:
2.00)
A.
B.
C. √
D.
解析:
[解析]本题考查字符串比较函数strcmp()。
调用形式:
strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。
函数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 12