一、程序填空题
在此程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并在主函数中输出。
例如,有10个正数:46、30、32、40、6、17、45、15、48、26,平均值为30.500000。
主函数中输出m=30。
#include <stdlib.h>
#include <stdio.h>
#define N 10
double fun(double x[],double *av)
{ int i,j; double d,s;
s=0;
for(i=0; i<N; i++) s = s +x[i];
/**********found**********/
__1__=s/N;
d=32767;
for(i=0; i<N; i++)
if(x[i]<*av && *av - x[i]<=d){
/**********found**********/
d=*av-x[i];
j=__2__;
}
/**********found**********/
return __3__;
}
void main()
{ int i; double x[N],av,m;
for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}
printf("\n");
m=fun(x,&av);
printf("\nThe average is: %f\n",av);
printf("m=%5.1f ",m);
printf("\n");
}
答案:(1) *av (2) i (3) x[j]
二、程序修改题
在此程序中,函数fun的功能是:根据整型形参n,计算如下公式的值。
例如,若n=10,则应输出0.617977。
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
/*************found**************/
int fun(int n)
{ float A=1;int i;
/*************found**************/
for(i=2;i<n;i++)
A=1.0/(1+A);
return A;
}
void main()
{ int n;
system("CLS");
printf("\nPlease enter n: ");
scanf("%d",&n);
printf("A%d=%lf\n",n,fun(n));
}
答案:(1) float fun(int n) (2) for(i=2;i<=n;i++)
三、程序设计题
在此程序中,定义N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int m),该函数的功能是使数组右上半三角元素中的值乘以m。
例如,若m的值为2,a数组中的值为:
则返回主程序后a数组中的值应为:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
void fun(int a[][N], int m)
{
}
void main()
{
int a[N][N],m, i, j;
FILE *out;
printf("*****The array*****\n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
{a[i][j]=rand()%20;
printf("%4d", a[i][j]);
}
printf("\n");
}
m=rand()%4;
printf("m=%4d\n",m);
fun(a,m);
printf("THE RESULT\n");
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
printf("%4d",a[i][j]);
printf("\n");
}
/******************************/
out=fopen("out.dat","w");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
a[i][j]=i*j;
fun(a,8);
for(i=0;i<N;i++)
{ for(j=0;j<N;j++)
fprintf(out,"%4d",a[i][j]);
fprintf(out,"\n");
}
fclose(out);
/******************************/
}
答案:
int i,j;
for(j=0;j<N;j++)
for(i=0;i<=j;i++)
a[i][j]=a[i][j]*m; /*右上半三角元素中的值乘以m*/