阅读下列函数说明和C函数,回答问题1~2,将解答填入栏内。[说明]若矩阵Am×n中存在某个元素aij满足:aij…是第i行中最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。下面程序的功能是输出A中所有鞍点,其中参数A使用二维数组表示,m和n分别是矩阵A的行列数。[程序]void saddle (int A[ ] [ ], int m, int n){ int i,j,min;for (i=0;i <m;i + + ){ min: (1);for (j=1; j<n; j+ +)if(A[i][j]<min) (2);for (j=0; j<n; j+ +)if ((3)){ p=0;while (p<m(4))p+ +;if (p > = m)printf ("%d,%d,%d\n",i,j,min);}}}[问题1] 将函数代码中的(1)~(4)处补充完整[问题2]在上述代码的执行过程中,若A为矩阵,则调用saddle(A,3,3)后输出是(5)。
阅读下列函数说明和C函数,回答问题1~2,将解答填入栏内。
[说明]
若矩阵Am×n中存在某个元素aij满足:aij…是第i行中最小值且是第j列中的最大值,则称该元素为矩阵A的一个鞍点。下面程序的功能是输出A中所有鞍点,其中参数A使用二维数组表示,m和n分别是矩阵A的行列数。
[程序]
void saddle (int A[ ] [ ], int m, int n)
{ int i,j,min;
for (i=0;i <m;i + + )
{ min: (1);
for (j=1; j<n; j+ +)
if(A[i][j]<min) (2);
for (j=0; j<n; j+ +)
if ((3))
{ p=0;
while (p<m&&(4))p+ +;
if (p > = m)printf ("%d,%d,%d\n",i,j,min);
}
}
}
[问题1] 将函数代码中的(1)~(4)处补充完整
[问题2]在上述代码的执行过程中,若A为矩阵,则调用saddle(A,3,3)后输出是(5)。
相关考题:
设矩阵A(aij,10(i>:=j,1 设矩阵A(aij,1<=i,j<=10)的元素满足: aij<>0(i>:=j,1<=i,j<=10),aij=0(i<j,1<=i,j<=10)若将A的所有非0元素以行为主序存于首地址为2000的存储区域中,每个元素占4个单元,则元素A[59)的首地址为(48)A.2340B.2236C.2220D.2160
按行优先顺序存储下三角矩阵的非零元素,则计算非零元素aij(1≤j≤i≤n)的地址的公式为( )。A.LOC(aij)=LOC(aij)+i×(i+1)/2+jB.LOC(aij)=LOC(aij)+i×(i+1)/2+(j-1)C.LOC(aij)=LOC(aij)+i×(i-1)/2+jD.LOC(aij)=LOC(aij)+i×(i-1)/2+(j-1)
试题二(共15分)阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。【说明】如果矩阵A中的元素A[i,j]满足条件:A[i,j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。一个矩阵可能存在多个马鞍点,也可能不存在马鞍点。下面的函数求解并输出一个矩阵中的所有马鞍点,最后返回该矩阵中马鞍点的个数。【C函数】Int findSaddle(int a[][N],int M),{ /*a表示M行N列矩阵,N是宏定义符号常量量*/int row,column,i,k;int minElem;int count=0;/*count用于记录矩阵中马鞍点的个数*/for( row = 0;row (1) ;row++) {/*minElem用于表示第row行的最小元素值,其初值设为该行第0列的元素值*/(2) ;for( column = 1;column (3) ;column++)if( minElem a[row][column]) {minElem = a[row][column];}for(k=0;kN;k++)if(a[row][k]==minElem){/术对第row行的每个最小元素,判断其是否为所在列的最大元素*/for(i=0;i M;i++)if( (4) minElem) break;if(i=(5) ){printf("(%d,%d):%d\n",row,k,minElem);/*输出马鞍点*/count++;}/*if*/}/*if*/}/*for*/return count,}/*findSaddle*/
【5-1-3】设A是一个n*n的对称矩阵,将A的对角线及对角线上方的元素以列优先(以列为主序)的方式存放在一维数组B[n(n+1)/2]中,则矩阵中任一元素aij(0<=i,j<n,且i<=j)在B中的位置为()。A.j(j+1)/2+iB.j(j-1)/2+i-1C.i(i+1)/2+jD.j(i-1)/2+j-1
编写一个程序合理使用函数,输入m(0<m<10),n(2<n<10),随机生成m个有鞍点的n*n矩阵(每个随机数为包含在0~9之间的整数),输出这些矩阵(鞍点用红色输出)。 提示:矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,也可能有多个鞍点。随机数函数参见《计算机基础与计算思维》6.3.5小节。