*p==x
fopen(”c.dat”,”w”)
ch,fp
(四)编程
main()
{floata();
intn;
scanf(“%d”,&n);
printf(“s(%d)=%d\n”,n,s(n));
}
floats(intn)
{floats=0.0;
if(n==1)return(1.0);
elsereturn(s(n-1)+n*n);
}
main()
{inti;
floatave=0,a[10];
for(i=0;i<10;i++)
scanf(“%f”,&a[i]);
for(i=0;i<10;i++)ave+=a[i];
printf(“%10.4f\n”,ave/10);
}
#include
main()
{intm,n,a,r;
scanf(“%d,%d”,&m,&n);
a=m,b=n;
do{r=a%b;
a=b;
b=r;
}while(r!
=0);
printf(“%d,%dis%d\n”,m,n,a);
}
习题三
一、语言基础(共20分,每题2分)
(一) 若a为float类型变量,且a=4.6785,则表达式(int)(a*100+0.5)/100.0
的值为4.68。
(二)设有intx=11,y=10;则以下表达式的值为10。
x-->y?
10:
11>y++?
’a’:
’z’
(三)若所有变量都已正确定义为int型则执行下列程序段后x的值为79。
x=80;a=10b=16;y=9;z=0;
if(a
if(b!
=15)
if(!
y)x=81;
elseif(!
z)x=79;
(四)i,j为int型的变量,则下面程序中的循环体的执行次数为5。
i=1;j=0;
while(i+j<=10)
{if(i>jj=j+2);
elsei=i+2;}
(五)若有数组a[10],类型为int型,元素及值如下所示:
数组元素:
a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]
元素中的值:
9483267015
则*(a+a[9])的值为6。
(六)以下函数调用语句中实参的个数为3.
Sub((x1,x2),(x3,x4,x5),x6)
(七)若有以下函数定义:
int(*hs)()
{
……/*函数体*/
}
则函数hs返回的值是整形。
(八)某C编译程序规定,int型数据存储占2个字节,float型数据存储占4个字节,char型数据存储占1个字节,现有记录描述如下:
structstu
{
union
{
charbj[5];
intbh[2];
}class;
charxm[8];
floatcj;
}xs;
则sizseof(xs)的值为17。
(九)设有以下定义:
#definea6
#defineba+4
则执行语句c=b*10(c为int型数据)后,c的值为46。
(十)在C中,文件指针变量的类型只能是FILE。
二、阅读下列程序,写出运行结果(共20分,每题4分)
[程序1]
#include
main()
{
inti;运行结果:
i=18,J=29.44
floatj;
i=18;
j=29.4361;
printf(“i=%4d,j=%2.2f”,i,j);
}
[程序2]
main()
{intk=10;charc=’b’;
do
swith(c++)运行结果:
12
{
case‘a’:
k++;
case‘b’:
k--;
case‘c’:
k+=3;break;
case‘d’:
k=k%4;
}
while(c!
=’c’);
printf(“%d\n”,k);}
[程序3]
main()
{
chara[]=”computer”;
chart;
inti,j=0;运行结果:
utrpomec
for(i=0;I<8;I++)
for(j=i+1;j<8;j++)
if(a[i]{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf(“%s”,a);
[程序4]
main()
{
char*p,s[]=”abcdefg”;
for(p=s;*p!
=’\0’);运行结果:
abcdefg
{
printf(“%s\n”,p);
p++;
if(*p!
=’\0’)
p++;
elsebreak;
}
}
三、阅读下列程序,在 线处填上合适的内容使程序(或函数)完整(共18分,每空2分)
1. 下面程序的功能是判断输入的一个年份是否是闰年。
(闰年能够被4整除,但不能被100整除;或能被400整除)
#include“stdio.h”
main()
{
intyear,leap;
printf(“inputyear:
”);
scanf(“%d,&year);
if(year%400==0)leap=1;
elseif(year%4==0)&&(year%100!
=0)leap=1;
elseleap=0;
if(leap!
=0)
printf(“%disaleapyear.\n”,year);
else
printf(“%disnotaleapyear.\n”,year);
}
2. 以下程序的功能是求三个数的最小公倍数。
max(intx,inty,intz)
{
if(x>y&&x>z)
return(x);
elseif(y>=x&&y>z)
return(y);
else
return(z);
}
main()
{
inta,b,c,I=1,j,s;
scanf(“%d%d%d”,&a,&b,&c);
s=max(a,b,c);
while
(1)
{
j=s*i;
if((j%a==0)&&(j%b==0)&&(j%c==0))
break;
i++;
}
prinf(“%d”,j);
}
3. 下面程序是判断