C语言寻找矩阵的鞍点
发布网友
发布时间:2022-04-28 12:00
我来回答
共3个回答
热心网友
时间:2023-10-08 20:43
1、鞍点为矩阵元素所在行的最大值,以及所在列的最小值。
2、首先,定义3个整型变量,保存控制循环的变量,以及标志是否有鞍点。
3、接着,定义三个整型数组变量,保存矩阵各元素,以及每一行的最大值和每一列的最小值。
4、设置最大值数组和最小值数组的初值,用memset函数实现。
5、然后,用两层循环,控制输入矩阵的各元素。
6、用两层for循环,控制每一行最大值、每一列最小值的获取。
7、用if语句,控制每一行最大值的获取。
8、继续用if语句,获取矩阵每一列的最小值。
9、然后,逐个读取矩阵中的元素,判断是否鞍点,如果是鞍点则输出坐标和值。
10、最后,当矩阵中没有鞍点时,输出此矩阵无鞍点的信息。
11、运行程序,当输入一个5*5矩阵后,电脑就会判断出有无鞍点,并输出鞍点的坐标和值。
热心网友
时间:2023-10-08 20:43
1、鞍点为矩阵元素所在行的最大值,以及所在列的最小值。
2、首先,定义3个整型变量,保存控制循环的变量,以及标志是否有鞍点。
3、接着,定义三个整型数组变量,保存矩阵各元素,以及每一行的最大值和每一列的最小值。
4、设置最大值数组和最小值数组的初值,用memset函数实现。
5、然后,用两层循环,控制输入矩阵的各元素。
6、用两层for循环,控制每一行最大值、每一列最小值的获取。
7、用if语句,控制每一行最大值的获取。
8、继续用if语句,获取矩阵每一列的最小值。
9、然后,逐个读取矩阵中的元素,判断是否鞍点,如果是鞍点则输出坐标和值。
10、最后,当矩阵中没有鞍点时,输出此矩阵无鞍点的信息。
11、运行程序,当输入一个5*5矩阵后,电脑就会判断出有无鞍点,并输出鞍点的坐标和值。
热心网友
时间:2023-10-08 20:44
#include <stdio.h>
#define M 50
#define N 50
int main(void) {
int i,j,m,n;
int max,jmax,flag,f = 1;
int a[M][N];
scanf("%d%d",&m,&n);
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
scanf("%d",&a[i][j]);
for(i = 0; i < m; ++i) {
max = a[i][0];
jmax = 0;
for(j = 1; j < n; ++j) { // 找出i行最大的
if(max < a[i][j]) {
max = a[i][j];
jmax = j; // 且记录所在的列坐标
}
}
flag = 1; // 预置标志
for(j = 0; j < m && flag; ++j) { // 判断max是否为所在列最小的
if(a[j][jmax] < max) // 不是
flag = 0; // 则清标志
}
if(flag == 1) {
printf("鞍点:a[%d][%d] = %d\n",i,jmax,max);
f = 0;
}
}
if(f) printf("没有鞍点。\n");
return 0;
}
热心网友
时间:2023-10-08 20:44
#include <stdio.h>
#define M 50
#define N 50
int main(void) {
int i,j,m,n;
int max,jmax,flag,f = 1;
int a[M][N];
scanf("%d%d",&m,&n);
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
scanf("%d",&a[i][j]);
for(i = 0; i < m; ++i) {
max = a[i][0];
jmax = 0;
for(j = 1; j < n; ++j) { // 找出i行最大的
if(max < a[i][j]) {
max = a[i][j];
jmax = j; // 且记录所在的列坐标
}
}
flag = 1; // 预置标志
for(j = 0; j < m && flag; ++j) { // 判断max是否为所在列最小的
if(a[j][jmax] < max) // 不是
flag = 0; // 则清标志
}
if(flag == 1) {
printf("鞍点:a[%d][%d] = %d\n",i,jmax,max);
f = 0;
}
}
if(f) printf("没有鞍点。\n");
return 0;
}
热心网友
时间:2023-10-08 20:44
#include<stdio.h>
#define M 3
#define N 3
void main()
{
int row[100] = {0};
int col[100] = {0};
int min_col[100] = {0};
int a[M][N];
int i,j ;
int hasPoint = 0 ;
printf("请输入矩阵元素!\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("矩阵元素如下:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++)
{
row[i]=a[i][0];
// 最小值初始化
// 找每一行中的最小值
for(j=1;j<N;j++)
if(a[i][j]<row[i])
{
row[i]=a[i][j];
min_col[i] = j ; // row[i] 记录的是该行最小元素的列号
}
}
for(j=0;j<N;j++)
{
col[j]=a[0][j];
// 最大值初始化
// 找每一列中的最大值
for(i=1;i<M;i++)
if(a[i][j]>col[j])
{
col[j]=a[i][j];
}
// 重新确定最大值
}
// min_col[i] 记录的是第i行最小值所在的列,把row[i] 和该列的最大值比较即可
for(i=0;i<M;i++)
{
if ( row[i] == col[ min_col[i] ])
{printf("Point : a[%d][%d] = %d\n",i,min_col[i],row[i]) ;
hasPoint++ ;
}
}
if ( hasPoint == 0 )
printf("No points.");
}
热心网友
时间:2023-10-08 20:44
#include<stdio.h>
#define M 3
#define N 3
void main()
{
int row[100] = {0};
int col[100] = {0};
int min_col[100] = {0};
int a[M][N];
int i,j ;
int hasPoint = 0 ;
printf("请输入矩阵元素!\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("矩阵元素如下:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++)
{
row[i]=a[i][0];
// 最小值初始化
// 找每一行中的最小值
for(j=1;j<N;j++)
if(a[i][j]<row[i])
{
row[i]=a[i][j];
min_col[i] = j ; // row[i] 记录的是该行最小元素的列号
}
}
for(j=0;j<N;j++)
{
col[j]=a[0][j];
// 最大值初始化
// 找每一列中的最大值
for(i=1;i<M;i++)
if(a[i][j]>col[j])
{
col[j]=a[i][j];
}
// 重新确定最大值
}
// min_col[i] 记录的是第i行最小值所在的列,把row[i] 和该列的最大值比较即可
for(i=0;i<M;i++)
{
if ( row[i] == col[ min_col[i] ])
{printf("Point : a[%d][%d] = %d\n",i,min_col[i],row[i]) ;
hasPoint++ ;
}
}
if ( hasPoint == 0 )
printf("No points.");
}
热心网友
时间:2023-10-30 21:41
1、鞍点为矩阵元素所在行的最大值,以及所在列的最小值。
2、首先,定义3个整型变量,保存控制循环的变量,以及标志是否有鞍点。
3、接着,定义三个整型数组变量,保存矩阵各元素,以及每一行的最大值和每一列的最小值。
4、设置最大值数组和最小值数组的初值,用memset函数实现。
5、然后,用两层循环,控制输入矩阵的各元素。
6、用两层for循环,控制每一行最大值、每一列最小值的获取。
7、用if语句,控制每一行最大值的获取。
8、继续用if语句,获取矩阵每一列的最小值。
9、然后,逐个读取矩阵中的元素,判断是否鞍点,如果是鞍点则输出坐标和值。
10、最后,当矩阵中没有鞍点时,输出此矩阵无鞍点的信息。
11、运行程序,当输入一个5*5矩阵后,电脑就会判断出有无鞍点,并输出鞍点的坐标和值。
热心网友
时间:2023-10-30 21:41
#include <stdio.h>
#define M 50
#define N 50
int main(void) {
int i,j,m,n;
int max,jmax,flag,f = 1;
int a[M][N];
scanf("%d%d",&m,&n);
for(i = 0; i < m; ++i)
for(j = 0; j < n; ++j)
scanf("%d",&a[i][j]);
for(i = 0; i < m; ++i) {
max = a[i][0];
jmax = 0;
for(j = 1; j < n; ++j) { // 找出i行最大的
if(max < a[i][j]) {
max = a[i][j];
jmax = j; // 且记录所在的列坐标
}
}
flag = 1; // 预置标志
for(j = 0; j < m && flag; ++j) { // 判断max是否为所在列最小的
if(a[j][jmax] < max) // 不是
flag = 0; // 则清标志
}
if(flag == 1) {
printf("鞍点:a[%d][%d] = %d\n",i,jmax,max);
f = 0;
}
}
if(f) printf("没有鞍点。\n");
return 0;
}
热心网友
时间:2023-10-30 21:42
#include<stdio.h>
#define M 3
#define N 3
void main()
{
int row[100] = {0};
int col[100] = {0};
int min_col[100] = {0};
int a[M][N];
int i,j ;
int hasPoint = 0 ;
printf("请输入矩阵元素!\n");
for(i=0;i<M;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("矩阵元素如下:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%d ",a[i][j]);
printf("\n");
}
for(i=0;i<M;i++)
{
row[i]=a[i][0];
// 最小值初始化
// 找每一行中的最小值
for(j=1;j<N;j++)
if(a[i][j]<row[i])
{
row[i]=a[i][j];
min_col[i] = j ; // row[i] 记录的是该行最小元素的列号
}
}
for(j=0;j<N;j++)
{
col[j]=a[0][j];
// 最大值初始化
// 找每一列中的最大值
for(i=1;i<M;i++)
if(a[i][j]>col[j])
{
col[j]=a[i][j];
}
// 重新确定最大值
}
// min_col[i] 记录的是第i行最小值所在的列,把row[i] 和该列的最大值比较即可
for(i=0;i<M;i++)
{
if ( row[i] == col[ min_col[i] ])
{printf("Point : a[%d][%d] = %d\n",i,min_col[i],row[i]) ;
hasPoint++ ;
}
}
if ( hasPoint == 0 )
printf("No points.");
}