c 语言编程。输入二维数组a[3][5],打印其中最小值最大值,及其对应的行列位置。

如题所述

第1个回答  2011-07-01
自己看着改下
输入4×4的数组,编写程序实现:

(1)求出对角线上各元素的和;(2)求出对角线上行、列下标均为偶数的各元素的积;(3)找出对角线上其值最大的元素和它在数组中的位置

请输入16个数组元素:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
对角线元素和为:68,对角线偶数下标元素积为:11,
对角线元素中最大元素为:16,在数组中下标为:a[3][3]。
Press any key to continue

#include "stdio.h"
// 1 2 3 4
// 5 6 7 8
// 9 10 11 12
// 13 14 15 16

main()
{
int i,j,sum=0,multi=1,maxA,mPosj,mPosi,a[4][4];
//输入
printf("请输入16个数组元素:\n");
for (i=0;i<4;i++)
{
for (j=0;j<4;j++)
{
scanf("%d",&a[i][j]);
}
}
//求对角线 元素和 偶数下标元素乘积 最大数
maxA = a[0][0];
for (i=0;i<4;i++)
{
sum += a[i][i];
if (i%2==0)
{
multi *= a[i][i];
}
if (maxA<a[i][i])
{
maxA = a[i][i];
mPosj = mPosi = i;
}
}
for (i=3,j=0;i>=0,j<4;i--,j++)
{
sum+=a[i][j];
if (i%2==0 && j%2==0)
{
multi *=a[i][j];
mPosj = mPosi = i;
}
if (maxA<a[i][j])
{
maxA = a[i][j];
mPosj = j;
mPosi = i;
}
}
printf("对角线元素和为:%d,对角线偶数下标元素积为:%d,\n对角线元素中最大元素为:%d,在数组中下标为:a[%d][%d]。\n",sum,multi,maxA,mPosi,mPosj);
}追问

谢谢啊

第2个回答  推荐于2016-05-16
#include <stdio.h>
void PrintMaxMin(int a[3][5])
{
int max,min;
int maxIndex[2]={0,0};
int minIndex[2]={0,0};
max = min = a[0][0];
for(int i = 0; i < 3; ++i )
{
for(int j = 0; j < 5; ++j)
{
if(a[i][j] > max)
{
max = a[i][j];
maxIndex[0] = i;
maxIndex[1] = j;
}
if(a[i][j] <min )
{
min = a[i][j];
minIndex[0] = i;
minIndex[1] = j;
}
}
}
printf("最大值为:%d 位置: %d 行 %d 列\n",max,maxIndex[0],maxIndex[1]);
printf("最小值为:%d 位置: %d 行 %d 列\n",min,minIndex[0],minIndex[1]);
}
void main()
{
int a[3][5];

for(int i = 0; i < 3; ++i )
{
for(int j = 0; j < 5; ++j)
{
printf("输入第%d个元素\n",i * 5 + j + 1);
scanf("%d",&a[i][j]);
}
}
PrintMaxMin(a);
}追问

看起来不错哦,但是不能通过编译。那能不能说一下思路给我呢。

追答

我在VC2005下测过的,你用的什么编译器啊,思路就是 遍历每个元素,与max ,min作比较,碰到比max大的就赋给max,碰到比min小的就赋给min,这样下来,max就是最大的,min就是最小的

追问

我用的win-tc啊,我是初学者,那是老师给的作业。比如说一维数组我会求最大值。二维就不知道用变量改变行数,只懂得改列数。

追答

win-tc我没用过,这代码里全是标准C的代码,应该不会编译不通过啊

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网