字符串,且长度小于N。 void fun(char (*ss)[N]) { int i, j, n, len=0; for(i=0; i
for(i=0; i for(j=0; j /**********found**********/ ss[i][n+j+1]='\\0'; }} 16.2改错 下面程序中的fun函数的功能是:将P所指字符串中每个单词的最后一个字母改写成大写。(这里的“单词”是指空格隔离开的字符串)例如,若输入”I am a student to take the examination.”,则输出”I aM A studenT tO takE thE examination”。 void fun( char *p ) { int k = 0; for( ; *p; p++ ) if( k ) {/**********found***********/ if( *p == ' ' ) { k = 0; /**********found***********/ * (p-1) = toupper( *( p - 1 ) ); }} else k = 1; } 16.3程序 请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。例如,CEA edca 排序后 CedcEAa。 int fun(char *s,int num) { char ch ; int i, j ; for(i = 1 ; i < 6 ; i++) for(j = i + 1 ; j < 6 ; j++) { if(*(s + i) < *(s + j)) { ch = *(s + j) ; *(s + j) = *(s +i) ; *(s + i) = ch ; } }} 第十七套: 17.1填空 函数fun功能将存放学生的数据的结构体数组,按照姓名的字典序(从下到大)排序 。 struct student { long sno; char name[10]; float score[3]; }; void fun(struct student a[], int n) {/**********found**********/ struct student t; int i, j; /**********found**********/ for (i=0; i /**********found**********/ if (strcmp(a[i].name,a[j].name) > 0) { t = a[i]; a[i] = a[j]; a[j] = t; }} 17.2改错 在P所指定的字符串找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符向后顺序移动。例如:ABCDeFGH 调用后 eABCDFGH。 fun( char *p ) { char max,*q; int i=0; max=p[i]; while( p[i]!=0 ) { if( max /**********found**********/ q=p+i; } i++; } /**********found**********/ while( q>p ) { *q=*(q-1); q--;} p[0]=max;} 17.3程序 编写函数fun,其功能:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 例如:输入60 69 则应把分数在60-69的学生数据进行输出,包括60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。 #define N 16 typedef struct { char num[10]; int s; } STREC; int fun( STREC *a,STREC *b,int l, int h ) { int i,j = 0 ; for(i = 0 ; i < N ; i++) if(a[i].s >= l && a[i].s <= h) b[j++] = a[i] ; return j ;} 第十八套: 18.1填空 Fun功能:将行参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数的值返回。例如:s指的字符串:asd123fgh543df,处理后: asdfghdf123543。 char *fun(char *s) { int i, j, k, n; char *p, *t; n=strlen(s)+1; t=(char*)malloc(n*sizeof(char)); p=(char*)malloc(n*sizeof(char)); j=0; k=0; for(i=0; i { if(((s[i]>='a')&&(s[i]<='z'))||((s[i]>='A')&&(s[i]<='Z'))) { /**********found**********/ t[j]=s[i]; j++;} else { p[k]=s[i]; k++; } } /**********found**********/ for(i=0; i return t; 18.2改错 Fun函数的 功能 : 将s所指 字符串中最后一次出现的与t1所指字符串 相同的子串替换成t2所指的字符串,所形成的新字符串放在w所指的数组中。要求t1和t2所指的字符串的长度相同。例如:s所指的字符串的内容:abcdabfabc,t1 的内容:ab, t2的内容:99,结果数组中的内容:abcdaf99c。 int fun (char *s, char *t1, char *t2 , char *w) { int i; char *p , *r, *a; strcpy( w, s ); /************found************/ while ( *w ) { p = w; r = t1; while ( *r ) /************found************/ if ( *r == *p ) { r++; p++; } else break; if ( *r == '\\0' ) a = w; w++; } r = t2; while ( *r ){ *a = *r; a++; r++; }} 18.3程序 函数fun功能:将s所指的字符串中ASCII值为奇数的字符删除,字符串中剩余字符形成一个新串放在t所指的数组中。例如:s所指的内容:ABCDEFG12345, 其中字符A的ASCII码为奇数…..、1的ASCII码为奇数…….,都应当删除,其他以此类推。最后t所指的数组中的内容:BDF24。 void fun(char *s, char t[]) { int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2==0) t[j++] = s[i] ; t[j] = 0 ;}} 第十九套: 19.1填空 函数fun功能是将行参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。 例如a所指变量s中的学号、姓名、和三门的成绩是:10001、“zhangsan”、95、80、88,修改后输出t中的数据应为:10002、“LiSi”、96、81、89。 struct student { long sno; char name[10]; float score[3];}; /**********found**********/ struct student * fun(struct student *a) { int i; a->sno = 10002; strcpy(a->name, \ /**********found**********/ for (i=0; i<3; i++) a->score[i] += 1; /**********found**********/ return a ;} 19.2改错 Fun功能:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各zfc在主函数中输入,并存放在一个zfc数组中。 #define N 5 #define M 81 /**********found**********/ char *fun(char (*sq)[M]) { int i; char *sp; sp=sq[0]; for(i=0;i if(strlen( sp) /**********found**********/ return sp;} 19.3程序 Fun功能:将a、b中的两个两位正整数合并形成一个新de整数放在c中。合并的方式:将a中十位和个位依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量的十位和千位上。例如: 当a=45,b=12。调用该函数后,c=2415。 void fun(int a, int b, long *c) { *c = (b)*1000+(a/10)*100+(b/10)*10+a; } 第二十套: 20.1填空 计算行参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据以至x所指数组的后部,平均值作为函数值返回,在主函数输出平均值和移动后的数据。例如:有10个正数:46 30 32 40 6 17 45 15 48 26 平均值:30.5 移动后输出: 30 6 17 15 26 46 32 40 45 48。 #define N 10 double fun(double *x) { int i, j; double av, y[N]; av=0; /**********found**********/ for(i=0; i /**********found**********/ y[j]=x[i]; x[i]=-1; j++;} i=0; while(i { if( x[i]!= -1 ) y[j++]=x[i]; /**********found**********/ i++;} for(i=0; i 20.2改错 统计字符串中各元音字母(A E I O U)的个数。注意字母不分大小写。 例如:输入:THIs is a boot 则输出为:1、0、2、2、0。 fun ( char *s, int num[5] ) { int k, i=5; for ( k = 0; k /**********found**********/ switch ( *s ) { case 'a': case 'A': {i=0; break;} case 'e': case 'E': {i=1; break;} case 'i': case 'I': {i=2; break;} case 'o': case 'O': {i=3; break;} case 'u': case 'U': {i=4; break;}} if (i >= 0) num[i]++; }} 20.3程序 函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组为 则函数值为61。 #define M 4 #define N 5 int fun ( int a[M][N] ) { int tot = 0, i, j ; for(i = 0 ; i < N ; i++) { tot += a[0][i] ; tot += a[M-1][i] ; } for(i = 1 ; i < M - 1 ; i++) {