C语言 自定义函数找出二维矩阵的鞍点,如果没有鞍点打印相应信息
自定义函数找出二维矩阵的鞍点,如果没有鞍点打印相应信息
回复 楼主 学会代码
程序代码:
#include <stdio.h> #define M 3 //最大接收M行N列的数组,这里是10*10,可修改。 #define N 3 int main() { int a[M][N], b[N]; int i, j, k, s = 0, max, min, count = 0; printf("输入数组元素:"); for (i = 0;i < M;i++) // 输入数组 { for (j = 0;j < N;j++) { scanf("%d", &a[i][j]); } } // 打印数组 for (i = 0;i < M;i++) { for (j = 0;j < N;j++) { printf("%5d", a[i][j]); } printf("\n"); } //查找判断鞍点 for (i = 0;i < M;i++) { max = a[i][0]; for (j = 0;j < N;j++) // 找第i行最大值 if(a[i][j] > max) max = a[i][j]; s = 0; for (j = 0;j < N;j++) //将最大值所在的列存入数组b[s]中 if(a[i][j] = max) { b[s] = j; s++; //s的值就是最大值的个数 } min = max; for (i = 0;i < s;i++) //有几个最大值循环判断几次 { for (k = 0;k < M;k++) //判断这个行最大值是不是列最小 { if (min > a[k][b[i]]) { break; } } if (k == M) //输出,count为鞍点个数 printf("鞍点为第%d行第%d列的%d\n", j + 1, b[i] + 1, a[j][b[i]]); count++; } } printf("该二维数组没有鞍点\n"); }