【c语言编程】矩阵求最大值或最小值并返回它所在的行号与列号

如题所述

#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);
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-06-03
#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);
}

相似回答
大家正在搜