【c语言编程】矩阵求最大值或最小值并返回它所在的行号与列号
发布网友
发布时间:2024-03-31 02:54
我来回答
共2个回答
热心网友
时间:2024-08-29 13:39
#include<stdio.h>
void main()
{
int i,j,minv,mini,minj,sum=0;
int a[4][4];
printf("请输入矩阵中的16个数:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
minv=a[0][0];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{
if(a[i][j]<minv)
{
minv=a[i][j];
mini=i+1;
minj=j+1;
}
if(i==j)
sum+=a[i][j];
}
printf("矩阵中最小值为%d,它在第%d行,%d列!\n",minv,mini,minj);
printf("矩阵中对角线元素之和为%d",sum);
}
你需要动态的可以这样写:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,j,minv,mini=1,minj=1,sum=0,h,l;
printf("请输入矩阵的大小:");
scanf("%d%d",&h,&l);
int **a=(int **)malloc(sizeof(int*)*h);
for(i=0;i<l;i++)
a[i] = (int *)malloc(sizeof(int)*l);
printf("请输入矩阵中的%d个数:\n",h*l);
for(i=0;i<h;i++)
for(j=0;j<l;j++)
scanf("%d",&a[i][j]);
minv=a[0][0];
for(i=0;i<h;i++)
for(j=0;j<l;j++)
{
if(a[i][j]<minv)
{
minv=a[i][j];
mini=i+1;
minj=j+1;
}
}
printf("矩阵中最小值为%d,它在第%d行,%d列!\n",minv,mini,minj);
minv=a[0][0];
for(i=0;i<h;i++)
for(j=0;j<l;j++)
{
if(a[i][j]>minv)
{
minv=a[i][j];
mini=i+1;
minj=j+1;
}
}
printf("矩阵中最大值为%d,它在第%d行,%d列!\n",minv,mini,minj);
}
热心网友
时间:2024-08-29 13:40
#include<stdio.h>
void main()
{
int a[3][4]; //定义该数组
for (int i = 0;i < 3;i++) //输入数组
for (int j = 0;j < 4;j++)
{
scanf("%d",&a[i][j]);
};
int max,min; //定义最大值和最小值
max = a[0][0] > a[0][1] ? a[0][0] : a[0][1]; //让最大值初始为a[0][0]和a[0][1]中的较大数
min = a[0][0] + a[0][1] - max; //同上,为较小数
for (int x = 0;x < 3;x++) //寻找最大值
for (int y = 2;y < 4;y++)
{
max = max > a[x][y] ? max : a[x][y]; //如果大于max则赋值给max
};
for (int x1 = 0;x1 < 3;x1++) //同上
for (int y1 = 2;y1 < 4;y1++)
{
min = min < a[x1][y1] ? min : a[x1][y1];
}
printf("max = %d\n",max);
printf("min = %d",min);
}