二级C语言分类模拟题540.docx
《二级C语言分类模拟题540.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题540.docx(21页珍藏版)》请在冰豆网上搜索。
二级C语言分类模拟题540
二级C语言分类模拟题540
选择题
1、若有定义:
inta,b,c;以下程序段的输出结果是______。
a=11;b=3;c=0;
printf("%d\n",c=(a/b,a%b));
A.2 B.0 C.3 D.1
2、C语言中,下列不合法的字符常量是______。
A.'\xff' B.'\65'
C.'&' D.'\028'
3、以下选项中,合法的数值型常量是______。
A.3.1415 B."A" C.092 D.0xDH
4、有如下程序:
#include<stdio.h>
main()
{
inta=0,b=1;
if(a++&&b++)
printf("T");
else
printf("F");
printf("a=%d,b=%d\n",a,b);
}
程序运行后的输出结果是______。
A.Ta=1,b=2 B.Fa=0,b=2
C.Fa=1,b=1D.Ta=0,b=1
5、在C语言中引用数组元素时,其数组下标的数据类型只能是( )。
A.整型常量 B.整型表达式
C.整型常量或整型表达式 D.任何类型的表达式
6、以下选项中关于程序模块化的叙述错误的是______。
A.把程序分成若干相对独立的模块,可便于编码和调试
B.把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C.可采用自低向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
D.可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
7、有以下程序:
#include<stdio.h>
intfun()
{ staticintx=1;
x*=2;
returnx;
}
main()
{ inti,s=1;
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是______。
A.10 B.30 C.0 D.64
8、以下说法不正确的是______。
A.C程序是以函数为基本单位的,整个程序由函数组成
B.C语言程序的一条语句可以写在不同的行上
C.C程序的注释行对程序的运行功能不起任何作用,所以注释应该尽可能少写
D.C程序的每个语句都以分号结束
9、有以下程序:
#include<stdio.h>
#include<stdlib.h>
voidfun(int*p1,int*p2,int*s)
{ s=(int*)calloc(1,sizeof(int));
*s=*p1+*p2;
free(s);
}
main()
{ inta[2]={1,2},b[2]=140,501,*q=a;
fun(a,b,q);
printf("%d\n",*q);
}
程序运行后的输出结果是______。
A.42 B.41 C.1 D.0
10、有下列程序:
#include<stdio.h>
main()
{inta=6,i;
for(i=1;i<=3;i++)
{if(a<5)break;
if(a%2){a+=2;continue;}
a=a+4;
}
printf("%d,%d",i,a);
}
程序执行后的输出结果是______。
A.4,9 B.3,18 C.4,18 D.4,2
11、下列说法正确的是______。
A.条件运算符是单目运算符
B.条件运算符是双目运算符,因为它有2个运算符号
C.条件运算符是三目运算符,因为它有3个运算对象
D.条件运算符的优先级高于赋值运算符和逻辑运算符
12、若有定义:
floatx=1.5;
inta=1,b=3,c=2;
则正确的switch语句是______。
A.switch(a+b)
{case1:
printf("*\n");
case2+1:
printf("**\n");}
B.switch((int)x);
{case1:
printf("*\n");
case2:
printf("**\n");}
C.switch(x)
{case1.0:
printf("*\n");
case2.0:
printf("**\n);}
D.switch(a+b)
{case1:
printf("*\n");
casec:
printf("**\n");}
13、有以下程序:
#include<stdio.h>
main()
{
intk=5;
while(--k)
printf("%d",k-=3);
printf("\n");
}
执行后的输出结果是______。
A.1 B.2 C.4 D.死循环
14、有以下程序:
#include<stdio.h>
ain()
{
inta=3;
a+=a-=a*a;
printf("%d\n",a);
}
程序运行后的输出结果是______。
A.0 B.9 C.3 D.-12
15、在软件开发中,需求分析阶段产生的主要文档是______。
A.可行性分析报告 B.软件需求规格说明书
C.概要设计说明书 D.集成测试计划
16、以下叙述正确的是( )。
A.在C语言程序中,main函数必须位于程序的最前面
B.C语言程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C语言程序进行编译的过程,可发现注释中的拼写错误
17、有三个关系R、S和T如下:
R
A
B
C
a
1
2
b
2
1
c
3
1
S
A
D
c
4
T
A
B
C
D
c
3
1
4
则由关系R和S得到关系T的操作是______。
A.自然连接 B.交 C.投影 D.并
18、表达式3.6-5/2+1.2+5%2的值是______。
A.3.8 B.4.8 C.3.3 D.4.3
19、以下选项中表示一个合法的常量是(说明:
符号口表示空格)______。
A.9□9□9 B.0Xab
C.123E0.2 D.2.7e
20、概要设计中要完成的任务是______。
A.系统结构和数据结构的设计
B.系统结构和过程的设计
C.过程和接口的设计
D.数据结构和过程的设计
21、设有定义:
structcomplex
{intreal.unreal;}data1={1,8},data2;
则以下赋值语句中错误的是______。
A.data2=data1; B.data2=(2,6);
C.data2.real=data1.real; D.data2.real=data1.unreal;
22、已知字符‘A’的ASCII代码值是65,字符变量c1的值是‘A’,c2的值是‘D’。
则执行语句printf("%d,%d",c1,c2-2);的输出结果是______。
A.65,68 B.A,68 C.A,B D.65,66
23、以下选项中叙述错误的是______。
A.在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内
B.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值
C.C程序函数中定义的自动变量,系统不自动赋确定的初值
D.C程序函数的形参不可以说明为static型变量
24、以下程序的执行结果是______。
#include<stdio.h>
unionun
{inti;
charc[2];
}
main()
{unionunx;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}
A.266 B.11 C.265D.138
25、逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是______。
A.关系模型 B.谓词模型
C.物理模型 D.实体—联系模型
26、对两个数组a和b进行下列初始化:
charm[]="1234567";
charn[]={'1','2','3','4,'5','6','7'};
则下列叙述正确的是______。
A.数组m与数组n完全相同
B.数组m与数组n长度相同
C.数组m比数组n长1
D.数组m与数组n中都存放字符串
27、有以下程序:
#include<stdio.h>
intfun(inta,intb)
{
staticintm=0,i=2;
i+=m+1;m=i+a+b;
returnm;
}
main()
{
intk=4,m=1,p;
p=fun(k,m);printf("%d,".p);
p=fun(k,in);printf("%d\n",p);
}
程序运行后的输出结果是______。
A.8,17 B.8,16 C.8,8 D.8,20
28、有以下程序:
#include<stdio.h>
#defineN3
voidfun(inta[][N],intb[])
{inti,j;
for(i=0;i<N;i++)
{b[i]=a[i][0];
for(j=i;j<N;j++)
if(b[i]<a[i][j])b[i]=a[i][j];
}
}
main()
{intX[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;
fun(x,y);
for(i=0;i<N;i++)printf("%d,",y[i]);
printf("\n");
}
程序运行后的输出结果是______。
A.2,4,8, B.3,6,9,
C.3,5,7, D.1,3,5,
29、有以下程序
#include<stdio.h>
voidfun2(chara,charb)
{
printf("%c%c",a,b);
}
chara='A',b='B';
voidfun1()
{
a='C';
b='D';
}
main()
{
fun1();
printf("%c%c",a,b);
fun2('E','F');
}
程序的运行结果是______。
A.CDEF B.ABEF C.ABCD D.CDAB
30、以下能够实现计算5!
的程序段是______。
A.intfac=1,k=0;
do{k++;fac*=k;}while(k<5);
B.intfac=0,k=1;
do{fac*=k;k++;}while(k<5);
C.intfac=1,k=1;
do{k++;fac*=k;}while(k<=5);
D.intfac=1,k=0;
do{fac*=k;k++;}while(k<5);
31、以下对C语言函数的叙述中正确的是______。
A.调用函数时,只能把实参的值传给形参,形参的值不能传给实参
B.函数既能嵌套定义,又能递归定义
C.函数必须有返回值,否则不能使用
D.程序中有调用关系的所有函数必须放在同一个源程序中
32、以下程序段中的变量已定义为int类型,则
sum=pad=5;pAd=sum++,pAd++,++pAd;
printf("%d\n",pad);
程序段的输出结果是______。
A.6 B.4 C.5 D.7
33、下列叙述中正确的是______。
A.为了建立一个关系,首先要构造数据的逻辑关系
B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项
C.一个关系的属性名表称为关系模式
D.一个关系可以包括多个二维表
34、不合法的十六进制数是
A.oxff B.0Xabc C.0x11 D.0x19
35、以下叙述中正确的是______。
A.在一个程序中,允许使用任意数量的#include命令行
B.在包含文件中,不得再包含其他文件
C.#include命令行不能出现在程序文件的中间
D.虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接
36、若有定义:
“doublea=22;inti=0,k=18;”,则不符合C语言规定的赋值语句是( )。
A.a=a++,i++; B.i=(a+k)<=(i+k);
C.i=a%11; D.i=!
a;
37、有以下程序
#include<stdio.h>
main()
{
inta=1,b=3,c=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是______。
A.4 B.2 C.1 D.3
38、执行语句“for(i=1;i++<4;);”后,变量i的值是______。
A.3 B.4
C.5 D.不定
39、有以下程序:
#include<stdio.h>
main(){
charc[6];
inti=0;
for(;i<6;c[i]=getchar(),i++);
for(i=O;i<6;i++)putchar(c[i]);
printf("\n");
}
如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为_______。
A.a B.a C.ab D.abcdef
b b c
c c d
d d
e
f
40、有定义语句:
inta=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是
A.if(c<a)x=1;
elseif(b<a)x=2;
elsex=3;
B.if(a<3)x=3;
elseif(b<a)x=2;
elsex=1;
C.if(a<3)x=3;
if(a<2)x=2;
if(a<1)x=1;
D.if(a<b)x=b;
if(b<c)x=c;
if(c<a)x=a;
答案:
选择题
1、A
[解析]C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。
逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。
也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式的值作为整个逗号表达式的值。
因此变量c的值为a%b即11%3=2。
故答案为A选项。
2、D
[解析]选项A,'\xff'中'\x'组合表示是一个十六进制数ffH=10进制的255,它代表一个不可见字符的ASCII码,合法。
选项B'\65'同理'\'十三个十进制数'\ddd'表示的是八进制数。
'\65'='\065'=10进制的53,是'F'的ASCII码表示。
选项C,单'&'字,合法。
选项D中'\028'同上表示是一个八进制数,但八进制数中逢八则进一,是不会出现8的,所以格式虽对但数值错了。
不合法。
3、A
[解析]数值型常量包括整型常量和实型常量。
整型常量有三种:
十进制常量,用0~9表示,不能以0开头;八进制常量,用0~7表示,必须用0开头;十六进制常量,用0~9和A~F(a~f)表示,必须以0x或0X开头。
实型常量:
用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。
3.1415为实型常量,A选项正确。
“A”为长度为1的字符串常量,B选项错误。
092按照格式来说是八进制整型常量,但是八进制不会出现9,故C选项错误。
0xDH按照格式说是十六进制整型常量,但是不应该出现H,D选项错误。
4、C
[解析]程序中判断if条件是否成立,a++先取值为0,则(a++&&b++)为0,不计算b++,而后a自增得a=1,if条件不成立执行else函数体,输出F。
最后执行语句printf("a=%d,b=%d\n",a,b);按照格式输出a=1,b=1。
5、C
[解析]在C语言中,数组元素的下标只能是整型常量或整型表达式。
6、C
[解析]模块化的特征为将程序分解成独立的模块、模块的重用性、自顶向下逐步细化。
7、D
[解析]在本题中,静态局部变量x在静态存储区内分配存储单元,在程序整个运行期间都不释放。
所以第一次循环s的值为2,在第二次循环中,返回的x的值为4,所以s的值为8,第三次循环,返回的x的值为8,所以s的值为64。
8、C
9、C
[解析]本题考查把数组名作为函数参数。
执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。
10、C
[解析]main()函数中,a的初值为6,for循环首先判断i的值是否小于5,若小于5。
执行break语句终止循环;若不小于5,接着判断a的奇偶性,若a是奇数,将a自增2后执行continue语句,执行下一轮循环;若a是偶数,将a自增4;可见无论程序如何执行,a的值只会增不会减。
所以for循环过程中,两个if语句都不会执行,每次都是将a自增4,又由i取值可以是1,2,3知变量a一共自增3次,最终i的值为4,a的值为18。
故本题答案为C选项。
11、C
[解析]本题比较全面地考查了条件运算符的基本知识点,选项C的说法是正确的。
12、A
[解析]B选项的“switch((int)x);”语句中不应该有最后的分号。
switch(expr1)中的expr1不能用浮点类型或long类型,也不能为一个字符串,因此C错误。
case后面只能是常量表达式,因此D错误。
13、A
[解析]--k先自减再使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符,所以选择A选项。
14、D
[解析]首先计算a*a结果为9,执行a=a-9,a的值为-6,然后执行a+=a,即a=a+a=-6+(-6),所以值为-12。
15、B
[解析]A错误,可行性分析阶段产生可行性分析报告。
C错误,总体设计阶段产生概要设计说明书。
D错误,集成测试计划是在概要设计阶段编写的文档。
B正确,需求规格说明书是需求分析阶段产生的主要文档,是后续工作如设计、编码等需要的重要参考文档。
16、C
[解析]考查C语言的几个基本概念。
[解题要点]选项A)中,main函数可以放在程序的任何位置,不一定要放在程序的最前面,不论main函数放在什么位置,程序的执行却总是从main函数开始的;选项B)中,因为C语言的语法限制不严格,所以可以多条语句放在同一行上;选项C)是正确的,C语言中没有专门的输入输出语句,输入输出是通过使用输入输出库函数来实现的;选项D)是错误的,因为C语言中的注释是不会被编译的。
[考点链接]掌握算法的相关特性。
17、A
[解析]自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据T中元组可以判断关系R和S做的是自然连接操作,答案为A。
18、A
[解析]5/2值为2,5%2值为1,所以3.6-2+1.2+1值为3.8。
19、B
[解析]当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。
20、A
[解析]在C语言中软件概要设计的基本任务是设计软件系统结构、数据结构及数据库设计、编写概要设计文档和概要设计文档评审。
21、B
[解析]选项B需要强制转换数据类型,应改为(structcomplex){2,6};。
22、D
[解析]打印时以%d整型格式打印输出,所以字符标量c1的值打印出来就是65,从c2-2的值打印出来就是68-2,即66。
所以选择D。
23、B
[解析]静态变量只赋值一次,下一次调用,还是使用上次遗留的值。
答案选择B。
24、A
[解析]此题考查共用体的特征。
int类型变量i和字符数组c共用两个字节的存储单元,通常c[0]位于低字节,c[1]位于高字节。
因此,x.i=x.c[1]*256+x.c[0