代码块
方法1:
#include <stdio.h> #include <stdlib.h> int main() { int a[3][3]; int i, j, k, p, q, max, min; for (i=0; i<3; i++){ for (j=0; j<3; j++) scanf("%d", &a[i][j]); //输入数组 } for (i=0; i<3; i++){ for (j=0, max=0, p=0; j<3; j++){ //判断出该行元素的最大值 if (a[i][j]>max){ max=a[i][j]; p=j; } else{ max=max; p=p; } } for (k=0, min=a[i][p], q=i; k<3; k++){ //判断最大值在该列是否为最小值 if (a[k][p]<min){ min=a[k][p]; q=k; } else{ min=min; q=q; } } if (i==q){ printf("%d is the saddle point!\n", a[i][p]); //如果该最大值行号没有改变,输出鞍点 break; } } if (i==3 && i!=q) printf("There is no saddle point!\n"); //输出没有鞍点 system("pause"); return 0; }方法2:
#include <stdio.h> #include <stdlib.h> int main() { int i, j, q, max, m, s, n[3][3]; for (i=0, printf("Please enter array n[3][3]:\n"); i<3; i++) for (j=0; j<3; scanf("%d", &n[i][j++])); //输入数组{12, 101, 110, 34, 99, 56, 78, 100, 22} for (i=0; i<3; i++){ for (j=0, max=0; j<3; n[i][j]>max ? max=n[i][j], q=j++ : j++); //判断出每行元素最大值 for (m=0, s=1; m<3; n[m][q]<max ? s=0, m++ : m++); //判断最大值在该列是否是最小值 if (s){ printf("%d is the saddle point!\n", n[i][q]); //如果成立,输出鞍点。 break; } } if (!s) printf("There is no saddle point!\n"); //如果循环结束并且鞍点判断值s为0,输出没有鞍点。 system("pause"); return 0; }