C练习题4.docx

上传人:b****7 文档编号:10271805 上传时间:2023-02-09 格式:DOCX 页数:15 大小:19.32KB
下载 相关 举报
C练习题4.docx_第1页
第1页 / 共15页
C练习题4.docx_第2页
第2页 / 共15页
C练习题4.docx_第3页
第3页 / 共15页
C练习题4.docx_第4页
第4页 / 共15页
C练习题4.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C练习题4.docx

《C练习题4.docx》由会员分享,可在线阅读,更多相关《C练习题4.docx(15页珍藏版)》请在冰豆网上搜索。

C练习题4.docx

C练习题4

读程写结果:

1.设有inta[]={1,2,3},*p=&a[0];则执行*p++;*p+=1;printf(“%d,%d,%d”,a[0],a[1],a[2]);后输出为()。

2.设inta[][4]={1,2,3,4,5,6,7,8};int(*p)[4]=a;则printf(“%d”,*(*(p+1)+2));的输出为()

 

3.设有structsk{inta;charb;}data={97,’A’},*p=&data;,则执行printf(“%d,%d,%c,%c”,data.a,p->b,p->a,data.b);的输出为()

4.设有enumday{sun,mon,tue=5,wed,thu=9,fri,sat}days;则执行printf(“%d,%d,%d,%d”,sun,mon,thu,sat);的输出为()

 

5.设有structsk{inta;floatb;}d[4]={{1,4},{2,5},{6,7},{8,9}};

则printf(“%3.1f”,d[1].a*d[3].b/d[2].b);的输出是()

6.main()

{

inta=4,b=3,c=1,d=2,x=0;

if(a>b)

if(c>d)x=1;

elsex=2;

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

}

写出其输出结果()

 

7.intfunc(intx,inty)

{x=x+1;

y=y+2;

returnx;

}

main()

{intx,y,z;

x=1;y=2;

z=func(x,y);

printf(“%d,%d,%d”,x,y,z);

}

写出其输出结果()

8.struct{char*name;

intage;

}x[]={“Liming”,39,“Liuqun”,21,“chengguang”,40};

main()

{intj;

for(j=0;j<3;j++)

printf(“%s:

%d\n”,x[j].name,x[j].age);

}

写出其输出结果()

 

9.structsk{inta;floatb;}data={10,5.4};

main()

{structsk*p;

p=&data;

printf(“%d,%3.1f”,p->a,p->b);

}

其输出结果()

 

10.voidfunc(intx[],intn)

{intj,temp;

for(j=0;j<=n/2;j++)

{temp=x[j];x[j]=x[n-1-j];x[n-1-j]=temp;}

}

main()

