用户提问
较长的,但不要太专业
推荐答案
这个一个求鞍点的
#include
#define MAX 100
int main()
{
int a[MAX][MAX], m, n, i, j, max, maxj, flag, k;
printf("请输入行数 列数(以空格分隔):\n");
scanf("%d %d", &m, &n);
printf("请输入%d个数:\n", m * n);
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
scanf("%d", &a[i][j]);
printf("整理:\n");
for(i=0;i
{
for(j=0;j
printf("%5d",a[i][j]);
printf("\n");
}
for (i = 0; i < m; i++)
{
max=a[i][0]; /*开始时假设a[i][0]最大*/
maxj=0; /*将列号0赋给maxj保存*/
for(j=0;j
if(a[i][j]>max)
{
max=a[i][j]; /*将本行的最大数存放在max中*/
maxj=j; /*将最大数所在的列号存放在maxj中*/
}
flag=1; /*先假是鞍点,以flag为1代表*/
for(k=0;k
if(max>a[k][maxj]) /*将最大数和其同列元素比较*/
{
flag=0; /*如果max不是同列最小,表示不是鞍点,令flag为0*/
break;
}
if(flag) /*如果flag为1表示是鞍点*/
{
printf("数组有鞍点:a[%d][%d]=%d\n",i+1,maxj+1,max);
/*输出鞍点的值 和所在的行,列号*/
break;
}
}
if (!flag)
printf("数组没有鞍点!\n");
return 0;
}