编写一个程序合理使用函数,输入m(0<m<10),n(2<n<10),随机生成m个有鞍点的n*n矩阵(每个随机数为包含在0~9之间的整数),输出这些矩阵(鞍点用红色输出)。 提示:矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,也可能有多个鞍点。随机数函数参见《计算机基础与计算思维》6.3.5小节。

编写一个程序合理使用函数,输入m(0<m<10),n(2<n<10),随机生成m个有鞍点的n*n矩阵(每个随机数为包含在0~9之间的整数),输出这些矩阵(鞍点用红色输出)。 提示:矩阵鞍点是指矩阵中的某一点,既是行中的最大值,又是列中的最小值。 矩阵中不一定存在鞍点,也可能有多个鞍点。随机数函数参见《计算机基础与计算思维》6.3.5小节。


参考答案和解析
错误

相关考题:

关于主对角线(从左上角到右下角)对称的矩阵为对称矩阵;如果一个矩阵中的各个元素取值为0或1,那么该矩阵为01矩阵,求大小为N*N的01对称矩阵的个数?()A.power(2,n);B.power(2,n*n/2);C.power(2,(n*n+n)/2);D.power(2,(n*n-n)/2);

已知有一维数组A[0...m*n-1],若要对应为m行、n列的矩阵,则下面的对应关系______可将元素A[k](0≤k<m*n)表示成矩阵的第i行、第j列的元素(0≤i<m,0≤j<n)。A.i=k/n,j=k%mB.i=k/m,j=k%mC.i=k/n,j=k%nD.i=k/m,j=k%n

以下程序用来建立一个10*10矩阵,该矩阵两条对角线上的元素为1,其余元素为0,请补充完该程序。该程序运行结果见下图。Private Sub Form_ click()Dim s(10, 10) As IntegerFor n = 1 To 10For m = 1 To 10If【 】Or【 】Thens (n, m) = 1Elses (n, m) = 0End IfNext mNext nFor n = 1 To 10For【 】。Picturel. Print Tab(m * 3); s(n, m)Next mPrintNext nEnd Sub

