M105

02-程序修改题 软件154 范金瑞 496浏览

所属年份:2011.3;2011.9;

给定程序MODI1.C中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。

假如:若a= 则结果应为 1,5,9,13,

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

#include  <stdio.h>
#define   N   4
void fun(int  a[][N], int  b[])
{
    int  i, j;
    for (i=0; i<N; i++)
    {
        /**********found**********/
        b[i] = a[0][0];
        /**********found**********/
        for (j=1; j<N-1; j++)
            /**********found**********/
            if ( b[i] < a[i][j] )
                b[i] = a[i][j];
    }
}
main()
{
    int  a[N][N]= {{1,4,3,2},{8,6,5,7},{11,10,12,9},{13,16,14,15}},b[N];
    int  i;
    fun(a,b);
    for (i=0; i<N; i++)  printf("%d,", b[i]);
    printf("\n");
}

【参考答案】

(1)b[i] = a[i][0];    
(2)for (j=1; j a[i][j] )

【解题思路】

数组b存放每行的最小值,针对二维数组使用二层循环,在第一层循环的开始将没每行的第1个数赋给数组b相应的元素,在第二层循环中,数组b中的元素依次与本行中的每个元素进行比较,找到一行中的最小值存入数组b。

(1)b[i]存放二级数组a每一行中第1个元素值,表示为a[i][0]。

(2)每行元素的第1个值要和这一行中的每个元素进行比较,条件j