C语言综合练习题Word文档下载推荐.docx

上传人:b****5 文档编号:19143689 上传时间:2023-01-04 格式:DOCX 页数:19 大小:26.05KB
下载 相关 举报
C语言综合练习题Word文档下载推荐.docx_第1页
第1页 / 共19页
C语言综合练习题Word文档下载推荐.docx_第2页
第2页 / 共19页
C语言综合练习题Word文档下载推荐.docx_第3页
第3页 / 共19页
C语言综合练习题Word文档下载推荐.docx_第4页
第4页 / 共19页
C语言综合练习题Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言综合练习题Word文档下载推荐.docx

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

C语言综合练习题Word文档下载推荐.docx

1)|a)==a;

则a可以是:

A)2B)6C)10D)2,6,10均可

8、对于以下宏定义:

#defineSQ(x)x*x

#defineDD(x,y)SQ(x)-SQ(y)

宏调用DD(2*3,2+3)执行后值为:

A)43B)11C)25D)以上均不是

9、对于以下结构定义:

struct{intlen;

char*str;

}*p;

*p->

str++中的++加在

A)指针str上B)指针p上C)str所指的容上D)以上均不是

10、将s所指节点加到p所指节点之后(如下图),其语句应为:

next.

........

pnext

s

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

13、若有以下说明和语句,已知int和double类型分别占2和8个字节,则sizeof(st)的值为:

structst{

chara[10];

union{

inti;

doubley;

}

};

A)18B)20C)12D)以上均不是

14、对于以下程序段,运行后i值为:

enum{1,2,3,4,5,6,7}WEEKS;

enumWEEKSa=1;

inti=0;

switch(a){

case1:

i=1;

case2:

i=2;

default:

i=3;

}

A)1B)0C)3D)上述程序有语法错误

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

intf(intn)

{returnf(n-1)+n;

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

16、某一程序TEST.C,编译后运行:

TEST123456ABC则相应的argc及argv[3]分别为:

A)3“456”B)3“ABC”C)4“456”D)4“ABC”

17、如下程序段:

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

int*k;

k=c;

printf("

%d"

*++k);

其输出应为:

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

18、如果变量xx有如下类型:

struct{

chara1;

inta2;

}xx;

如果sizeof(xx)的值为3,则:

union{

inta3;

}yy;

做sizeof(yy)函数的返回值应为:

A)2B)4C)5D)定义有错

19、对于enum{RAIN,CLOUD,CLEAR}weather;

做如下操作:

⑴weather=1;

⑵weather=CLOUD;

下列哪个说法是对的。

A)⑴是错的B)⑵是错的C)⑴与⑵是一样的D)以上都错

20、设inta1=7,a2=1,xx;

进行如下操作xx=(a1<

1)&

~(a2<

2)后xx的值为:

A)0B)1C)10D)以上都错

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

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

24、如果charcc[]="

12345"

,做sizeof(cc)后的返回值应为

A)2B)5C)6D)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)以上都错

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

28、有一函数:

intf(char*s){

intk=0;

while(*s)k=k*10+*s++-’0’;

return(k);

调用f(“1234”)的返回结果是:

A)“1234”B)1234C)“4321”D)4321

29、staticinta[]={1,2,3},*p,*q;

p=a+1;

q=p++;

执行该程序段后,p和q所指向的单元的容分别为:

A)(*p)=1,(*q)=2B)(*p)=2,(*q)=3

C)(*p)=3,(*q)=2D)以上都错

30、staticstruct{

intx,y[3];

}a[3]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p;

p=a;

则*((int*)(p+1)+2)=?

A)3B)7C)10D)以上都错

二、填空题

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

for(i=1;

i<

=9;

i++)printf(“%3d”,_______);

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

_________

j=10*(i=5);

i+=j*=i+2;

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

_______

staticinta[3][4]={{1,2,3},{4,5,6}},i;

i=a[0][5];

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

________

inti;

intf(intx)