请完成下列Java程序:查找一个矩阵中的鞍点,对于一个二维数组中的鞍点,该点位置上的元素在该行上最小,在该列上最大,也可能没有鞍点。数组大小为4行5列。注意:请勿改动main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。public class ex30_2 {public static void main(String[] args) {int i, j, flag,m=4,n=5;int[] min=new int [4];int[] max=new int [5];int r[] []={{2,5,6,7,9},{32,65,2,78,12},{1,8,5,96,4},{5,3,21,73,23}};flag=0;for (i=0; i<m; i++) {//获取元素在该行上最大min[i]=r[i] [0];for (j=1; j<n; j++)if(r[i] [j]<min[i])___________________;}for (j = 0; j <n; j ++ ) { //获取同一元素在该列上最大max[j]=r[0] [j];for(i=l;i<m;i++)if(r[i] [j]>max[j])_______________________}for(i=0;i<m;i++)for(j=0;j<n;j++)if(min[i]==max[j]){System.out.print("("+i+", "+j+") : "+r[i] [j]);flag=1;}if(flag==0)System.out.println("没有鞍点!");}}

阅读下列函数说明和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)。

下列给定程序中,函数fun()的功能是:根据形参m的值(2≤m≤9),在m行m列的二维数组中存放如下所示的数据,由 main()函数输出。例如,若输入2,则输出1 22 4输入4,则输出1 2 3 42 4 6 83 6 9 124 8 12 16请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:include <conio.h>include <stdio. h>define M 10int aiM] [MI={0};/***************found*******************/fun( int **a, int m){int j,k;for (j=0; j<m; j++)for (k=0; k<m; k++)/***************found*******************/a[j] [k]=k*j;}main ( ){int i, j, n;clrscr ();printf ("Enter n\n"); scanf ("%d", n);fun (a, n);for (i=0; i<n; i++){ for (j=0;j<n;j++)printf ("%4d ",a[i] [j]);printf ("\n ");}}

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是使数组左下半三角元素中的值加上n。例如:若n的值为3,a数组中的值为a=2 5 41 6 95 3 7则返回主程序后a数组中的值应为5 5 44 9 98 6 10注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数full的花括号中填入所编写的若干语句。试题程序:include <stdio.h>include <conio.h>include <stdlib.h>define N 5fun(int a[][N],int n){}main(){int a[N][N],n,i,j;clrscr();printf("***** The array *****\n");for(i=0;i<N;i++)/*产生—个随机5*5矩阵*/{for(j=0;j<N;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);}printf("\n");}don=rand()%10;/*产生一个小于5的随机数n*/while(n>=5);printf("n=%4d\n",n);fun(a,n);printf("*****THE RESULT*****\n");for(i=0;i<N;i++){for(j=0;j<N;i++)printf("%4d",a[i][j]);printf("\n");}}

请补充函数fun(),该函数的功能是:按行统计N×N维矩阵元素中的最大值(均为整数),并把这些值按从小到大的顺序保存在数组b中。矩阵的维数在主函数中输入,并赋予随机数。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序:include<stdio.h>include<conio.h>include<stdlib.h>define N 20void fun(【 】){int i j;int t;for(i=0;i<n;i++)for(j=0;j<n;j++)if(【 】)b[i]=a[i][j];for(i=0;i<n;i++){for(j=0;i<n;j++)if(【 】){t=b[i];b[i]=b[j];b[j]=t;}}}main(){int a[N][N];int b[N];int n;int i,j;clrscr();printf("*****Input the dimension of array N*****\n");scanf("%d",n);printf("*****The array *****\n");for(i=0;i<n;i++){for(j=0;i<n;j++){a[i][j]=rand()%20;while(a[i][j]==0)a[i][j]=rand()%30;printf("%4d",a[i][j]);}printf(”\n\n”);}for(i=0;i<n;i++)b[i]=0;fun(a,b,n);printf("***** THE RESULT *****\n");for(i=0;i<n;i++)printf(“%d”,b[i]);}

下列程序的功能是( )。 main() { static int s[3][3]={1,2,3,4,5,6,7,8,9,),m,n; for(m=0;m<3;m++) { for(n=0;n<=m;n++) printf("%d",s[m][n]);printf("\n'); } }A.输出3×3矩阵的下三角的元素B.输出3×3矩阵的上三角的元素C.输出3×3矩阵的对角线上的元素D.输出3×3矩阵的元素

请补充函数fun(),该函数的功能是:输出一个N×N矩阵,N由键盘输入,矩阵元素的值为随机数,并计算出该矩阵四周边元素的平均值,结果由函数返回。例如:当N=4时:注章:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。试题程序;include<stdio.h>include<conio.h>include<stdlib.h>define N 20double fun(int a[ ][N],int n){int i,j;int k;double s=0.0;double aver=0.0;printf("*****The array*****\n");for(i=0;i<n;i++){for(j=0;j<n;j++){a[i][j]=rand()%10;printf("%4d",a[i][j]);if(【 】)s+=a[i][j];}printf("\n");}k=【 】;aver=【 】;return aver;}main( ){int a[N][N];int n;double S;Clrscr( );printf("*****Input the dimension Of array N*****\n");scanf(“%d”,n);S=fun(a,n);printf(“***** THE RESULT *****\n”);printf(“The average is %2,3f\n”,S);}

已知有一维数组A(0..m*n-1],若要对应为m行、n列的矩阵,则下面的对应关系(4)可将元素A[k](0≤k<m*n)表示成矩阵的第i行、第j列的元素(0≤i<m,0≤j<n)。A.i=k/n,j=k%mB.i=k/m,j=K%mC.i=k/n,j=k%nD.i=k/m,j=k%n

请编写程序fun,函数的功能是:实现B=A+Aˊ,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵: 其转置矩阵为:1 2 3 1 4 74 5 6 2 5 87 8 9 3 6 9程序输出:2 6 106 10 1410 14 18注意:部分源程序在文件PROGl.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

某大型整数矩阵用二维整数组 G[1:2M ,l:2N]表示,其中M和N是较大的整数,而且每行从左到右都己是递增排序,每到从上到下也都己是递增排序。元素G[M,N]将该矩阵划分为四个子矩阵A[1:M,1:N],B[1:M,(N+1):2N],C[(M+1):2M,1:N ],D[(M+1):2M,(N+1):2N]。如果某个整数E大于A[M,N],则E( )。A.只可能在子矩阵A中B.只可能在子矩阵B或C中C.只可能在子矩阵B、C或D中D.只可能在子矩阵D中

试题三(共15分)阅读以下说明和C 函数,将应填入(n) 处的字句写在答题纸的对应栏内。[说明]若一个矩阵中的非零元素数目很少且分布没有规律,则称之为稀疏矩阵。对于m行n 列的稀疏矩阵M,进行转置运算后得到n 行m列的矩阵MT,如图3-1 所示。函数TransposeMatrix(Matrix M)的功能是对用三元组顺序表表示的稀疏矩阵M 进行转置运算。对 M 实施转置运算时,为了将M 中的每个非零元素直接存入其转置矩阵MT 三元组顺序表的相应位置,需先计算M 中每一列非零元素的数目(即MT 中每一行非零元素的数目),并记录在向量num 中;然后根据以下关系,计算出矩阵M 中每列的第一个非零元素在转置矩阵MT 三元组顺序表中的位置:cpot[0] = 0cpot[j] = cpot[j-1] + num[j-1] /* j 为列号 */类型ElemType、Triple 和Matrix 定义如下:typedef int ElemType;typedef struct { /* 三元组类型 */int r,c; /* 矩阵元素的行号、列号*/ElemType e; /* 矩阵元素的值*/}Triple;typedef struct { /* 矩阵的三元组顺序表存储结构 */int rows,cols,elements; /* 矩阵的行数、列数和非零元素数目 */Triple data[MAXSIZE];}Matrix;[C函数]int TransposeMatrix(Matrix M){int j,q,t;int *num, *cpot;Matrix MT; /* MT 是M的转置矩阵 */num = (int *)malloc(M.cols*sizeof(int));cpot = (int *)malloc(M.cols*sizeof(int));if (!num || !cpot)return ERROR;MT.rows = (1) ; /* 设置转置矩阵MT行数、列数和非零元数目*/MT.cols = (2) ;MT.elements = M.elements;if (M.elements 0) {for(q = 0; q M.cols; q++)num[q] = 0;for(t = 0; t M.elements; ++t) /* 计算矩阵M 中每一列非零元素数目*/num[M.data[t].c]++;/* 计算矩阵M中每列第一个非零元素在其转置矩阵三元组顺序表中的位置*/(3) ;for(j = 1;j M.cols; j++)cpot[j] = (4) ;/* 以下代码完成转置矩阵MT三元组顺序表元素的设置 */for(t = 0; t M.elements;t++){j = (5) ; /* 取矩阵M 的一个非零元素的列号存入j *//* q 为该非零元素在转置矩阵MT 三元组顺序表中的位置(下标)*/q = cpot[j];MT.data[q].r = M.data[t].c;MT.data[q].c = M.data[t].r;MT.data[q].e = M.data[t].e;++cpot[j]; /* 计算M 中第j列的下一个非零元素的目的位置 */}/* for */}/* if */free(num); free(cpot);/*此处输出矩阵元素,代码省略*/return OK;}/* TransposeMatrix */

以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)例如,矩阵为:3 0 0 32 5 7 31 0 4 2则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。add(int m,int n,int arr[]){ int i,j,sum=0;for(i=0;ifor(j=0;jN;J++)sum=sum+ (7) ;for(j=0;jfor(i=1; (8) ;i++)sum=sum+arr[i*n+j];return(sum);}

试题二(共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*/

设A为n×m矩阵,B为m×n矩阵(m>n),且AB=E.证明:B的列向量组线性无关.

已知有一维数组A[0.m×n-1],若要对应为m行n列的矩阵,则下面的对应关系(),可将元素A[k](O≤<k≤<m×n)表示成矩阵的第i行、第j列的元素(0≤i≤m,0匀≤n)。 A. i=k/n,j=k%mB.i=k/m,j=k%mC.i=k/n,j=k%nD.i=k/m,j=k%n

若一个矩阵对策有最优策略,则该矩阵策略一定有鞍点。

对于m个发点、n个收点的运输问题,叙述错误的是()A、该问题的系数矩阵有m×n列B、该问题的系数矩阵有m+n行C、该问题的系数矩阵的秩必为m+n-1D、该问题的最优解必唯一

给定一个m×n的数值矩阵A,如果矩阵A中存在这样的一个元素A[i][j]满足条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个方法计算出m*n的矩阵A的所有马鞍点。

判断题若一个矩阵对策有最优策略,则该矩阵策略一定有鞍点。A对B错

问答题设A是n阶矩阵,且满足Am=E,其中m为整数,E为n阶单位矩阵。令将A中的元素aij换成它的代数余子式Aij而成的矩阵为A(~),证明:(A(~))m=E。

单选题设A是m×n矩阵,B是n×m矩阵,则(  )。A当m>n时,必有|AB|≠0B当m>n时,必有|AB|=0C当n>m时,必有|AB|≠0D当n>m时,必有|AB|=0

单选题设有一个M*N的矩阵已经存放在一个M行N列的数组x中,且有以下程序段:sum=0;for(i=0;iA矩阵两条对角线元素之和B矩阵所有不靠边元素之和C矩阵所有元素之和D矩阵所有靠边元素之和

单选题对于m个发点、n个收点的运输问题,叙述错误的是()A该问题的系数矩阵有m×n列B该问题的系数矩阵有m+n行C该问题的系数矩阵的秩必为m+n-1D该问题的最优解必唯一

问答题给定一个m×n的数值矩阵A,如果矩阵A中存在这样的一个元素A[i][j]满足条件:A[i][j]是第i行中值最小的元素,且又是第j列中值最大的元素,则称之为该矩阵的一个马鞍点。编写一个方法计算出m*n的矩阵A的所有马鞍点。

问答题给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,则函数返回值为1;若不是,则函数返回值为0。“幻方”的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。  例如,以下3×3的矩阵就是一个“幻方”:  4 9 2  3 5 7  8 1 6  请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。  注意:部分源程序给出如下。  不得增行或删行,也不得更改程序的结构!  试题程序:#include #define N 3int fun(int (*a)[N]){ int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; i