题目:
找出一个二维数组中的鞍点,即该位置的元素在该行上最大,该列上最小。也可能没有鞍点
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define M 3
int main(){
int a[M][M],b=0,c=0,i,j,k,max,maxc,flag,count=0;
//输入二维数组中个元素
for ( i = 0; i < M; i++){
for ( j = 0; j < M; j++){
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < M; i++){
//假设每一行第一个元素是最大的
max = a[i][0];
//记录最大列号
maxc = 0;
for (j = 0; j < M; j++){
//每一行元素和本行其他元素比较
if (a[i][maxc] < a[i][j]){
maxc = j;//找到最大列号
max = a[i][j];//并重新设置最大元素的值
}
}
flag = 1;
//找到当前最大列号所对应各个行的元素是否最小
for (k = 0; k < M; k++){
//如果不是最小跳出这个循环
if (a[k][maxc] <max){
flag = 0;
count++;
break;
}
}
if (flag){
printf("a[%d][%d]=%d\n", i, maxc, max);
}
}
if (count==3){
printf("不存在\n");
}
system("pause");
return 0;
}
结果:
结语:如有不足,请多包涵