fun(s);
fprintf(wf,\ fclose(wf);}
30.请编写一个函数fun,它的功能是:求出—个2×M整型二维数组中最大元素的值,并将此值返回调用函数。 #define M 4
#include
{ int i,j,max= a[0][0] ; for(i=0;i<2;i++) for(j=0;j if(max main( ) { FILE *wf; int arr[2][M]={5,8,3,45,76,-4,12,82}; printf(\ wf=fopen(\ fprintf (wf,\ fclose(wf);} 31.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl23456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是246。 #include void fun(char*s, char t[]) { int i,j=0; for(i=0;s[i]!= '\\0' ;i++) if(i%2==0 && s[i]%2==0) t[j++]=s[i]; t[j]='\\0'; } main( ) { FILE *wf; char s[100] ,t[100]; printf(\ scanf(\ fun(s,t); printf(\ -16- wf=fopen(\ fun(\ fprintf(wf,\ fclose(wf);} 32.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是135。 #include void fun (char *s, char t[ ]) { int i, j=0, n; n=strlen(s); for( i=0; i if(i%2!=0&&s[i]%2!=0) { t[j]=s[i];j++;} t[j]= '\\0' ; } main( ) { char s[100], t[100]; printf(\ scanf(\ fun(s,t); printf(\ 33.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 例如,字符串中的内容为****A*BC*DEF*C*******,若n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****,若n的值7,则字符串中的内容仍为****A*BC*DEF*C*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 #include void fun ( char *a , int n ) { int i=0, k=0; char *p, *t; p=t=a; while ( *t) t++; t--; while (*t==’*’) {k++; t-- ;} t++; if (k>n) { while(*p&&p -17- } main( ) { FILE *wf; char s[81],*t=\ printf(\ gets(s); fun(s); printf(\ puts(s); wf=fopen(\ fun(t); fprintf(wf,\ fclose(wf); } 34.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。 #include int fun (STRUC *a, STRUC *b) { int i,j=0,max=a[0].s; for(i=0;i if(max if(max==a[i].s) b[j++]=a[i]; return j; } main () { STRUC s[N]={{\ {\ {\ {\ STRUC h[N]; int i, n; FILE *out; n=fun(s,h); printf(\ -18- for (i=0; i printf(\ printf(\ out=fopen(\ fprintf(out, \ for(i=0; i fprintf(out, \ fclose(out); } 35.请编写一个函数,用来删除字符串中的所有空格。 例如,输入asd af aa z67,则输出为asdafaaz67。 #include if(*str!=' ') *p++=*str; *p='\\0'; } main( ) { char str[81];int n; printf(\ gets(str); puts(str); fun(str); printf(\ 36.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G**********。在编写函数时,不得使用C语言提供的字符串函数。 #include { int i=0,n=0 ; char *p ; p=a; while (*p=='*') {n++ ; p++; } while (*p) { a[i]= *p ; i++; p++ ; } while(n!=0) { a[i]= '*' ;i++ ;n-- ; } a[i]= '\\0' ; } main( ) -19- { FILE *wf; char s[81],*t=\ printf(\ gets(s); fun(s); printf(\ puts(s); wf=fopen(\ fun(t); fprintf(wf,\ fclose(wf); } 37.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。 #include void fun(STRUC *p) { int i; p->ave=0.0 ; for(i=0;i p->ave=p->ave+p->s[i]; p->ave= p->ave/N ; } main( ) { FILE *wf; STRUC s={ \ int i; fun(&s); printf(\ for(i=0;i printf(\ printf(\ wf=fopen(\ fprintf(wf,\ fclose(wf);} -20-