#define N 8 typedef struct { char num[10]; double s; } STRUC;
double fun(STRUC *a, STRUC *b, int *n) { int i,j=0;
double av=0.0; for(i=0;i for(i=0;i if(a[i].s return av; } main( ) { FILE *wf; STRUC s[N]={{ \ { \ STRUC h[N],t; FILE *out; int i,j,n; double ave; ave=fun(s,h,&n); printf(\ for(i=0;i printf(\ printf(\ out=fopen(\ fprintf(out, \ for(i=0;i {t=h[i]; h[i]=h[j]; h[j]=t;} for(i=0;i fprintf(out, \ fclose(out); wf=fopen(\ fprintf(wf, \ for(i=0;i fprintf(wf, \ \ fclose(wf); -31- } 55.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。 例如,若二维数组中的数据为:33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是:33 33 33 33 44 44 44 44 55 55 55 55 #include void fun (int (*s)[10], int *b, int *n, int mm, int nn) { int i,j,k=0; for(i=0;i main( ) { FILE *wf; int w[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}}, i, j; int a[100]={0},n=0 ; printf(\ for (i=0; i<3; i++) {for (j=0;j<4;j++) printf(\ printf(\ } fun(w,a, &n,3,4); printf(\ for(i=0; i wf=fopen(\ for(i=0; i fprintf(wf,\ fclose(wf); } 56.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的则内容应当是ABCDEFG*******。 #include void fun(char *a,char *p) -32- { char *t=a; for(;t<=p;t++) if(*t!='*' ) *(a++)=*t; for(;*t!='\\0' ;t++) *(a++)=*t; *a='\\0'; } main( ) { FILE *wf; char h[81],*t,p[81]=\ printf(\ gets(h); t=h; while(*t) t++; t--; while(*t=='*') t--; fun(h,t); printf(\ puts(h); wf=fopen(\ t=p; while(*t) t++; t--; while(*t=='*') t--; fun(p,t); fprintf(wf,\ fclose(wf); } 57.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在high中。 #include int fun (STRUC *a, STRUC *b, int l, int h ) -33- { int i,j=0; for(i=0;i if(a[i].s>=l && a[i].s<=h) b[j++]=a[i]; return j; } main () { FILE *wf; STRUC s[N]={{ \ {\ {\ {\ STRUC h[N],tt; FILE *out; int i, j, n, low, heigh, t; printf(\ scanf(\ if(heigh {t=heigh;heigh=low; low=t;} n=fun(s,h,low, heigh); printf(\ for(i=0;i printf(\ printf(\ out=fopen(\ fprintf(out, \ n=fun(s,h,80,98); for(i=0;i {tt=h[i];h[i]=h[j];h[j]=tt;} for(i=0;i fprintf(out, \ fprintf(out, \ fclose(out); wf=fopen(\ for(i=0;i fprintf(wf, \ fclose(wf); } 58.编写函数fun,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。例如,若n为1000时,函数值应为s=153.909064。 -34- #include { if(i%3==0&&i%7==0) sum=sum+i;} return (sqrt(sum)); } main( ) { printf(\ 59.请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:AAAA BBBBBBB CC 则合并后的字符串的内容应是AAAABBBBBBBCC。 #include void fun(char a[M][N],char *b) { int i,j, k=0; for(i=0;i for(j=0;a[i][j]!='\\0';j++) b[k++]=a[i][j]; b[k]='\\0'; } main( ) { FILE *wf; char w[M][N]={\ char a[100]={ \ printf(\ for(i=0;i printf(\ printf(\ printf(\ wf=fopen(\ fprintf(wf,\ fclose(wf); } -35-