填空題
給定程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出。
例如,有10個正數(shù):46 30 32 40 6 17 45 15 48 26,平均值為:
30.500000
主函數(shù)中輸出:m=30.0
請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 10
double fun(double x[],double *av)
{ int i,j; double d,s;
s=0;
for(i=0; i
__1__=s/N;
d=32767;
for(i=0; i
if(x[i]<*av && *av - x[i]<=d){
d=*av-x[i]; j=__2__;}
return __3__;
}
main()
{ int i; double x[N],av,m;
for(i=0; i
m=fun(x,&av);
printf("\nThe average is: %f\n",av);
printf("m=%5.1f ",m);
printf("\n");
}
解題思路:
第一處:計(jì)算好的平均值通過形參av返回,所以應(yīng)填:*av。
第二處:計(jì)算小于平均值且最接近平均值的位置j,所以應(yīng)填:i。
第三處:返回該數(shù),所以應(yīng)填:x[j]。
改錯題
給定程序MODI1.C中函數(shù)fun的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。例如,若 n=10,則應(yīng)輸出: 0.617977。
請改正程序中的語法錯誤,使它能得出正確的結(jié)果。
注意:不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
int fun ( int n )
{ float A=1; int i;
for (i=2; i
A = 1.0/(1+A);
return A ;
}
main( )
{ int n ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n", n, fun(n) ) ;
}
解題思路:
第一處:函數(shù)的返回是浮點(diǎn)型數(shù),所以應(yīng)改為:float fun(int n)。
第二處:for的終止條件應(yīng)是i<=n。
編程題
程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun,函數(shù)的功能是:使數(shù)組右上三角元素中的值乘以m 。
例如:若m的值為2,a 數(shù)組中的值為
| 1 9 7 | | 2 18 14|
a = | 2 3 8 | 則返回主程序后a數(shù)組中的值應(yīng)為 | 2 6 16|
| 4 5 6 | | 4 5 12|
注意: 部分源程序存在文件PROG1.C文件中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
#include
#define N 5
int fun ( int a[][N], int m )
{
}
main ( )
{ int a[N][N], m, i, j;
printf("***** The array *****\n");
for ( i =0; i
{ for ( j =0; j
{ a[i][j] = rand()%20; printf( "%4d", a[i][j] ); }
printf("\n");
}
do m = rand()%10 ; while ( m>=3 );
printf("m = %4d\n",m);
fun ( a ,m );
printf ("THE RESULT\n");
for ( i =0; i
{ for ( j =0; j
printf("\n");
}
NONO ( );
}
解題思路:
本題是利用兩重循環(huán)給二維數(shù)組右上三角元素中的值乘以m。
參考答案:
int fun ( int a[][N], int m )
{
int i, j;
for(i = 0 ; i < N ; i++)
for(j = i ; j < N ; j++)
a[i][j] *= m ;
}
給定程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出。
例如,有10個正數(shù):46 30 32 40 6 17 45 15 48 26,平均值為:
30.500000
主函數(shù)中輸出:m=30.0
請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 10
double fun(double x[],double *av)
{ int i,j; double d,s;
s=0;
for(i=0; i
__1__=s/N;
d=32767;
for(i=0; i
if(x[i]<*av && *av - x[i]<=d){
d=*av-x[i]; j=__2__;}
return __3__;
}
main()
{ int i; double x[N],av,m;
for(i=0; i
m=fun(x,&av);
printf("\nThe average is: %f\n",av);
printf("m=%5.1f ",m);
printf("\n");
}
解題思路:
第一處:計(jì)算好的平均值通過形參av返回,所以應(yīng)填:*av。
第二處:計(jì)算小于平均值且最接近平均值的位置j,所以應(yīng)填:i。
第三處:返回該數(shù),所以應(yīng)填:x[j]。
改錯題
給定程序MODI1.C中函數(shù)fun的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。例如,若 n=10,則應(yīng)輸出: 0.617977。
請改正程序中的語法錯誤,使它能得出正確的結(jié)果。
注意:不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
int fun ( int n )
{ float A=1; int i;
for (i=2; i
A = 1.0/(1+A);
return A ;
}
main( )
{ int n ;
printf("\nPlease enter n: ") ;
scanf("%d", &n ) ;
printf("A%d=%f\n", n, fun(n) ) ;
}
解題思路:
第一處:函數(shù)的返回是浮點(diǎn)型數(shù),所以應(yīng)改為:float fun(int n)。
第二處:for的終止條件應(yīng)是i<=n。
編程題
程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun,函數(shù)的功能是:使數(shù)組右上三角元素中的值乘以m 。
例如:若m的值為2,a 數(shù)組中的值為
| 1 9 7 | | 2 18 14|
a = | 2 3 8 | 則返回主程序后a數(shù)組中的值應(yīng)為 | 2 6 16|
| 4 5 6 | | 4 5 12|
注意: 部分源程序存在文件PROG1.C文件中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容, 僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
#include
#define N 5
int fun ( int a[][N], int m )
{
}
main ( )
{ int a[N][N], m, i, j;
printf("***** The array *****\n");
for ( i =0; i
{ for ( j =0; j
{ a[i][j] = rand()%20; printf( "%4d", a[i][j] ); }
printf("\n");
}
do m = rand()%10 ; while ( m>=3 );
printf("m = %4d\n",m);
fun ( a ,m );
printf ("THE RESULT\n");
for ( i =0; i
{ for ( j =0; j
printf("\n");
}
NONO ( );
}
解題思路:
本題是利用兩重循環(huán)給二維數(shù)組右上三角元素中的值乘以m。
參考答案:
int fun ( int a[][N], int m )
{
int i, j;
for(i = 0 ; i < N ; i++)
for(j = i ; j < N ; j++)
a[i][j] *= m ;
}