全国计算机二级C语言冲刺题Word文档格式.docx
- 文档编号:18506664
- 上传时间:2022-12-18
- 格式:DOCX
- 页数:17
- 大小:192.43KB
全国计算机二级C语言冲刺题Word文档格式.docx
《全国计算机二级C语言冲刺题Word文档格式.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言冲刺题Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
=50;
int=3+;
do=1L:
3_asd=3e-3;
13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
&
Y
<
=Y
IIy+z&
y-z
D.!
((x14.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行
下列语句后输出的结果为()。
ch='
b'
;
k=10:
printf("
%X,%o,"
,ch,ch,k);
k=%%d\n"
,k);
A.因变量类型与格式描述符的类型不匹配,输出无定值
B.输出项与格式描述符个数不符,输出为0值或不定值,142,k一%d
,142,k一%l0
15.有下列程序:
、
fun(intX,inty){return(x+y);
)
main()
{inta=1,b=2,c=3,sum;
sum=fun((a++,b++,a+b),c++);
%d\n"
,sum);
}
执行后的输出结果是()。
16.假定x和Y为double型,则表达式x=2,y—x+3/2的值是()。
17.
,a=0,b=0;
b++;
有如下程序:
main(){intx=1switch(x){case0:
casel:
case2:
a++;
a=%d,b=%d\n"
,
该程序的输出结果是()。
=2,=1,
=1,
=2,
a,b);
b=1b=1b=0b=2
18.下列程序的输出结果是main()
{inti=1,j=2,k=3;
if(i++==1&
(++j==3==printf("
%d%d%d\n"
,i,
23
34
33
19.下列程序的输出结果是#include
IIk++==3))
J,k);
{inta=0,i;
for(i=1;
i<
5;
i++){switch(i)
{case0case3:
casel:
a+=1;
a+=2;
:
a+=3;
default
%d"
,i);
20.有以下程序:
main(){intX,i;
i++)
{x=i;
if(X%2=O)if(x%3=O)if(X%7=0).printf("
%d,i)"
))输出结果是()。
21.以下程序的输出结果是()。
main()
s=0;
{inta[3][3]={{1,2},{3,4),{5,6}},i,j
for(i=1;
3;
i++)for(j=0;
j<
=i;
j++)s+=a[i][j];
printf("
,s);
22.有下列程序:
main(){intk=5;
,k=1);
while(--k)printf("
/n"
);
)执行后的输出结果是()。
D.死循环
23.若有定义:
“inta[2][3];
”,
A.*(*(a+i)+j)
B.(a+i)[j]
C.*(a+i+j)
D.*(a+i)+j
24.下列能正确进行字符串赋值的是s[5]={"
ABCDE"
};
s[5]={'
A'
,'
B'
C'
D'
*S;
S="
*s;
%《"
25.现有以下结构体说明和变量定义,如图所示,指针个结点。
则对a数组的第
E'
};
行第J列元素的正确引用为()。
P、q、r分别指定一个链表中连续的3
structnode
{hardata;
structnode*next;
)*P,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。
>
next=r->
next;
p--:
>
next=r;
rm:
next=q;
q->
r->
p->
26.有下列程序:
{inti,j,x=0;
for(i=0,i<
2;
{x++;
for(j=0;
=3;
j++)
{if(j%2)continue;
x++:
)x++:
}printf("
x=%d\n"
x);
}程序执行后的输出结果是()。
=4
=8
=6
=12
27.有下列程序:
intfunl(doublea){returna*=a;
}、
intfun2(doublex,doubley){doublea=0,b=0;
a=funl(x);
b=funl(y);
return(int)(a+b);
{doublew;
w=fun2,,}
程序执行后变量w中的值是()。
、
28.有下列程序:
{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;
9;
i+=2)s+=*(t+i);
29.有下列程序:
intfun(intn){if(n==1))returnl;
elsereturn(n+fun(n-1)):
}main(){intx;
seanf("
,&
x=fun(x);
}执行程序时,给变量
,x);
x输入l0,程序的输出结果是()。
30.有下列程序:
intfun(intx[]{staticintsum=0
intn)
,i;
i
}main(){inta[3]={1s=fun(a,5)+fun(b,4);
returnsum;
,2,3,4,5),b[3]={6,7,8,9),s=0;
,s);
程序执行后的输出结果是()。
31.有下列程序:
main()fchar*P[]={"
3697"
,"
2584"
inti,j;
longnum=0;
for(i=0;
i++){j=0;
while(p[i][j]!
={if((p[i][j]-t\0j+=2;
))printf("
)
'
\0'
)%2)num=10*num+p[j][j]-'
0'
;
,num);
32.以下程序的输出结果是()。
%d%d\n"
,strlen(st),sizeof(st));
9
20
33.若有下的定义:
"
intt[3][2];
"
A.&
t[3][2]
[3]
[l]
[2][2]
34.函数fseek(pf,OL,SEEK_END中的SEEK_EN代表的起始点是()。
A.文件开始
B.文件末尾
C.文件当前位置D.以上都不对
35.下述程序的输出结果是()。
#include
,能正确表示t数组元素地址的表达式是()。
{inti;
=10;
{if(i*i>
=20)&
(i*i<
=lOO))
break;
i*i);
36.若有定义“intb[8],*p=b;
”,则p+6表示()。
A.数组元素b[6]
B.数组元素b[6]
C.数组元素b[7]
D.数组元素b[0]
的值的地址的地址的值加上6
37.设变量已正确定义,则以下能正确计算f=n!
的程序是()。
=0;
=n;
i++)f*=i;
=1;
i=1;
for(i=n;
i>
1;
=2;
i--)f*=i;
38.下述程序执行的输出结果是()。
#includemain()
{chara[2][4];
strcpy(a。
are"
strcpy(a[1]a[o][3]='
,"
you"
%s\n"
,a);
you
D.&
39.
x=x&
01252的值是()。
预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,()。
设x=011050,则
40.在“文件包含,,寻找被包含文件的方式是
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
二、基本操作题(共18分)
请补充函数proc(),该函数的功能是计算下面公式SN的值:
SN=1+1/3十4/5+...+2N-1/SN-1
例如,当N=20时,SN=
注意:
部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填入所编写的若干表达式或语句。
试题程序:
#include
doubleproc(intn)
{
doubles=,sl=;
intk;
for(【1】;
k<
k++)
sl=S;
【2】
return【3】;
voidmain()
intk=0:
doublesum;
system("
CLS"
\nPleaseinputN="
scanf("
k);
sum=proc(k);
\nS=%If"
三、程序改错题(共24分)
下列给定程序中,函数Proc()的功能是根据整型形参n计算如下公式的值:
丫=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)
例如,n中的值为10,则应输出。
请修改程序中的错误,使它能得到正确结果。
注意:
不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
doubleProc(intn)
{doubley=;
f|****found****
intJ=1;
.
inti;
for(i=2;
{j=-l*j;
//****found****y+=1/(i*i);
return(y);
intn=10:
system("
):
,proc(n));
Printf("
\nTheresultis%lf\n"
四、程序设计题(共18分)
max传回该串
编写一个函数,从传人的M个字符中找出最长的一个字符串,并通过形参指针
地址(用****作为结束输入的标志)。
请勿改动main()函数和其他函数中的任何内容,仅在函数Proc()的花括号中填人所编写的若干语句。
试题程序:
max;
#include#includechar*proc(char(*a)[81],intnum){)voidmain(){charss[l0][81]intn,i=0;
输入若干个字符串:
gets(ss[i]);
****"
)==O)
puts(ss[i]);
while(!
strcmp(ss[i]{
i++:
gets(ssEi]);
puts(ss[i]);
n=i:
max=proe(SS,n);
,max);
\nmax=%s\n"
}参考答案及专家详解
一、选择题。
【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。
算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。
。
【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构可以根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。
用不同的存储结构,其处理的效率是不同的。
【解析】所谓的交换排序方法是指借助数据元素之间的互相交进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。
GOTO语句,但不是绝对不允许使用
【解析】结构化程序设计的原则和方法之一是限制使用
GOTO语句。
其他三项为结构化程序设计的原则。
【解析】文件系统所管理的数据文件基本上是分散、相互独立的。
相对于数据库系统,以此为基础的数据处理存在3个缺点:
数据冗余大、数据的不一致性、程序与数据的依赖性强。
【解析】面向对象的设计方法的基本原理是:
使用现实世界的概念抽象地思考问题从而自然地解决问题。
它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。
因此,后序遍历二叉树的过程也是一个递归过程。
【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。
。
【解析】模块的独立性是指每个模块保证完成系统要求的独立功能,并且与其他模块的联系少且接口简单。
衡量软件的模块独立性有内聚性和耦合性两个定性度量标准。
耦合性是模块间互相连接紧密程度的度量。
一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,以利于提高模块的独立性。
【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。
【解析】数据库系统由如下5个部分组成:
数据库(DB)、数据库管理系统(DBMS卜数据库管
理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。
其中DB(DataBase)即数据库,是统一管理的相关数据的集合DBMS即数据库管理系统,是位于用户与操
作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。
由以上可知,选C为
正确答案。
【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划
线。
B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。
C选项dO是C语言
的一个关键字。
D选项标识符只能以字母或下划线开始。
【解析】本题考查逻辑运算符的使用。
当“&
”的两个运算对象都是逻辑l时,表达式返回
值才是1;
“11”的两个运算对象至少有一个是逻辑1时,表达式返回值也是I,x。
【解析】
第I个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予
输出;
第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。
本题考查printf函数
的格式。
①“%x和“%O分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或
o);
②printf函数中格式说明符之前插入的任何字符都原样输出;
③格式说明与输出项的个数也要
相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。
【解析】函数fun(intx,inty)的功能是返回x+Y的值。
在主函数中,变量a,b,c的初始值分别为1,2,3。
因此逗号表达式“a++,b++,a+b”的值等于5,表达式C++的值为3,调用于函数的表达式为“fun(5,3);
”,其返回值等于8。
【解析】在x=2,y=x+3/2中,3/2=1,2+1=3,因此表达式的值为3,因为X,y为doubIe型变量,故选择D选项。
【解析】当X为1时,执行caseI,a自加等于I,因为caseI后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。
【解析】本题考查自增运算符“++”、逻辑与运算符“&
和逻辑或运算符“11”。
自增运算
符“++”出现在变量之前,表示先使用变量的值加1,再使用变量的值进行运算;
出现在变量之
后,表示先使用变量的值进行运算,再使用变量的值加I。
当逻辑与运算符“&
”两边的运算对象都为真时,逻辑表达式的值才为真;
当逻辑或运算符“11”只要一个值为1,值就为I。
根据运
算符的优先级,题中应先计算内层括号中的值。
++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为I;
1与任何数都为进行或(11)运算,结果都为1,因此k一3的表达式i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。
if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。
【解析】本题考查switch语句。
当i=1时,执行caseI,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,依次往下执行,“a=a+2=7,语句,所以依次往下运行,环。
a=a+3=5”;
当i=2时,执行case2,因为没有遇到break语句,所以a=a+3=10”;
当i=3时,执行case3,a=a+1=11,因为没有遇到breaka=a+2=13,a=a+3=16;
当i=4时,执行default,a=a+3=l9,结束循
【解析】只有当3个
确。
【解析】选项A、B的空间不够;
字符串存储要有结束符'
\0'
且要占用一个空间,printf用来输出字符,不能输入字符串。
【解析】由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使向r的后一个结点,P指向r结点,r指向q结点即可。
而在选项D中,r->
next=q,这时的节点为q;
next=r,这时P指向的节点为r;
next:
r->
next,因为r节点已经指向以执行这个语句后q又指向q,所以选项D不正确。
a的平方值的整数部分。
子函数fun2(double
Y的平方值的整数部分的和。
又因为题中变
型,按照各类数值型数据间的混合运算,整
【解析】在第1次外层for循环中,首先X++得到x=1。
进入到内层for循环,只有循环j的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加两次,当退出内层for循环时,x=3,然后执行X++,得到x=4。
在进入执行第2次外层for循环中,首先X++得到x=5。
进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加I两次,当退出内层for循环时,X=7,然后执行
X++,得到X=8,所以打印输出变量X的值为8。
【解析】子函数funI(doubIea)的功能是返回
X,doubley)的功能是返回X的平方值的整数部分与量W的定义为double型,函数fun
(2)的定义为int型数据被转换为实型数据。
所以双精度型变量
【解析】在for循环语句中自变量i语言规定数组名做表达式相当于数组的首地址,组的第i+1个元素。
所以程序运行的结果是
【解析】本题在函数intfun(intn)
【解析]SEEK_SET代表文件的开始,SEEK_EN代表文件末尾,SEEK_CU代表文件当前位
置。
【解析】当if执行到第一个满足(i*i>
=100)这个条件的i出现时,通过break语句跳出循环,执行下面的prinlf语句。
【解析】指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位
是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 语言 冲刺
![提示](https://static.bdocx.com/images/bang_tan.gif)