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