问题 1532: [蓝桥杯][算法提高VIP]数组输出(C++)

题目描述
输入一个3行4列的数组,找出该数组中绝对值最大的元素、输出该元素及其两个下标值。如有多个输出行号最小的,还有多个的话输出列号最小的。
输入

输出

样例输入
1  2  3  5 
-2  5  8  9 
6  -7  5  3 
样例输出
9 2 4

题目不难,但是需要注意几个细节:
1.题目描述为输出该元素,其实要输出该元素的绝对值,输入该元素原本的值的话系统判错。
2.我这里将绝对值最大的数的行号和列号分别赋给了a和b两个变量,但是要注意,在定义变量a和b时应赋初值。若不赋初值:
(1)若将Max的初值设置为0,那么有可能该数组所有元素绝对值均为0,这时便没有符合if条件的元素,因此a和b是没有值的。
(2)若将Max的初值设置为数组第一个元素的绝对值abs(num[0][0]),这时如果该数组的首个元素为绝对值最大的元素,那么同样a和b是没有值的。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int num[3][4];
    int fnum[3][4];
    for(int i=0; i<3; i++)
        for(int j=0; j<4; j++)
        {
            cin>>num[i][j];
            fnum[i][j]=abs(num[i][j]);
        }
    int Max=fnum[0][0];
    int a=0,b=0;
    for(int i=0; i<3; i++)
        for(int j=0; j<4; j++)
        {
            if(fnum[i][j]>Max)
            {
                Max=fnum[i][j];
                a=i,b=j;
            }
        }
    cout<<Max<<" "<<a+1<<" "<<b+1<<endl;
    return 0;
}
发布了8 篇原创文章 · 获赞 6 · 访问量 229

猜你喜欢

转载自blog.csdn.net/qq_41681570/article/details/104291246