使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。假如:若 则结果应为1,5,9,13, 请改

admin2018-08-11  32

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是求矩阵(二维数组)a[N][N]中每行的最小值,结果存放到数组b中。假如:若

则结果应为1,5,9,13,
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#inclucte<stdio.h>
#define N4
void fun(int a[][N],int b[])
{int i,j;
for(i=0;i<N;i++)
{
/*********found*********/
b=a[0][0];
/*********found*********/
for(j=1;j<N-1;j++)
/*********found*********/
if(b<a[j])
b=a[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);printf("\n");
}

选项

答案(1)b[i]=a[i][0]; (2)for(j=1;j<N;j++) (3)if(b[i]>a[i][j])

解析 数组b存放每行的最小值,针对二维数组使用二层循环,在第一层循环的开始将每行的第1个数赋给数组b相应的元素,在第二层循环中,数组b中的元素依次与本行中的每个元素进行比较,找到一行中的最小值存入数组b。
(1)b存放二级数组a每一行中第1个元素值,表示为a[0]。
(2)每行元素的第1个值要和这一行中的每个元素进行比较,条件j<N可使a[j]取到最后元素,而条件j<N-1使a[j]最终取得倒数第2个元素。
(3)因为是找最小值,所以当b大于其后的数值时说明它不是最小,要把比较中较大的值赋给它。
转载请注明原文地址:https://kaotiyun.com/show/6jxp777K
0

最新回复(0)