//函数fun的功能为:计算x所指数组中N个数的平均值(规定所有数都为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并输出。
//重难点:形参与实参之间,是否进行了值传递。
1 #include <stdlib.h> 2 #include <stdio.h> 3 #define N 10 4 double fun(double x[],double *av) 5 { int i,j; double d,s; 6 s=0; 7 for(i=0; i<N; i++) s = s +x[i]; 8 /**********found**********/ 9 *av=s/N;//把平均值赋给形参//这个地方注意,要要写N,不能写数字。 10 d=32767; 11 for(i=0; i<N; i++) 12 if(x[i]<*av && *av - x[i]<=d){ 13 /**********found**********/ 14 d=*av-x[i]; 15 j=x[i]; 16 } 17 /**********found**********/ 18 return j; 19 } 20 void main() 21 { int i; double x[N],av,m; 22 for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);} 23 printf(" "); 24 m=fun(x,&av);//加取地址符之后就可以实现,形参实参值互传。 25 printf(" The average is: %f ",av); 26 printf("m=%5.1f ",m); 27 printf(" "); 28 }
//函数fun函数的功能是:根据整型形参n,计算如下公式的值。A1=1,A2=1/(1+A1),An=1/(1+A(n-1))。
//重难点:注意函数返回值类型。
1 #include <stdlib.h> 2 #include <conio.h> 3 #include <stdio.h> 4 /*************found**************/ 5 double fun(int *n)//注意这里函数返回值类型 6 { double A=1;int i; 7 /*************found**************/ 8 for(i=2;i<n+1;i++) 9 A=1.0/(1+A); 10 return A; 11 } 12 void main() 13 { int n; 14 system("CLS");//清屏 15 printf(" Please enter n: "); 16 scanf("%d",&n); 17 printf("A%d=%lf ",n,fun(n)); 18 }
//在程序中,定义了N*N的二维数组,并在主函数中自动赋值,编写函数fun功能是使数组右上半角元素中的值乘以m。
//重难点:对二维数组数据进行操作。对文件进行操作。
1 #include <conio.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 #define N 5 6 void fun(int a[][N], int m) 7 { 8 int i,j; 9 for (i = 0; i < N; i++) 10 { 11 for (j = i; j < N; j++) 12 { 13 a[i][j] = a[i][j] * m; 14 } 15 } 16 } 17 void main() 18 { 19 int a[N][N],m, i, j; 20 FILE *out; 21 printf("*****The array***** "); 22 for(i=0;i<N;i++) 23 { for(j=0;j<N;j++) 24 {a[i][j]=rand()%20; 25 printf("%4d", a[i][j]); 26 } 27 printf(" "); 28 } 29 m=rand()%4; 30 printf("m=%4d ",m); 31 fun(a,m);//这里传递的是a(为数组首地址,所以形参值会同步到实参中。) 32 printf("THE RESULT "); 33 for(i=0;i<N;i++) 34 { for(j=0;j<N;j++) 35 printf("%4d",a[i][j]); 36 printf(" "); 37 } 38 /******************************/ 39 out=fopen("out.dat","w"); 40 for(i=0;i<N;i++) 41 for(j=0;j<N;j++) 42 a[i][j]=i*j; 43 fun(a,8); 44 for(i=0;i<N;i++) 45 { for(j=0;j<N;j++) 46 fprintf(out,"%4d",a[i][j]); 47 fprintf(out," "); 48 } 49 fclose(out); 50 /******************************/ 51 }