题目内容:
请编程找出一个M*N矩阵中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!”
[注]使用一维数组实现二维数组的操作过程, 可谓十分精彩.
#include<stdio.h>
void Init(short *, short, short);
void Show(short *, short, short);
void f(short *, short, short);
int main()
{
short m, n;
printf("Input m,n:\n");
/* 增加输入的容错机制 */
while(scanf("%hd,%hd", &m, &n) != 2 || m < 1 || n < 1)
{
while(getchar() != '\n') ;
printf("请输入合法数据.\n");
printf("Input m,n:\n");
}
short M[m * n];
/* 初始化"二维数组" */
Init(M, m, n);
/* */
f(M, m, n);
/* */
return 0;
}
/* 寻找矩阵(m * n)的鞍点 */
void f(short *M, short m, short n)
{
short i, j;
short Max;
short p;
short flag;
/* judge = 0: 此矩阵无鞍点; judge = 1: 此矩阵有鞍点 */
short judge = 0;
for(i = 0; i < m; i &#