C语言综合练习题精选及详解Word文件下载.docx

上传人:b****7 文档编号:22613147 上传时间:2023-02-04 格式:DOCX 页数:16 大小:29.89KB
下载 相关 举报
C语言综合练习题精选及详解Word文件下载.docx_第1页
第1页 / 共16页
C语言综合练习题精选及详解Word文件下载.docx_第2页
第2页 / 共16页
C语言综合练习题精选及详解Word文件下载.docx_第3页
第3页 / 共16页
C语言综合练习题精选及详解Word文件下载.docx_第4页
第4页 / 共16页
C语言综合练习题精选及详解Word文件下载.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C语言综合练习题精选及详解Word文件下载.docx

《C语言综合练习题精选及详解Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言综合练习题精选及详解Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。

C语言综合练习题精选及详解Word文件下载.docx

if(x<

0)

y=-1;

else{

if(!

x)

y=0;

else

y=1;

}

即:

-1x<

0

y=0x=0

1x>

5、循环for(i=0,j=5;

++i!

=--j;

)printf(“%d%d”,i,j);

将执行

A)6次B)3次C)0次D)无限次

i=0,j=5,(++i1)!

=(--j4)成立:

i=1,j=4

i=1,j=4,(++i2)!

=(--j3)成立:

i=2,j=3

i=2,j=3,(++i3)!

=(--j2)成立:

i=3,j=2

……

6、下列程序段执行后s值为:

inti=5,s=0;

doif(i%2)continue;

elses+=i;

while(--i);

A)15B)9C)6D)以上均不是

写成规范形式:

do

if(i%2)

continue;

else

s+=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

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)

SQ(2*3)-SQ(2+3)

2*3*2*3-2+3*2+3

43

11、语句if(a>

b)k=0;

elsek=1;

(inta,b,k)等价于:

A)k=(a>

b)?

1:

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”,&

15、对于以下递归函数f,调用f(4),其返回值为:

intf(intn)

{returnf(n-1)+n;

A)10B)11C)0D)以上均不是

17、如下程序段:

intc[]={1,7,12};

int*k;

k=c;

printf("

nextkis%d"

*++k);

其输出应为:

A)2B)7C)1D)以上均不对

k1c[0]

7c[1]

12c[2]

21、执行i=3;

if(i>

3)if(i<

4)i=1elsei=2;

后i的值应为:

A)1B)2C)3D)语句错误

22、执行下列程序:

#defineMA(x,y)((x)*(y))

i=5;

i=MA(i,i+1)-7;

后变量i的值应为:

A)30B)19C)23D)1

MA(i,i+1)-7

→((i)*(i+1))–7

→(5*6)–7

→23

23、执行下列程序:

inti,j;

i=3/2+7/2==5;

j=45%11+(((7>

8)?

14:

21)==14);

后变量i,j的值应为:

A)i=0j=1B)i=1j=1

C)i=0j=2D)i=1j=2

i=((3/2+7/2)==5)=((1+3)==5)=(4==5)=0;

j=1+(21==14)=1+0=1

25、如果inti=16,j=23;

执行printf("

%x--%o"

i,j)后输出为:

A)10--23B)10--27C)16--23D)16--27

26、执行下列程序:

#defineMA(x,y)(x)*(y)

inti=2;

i=3/MA(i,i+1)+5;

printf(“%d\n”,i);

A)5B)8C)0D)以上都错

3/MA(i,i+1)+5

→3/(i)*(i+1)+5

→3/2*3+5

→8

27、有一函数:

intf(inta){

autointb=0;

staticintc=3;

b=b+1;

c=c+1;

return(a+b+c);

如果有inti,j;

则执行两次调用:

i=f

(2);

j=f

(2)后,i,j值为:

A)i=7,j=7B)i=7,j=8

C)i=8,j=7D)i=8,j=8

注意静态局部变量staticintc;

的含义

第一次调用f

(2):

开始时:

b=0,c=3

执行:

b=0+1=1,c=3+1=4;

返回:

a+b+c=2+1+4=7;

调用结束后:

静态局部变量c=4保持不变;

第二次调用f

(2):

b=0,c=4

b=0+1=1,c=4+1=5;

a+b+c=2+1+5=8;

静态局部变量c=5保持不变;

二、填空题

1、用for循环打印147101316192225,其语句应为:

for(i=1;

i<

=9;

i++)printf(“%3d”,_3*i-2__);

2、执行完下列语句段后,i,j值分别为:

___355,350__

j=10*(i=5);

i+=j*=i+2;

第一条语句执行后:

i=5,j=50

执行第二条语句:

i+=j*=i+2

→i+=(j*=(i+2))

→i+=(j*=7)

→i+=(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]1X

a[0][1]2X+2

a[0][2]3X+4

a[0][3]?

X+6

a[1][0]4X+8

a[1][1]5X+10

a[1][2]6X+12

a[1][3]?

X+14

a[2][0]?

X+16

a[2][1]?

X+18

a[2][2]?

X+20

a[2][3]?

X+22

a[0][5]的地址:

X+(0*4+5)*2=X+10,即对应于a[1][1]。

4、执行完下列语句段后,i值为:

__4___

inti;

intf(intx)