{inta[5]={1,2,3,7,8},len=5,k;

func(a,len);

for(k=0;k

printf(“%2d”,a[k]);

}

写出其输出结果()

 

11.main()

{intlow,hig,mid,key;

staticinta[10]={80,67,45,33,21,19,17,15,8,1};

scanf(“%d”,&key);

for(low=0,hig=9;low<=hig;)

{mid=(low+hig)/2;

if(a[mid]==key)break;

elseif(a[mid]>key)low=mid+1;

elsehig=mid-1;

}

if(low<=hig)printf(“%d\n”,mid);elseprintf(“-1”);

}

当输入数据为67↙时,程序的输出结果为()

12.main()

{int*p,*q,n;

scanf(“%d”,&n);

p=(int*)malloc(n*sizeof(int));

for(q=p;p<=q+n-1;p++)

scanf(“%d”,p);

for(p=q;p<=q+n-1;p++)

if(*p%2!

=0)printf(“%3d”,*p);

}

当输入数据序列为842651387↙时

程序的输出结果为()

 

13.#definenull0

typedefstructnode

{intdata;

structnode*next;

}lnode;

lnode*create(intn)

{linklisthead,p;

head=(lnode*)malloc(sizeof(lnode));

while(n>0)

{p->next=(lnode*)malloc(sizeof(lnode));

p=p->next;scanf(“%d”,&p->data);

n=n-1;

}

p->next=null;

returnhead;

}

main()

{lnode*head,*q;intx;

scanf(“%d”,&x);

head=create(x);

q=head;

while(q!

=null)

{if(q->data%2==0)printf(“%3d”,q->data);

q=q->next;

}

}

当输入数据序列为44285↙时,

(1)画出调用create()后的链表结构图。

(2)写出程序的输出结果()

14.main()

{intI,j,k,temp;

inta[5]={8,9,3,1,2},n=5;

for(I=0;I

{k=I;

for(j=I+1;j

if(a[j]

if(I!

=k){temp=a[k];a[k]=a[I];a[I]=temp;}

}

for(j=0;j

}

写出其输出结果()

 

15.voidsort(intr[],intn)

{intI,j,temp;

for(I=0;I

for(j=n-1;j>=I+1;j--)

if(r[j]

{temp=r[j];r[j]=r[j-1];r[j-1]=temp;}

}

main()

{inta[5]={3,5,2,4,1};

intj,n=5;

sort(a,n);/*函数调用*/

for(j=0;j

}

写出其输出结果()

 

16.main()

{externintx,y;

printf(“%d\n”,func(x,y));

}

intx=15,y=-5;

func(inta,intb)

{ints;

s=a+b;

returns;

}

写出其输出结果()

 

17、读程序写功能。

main()

{FILE*f1,*f2;

intk;

if(((f1=fopen(“c:

\\tc\\p1.c”,“r”))==NULL)

{printf(“cannotopenfile!

\n”);exit(0);}

if(((f2=fopen(“a:

\\p1.c”,“w”))==NULL)

{printf(“cannotopenfile!

\n”);exit(0);}

for(k=1;k<1000;k++)

{if(feof(f1))break;

fputc(fgetc(f1),f2);

}

fclose(f1);

fclose(f2);

}   

练习五答案:

                                                

1.1,3,32.7 3.97,65,a,A 4.0,1,9,105.2.8   6.2 7.1,2,2      8.Liming:

39Liuqun:

21chengguang:

40

9.10,5.410.8732111.112.513713.428   14.1238915.12345

16.1017.将c:

\tc\p1.c文件拷贝到a:

下                                                                                      返回

C语言程序设计练习六

学号姓名成绩________

 

一、单项选择题(每小题2分)

1.已知a=2,b=3,执行下面条件语句后,b的值是()。

if(a<0)if(b<0)b++;elseb--;

A.3B.2C.4D.0

 

2.下面()是C语言的无效实数。

A.+3.14B.-47.0C.1,234.00D.2E-3

 

3.a和b是实数变量,c和d是整数变量,下面()赋值语句是错误的。

A.a=d%c/b;B.c+1=b+d;C.a=c/d;D.c=’a’;

 

4.以下运算符中优先级最高的是()。

A.&&B.==C.%D.++

 

5.for(j=-1;j<2;j++){循环体},则循环执行()次。

A.2B.3C.4D.5

 

6.设有inti;则执行表达式i=1,++i;后i的值为()

A.1B.2C.3D.4

 

7.设有inti=0,a,b=5;则表达式(a=10&&i&&b)的值为()

A.0B.1C.2D.10

8.intb;b=(-1)||0;则b的值为()

A.3B.2C.1D.0

9.设有inta[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是()

A.10,11,12B.11,11,12C.10,12,12D.11,12,12

10.设有ints[2]={0,1},*p=s;则下列错误的C语句是()

A.s+=1;B.p+=1;C.*p++;D.(*p)++;

11.下列定义中,不是指针数组的定义是()

A.int*p[4]B.char*q[4]C.int(*r)[4]D.float*s[5]

 

12.下列定义中,不是数组指针的定义是()

A.int(*p)[4]B.char(*q)[4]C.int(*r)[4]D.float(*s)()

 

13.设inta[][4]={1,2,3,4,5,6,7,8};int(*p)[4]=a;则printf(“%d”,*(*(p+1)+2));的输出为()

A.5B.6C.7D.8

14.设有如下定义,则对data中的a成员的正确引用是()

structsk{inta;floatb;}data;

A.data.aB.data->aC.aD.sk.a

 

15.设有structsk{inta;floatb;}data,*p=&data;,则data中的a成员的错误引用是()

A.(*p).aB.p->aC.data.aD.p.a

 

16.表达式~3&(2&(3^4))的值为()。

A.0B.1C.2D.3

 

17.设有enumday{sun,mon,tue,wed,thu,fri,sat}days;则mon和thu的值分别为()

A.1和2B.2和4C.0和3D.1和4

 

18.设有structsk{inta;floatb;}d[3]={{1,4},{2,5},{6,7}};

则printf(“%3.1f”,d[2].a*d[2].b/d[1].b);的输出是()

A.2.5B.2.0C.8.0D.8.4

 

二、读程写结果

1.main()(3分)

{inta=6;

a+=a/=a*=a+a;

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

}

程序的运行结果为:

2.main()(5分)

{

inta=4,b=3,c=1,d=2,x=0;

if(a>b)

{if(c>d)x=1;}

elsex=2;

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

}

写出其输出结果:

 3.inttest(intx,inty)(6分)

{x=x+3;

y=y+2;

returnx;

}

main()

{intx,y,z;

x=1;y=2;

z=test(x,y);

printf(“%d,%d,%d”,x,y,z);

}

写出其输出结果:

4.struct{(6分)

char*name;

intage;

}x[]={“Lining”,19,“Langping”,21,“Dengyaping”,20};

main()

{intj;

for(j=0;j<3;j++)

printf(“%s:

%d\n”,x[j].name,x[j].age);

}

写出其输出结果:

 

5.main()(8分)

{intlow,hig,mid,key;

staticinta[10]={19,17,15,13,11,9,7,5,3,1};

scanf(“%d”,&key);

for(low=0,hig=9;low<=hig;)

{mid=(low+hig)/2;

if(a[mid]==key)break;

elseif(a[mid]>key)low=mid+1;

elsehig=mid-1;

}

if(low<=hig)printf(“%d\n”,mid);elseprintf(“-1”);

}

当输入数据为3↙时,程序的输出结果为:

 

6.main()(6分)

{int*p,*q,n;

scanf(“%d”,&n);

p=(int*)malloc(n*sizeof(int));

for(q=p+n-1;q>=p;q--)

scanf(“%d”,q);

for(q=p+n-1;p<=q;p++)

printf(“%3d”,*p);

}

当输入数据序列为842651387↙时

程序的输出结果为:

  

7.#definenull0(8分)

typedefstructnode

{intdata;

structnode*next;

}lnode;

lnode*create(intn)

{linklisthead,p;

head=(lnode*)malloc(sizeof(lnode));

while(n>0)

{p->next=(lnode*)malloc(sizeof(lnode));

p=p->next;scanf(“%d”,&p->data);

n=n-1;

}

p->next=null;

returnhead;

}

main()

{lnode*head,*q;intx;

scanf(“%d”,&x);

head=create(x);

q=head;

while(q!

=null)

{if(q->data%2==0)printf(“%3d”,q->data);

q=q->next;

}

}

当输入数据序列为79285634↙时,

(1)画出调用create()后的链表结构图。

(2)写出程序的输出结果:

8.main()(8分)

{intI,j,k,temp;

inta[6]={7,5,9,3,6,2},n=6;

for(I=0;I

{k=I;

for(j=I+1;j

if(a[j]

if(I!

=k){temp=a[k];a[k]=a[I];a[I]=temp;}

}

for(j=0;j

}

写出其输出结果:

  

三、读程填空,下列的程序是将数组内容倒置。

voidfunc(inta[],intn)(6分)

{intj,temp;/*n为数组元素个数*/

for(j=0;j<=

(1);j++)

{temp=a[j];

(2);a[n-1-j]=temp;}

}

main()

{intx[5]={2,5,1,7,8},len=5,k;

func((3));/*调用函数*/

for(k=0;k

printf(“%2d”,x[k]);

}

四、编写函数,求20个元素组成的整数数组A中的最大值、最小值及它们的下标。

(8分)   

练习六答案:

一、A.C.B.D.B.B.A.C.C.A.C.D.C.A.D.A.D.D.

二、1.22.03.1,2,44.略5.86.783156247.

(1)略

(2)2864        8.235679

三、

(1)n/2

(2)a[j]=a[n-1-j](3)x,len    四、答案略 

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

当前位置:首页 > 高等教育 > 管理学

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

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