天津城建大学C语言程序填空.docx
《天津城建大学C语言程序填空.docx》由会员分享,可在线阅读,更多相关《天津城建大学C语言程序填空.docx(193页珍藏版)》请在冰点文库上搜索。
天津城建大学C语言程序填空
程序填空
功能:
计算平均成绩并统计90分以上人数。
[输入负分数时程序结束]
{
intn;/*总人数*/
intm;/*90分以上人数*/
floatgrade,average;
/***********SPACE***********/
average=n=m=0;
while
(1)
{
/***********SPACE***********/
scanf("%f",&grade);
if(grade<0)break;
n++;
average+=grade;
/***********SPACE***********/
if(grade<90)continue;
m++;
}
if(n)printf("%.2f,%d\n",average/n,m);
}
请补充函数fun,该函数的功能是:
能整除k且是偶数的自然数,把这些数保存在数组bb中,
并按从大到小的顺序输出。
例如当k=20时,依次输出:
201042。
注意:
部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
{
inti;
intj=0;
/***********SPACE***********/
for(i=1;i<=k;i++)
{
/***********SPACE***********/
if(k%i==0&&i%2==0)
bb[j++]=i;
}
printf("\n\n");
/***********SPACE***********/
for(i=--j;i>=0;i--)
printf("%d",bb[i]);
}
功能:
把字符串中所有的字母改写成该字母的下一个字母,最后
一个字母z改写成字母a。
大字母仍为大写字母,小写字母
仍为小写字母,其它的字符不变。
例如:
原有的字符串为:
“Mn.123xyZ”,处理后,串中的
内容为:
“No.123yzA”。
/***********SPACE***********/
s=a;
while(*s)
{
if(*s=='z')
*s='a';
elseif(*s=='Z')
*s='A';
elseif(isalpha(*s))/*isalpha函数的功能为判断一个字符是否是字母*/
/***********SPACE***********/
*s+=1;
/***********SPACE***********/
s++;
}
以下C程序将磁盘中的一个文件复制到另一个文件中,两个文件名已在程序中给出(假定文件名无误)。
请填空。
#include
voidmain()
{
FILE*f1,*f2;
f1=fopen("file_a.dat","r");f2=fopen("file_b.dat","w");
/***********SPACE***********/
whilefeof(f1)
/***********SPACE***********/
fputc(fgetc(f1),f2);
/***********SPACE***********/
fclose(f1);
fclose(f2);
}
--------------------------------
功能:
当输入“2,5”的时候输出为“255”
-------------------------------------------------------*/
#include
#definemax100
main()
{
intf[max],i,j,k,m;
scanf("%d,%d",&k,&m);
/***********SPACE***********/
for(i=0;i<=【?
】;i++)f[i]=0;
/***********SPACE***********/
f[【?
】]=1;
for(i=k;i<=m;i++)
/***********SPACE***********/
for(j=i-k;j<=i-1;j++)f[i]【?
】f[j];
printf("%d%10d%10d\n",k,m,f[m]);
}
答案:
1).m
2).k-1或k-1
3).+=或=1+
第2题(10.0分)题号:
466
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之间的根
其中X^n代表X的n次方。
-------------------------------------------------------*/
#include
main()
{
floatx0,x1,x2,fx0,fx1,fx2;
do
{
printf("Enterx1&x2:
");
scanf("%f,%f",&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
/***********SPACE***********/
}while(fx1*fx2【?
】);
do
{
x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
/***********SPACE***********/
if(fx0*fx1【?
】)
{
x2=x0;
fx2=fx0;
}
else
{
x1=x0;
fx1=fx0;
}
}
/***********SPACE***********/
while(【?
】>=1e-5);
printf("x=%6.2f\n",x0);
}
答案:
1).>0
2).<0
3).fabs(fx0)
第3题(10.0分)题号:
476
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
不用第三个变量,实现两个数的对调操作。
-------------------------------------------------------*/
#include
main()
{
inta,b;
scanf("%d%d",&a,&b);
printf("a=%d,b=%d\n",a,b);
/***********SPACE***********/
a=【?
】;
/***********SPACE***********/
b=【?
】;
/***********SPACE***********/
a=【?
】;
printf("a=%d,b=%d\n",a,b);
}
答案:
1).a+b
2).a-b或a-b
3).a-b或a-b
第4题(10.0分)题号:
483
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
对数组A中的N(0<N<100)个整数从小到大进行连续编
号,输出各个元素的编号。
要求不能改变数组A中元素的
顺序,且相同的整数要具有相同的编号。
例如:
数组是:
A=(5,3,4,7,3,5,6)
则输出为:
(3,1,2,5,1,3,4)
-------------------------------------------------------*/
main()
{
inti,j,k,n,m=1,r=1,a[2][100]={0};
printf("Pleaseentern:
");
scanf("%d",&n);
for(i=0;i{
printf("a[%d]=",i);
scanf("%d",&a[0][i]);
}
/***********SPACE***********/
while(【?
】)
{
for(i=0;iif(a[1][i]==0)
/***********SPACE***********/
【?
】;
k=i;
for(j=i;j/***********SPACE***********/
if(a[1][j]==0&&a[0][j]】;
a[1][k]=r++;
m++;
for(j=0;jif(a[1][j]==0&&a[0][j]==a[0][k])
{
a[1][j]=a[1][k];
m++;
}
}
for(i=0;iprintf("a[%d]=%d,%d\n",i,a[0][i],a[1][i]);
}
答案:
1).mm
2).break
3).k=j
第5题(10.0分)题号:
458
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
用等分法在有序的循环数组中,找到最小元素的位置。
-------------------------------------------------------*/
intcyclic_min(intx[],intn)
{
intleft=0;
intright=n-1;
intmid;
/***********SPACE***********/
while(【?
】)
{
mid=(left+right)/2;
if(x[mid]/***********SPACE***********/
【?
】;
else
/***********SPACE***********/
【?
】;
}
returnleft;
}
#include
voidmain(void)
{
intx[]={20,23,28,35,39,40,42,8,10,15,17,19};
intn=sizeof(x)/sizeof(int);
intloc,i;
printf("\nFindCyclicMinimum");
printf("\n===================");
printf("\n\nGivenArraySortedinCyclicFashion:
\n");
for(i=0;iprintf("%3d",x[i]);
loc=cyclic_min(x,n);
printf("\n\nMinimumislocatedatx[%d]=%d",loc,x[loc]);
}
答案:
1).leftleft
2).right=mid
3).left=mid+1或left=1+mid
第6题(10.0分)题号:
34
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
以下程序的功能如(图1)。
#include
#include
/***********SPACE***********/
floatfun(【?
】,intn)
{
/***********SPACE***********/
【?
】;
floatxa=0,s;
for(j=0;jxa+=x[j]/n;
/***********SPACE***********/
【?
】;
for(j=0;js+=(x[j]-xa)*(x[j]-xa)/n;
/***********SPACE***********/
【?
】;
}
main()
答案:
1).floatx[]或float*x
2).intj
3).s=0或s=0.0
4).returns或return(s)
功能:
计算一元二次方程的根。
#include
/***********SPACE***********/
#include【?
】
main()
{
floata,b,c,disc,x1,x2,realpart,imagpart;
scanf("%f%f%f",&a,&b,&c);
printf("theequation");
/***********SPACE***********/
if(【?
】<=1e-6)
printf("isnotquadratic\n");
else
disc=b*b-4*a*c;
if(fabs(disc)<=1e-6)
printf("hastwoequalroots:
%-8.4f\n",-b/(2*a));
/***********SPACE***********/
elseif(【?
】)
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
printf("hasdistinctrealroots:
%8.4fand%.4f\n",x1,x2);
}
else
{
realpart=-b/(2*a);
imagpart=sqrt(-disc)/(2*a);
printf("hascomplexroots:
\n");
printf("%8.4f=%.4fi\n",realpart,imagpart);
printf("%8.4f-%.4fi\n",realpart,imagpart);
}
}
答案:
1).
2).fabs(a)
3).fabs(disc)>1e-6或1e-6第8题(10.0分)题号:
410
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
有n个整数,使其前面各数顺序向后移m个位置,最后m个数
变成最前面的m个数
-------------------------------------------------------*/
main()
{
intnumber[20],n,m,i;
printf("thetotalnumbersis:
");
scanf("%d",&n);
printf("backm:
");
scanf("%d",&m);
for(i=0;iscanf("%d,",&number[i]);
scanf("%d",&number[n-1]);
/***********SPACE***********/
move(【?
】);
for(i=0;iprintf("%d,",number[i]);
printf("%d",number[n-1]);
}
/***********SPACE***********/
move(【?
】)
intn,m,array[20];
{
int*p,array_end;
/***********SPACE***********/
array_end=*(【?
】);
for(p=array+n-1;p>array;p--)
/***********SPACE***********/
*p=*(【?
】);
*array=array_end;
m--;
if(m>0)move(array,n,m);
}
答案:
1).number,n,m
2).array,n,m
3).array+n-1或array+n-1
4).p-1或p-1
第9题(10.0分)题号:
15
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
分别求出一批非零整数中的偶数、奇数的平均值,用零作
为终止标记。
-------------------------------------------------------*/
main()
{
intx,i=0,j=0;
floats1=0,s2=0,av1,av2;
scanf("%d",&x);
/***********SPACE***********/
while(【?
】)
{
if(x%2==0){s1=s1+x;i++;}
/***********SPACE***********/
【?
】
{
s2=s2+x;
j++;
}
/***********SPACE***********/
【?
】;
}
if(i!
=0)
av1=s1/i;
else
av1=0;
if(j!
=0)
/***********SPACE***********/
【?
】;
else
av2=0;
printf("oushujunzhi:
%7.2f,jishujunzhi:
%7.2f\n",av1,av2);
}
答案:
1).x!
=0或x
2).else或elseif(x%2==1)或elseif(x%2!
=0)或if(x%2)
3).scanf("%d",&x)
4).av2=s2/j
第10题(10.0分)题号:
456
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
利用指向结构的指针编写求某年、某月、某日是第
几天的程序,其中年、月、日和年天数用结构表示。
-------------------------------------------------------*/
main()
{
/***********SPACE***********/
【?
】date
{
inty,m,d,n;
/***********SPACE***********/
}【?
】;
intk,f,a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("date:
y,m,d=");
scanf("%d,%d,%d",&x.y,&x.m,&x.d);
f=x.y%4==0&&x.y%100!
=0||x.y%400==0;
/***********SPACE***********/
a[1]+=【?
】;
if(x.m<1||x.m>12||x.d<1||x.d>a[x.m-1])exit(0);
for(x.n=x.d,k=0;k/***********SPACE***********/
printf("n=%d\n",【?
】);
}
答案:
1).struct
2).x
3).f
4).x.n
第11题(10.0分)题号:
462
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
把字符串中所有的字母改写成该字母的下一个字母,最后
一个字母z改写成字母a。
大字母仍为大写字母,小写字母
仍为小写字母,其它的字符不变。
例如:
原有的字符串为:
“Mn.123xyZ”,调用该函数后,串中的
内容为:
“No.123yzA”。
-------------------------------------------------------*/
#include
#include
#include
#defineN81
main()
{
chara[N],*s;
printf("Enterastring:
");
gets(a);
printf("Theoriginalstringis:
");
puts(a);
/***********SPACE***********/
【?
】;
while(*s)
{
if(*s=='z')
*s='a';
elseif(*s=='Z')
*s='A';
elseif(isalpha(*s))
/***********SPACE***********/
【?
】;
/***********SPACE***********/
【?
】;