考研综合练习题答案docxWord格式文档下载.docx
- 文档编号:16481104
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:25
- 大小:144.36KB
考研综合练习题答案docxWord格式文档下载.docx
《考研综合练习题答案docxWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《考研综合练习题答案docxWord格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。
i=2,j=3,(++i93)!
=(--j92)成立:
i=3,j=2
6、下列程序段执行后s值为:
inti=5,s=0;
doif(i%2)continue;
elses+=i;
while(-i);
A)15B)9C)6D)以上均不是
写成规范形式:
do
讦(i%2)continue;
else
s+=1;
while(—i);
i=5,s=0:
i%2=1:
i=4
i=4,s=0:
i%2=0:
s=0+4=4;
i=3
i=3,s=4:
i=2
i=2,s=4:
s=4+2=6;
i=1
i=1,s=6:
i=0
7、对于inta,要使((l«
2»
l)la)==a;
则a可以是:
A)2B)6C)10D)2,6,10均可
1:
1«
2:
(1«
1)12:
1)I6:
0000000000000001
0000000000000100
0000000000000010
0000000000000010
(2)
0000000000000110(6)
0000000000001010(10)
8、对于以下宏定义:
#defineSQ(x)x*x
#defineDD(x,y)SQ(x)-SQ(y)宏调用DD(2*3,2+3)执行后值为:
A)43B)11C)25D)以上均不是
DD(2*3,2+3)
9SQ(2*3)・SQ(2+3)
92*3*2*3-2+3*2+3
■>
43
9、对于以下结构定义:
struct{intlen;
char*str;
}*p;
*p->
str++中的++加在
A)指针str上B)指针p上C)str所指的内容上D)以上均不是
优先级:
>
“*”=“++”,++是右结合
str++《9*((p->
str)++)
例子:
假如有
贝lj*p->
str++的值为H,执行后,str指向0单元.
10、将s所指节点加到p所指节点之后(如下图),其语句应为:
A)s->
next=p+1;
p->
next=s;
B)p->
s->
next=p->
next;
C)s->
next=p->
next=s->
D)s->
11、语句if(a>
b)k=0;
elsek=l;
(inta,b,k)等价于:
A)k=(a>
b)?
l:
0;
B)k=a>
b;
C)k=a<
=b;
D)以上均不是
12>
对于inti;
charc,s[20];
从输入序列123ab45efg中将123读入i;
'
b,读入c;
“45efg”读入s,则
scanf语句应写为:
A)scanf(“%da%c%s"
i,c,s)B)scanf(“%d%*c%c%s”,&
i,&
c,s);
C)scanf(“%da%c%s"
&
i,&
c,&
s)D)scanf(“%d%c%c%s”,&
13、若有以下说明和语句,已知int和double类型分别占2和8个字节,则sizeof(st)的值为:
structst{
chara[10];
union{
inti;
doubley;
}
};
A)18B)20C)12D)以上均不是
14、对于以下程序段,运行后i值为:
enumWEEKS{1,2,3,4,5,6,7};
enumWEEKSa=l;
inti=0;
switch(a){
case1:
i=l;
case2:
i=2;
default:
i=3;
A)1B)0C)3D)上述程序有语法错误
15、对于以下递归函数f,调用f(4),其返回值为:
intf(intn)
{returnf(n-l)+n;
}
A)10B)11C)0D)以上均不是
16、某一程序TEST.C,编译后运行:
TEST123456ABC则相应的argc及argv⑶分别为:
A)3“456”B)3“ABC”C)4“456”D)4“ABC”
argv[0]
“TEST
argv[l]
“123”
ar£
v|2]
“456”
"
ABC”
argv[3]
17、如下程序段:
intc[]={l,7,12};
int*k;
k=c;
printf(nnextkis%d”,*++k);
其输出应为:
charal;
1
inta2;
2
}xx;
如果sizeof(xx)的值为3,贝!
J:
inta3;
}yy;
则sizeof(yy)函数的返回值应为:
A)2B)4C)5D)定义有错
19、对于enum{RAIN,CLOUD,CLEAR}weather;
做如下操作:
(1)weather=l;
(2)weather=CLOUD;
下列哪个说法是对的。
A)⑴是错的B)⑵是错的C)⑴与⑵是一样的D)以上都错
20、设intal=7,a2=l,xx;
进行如下操作xx=(alvv1)&
〜(a2«
2)后xx的值为:
A)0B)1C)10D)以上都错
7:
0000000000000111
7«
0000000000001110
0000000000000100
~(lvv2):
1111111111111011
0000000000001010
21、执行i=3;
if(i>
3)if(i<
4)i=lelsei=2;
后i的值应为:
A)1B)2C)3D)语句错误
22、执行下列程序:
#defineMA(x,y)((x)*(y))
i=5;
i=MA(i,i+l)-7;
后变量i的值应为:
A)30B)19C)23D)1
MA(i,i+l)-7
今((i)*(i+l))-7
今(5*6)-7
今23
23、执行下列程序:
inti,j;
i=3/2+7/2==5;
j=45%ll+(((7>
8)?
14:
21)==14);
后变量i,j的值应为:
A)i=0j=lB)i=lj=l
C)i=0j=2D)i=lj=2
i=((3/2+7/2)=5)=((1+3)=5)=(4==5)=0;
j=1+(21==14)=1+0=1
24、如果charcc[]=H12345n,做sizeof(cc)后的返回值应为
A)2B)5C)6D)1
sizeof()返回参数对象的字节数:
这里的参数是字符数组cc,有6个元素.
25、如果inti=16,j=23;
执行printf(n%x-%on,i,j)后输出为:
A)10-23B)10-27C)16-23D)16-27
26、执行下列程序:
#defineMA(x,y)(x)*(y)
inti=2;
i=3/MA(i,i+l)+5;
printf(44%d\n,\i);
A)5B)8C)0D)以上都错
3/MA(i,i+l)+5
93/(i)*(i+l)+5
93/2*3+5
今8
27、有一函数:
intf(inta){
autointb=0;
staticintc=3;
b=b+l;
c=c+1;
retum(a+b+c);
如果有inti,j;
则执行两次调用:
i=f
(2);
j=f
(2)后,i,j值为:
A)i=7,j=7B)i=7,j=8
C)i=&
j=7D)i=&
j=8
注意静态局部变量staticintc;
的含义
第一次调用f
(2):
开始时:
b=0,c=3
执行:
b=0+1=l,c=3+1=4;
返回:
a+b+c=2+1+4=7;
调用结束后:
静态局部变量c=4保持不变;
第二次调用f
(2):
b=0,c=4
b=0+1=l,c=4+1=5;
返回:
a+b+c=2+l+5=8;
静态局部变量c=5保持不变;
28、有一函数:
intf(char*s){
intk=0;
while(*s)k=k*10+*s++-'
0‘;
retum(k);
调用f(“1234”)的返回结果是:
A)T234”B)1234C)“4321”D)4321while循环等价于:
while(*s)k=k*10+(*s++)-该函数的作用:
将数字字符串转换成相应的整数.
29、staticinta[]={1,2,3},*p,*q;
p=a+l;
q=P++;
执行该程序段后,p和q所指向的单元的内容分别为:
二、填空题
1、用for循环打印147101316192225,其语句应为:
2_);
.355,350.
for(i=l;
i<
=9;
i++)piintf(“%3d"
_3*i
2、执行完下列语句段后,i,j值分别为:
—
j=10*(i=5);
i+=j*二i+2;
第一条语句执行后:
i=5,j=50执行第二条语句:
i+=j*=i+2
9i+=(j*=(i+2))
9i+=(j*=7)
9i+=(j=50*7)
今i=5+350=355,j=350
3、执行完下列语句段后,i值为:
__5—
staticinta[3][4]={{1,2,3},{4,5,6}},i;
i=a[0][5];
a[0][0]
1
X
a[0][l]
2
x+:
a[0]⑵
3
x+「
a[0]⑶
?
X+f
a[l][0]
4
x+;
a[l][l]
5
x+
a[l][2]
6
a[l][3]
a[2][0]
a[2][l]
a⑵⑵
a⑵⑶
a[0][习的地址:
X+(0*4+5)*2=X+
4、执行完下列语句段后,i值为
intf(intx)
{staticintk=0;
x+=k++;
returnx;
i=f
(2);
i=f(3);
5、执行完下列语句段后,i值为:
_18—
inti;
{return((x>
0)?
x*f(x-l):
3);
i=f(f(l));
调用f(l):
(l>
0)成立,执行l*f(O)=f(O),
调用f(0)=3
所以,f(l)=3;
调用f(3):
f(3)=3*f
(2)
f
(2)=2*f(l)=2*3=6
所以f(3)=3*6=18
6、执行完下列语句段后,s和f值分别为:
_”%s%P,12.4—
chars[20];
doublef;
sscanf(“%s%lf12.4%s%fl2.5"
“%s%lfs,&
f);
函数sscanf()的一般形式:
sscanf(char*buffer,char^format,varl,var2,var3,...)
它的含义:
从缓冲区buffer中按照格式字符串format读入变量varl,var2,var3,...的值。
7、对于charc;
若已知其值为小写字母,将其转换为相应大写字母的表达式为c-,a,+
A
8、将p说明为字符数组指针擞组大小为10,可写为:
_char(*p)[10];
_
9、用typedef定义类型CP,以表示一个指向含有10个字符型元素的指针数组类型。
typedefchar*CP[10];
四个步骤:
(1)char*ptr[10];
(2)char*CP[10];
(3)typedefchar*CP[10];
(4)CP*ptr[10];
10、如下函数
voidf(char*s,char*t)
{inti;
i=0;
while(s[i]=t[i])i++;
{while(_*s++_=*t++);
11、inti=0,s=0;
while(i<
n)s+=i++;
等价于
inti,s;
for(_i=0,s=0;
i<
n;
s+=i++_);
12、head为指向以下结构的链表指针,统计链表中所有inf域值之和(s)的程序段为:
structnlist{
intinf;
structnlist*next;
}*head,*p;
longs;
for(p=head,s=0;
_p!
=NULL_;
p=p->
next)
s+=__p->
inf_;
13、下列程序判断字符串s是否对称,对称则返回1,否则返回0;
如f(“abcba”)返回l,f(“abab”)返回
intf(__chars[]_)
{inti=0,j=0;
while(s[j])j++;
for(j-;
j&
__s[i]==s[j]_;
i++,j_);
return_-i>
=j__;
14、下面是用二分法从数组v[n]中查找数x的函数,返回值为x所在下标(若找到)或・1(没找到):
binsearch(intx,intv[],intn)
{intlow,high,mid;
low=0;
high=n-l;
while(low<
=high){
mid=_(low+high)/2_;
if(x<
v[mid])high=mid-1;
elseif(x>
v[mid])low=mid+1;
elsereturn_mid_;
return-1;
15、下面程序验证哥德巴赫猜想,即寻找2到1000间满足彳禺数二素数1+素数2"
如10=3+7)的所
有偶数。
素数指只能被1和自身整除的正整数,如1,2,3,17等。
#include<
stdio.h>
#defineMAX500
intprime(intn)/*判断n是否为素数*/
for(i=2;
=n-l;
i++)
if(!
(n%i))break;
return_i==n_;
main()
{inti,j;
for(i=l;
=500;
for(j=l;
jv2*i;
j+=2)
if(_prime(j)&
prime(2*i-j)_){
printf(“%d=%d+%d\n,\2*i,j,2*i・j);
/*若2*i为两个素数之和*/break;
16、对于整型变量i,j执行scanf(H%d%*d%dH,&
j);
当输入23456后
i=_2_j=_4_
17、对于int*p,*q,i=5,j=6;
执行:
p=&
i;
q=p;
p二&
j;
后(*p)二_6_,(*q)=_5一
18>
f(intm)
{
inti,j;
for(i=0;
m;
i++)
for(j=m-l;
j>
=0;
j-)
printf(“%ld%c”,i+j,j?
'
*Y#‘);
如果调用f(3)将输出_2*l*0#3*2*l#4*3*2#_
19^voidf(int*a,intb)
staticintk=0;
*a+=++k;
b+=2;
若执行i=2;
j=4;
f(&
i,j);
j,i)后j=_6—
20、用for•循环打印012012012;
for(i=l;
i++)printfC'
%2d"
_(i-l)%3_);
21、定义一个返回整型的函数指针p,应写为_int(*p)();
22、定义字符指针数组arr,数组大小为20,应写为_char*arr[20];
23、程序A
voidf(charcc[])
charch;
inti=0,j=0;
while(cc[i]!
=NULL)i++;
i-;
M;
j<
i;
i-,j++){ch=cc[j];
cc[j]=cc[i];
cc[i]=ch;
等价于程序B
voidf(char*cc)
char*pl,*p2,ch;
pl=p2=cc;
while(_*p2_)p2++;
p2--;
while(pl<
p2){ch=*p2;
_*p2_=*pl;
_*pl_=ch;
_pl++_;
24>
程序A:
intf(intn)
if(n<
=l)
returnn;
returnf(n-l)+f(n-2);
等价于程序
_inttO,tl,t_;
tO=O;
tl=l;
t=n;
while(_n>
=2_){
t=_tO+tl_;
to=tl;
tl=t;
return_t_;
)
25、下列函数strcmp(sl,s2)是字符串比较,根据sl,s2大小分别返回负数(sl<
s2),0(sl=s2),正数(sl>
s2).请将缺少的部分补上。
strcmp(_char*sl,char*s2_)
for(;
sl!
=_"
\0,_;
++sl,卄⑵
if(*sl!
=*s2)break;
return(_*sl・*s2_);
26、下列函数f(A,n,x)将正整数x插入已从小到大排序好的数组A中.数组A当前分量个数为n.例如,当A的前5个分量为(2,3,9,12,⑸,n=5时,调用f(A,n,10)后,n变为6,A的前6个量
为:
(2,3,9,10,12,15)oA[0]A[l]A[2]A⑶A[4]A[5]
1215
voidf(_intA[],intn,intx_)
intt,i;
i=n;
A[n+1]=_x_;
i
while((i>
=0)&
(_A[i]>
A[i+l]_)){
t=A[i];
A[i]=A[i+l];
A[i+l]=t;
i--;
n++;
27、本程序从一个文件中fmm.txt读出内容,除去其中的数字后写入另一文件to.txt。
请将程序中所缺的部分补上。
#include<
intmain()
FILE*fr,*to;
intcc;
if(_(fr=fopen(ufr.txf\“F'
))==NULLJ{
printf("
Cannotopenfile~>
form.txt”);
return1;
if(_(to=fopen(6<
to.txtM,“w”))==NULL_){
to.txt"
);
while((cc=getc(fr))!
=EOF)
if(ccv'
O'
IIcc>
9'
)_putc(cc,to)_;
_fclose(fr),fclose(to)_;
三、程序阅读理解,并回答相应问题
1、#include<
inta[3][4]={{l,2,3,4},{5,6,7,8},{9,10,ll,12}};
{ints,i;
for(s=0,i=0;
3;
s+=*(*a+i);
printf(44%d"
s);
for(s=0,i=0;
s+=**(a+i);
printf(4<
%d"
问题:
上述程序运行后,将输出_615_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 综合 练习题 答案 docx
![提示](https://static.bdocx.com/images/bang_tan.gif)