4.编一个无返回值,名为trus的函数,要求如下: 形式参数:数组s1[2][3]和s2[3][2] 是整型数组。 功能:将s1数组转置后存入s2数组中。 【解】为实现问题要求,可用两重循环,按行按列的顺序遍历数组s1的元素,将它们分别复制到数组s2的对位位置即可。 void trus(int sl[][3], int s2[][2]) { int i,j ; for(i=0; i<2; i++) for(j= 0;j<3; j++) s2[j][i] =s1[i][j]; }
5.编一个名为countc函数,要求如下: 形式参数:array存放字符串的字符型数组名。 功能:统计array数组中存放的字符串中的大写字母的数目。 返回值:字符串中的大写字母的数目。 【解】为统计字符串中大写英文字母的个数,函数引入一个计数变量.通过遍历字符串,当发现字符率中的字符是大写字母时,计数变量增1。字符率遍历结束,返回计数变量的值。 int counic(char *array) { int c=0; while(* M) { if(*array>=’A’ && *array<’Z’) c++; array ++; } return c; }
6.编一个名为link函数,要求如下: 形式参数:s1[40],s2[40],s3[80] 是用于存放字符串字符数组。 功能:将s2连接到s1后存入s3中。 返回值:连接后字符串的长度。 【解】这是要编写两字符串连接拷贝到另一字符串的函数,函数返回连接后的字符串的长度。实现函数的功能,就是先将s1中的字符串复制到s3,继续将s2中的字符串复制到s3。 void link( char *sl, char *s2,char *s3) { while(*s3++=*sl++); s3 - - /* 准备复盖字符串结束标记符*/ while(*s3++= * s2++); }
7.编一个函数,求一维实型数组前n个元素的最大数、最小数和平均值。函数利用数组和n两个形参,求得最大值、最小值、平均值,并分别利用另外三个指针形参将求得的最大值。最小值、平均值传回。本函数无返回值。 【解】函数设一个数组形参a、一个整数形参n、传回最大值的指针形参、传回最小值的指针形参和传回平均值的指针形参。函数通过遍历找出最大值、最小值和数组的元素和,最后将数组元素和除以n求得平均值。 void maxMinAve( double a[],double n, double *maxp,double *minp,double *avep) {double s=0.0, max=* a, min=*a; int m; while(m--) { s+=*a; if(*a> max) max=* a; if(*a a++; } *maxp= max; *minp=min; *avep= s/n; } |