{staticintk=0;

x+=k++;

returnx;

i=f

(2);

i=f(3);

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

{return((x>

0)?

x*f(x-1):

3);

i=f(f

(1));

6、执行完下列语句段后,s和f值分别为:

_________

chars[20];

doublef;

sscanf(“%s%lf12.4%s%f12.5”,“%s%lf”,s,&

f);

7、对于charc;

若已知其值为小写字母,将其转换为相应大写字母的表达式为_________

8、对于如下类型定义A:

typedefint(*A[10])();

也可以用以下方式分开定义:

typedef______________;

/*先定义PT*/

typedefPTA[10];

9、将p说明为字符数组指针,数组大小为10,可写为:

_________________

10、如下函数

voidf(char*s,char*t)

{inti;

i=0;

while(s[i]=t[i])i++;

等价于:

{while(_______=*t++);

11、inti=0,s=0;

while(i<

n)s+=i++;

等价于

inti,s;

for(____________________);

12、head为指向以下结构的链表指针,统计链表中所有inf域值之和(s)的程序段为:

structnlist{

intinf;

structnlist*next;

}*head,*p;

longs;

for(p=head,s=0;

_________;

p=p->

next)

s+=____________;

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

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

回0;

intf(___________)

{inti=0,j=0;

while(s[j])j++;

for(j--;

j&

_______;

i++,j--);

return_________;

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

binsearch(intx,intv[],intn)

{intlow,high,mid;

low=0;

high=n-1;

while(low<

=high){

mid=__________;

if(x<

v[mid])high=mid-1;

elseif(x>

v[mid])low=mid+1;

elsereturn_________;

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______;

main()

{inti,j;

for(i=1;

=500;

for(j=1;

j<

2*i;

j+=2)

if(_____________){

printf(“%d=%d+%d\n”,2*i,j,2*i-j);

/*若2*i为两个素数之和*/

break;

}

16、对于整型变量i,j执行scanf("

%d%*d%d"

&

j);

当输入23456后

i=______j=________

17、对于int*p,*q,i=5,j=6;

执行:

p=&

i;

q=p;

j;

后(*p)=______,(*q)=_______

18、f(intm)

{

for(i=0;

m;

i++)

for(j=m-1;

j>

=0;

j--)

printf(“%1d%c"

i+j,j?

'

*'

:

#'

);

如果调用f(3)将输出____________

19、voidf(int*a,intb)

staticintk=0;

*a+=++k;

b+=2;

若执行i=2;

j=4;

f(&

i,j);

j,i)后i=_______,j=_________

20、用for循环打印012012012;

for(i=1;

i++)printf("

%2d"

__________);

21、定义一个返回整型的函数指针p,应写为________

22、定义字符指针数组arr,数组大小为20,应写为_________

23、程序A

voidf(charcc[])

charch;

inti=0,j=0;

while(cc[i]!

=NULL)i++;

i--;

for(;

j<

i--,j++){

ch=cc[j];

cc[j]=cc[i];

cc[i]=ch;

}

等价于程序B

voidf(char*cc)

char*p1,*p2,ch;

p1=p2=cc;

while(______)

p2++;

p2--;

while(p1<

p2){

ch=*p2;

____=*p1;

____=ch;

____;

p2--;

24、程序A:

intf(intn)

{

if(n<

=1)

returnn;

else

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

等价于程序B:

intf(intn)

t0=0;

t1=1;

t=n;

while(______){

t=______;

t0=t1;

t1=t;

n--;

return______;

25、下列函数strcmp(s1,s2)是字符串比较,根据s1,s2大小分别返回负数(s1<

s2),0(s1=s2),正数

(s1>

s2).请将缺少的部分补上。

strcmp(___________)

for(;

*s1!

=_______;

++s1,++s2)

if(*s1!

=*s2)break;

return(_______);

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)。

voidf(________)

intt,i;

i=n;

A[n+1]=______;

while((i>

=0)&

(______)){

t=A[i];

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

A[i+1]=t;

i--;

n++;

27、本程序从一个文件中from.txt读出容,除去其中的数字后写入另一文件to.txt。

请将程序

中所缺的部分补上。

#include<

intmain()

FILE*fr,*to;

intcc;

if(______){

printf("

Cannotopenfile-->

form.txt"

);

return1;

to.txt"

while((cc=getc(fr))!

=EOF)

if(cc<

0'

||cc>

9'

)_______;

______;

}

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

1、#include<

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

{ints,i;

for(s=0,i=0;

3;

s+=*(*a+i);

printf(“%d”,s);

s+=**(a+i);

问题:

上述程序运行后,将输出_______________

2、#include<

intx,y,z,w;

voidp(intx,int*y)

{intz;

++x;

++*y;

z=x+*y;

w+=x;

printf(“%3d%3d%3d%3d\n”,x,*y,z,w);

{x=y=z=w=2;

p(y,&

x);

printf(“%3d%3d%3d%3d\n”,x,y,z,w);

上述程序运行后,第一行将输出_______________

第二行将输出_______________

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

&

a[i][j]);

p1(a[0]);

p1(a[1]);

printf("

a[i][j]);

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

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

第一行将输出_______________第二行将输出______________

4、#include<

voidp(intr[],ints,intt)

inti,j,x;

i=s;

j=t;

x=r[s];

while(i<

j){

while((i<

j)&

(r[j]>

=x))/*NOTE1*/

j--;

r[i]=r[j];

(r[i]<

=x))/*NOTE2*/

i++;

r[j]=r[i];

r[i]=x;

main()

inti,n,a[100];

scanf("

n);

=n;

scanf("

a[i]);

p(a,1,n);

=n;

%3d"

a[i]);

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

当前位置:首页 > 党团工作 > 党团建设

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

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