#define N 5
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 ;} 第四十二套:
42.1填空 功能:将s所指字符串中的所有数字字符移动到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如:形参s所指的字符串为:def35adh3kjsdf7。执行结果为:defadhkjsdf3537。
void fun(char *s)
{ int i, j=0, k=0; char t1[80], t2[80]; for(i=0; s[i]!='\\0'; i++)
if(s[i]>='0' && s[i]<='9') {
/**********found**********/ t2[j]=s[i]; j++; } else t1[k++]=s[i]; t2[j]=0; t1[k]=0;
/**********found**********/ for(i=0; i /**********found**********/ for(i=0; i 42.2 改错 功能:用冒泡法对6个字符串按由小到大的顺序进行排序。 #define MAXLINE 20 fun ( char *pstr[6]) { int i, j ; char *p ; for (i = 0 ; i < 5 ; i++ ) { /**************found**************/ for (j = i + 1; j < 6; j++) { if(strcmp(*(pstr + i), *(pstr + j)) > 0) { p = *(pstr + i) ; /**************found**************/ *(pstr + i) = *(pstr + j) ; *(pstr + j) = p ; } } }} 42.3程序 功能:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串:123412132,输入字符为:1,则输出:3。 #define M 81 int fun(char *ss, char c) { int cnt = 0 ; char *p = ss ; while(*p) { if(*p == c) cnt++ ; p++ ; } return cnt ;} 第四十三套: 43.1填空 功能:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后改串在字符串数组中的位置(下标值),未找到泽返回-1。ss所指所指字符串数组中共有N个内容的字符串,且串长小于M。 #define N 5 #define M 8 int fun(char (*ss)[M],char *t) { int i; /**********found**********/ for(i=0; i< N ; i++) /**********found**********/ if(strcmp(ss[i],t)==0 ) return i ; return -1;} 43.2改错 功能:从整数1到55之间,选能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放在个位数,a2放在十位数。 fun( int *b ) { int k,a1,a2,i=0; for(k=10; k<=55; k++) { /************found************/ a2=k/10; a1=k-a2*10; if((k%3==0 && a2==5)||(k%3==0 && a1==5)) { b[i]=k; i++; } } /************found************/ return i; } 43.3程序 功能:将字符串尾部的*号全部删除,前面的和中间的*号不删除。 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。 void fun( char *a ) { char *p = a ; while(*p) p++ ; p-- ; while(*p == '*') p-- ; p++ ; *p = 0 ;} 第四十四套: 44.1填空 功能:进行数字字符转换。若形参ch中是数字字符?0?-----?9?,则?0?转换成?9?,?1?转换成?8?,?2?转换成?7?,…….,?9?转换成?0?;若是其他字符则保持不变;并将转换后的结果作为函数值返回。 /**********found**********/ char fun(char ch) { /**********found**********/ if (ch>='0' && ch<='9') /**********found**********/ return '9'- (ch-'0'); return ch ;} 44.2改错 功能:将p所指字符串的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK 调用函数之后字符串b中的内容为:ABC DEF GHI JK。 void fun(char *p, char *b) { int i, k=0; while(*p) { i=1; while( i<=3 && *p ) { /**********found**********/ b[k]=*p; k++; p++; i++; } if(*p) {/**********found**********/ b[k++]=' '; } } b[k]='\\0';} 44.3程序 N 名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头结点。功能。求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当;78.625。 struct slist { double s; struct slist *next; }; typedef struct slist STREC; double fun( STREC *h ) { STREC *p=h->next; /* 由于头结点中没有存放数据 */ double av=0.0; /* 对计算成绩平均值的变量进行初始化 */ int n = 0 ; while(p!=NULL) { /* 判断链表是否结束 */ av = av + p->s ; /* 对成绩进行累加 */ p=p->next; /* 到下一个结点位置 */ n++; /* 人数加1 */ } av /= n ; /* 计算成绩平均值 */ return av ; /* 返回成绩平均值 */} 第四十五套: 45.1填空 功能:将字符串尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 例如,字符串中的内容为:****A*BC*DEF*G*******,若n为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****。若若n为7,删除后,字符串中的内容应当是:****A*BC*DEF*G*******。 #define N 9 int fun(int a[], int n) { int i,j; j = 0; for (i=0; i /**********found**********/ if (a[i]%2== 0) { /**********found**********/ a[j] = a[i]; j++; } /**********found**********/ return j; } 45.2改错 功能是:“按以下递归公式求函数值。 例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 /************found************/ fun (int n) { int c; /************found************/ if(n==1) c = 10 ; else c= fun(n-1)+2; return(c);} 45.3程序 功能:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。例如,字符串的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为****A*BC*DEF*G*******。n的值在主函数中输入。 void fun( char *a,int n ) { char *p=a ; int j=0; while(*p) p++; p--; /* 字符串的长度 */ while(*p == '*') p--; /* 字符串右的'*' */ p++; while(j 46.1填空 功能:利用指针数组对形参ss字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且长度小于M。 #define N 5 #define M 8 void fun(char (*ss)[M]) { char *ps[N],*tp; int i,j,k; for(i=0; i /**********found**********/ k= i ; for(j=i+1; j if(strlen(ps[k]) < strlen(ps[j]) ) k=j; /**********found**********/ tp=ps[i]; ps[i]=ps[k]; ps[k]= tp ; } printf(\ for(i=0; i 46.2改错 已知一个数列从第0项开始的前三项分别为0,0,1,以后的各个项都是其相邻的前三项之和。给定程序函数功能:计算并输出该数列前n项的平方跟之和。N的值通过形参传入。 例如,当n=10时,程序的输出结果应为:23.197745。 /************found************/ double fun(int n) { double sum, s0, s1, s2, s; int k; sum = 1.0; if (n <= 2) sum = 0.0; s0 = 0.0; s1 = 0.0; s2 = 1.0; for (k = 4; k <= n; k++) { s = s0 + s1 + s2; sum += sqrt(s); s0 = s1; s1 = s2; s2 = s; } /************found************/ return sum;} 46.3程序 编写函数他的功能是计算下列级数和,和值由函数值返回。 例如,当n=10,x=0.3时,函数值为1.349859。 long jc(int n) { long s = 1 ; int i ; for(i = 1 ; i <= n ; i++) s *= i ; return s ;} double fun(double x , int n) { double s = 1.0, y = x ; int i ; for(i = 1 ; i <= n ; i++) { s += y / (double)jc(i) ; y *= x ; } return s ;} 第四十七套: 47.1填空 功能:找出形参字符串中出现的频率最高的字母(不区分大小写),并统计其出现的次数。例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为: letter