(17)以下程序中,0select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。 #define N 3 #define M 3 0select(int a[N][M],int *n) { int i,j,row=1,colum=1. for(i=0.i<N;i ) for(j=0.j<M.j ) if(a[i][j]>a[row][colum]){row=i.colum=j.} *n=【17】. return(【18】). } main() { int a[N][M]={9,11,23,6,1,15,9,17,20},max,n. max=0select(a,&.n). printf("max=%d,line=%d\n",max,n). } 【解析】指针变量作为函数参数及二维数组的一个典型算法—求最大值及其下标。通过对题意的分析,在0select()函数中,变量row的作用是用来记录最大元素的行下标,colum的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colum中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][colum]作为函数值返回。
(18)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char *str) { int i. for(i=0.【19】!= \0 .i ). return(【20】). } 【解析】求str指向的字符串长度的算法是:用一个变量i表示字符串中字符的位置,一开始赋值为0,取出i位置的字符,判断是否为“\0”,若不是,则i的值加1,如此循环直到取出的字符是“\0”为止,此时i的值就是字符串的长度。由此可知,第一个空处应填第i位置上的字符*(str i);第二个空格应该填字符串的长度i。