C语言二级考试三套模拟题Word格式.docx
《C语言二级考试三套模拟题Word格式.docx》由会员分享,可在线阅读,更多相关《C语言二级考试三套模拟题Word格式.docx(27页珍藏版)》请在冰豆网上搜索。
A.(x—Y<
01Ix—Y>
O)
B.(x—y<
0)
C.(x—Y>
D.(x—Y==0)
(9)有以下程序:
A.3
B.2
C.1
D.0
(10)若有定义:
floatx=1.5;
inta=1,b=3,c=2;
则正确的switch语句是( )。
(11)以下叙述中错误的是( )。
A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中
D.c语言源程序经编译后生成后缀为.obj的目标程序
(12)以下选项中,合法的一组c语言数值常量是( )。
A.12.0Xa234.5e0
B.028.5e…30xf
C.1774el.50abe
D.0x8A10,0003.e5
(13)以下选项中不合法的标识符是( )。
A.&
a
B.FOR
C.pfint
D.00
(15)若有定义:
doublea=22;
inti=0,k=18;
,则不符合c语言规定的赋值语句是( )。
A.i=(a+k)<
=(i+k);
B.i=a%11;
C.a=a++,i++;
D.i=!
a;
(16)有以下程序:
在VC6.0平台上编译运行,程序运行后的输出结果是( )。
A.10,6
B.4,4
C.2,4
D.4。
8
(17)有以下程序:
当执行程序时,按下列方式输入数据(从第l列开始,代表回车,注意:
回车也是一个字符]1234则输出结果是( )。
A.12
B.12
C.1234
D.12343
(18)以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A.可以是任意合法的表达式
B.只能是整数0或非0整数
C.可以是结构体类型的数据
D.只能是整数0或1
(19)有以下程序:
程序运行后的输出结果是( )。
A.1,1,2,0
B.0,0,0,3
C.编译有错
D.0,1,2,0
(20)有以下程序:
A.a=2,b=2
B.a=2,b=1
C.a=1,b=l
D.a=1,b=0
二、程序填空题
下列给定程序中,函数fun的功能是:
将形参n中个位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。
例如,输入一个整数27638496,函数返回值为64862。
请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
注意:
部分源程序在文件BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
#include
unsignedlongfun(unsignedlongn){unsignedlongx=0;
intt;
三、程序修改题
下列给定程序中函数fun的功能是:
将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。
高位仍在高位,低位仍在低位。
例如,当s中的数为87653142时,t中的数为7531。
请改正程序中的错误,使它能得出正确的结果。
部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!
四、程序设计题
编写函数fun,其功能是:
实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串的后面。
例如,分别输人下面两个字符串:
FirstString--SecondString
程序运行后的输出结果是:
FirstString————SecondString
注意:
部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
五答案解析
(1)B【解析】在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B错误。
(2)A【解析】A选项中l15L表示ll5是长整型数据,合法。
B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。
c选项中e后面应该是整数不能是小数1.5,所以c错误。
D选项中八进制常量应该是数字…0开始,而不是字母…O开始。
(3)D【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。
所以D选项中的连接符不合法。
(4)A【解析】8与D选项中取模运算符%的左右两个操作数均应为整数,所以B、D错误。
c选项中不能将X+Y的值赋给表达式Y*5,所以c错误。
(5)A【解析】A选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A。
B选项中首先计算逗号表达式中第一表达式x++,此时x为3,在执行第二个表达式2·
X=2*3=6,所以逗号表达式为第二个表达式的值6。
C选项的赋值表达式可以表示为x=x*(1+x)=2}(1+2)=6。
D选项中的表达式可以表示为x=X}(x+1)=2·
3=60
(6)C【解析】z=X++,Y++,++y;
因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(Z=x++),(Y++),(++y)。
然后从左向右先计算表达式Z=X++,因为x++先使用后自增,所以z的值为1,X的值为2。
再计算逗号表达式第二个表达式Y++,此时Y的值为2,最后计算第三个表达式++y,Y的值为3。
(7)A【解析】本题目中字符变量cl是字符‘A’的ASCIl码加上4,即69所对应的字符‘E’。
字符变量c2是字符‘A’的ASCIl码加上3,即68所对应的字符‘D’。
但是打印输出时,cl以%C的格式输出,所以是E,c2以%d的格式输出,所以是68。
(8)A【解析】条件表达式:
x=表达式17表达式2:
表送式3的含义是:
先求解表达式1,若为非0(真),则求解表达芪2,将表达式2的值赋给x。
若表达式1的值为0(假),则求辞表达式3,将表达式3的值赋给x。
在本题中与表达式1:
:
x—y)等价的是(x—Y<
0I|x—Y>
O)。
(9)D【解析】在ifelse语句中else总是与离它最近的f配对。
本题目中x为l所以!
X为0,所以执行elseif语句中的内容,判断(x==O)是否成立,因为x为1所以条件不成立,听以elseif内部的if…else语句不再执行,所以Y的值还是初蛤值0。
(10)A【解析】B选项中switch((int)x);
语句中不应该有最后的分号。
switch(exprl),中的exprl不能用浮点类型或10n9类型,也不能为一个字符串,所以c错误。
ca”后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。
(11)A【解析】C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A错误。
由C语言构成的指令序列称c源程序,C源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);
最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。
(12)A【解析】C语言中八进制整型常量的开头是数字0,十六进制整型常量的数字开头是Ox。
C语言中的实型常量有两种表示形式:
小数形式,小数形式表示的实型常量必须要有小数点;
指数形式,以“e”或“E'
,后跟一个整数来表示以l0为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。
B选项中028错误,八透割中没有数字8。
c选项中4el.5中e后面的指数不是整数:
D选项中3.e5小数点后面缺少数字。
(13)A【解析】C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。
另外,关键字不能作为标识符。
因为C语言中区分大小写,所以B选项中的。
FOR。
可以作为标识符来用。
A选项中含有非法字符&
,所以选择A。
(14)A【解析】B选项中函数pow(x,C)错误应该直接使用exp(x)函数。
c选项中函数ah(n^x+e“x)错误,应该使用fabs()返回浮点数的绝对值。
D选项中pow(x,n)参数顺序错误。
(15)B【解析】取模运算符“%”,二元运算符,具有左结合性,参与运算的量均为整型。
选项8中的a变量是doable实型,所以8不符合规定。
(16)D【解析】C语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,doable型数据占有8个字节。
(17)D【解析】按照从键盘输入的数据可以_判断字符l给了变量a,字符2给了变量b,字符<
CR>
即回车给了变量c,字符3给了变量d。
所以打印输出的结果为D选项。
(18)A【解析】C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A。
(19)C【解析】本题中ff(a=1)b=1;
与elsed=3;
之间多了语句c=2;
所以会出现else语句的位置错误的编译失败提示。
(20)B【解析】C88e常量表达式只是起语句标号作用,并不是该处进行条件判断。
在执行switch语句时,根据switch的表达式,找到与之匹配的Case语句,就从此case子句执行下去,不在进行判断,直到碰到break或函数结束为止。
所以执行内层switch(y)时只执行了a++,此时a的值为1。
然后执行外层case2语句的a十+;
b++;
a为2,b为1。
所以结果为B。
二、程序填空题
【参考答案】
(1)0
(2)10*x
(3)n/10
【考点分析】
本题考查:
已知某数,如何求该数各个位数值,已知各个位数值,如何表示该数;
除法运算。
【解题思路】
填空l:
定义变量t用来存放某数的各个位数值,此处判断t是否为偶数,即对2求余结果是否为0。
填空2:
将t作为x的个位数,原来x的各个位上升l位,即x=10{x+1。
填空3:
每循环一次,通过除法运算,去掉数值最后一位。
【解题宝典】
如果知道某数n的各个位的数值,可以得到该数值n,如n的个位为a、十位为b、百位为c,那么n=c}100+b*10+a。
如果知道数值n,可以采用求余和除法操作来表示其各个位,如n%10(取个位)、n/J0(取十位),读者可以自己考虑一下,如果是三位数,如何提取各个位?
四位数呢?
三、程序修改题【参考答案】
(1)}t=0;
(2)if(d%21=O)或if(d%2==1)
指针型变量作为函数参数;
if语句条件表达式,结合奇偶数的表示方法来确定该表达式内容。
(1)由函数定义可知,变量t是指针变量,所以对t进行赋初值0是不对的。
因为t指向的是存放新数的变量,所以此处应给新数赋初值0,即。
t=0。
(2)变量d表示数S各个位上的数,此处的if条件应为判断d是否为奇数。
四、程序设计题【参考答案】voidfun(charpl[],charp2[])
in“,j;
for(i=0;
pl[i]f=。
、0’;
i++);
for(j=0;
p2[j]!
=。
j++)p1[i++]=p2[j];
p1[i],_。
}
【考点分析】“
不使用字符串函数实现字符串连接操作。
通过for循环语句来完成,不要忘了最后需要加上字符串结束标识‘、0’。
本题用两个循环完成操作,第1个循环的作用是求出第l个字符串的长度,即将i指到第1个字符串的末尾。
第2个循环的作用是将第2个字符串的字符连到第l个字符申的末尾。
最后在第l个字符串的结尾加上字符串结束标识‘、0’。
计算机二级C语言考试考前第二套模拟题
1).下列数据结构中,属于非线性结构的是(C)
A.循环队列
B.带链队列
C.二叉树
D.带链栈
2).设有定义:
chars[81];
inti=0;
以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是(B)
A.while((s[i++]=getchar())!
=′\n′);
s[i]=′\0′;
B.scanf(″%s″,s);
C.gets(s);
D.do{scanf(″%c″,&
s[i]);
}while(s[i++]!
s[i]=′\0′;
3).若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是(A)
A.++x,y=x--
B.x+1=y
C.x=x+10=x+y
D.double(x)/10
4).下列叙述中正确的是(D)
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.算法的时间复杂度与空间复杂度没有直接关系
5).下列描述中正确的是(D)
A.程序就是软件
B.软件开发不受计算机系统的限制
C.软件既是逻辑实体,又是物理实体
D.软件是程序、数据与相关文档的集合
6).执行以下程序段后的输出结果是(A)。
intx=0xcde;
printf("
M,%4o,%4x\\n"
x,x,x);
A.3294,6336,cde
B.3294,6336,xcde
C.3294,06336,0xcde
D.3294,6336,0cde
7).若有语句int*point,a=4;
和point=&
下面均代表地址的一组选项是D
A.a,point,*&
B.&
*a,&
a,*point
C.*&
point,*point,&
D.&
a,&
*point,point
8).已知inta[10];
则对a数组元素的正确引用是D
A.a[10]
B.a
C.a+5
D.a[10-10]
9).计算机内部运算使用的数是(C)。
A.十进制数
B.十六进制数
C.二进制数
D.八进制数
10).以下对C语言函数的有关描述中,正确的是A
A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.函数必须有返回值,返回值类型不定`
11).以下判断两个字符串相等的正确方法是(D)。
A.if(str1=str2)
B.if(str1==str2)
C.if(strcpy(str1,str2)=0)
D.if(strcmp(str1,str2)==0)
12).以下正确的函数头定义形式是A
A.doublefun(intx,inty)
B.doublefun(intx;
inty)
C.doublefun(intx,inty);
D.doublefun(intx,y);
13).函数的值通过return语句返回,下面关于return语句的形式描述错误的是C
A.return表达式;
B.return(表达式);
C.一个return语句可以返回多个函数值
D.一个return语句只能返回一个函数值
14).不能进行++和--运算的数据类型为D
A.指针
B.整型
C.长整型
D.常量
15).已知i,j,k为int型变量,若从键盘输入:
1,2,3,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是C
A.scanf("
%2d,%2d,%2d"
i,j,k);
B.scanf("
%d%d%d"
&
i,&
j,&
k);
C.scanf("
%d,%d,%d"
D.scanf("
i=%d,j=%d,k=%d"
16).编写求两个双精度数之和的函数,选项中正确的是(A)。
17).当顺利执行了文件关闭操作时,fclose函数的返回值是C
A.-1
B.TRUE
C.0
D.1
18).假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为C
A.17
B.16
C.15
D.14
19).已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义structa*f(intt1,int*t2,strcutat3,structa*t4)structap,*p1;
inti;
则正确的函数调用语句为B
p=f(10,&
i,p,p1);
B.p1=f(i++,(int*)p1,p,&
p);
C.p=f(i+1,&
(i+2),*p,p);
D.f(i+1,&
i,p,p);
20).在下列选项中,没有构成死循环的是(D)。
函数fun的功能是:
输出a所指数组中的前n个数据,要求每行输出5个数。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
源程序存放在考生文件夹下的BLANKl.C中。
不得增行或删行,也不得更改程序的结构!
给定程序MODl1.C中,fun函数的功能是:
在任意给定的N个正整数中,从左到右依次逐个取三个数作为一组,按值大小找出该组数的中值,用该中值替换与该组数对应的原三个数中的中间位置的数。
处理后原数列中首尾2个数不变。
处理后数列在主函数中输出。
例如,有10个正整数如下:
请编写函数fun,函数的功能是查找X在s所指数组中下标的位置,并作为函数值返回,若x不存在,则返回-l。
部分源程序在文件PROG1.C文件中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
(1)正确答案:
C
答案解析:
根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:
线性结构和非线性结构。
循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。
(2)正确答案:
B
本题考查标准输入输出函数和循环语句。
gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。
而scanf()函数接收字符串时的结束标志为回车或者空格。
(3)正确答案:
A
答案解析:
用逗号将表达式连接起来的式子称为逗号表达式。
其表达式的一般形式为:
表达式1,表达式2,……,表达式n。
最后一个表达式的值就是此逗号表达式的值。
所以选项A为C语言中的逗号表达式。
赋值表达式的左侧只能是变量,不能是常量或表达式。
强制类型转换表达式的形式为:
(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。
(4)正确答案:
D
算法的复杂度主要包括时间复杂度和空间复杂度。
算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;
算法的空间复杂度,一般是指执行这个算法所需要的内存空间。
一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。
根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。
(5)正确答案:
计算机软件与硬件是计算机系统中相互依存的两部分。
计算机软件是包括程序、数据及相关文档的完整集合。
软件由两部分组成:
一部分是机器可执行的程序和数据;
二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
软件具有以下六个特点:
①软件是一种逻辑实体,而不是物理实体,具有抽象性。
②软件的生产与硬件不同,它没有明显的制作过程。
③软件在运行、使用期间不存在磨损、老化问题。
④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。
⑤软件复杂性高,成本昂贵。
⑥软件的开发涉及诸多社会因素。
计算机二级C语言考试考前第三套模拟题
1).下列叙述中正确的是()。
A.调用printf()函数时,必须要有输出项
B.使用putchar()函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出
D.调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码
正确答案:
选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;
选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;
选项D,getchar函数是从标准输入设备读取一个字符。
2).以下结构体类型说明和变量定义中正确的是()
A.typedefstruct{intn;
charc;
}REC;
RECt1,t2;
B.structREC;
{intn;
char