求出4*4矩阵中最大和最小的元素值及其所在的行下标和列下标,再求出两条主对角线元素之和。
我的思想是:
1、 求最大值的行和列下标,定三个int型:max(寻找最大值),maxh(寻找最大值所在行),maxl(寻找最大值所在列)
2、求最小值如1;
3、从左上到右下的对角线坐标规律:横坐标和纵坐标相等。所以用一个int ans1=0统计它们就行了;
4、从右上到左下的对角线坐标规律:横坐标+纵坐标=5。所以用一个int ans2=0统计它们就行了。
1 | 2 | 3 | 4 | |
---|---|---|---|---|
1 | (1,1) | (1,2) | (1,3) | (1,4) |
2 | (2,1) | (2,2) | (2,3) | (2,4) |
3 | (3,1) | (3,2) | (3,3) | (3,4) |
4 | (4,1) | (4,2) | (4,3) | (4,4) |
C++代码
#include<cstdio>//这里用cstdio就可以用定义max和min了,如果是iostream库函数就会出错,因为iostream库里有max函数和min函数
int max=-1,maxh,maxl,min=1000000001,minh,minl,a[10][10],ans1,ans2;//定义在main函数外,初始值自动为0
int main()
{
printf("请输入\n");
for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]>max)
{
max=a[i][j];//打擂台选最大
maxh=i;
maxl=j;
}
if(a[i][j]<min)
{
min=a[i][j];//打擂台选最小
minh=i;
minl=j;
}
}
}
for(int i=1;i<=4;i++)
{
ans1+=a[i][i];
ans2+=a[i][5-i];
}
printf("最大值所在行:%d\n最大值所在列:%d\n最小值所在行:%d\n最小值所在列:%d\n对角线和分别为%d、%d。",maxh,maxl,minh,minl,ans1,ans2);
return 0;//养成好习惯
}