编写一个求一个5×5矩阵马鞍点的程序

2025-05-22 02:33:49
推荐回答(1个)
回答(1):

//希望我的回答对你的学习有帮助#include #include #include int main(){ int a[5][5]; srand(unsigned(time(NULL))); //随机种子 while (1) { int sign; printf("Please input a not 0 integer !\n"); scanf("%d", &sign); if (sign == 0) break; //如果输入 0 ,结束程序 int SaddleCount = 0; //记录鞍点的个数 printf("\nThe 5 * 5 int array is : \n"); for (int i = 0; i < 5; i++) //随机生成一个 5 * 5 的数组 { for (int j = 0; j < 5; j++) { a[i][j] = rand() % 100; //随机范围是 0 ~ 99 printf("%4d", a[i][j]); } printf("\n"); } for (int i = 0; i < 5; i++) { int max = a[i][0], max_x = i, max_y = 0; for (int j = 1; j < 5; j++) //寻找一行中最大的数,并记录列数 { if (max < a[i][j]) { max = a[i][j]; max_y = j; } } int min = a[i][max_y], k; for (k = 0; k < 5; k++) //判断这行最大的数,在它所在的列是否为最小的数 { if (a[i][max_y] > a[k][max_y]) break; //如果不是,跳出循环,此时 k 一定小于 5 } if (k == 5) //如果 k 为 5,证明这行最大的数为这列中最小的数 { SaddleCount++; printf("The %d saddle point is : a[%d][%d]->%d\n", SaddleCount, i + 1, max_y + 1, a[i][max_y]); } } if (SaddleCount == 0) //如果鞍点个数为 0 ,证明这个数组不存在鞍点 { printf("The 5 * 5 int array is no saddle !\n\n"); } } return 0;}