编程题:
27.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。
例如,若传送给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
#define M 100
void fun ( int m, int *a, int *n )
{
}
main()
{
int aa[M], n, k;
clrscr();
fun ( 50, aa, &n );
for ( k = 0; k < n; k++ )
if((k+1)%20==0)
printf(“\n”);
else
printf(“%4d”, aa[k] );
printf(“\n”);
}
28.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include
#include
void fun ( int a[], int n, int *max, int *d )
{
}
main()
{
int i, x[20], max, index, n=10;
randomize() ;
for (i=0; i < n; i++)
{
x[i] = rand()%50;
printf(“%4d”, x[i]) ;
}
printf(“\n”);
fun( x, n , &max, &index);
printf(“Max=%5d, Index=%4d\n”, max, index);
}
改错题:
52.下列给定程序中,函数fun的功能是:给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输入l93.199,195.673,195.757,196.051, 196.092,196.596,196.579,196.763所得平均值为195.838745,在平均值以上的实数个数应为5。
请改正程序中的错误,使程序能输出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
/********found********/
int fun(float x[],int n)
int j, c=0;
float xa=0.0;
for (j=0; j
xa += x[j]/n;
printf(“ave =%f\n”,xa);
for (j=0; j
if (x[j] >= xa)
c++;
return c;
}
main ( )
{
float x[100]={193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763};
clrscr();
printf(“%d\n”,fun(x,8));
}
53.下列给定程序中,函数fun的功能是:用递归算法计算斐波拉契级数数列中第n项的值:从第1项起,斐波拉契级数序列为1、1、2、3、5、8、13、21、…例如,若给n输入7,该项的斐波拉契级数值为13。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include
long fun(int g)
{
/********found********/
switch(g);
{
case 0: return 0;
/********found********/
case 1 ;
case 2 : return 1 ;
}
return( fun(g-1)+fun(g-2) );
}
main()
{
long fib;
int n;
printf(“Input n: “);
scanf(“%d”,&n);
printf(“n=%d\n”,n);
fib=fun(n);
printf(“fib = %d\n\n”,fib);
}