用
函
数
。
int fun (int a[][M]) {
int i,j,max=a[0][0]; for(i=0;i<2;i++) for(j=0;j double fun ( double eps) { double s=0.0,s1=1.0; int n=0; while(s1>=eps) { s=s+s1; s1=s1*n/(2*n+1); n++; } return 2*s; } 3、求出1~1000之间能被7或11整除但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。 void fun (int *a, int *n) { int i,j=0; for(i=1;i<=1000;i++) if((i%7==0||i%11==0)&&i%77!=0) a[j++]=i; *n=j; } 4、删除字符串中所有*号。 void fun( char *a ) { int i,j=0; for(i=0;a[i]!='\\0';i++) if(a[i]!='*') a[j++]=a[i]; a[j]='\\0'; } 5、实现两个字符串的连接(不要同时使用库函数),即把p2所指的字符串连接到p1所指的字符串的后面。 void fun(char p1[], char p2[]) { int i,j; for(i=0;p1[i]!='\\0';i++) ; for(j=0;p2[j]!='\\0';j++) p1[i++]=p2[j]; p1[i]='\\0';} 6、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能:求出平均分,并放入记录的ave成员中。 void fun(STREC *a) { int i; a->ave=0.0; for(i=0;i 7、n名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。求出平均分,并由函数值返回 double fun( STREC *h ) { double ave=0.0; STREC *p=h->next; while(p!=NULL) { ave=ave+p->s; p=p->next; } return ave/N;} 8、将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过K返回。 void fun( int m, int *k, int xx[] ) { int i,j,n=0; for(i=4;i for(;*ss!='\\0';ss++) if(*ss==c) i++; return i; } 10、计算n门课程的平均分,结果作为函数值返回。 float fun ( float *a , int n ) { int i; float av=0.0; for(i=0; i int fun( STREC *a, STREC *b ) { int i,j=0,max=a[0].s; for(i=0;i while(*p&&*p=='*') { a[i]=*p; i++; p++; } while(*p) { if(*p!='*') {a[i]=*p;i++;} p++; } a[i]='\\0'; } 13、统计在tt所指的字符串中’a’到’z’26个小写字母给出现的次数,并依次放在pp所指数组中。 void fun(char *tt, int pp[]) { int i; for(i=0;i<26;i++) pp[i]=0; for(;*tt!='\\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; } 14、将字符串尾部的*号全部删除,前面和中间的*号不动。 void fun( char *a ) { while(*a!='\\0') a++; a--; while(*a=='*') a--; *(a+1)='\\0'; } 15、比较字符串的长度,函数返回较长的字符串,如果相同,则返回第一个字符串。 char *fun ( char *s, char *t) { int i,j; for(i=0;s[i]!= '\\0';i++); for(j=0;t[j]!= '\\0';j++); if(i<=j) return t; else return s;} 16、学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,函数返回该学生的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数数值返回。 STREC fun( STREC *a, char *b ) {int i; STREC str={\"\\0\ for(i=0;i 17、将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除字符串中剩余的字符所形成的新串放在t数组中。 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'; } 18、利用下面的简单迭代方法求方程cos(x)-x=0的一个实根s。 double fun() { double x0,x1; x1=0.0; do { x0=x1; x1=cos(x0); }while(fabs(x0-x1)>=1e-6); return x1; } 19、将字符串中的前导*号全部移到字符串尾部。 void fun( char *a ) { int i=0,n=0; char *p; p=a; while (*p=='*') /*判断*p是否是*号,并统计*号的个数*/ { n++;p++; } while(*p) /*将前导*号后的字符传递给a*/ { a[i]=*p;i++;p++; } while(n!=0) { a[i]='*';i++;n--; } a[i]='\\0';} 20、N名学生的数据已放入主函数中的结构体数组中,把分数最低的学生数据放入b所指的数组中。 int fun( STREC *a, STREC *b ) {int i,j=0,min=a[0].s; for(i=0;i min=a[i].s; /*找出最小值*/ for(i=0;i 21、计算 double fun( int m ) { int i; double s=0.0; for(i=1;i<=m;i++) s=s+log(i); return sqrt(s); } 22、只删除字符前导和尾部的*号,串中字母间的*号都不删除。 void fun( char *a, int n,int h,int e ) { int i,j=0; for(i=h;i void fun(char *s, char t[]) { int i,j=0,k=strlen(s); for(i=1;i void fun(int a, int b, long *c) { *c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000; } 25、除了尾部的*号之外,将字符中的其他的*号全部删除。形参p已指向字符串最后的一个字母。 void fun( char *a, char *p ) { char *t=a; for(;t<=p;t++) if(*t!='*') *(a++)=*t; for(;*t!='\\0';t++) *(a++)=*t; *a='\\0'; } 26、N名学生的数据已放入主函数中的结构体数组中,按分数降序排列学生的记录,高分在前,低分在后。 void fun( STREC a[] ) { int i,j; STREC t; for(i=1;i 27、N名学生的数据已放入主函数中的结构体数组中,把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 double fun( STREC *a, STREC *b, int *n ) { int i; double av=0.0; *n=0; for(i=0;i 28、将1~m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。 void fun ( int m, int *a , int *n ) { int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i%11==0) a[j++]=i; *n=j; } 29、将字符串中的前导*号全部删除,中间和尾部的*号不删除。 void fun( char *a ) { char *p=a; while(*p=='*') p++; for(;*p!='\\0';p++,a++) *a=*p; *a='\\0'; } 30、N名学生的成绩已在主函数中放入一个带有头结点的链表结构中,h指向链表的头结点。找出学生的最高分。 double fun( STREC *h ) { double max=h->s; while(h!=NULL) {if(max return max; } 30、找出一维整型数组元素最大的值及其所在的下标,并通过形参传回。主函数中x是数组名,n是x数据个数,max存放最大值,index存放最大值所在元素的下标。 void fun(int a[],int n, int *max, int *d) { int i; *max=a[0]; *d=0; for(i=0;i 31、将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串在剩余字符所形成的一个新串放在t所指的数组中。 void fun(char *s, char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i t[j]='\\0'; } 32、实现B=A+’A’,即将矩阵A加上A的转置,存放在矩阵B中。 void fun ( int a[3][3], int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i]; } 33、将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。 void fun(int (*s)[10],int *b,int *n,int mm,int nn) { int i,j; for(j=0;j 34、将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位 和百位上,b数的十位和个位数依次放在c数的千位和十位上。 void fun(int a, int b, long *c) { *c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000; } 35、将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并成一个新的字符串。 void fun(char a[M][N],char *b) { int i,j,k=0; for(i=0;i 36、删除一个字符串中指定下标的字符。a指向原字符后的字符串存放在b所指的数组中,n中存指定的下标。 void fun (char a[], char b[], int n) { int i,k=0; for(i=0;a[i]!='\\0';i++) if(i!=n) b[k++]=a[i]; b[k]='\\0'; } 37、移动一维数组中的内容,若数组中有n个整数,要求把下标从0~p(含p,p小于等于n-1)的数组元素平移到数组的最后。 void fun(int *w, int p, int n) { int x,j,ch; for(x=0;x<=p;x++) { ch=w[0]; for(j=1;j w[n-1]=ch; } } 38、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 void fun(char (*s)[N],char *b) { int i,j,k=0; for(i=0;i float fun(int n) { int i,s1=0; float s=0.0; for(i=1;i<=n;i++) {s1=s1+i; s=s+1.0/s1; } return s; } 40、将s所指字符串中ASCCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中 void fun(char *s, char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i 42、删除一维数组中所有相同的数使之只剩一个。数组中的数已按由小到大的顺序排列函数返回删除后数组的数据。 int fun(int a[], int n) { int i,j=1; for(i=1;i 43、除了字符串前导和尾部的*号外,将串中其他的*号全部删除。 void fun( char *a, char *h,char *p ) { int i=0; char *q=a; while(q { if(*q!='*') { a[i]=*q; i++; } q++; } while(*q) { a[i]=*q; i++; q++;} a[i]='\\0'; } 44、将a,b的两个两位正整数合并成一个新的整数放在c中,合并方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。 void fun(int a, int b, long *c) { *c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000; } 45、使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理,字符串中间和尾部的*号不删除。 void fun( char *a, int n ) { int i=0; int k=0; char *p,*t; p=t=a; while(*t=='*') {k++;t++;} if(k>n) { while(*p) { a[i]=*(p+k-n); i++; p++; } a[i]='\\0'; } } 46、将两个两位数的正整数a,b合并成一个整数放在c中,合并方式是:将a数的十位和个位数依次在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。 void fun(int a, int b, long *c) { *c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000; } 47、将一个数字字符串转换为一个整数。 答案:ong fun ( char *p) { long n=0; int flag=1; if(*p=='-') {p++;flag= -1;} else if(*p=='+') p++; while(*p!='\\0') {n=n*10+*p-'0'; p++; } return n*flag; } 48、求Fibonacc数列中大于t的最小的数,结果由函数返回。Fibonacc数列F(n)定义为 int fun( int t) { int f0 = 0, f1 = 1, f ; do { f = f0 + f1 ; f0 = f1 ; f1 = f ; } while(f < t) ; return f ; } 49、把低于平均分的学生数据放入b所指的数组中低于平均分的学生人数通过形参n返回,平均分通过函数值返回 double fun( STREC *a, STREC *b, int *n ) { int i,j=0; double av=0.0; for(i=0;i void fun ( char *ss ) { int i; for(i=0;ss[i]!='\\0';i++) if(i%2==1&&ss[i]>='a'&&ss[i]<='z') ss[i]=ss[i]-32; } 51、将a,b两个正整数合并成一个新的整数放在c中。合并方式:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。 void fun(int a, int b, long *c) { *c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000; } 52、使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做任何操作,字符中间的*不删除。 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--;} if(k>n)