{staticintk=0;

x+=k++;

returnx;

i=f

(2);

i=f(3);

5、执行完下列语句段后,i值为:

__18__

{return((x>

0)?

x*f(x-1):

3);

i=f(f

(1));

调用f

(1):

(1>

0)成立,执行1*f(0)=f(0),

调用f(0)=3

所以,f

(1)=3;

调用f(3):

f(3)=3*f

(2)

f

(2)=2*f

(1)=2*3=6

所以f(3)=3*6=18

7、对于charc;

若已知其值为小写字母,将其转换为相应大写字母的表达式为___c–‘a’+‘A’______

11、inti=0,s=0;

while(i<

n)s+=i++;

等价于

inti,s;

for(_i=0,s=0;

i<

n;

s+=i++_);

13、下列程序判断字符串s是否对称,对称则返回1,否则返回0;

如f(“abcba”)返回1,f(“abab”)返回0;

intf(__chars[]_)abcba\0

{inti=0,j=0;

while(s[j])j++;

for(j--;

j&

__s[i]==s[j]_;

i++,j--);

ij

return__i>

=j__;

14、下面是用二分法从数组v[n]中查找数x的函数,返回值为x所在下标(若找到)或-1(没找到):

binsearch(intx,intv[],intn)

{intlow,high,mid;

low=0;

high=n-1;

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是否为素数*/

{inti;

for(i=2;

=n-1;

i++)

if(!

(n%i))break;

return_i==n_;

main()

{inti,j;

for(i=1;

=500;

for(j=1;

j<

2*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("

%d%*d%d"

&

j);

当输入23456后

i=_2_j=_4__

18、f(intm)

{

for(i=0;

m;

i++)

for(j=m-1;

j>

=0;

j--)

printf(“%1d%c"

i+j,j?

'

*'

:

#'

);

如果调用f(3)将输出__2*1*0#3*2*1#4*3*2#__

20、用for循环打印012012012;

for(i=1;

i++)printf("

%2d"

__(i-1)%3__);

24、程序A:

intf(intn)

{

if(n<

=1)

returnn;

returnf(n-1)+f(n-2);

等价于程序B:

intf(intn)

_intt0,t1,t_;

t0=0;

t1=1;

t=n;

while(_n>

=2_){

t=_t0+t1_;

t0=t1;

t1=t;

n--;

return_t_;

26、下列函数f(A,n,x)将正整数x插入已从小到大排序好的数组A中.数组A当前分量个数为n.例如,当A的前5个分量为(2,3,9,12,15),n=5时,调用f(A,n,10)后,n变为6,A的前6个量为:

(2,3,9,10,12,15)。

A[0]A[1]A[2]A[3]A[4]A[5]

voidf(_intA[],intn,intx_)2391215x

intt,i;

i=n;

A[n+1]=_x_;

i

while((i>

=0)&

(_A[i]>

A[i+1]_)){

t=A[i];

A[i]=A[i+1];

A[i+1]=t;

i--;

n++;

三、程序阅读理解,并回答相应问题

3、#include<

inta[2][5];

voidp1(intv[])

{inti,j,temp;

for(i=1;

5;

for(j=i-1;

=0&

v[j]<

v[j+1];

j--){

temp=v[j];

v[j]=v[j+1];

v[j+1]=temp;

}

voidp2(intv1[],intv2[])

{inti=0,j=0;

while(i<

5&

5)

if(v1[i]>

v2[j])printf("

%d"

v1[i++]);

elseprintf("

v2[j++]);

5)printf("

while(j<

v1[j++]);

printf("

\n"

{inti,j;

for(i=0;

2;

for(j=0;

j++)

scanf("

%d"

&

a[i][j]);

p1(a[0]);

p1(a[1]);

printf("

a[i][j]);

p2(a[0],a[1]);

问题:

当输入59112107311410时,上述程序运行后,

第一行将输出_12109511110743_第二行将输出_12111010975431_

函数p1()的功能:

将参数数组的每个元素按从大到小的顺序排列。

函数p2()的功能:

将两个参数数组中的每个元素(已经降序排列)混合在一起,并按从大到小的顺序输出。

6、#include<

#defineF(k)k+3.14

#defineP(a)printf("

a=%d\n"

(int)(a))

#defineP1(a)P(a);

putchar('

\n'

#defineP2(a,b)P(a);

p1(b);

main()

intx=1;

intx=2;

P(x*F

(2));

for(;

x<

10;

x+=50)

P2(x,9.15*x+32);

请写出该程序中有关宏定义的展开式,并给出该程序的运行结果。

有关展开:

P(x*F

(2));

printf(“a=%d\n”,(int)(x*F

(2)));

printf(“a=%d\n”,(int)(x*2+3.14));

P2(x,9.15*x+32);

→P(x);

P1(9.15*x+32);

P(x);

printf(“a=%d\n”,(int)(x));

P1(9.15*x+32)P(9.15*x+32);

putchar(‘\n’);

P(9.15*x+32);

printf(“a=%d\n”,(int)(9.15*x+32));

printf(“a=%d\n”,(int)(9.15*x+32));

全部展开,并整理,得:

main()

{

intx=2;

printf(“a=%d\n”,(int)(x*2+3.14));

for(;

x<

10;

x+=50)

printf(“a=%d\n”,(int)(x));

printf(“a=%d\n”,(int)(9.15*x+32));

putchar(‘\n’);

运行结果:

a=7

a=1

a=498

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1