编写程序,输入一个正整数n(1<=n<=6)和n阶方阵a中的元素,如果找到a的鞍点(鞍点的元素值在该行上最大,该列上最小),就输出它的下标;否则输出“NO”(设a最多有一个鞍点)

发布时间:2019-08-07 18:25:14

编写程序,输入一个正整数n(1<=n<=6)和n阶方阵a中的元素,如果找到a的鞍点(鞍点的元素值在该行上最大,该列上最小),就输出它的下标;否则输出“NO”(设a最多有一个鞍点)学C语言不久,只能写前面一部分的,后面的真的不会了!求高手解答!谢谢!

推荐回答

   #include "stdio.h"#include "stdlib.h"#define N 10#define M 10int main(){ int i,j,k,n,flag1,flag2,a[N][M],max,maxi,maxj=0; printf("\ninput n:"); scanf("%d",&n); if(n>6) printf("please input 1<=n<=6!!");    for(i=1;i<=n;i++)    /*输入矩阵*/    for(j=1;j<=n;j++)    scanf("%d",&a[i][j]);     for(i=1;i<=n;i++)    /*输出矩阵*/     {     for(j=1;j<=n;j++)      printf("%5d",a[i][j]);      printf("\n");       }  flag2=0; /*设置无鞍点标记*/        for(i=1;i<=n;i++)        { max=a[i][1];        for(j=1;j<=n;j++) if(a[i][j]>max)        { max=a[i][j]; maxi=i; maxj=j; }        if(j>n&&maxj==0) goto aa;         for(k=1,flag1=1;k<=n&&flag1;k++)/*设置标记flag1=1时表示存在鞍点,flag1=0时表示不存在鞍点*/         if((k!=maxi)&&(max>=a[k][maxj]))          flag1=0; if(flag1) /*存在鞍点,输出位置和鞍点*/           { printf("\n(%d,%d)的%d is\n",maxi-1,maxj,max);            flag2=1; }  aa:; }            if(!flag2) /*标记flag2=0时,表示无鞍点,输出“无鞍点”信息*/             printf("\nNO!!\n");              system("pause");              return 0;} 下面是对于 一般的二位数组 实现的~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   #include "stdio.h"#include "stdlib.h"#define N 10#define M 10int main(){ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj=0; printf("\n输入行数n:"); scanf("%d",&n); printf("\n输入列数m:");  scanf("%d",&m);    for(i=1;i<=n;i++)    /*输入矩阵*/    for(j=1;j<=m;j++)    scanf("%d",&a[i][j]);     for(i=1;i<=n;i++)    /*输出矩阵*/     {     for(j=1;j<=m;j++)      printf("%5d",a[i][j]);      printf("\n");       }  flag2=0; /*设置无鞍点标记*/        for(i=1;i<=n;i++)        { max=a[i][1];        for(j=1;j<=m;j++) if(a[i][j]>max)        { max=a[i][j]; maxi=i; maxj=j; }        if(j>m&&maxj==0) goto aa;         for(k=1,flag1=1;k<=n&&flag1;k++)/*设置标记flag1=1时表示存在鞍点,flag1=0时表示不存在鞍点*/         if((k!=maxi)&&(max>=a[k][maxj]))          flag1=0; if(flag1) /*存在鞍点,输出位置和鞍点*/           { printf("\n(%d,%d)的%d is\n",maxi-1,maxj,max);            flag2=1; }  aa:; }            if(!flag2) /*标记flag2=0时,表示无鞍点,输出“无鞍点”信息*/             printf("\nNO!!\n");              system("pause");              return 0;} 
以上问题属网友观点,不代表本站立场,仅供参考!