}
写出其输出结果()
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;jif(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;kprintf(“%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 四、答案略