如何用C语言解决该数组输出问题

已经会用C语言输出数组中第二大的值了,但是如何处理数组元素的符号只比较它们的绝对值大小呢,又如何输出其在数组第几行第几列的位置呢

img


输出示例要求如图中所示

比较的时候用abs()处理一下就可以了(或者自己写个转换函数,把负数转成正数),
运行结果:

img

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//写个函数用来将负数转成正数
double fun(double n)
{
    if (n < 0) return -n;
    else return n;
}


int main() {
    double a[3][4];
    int i, j;
    int minRow = 0, minCol = 0; //最小的数的下标
    int minRow2 = 0, minCol2 = 0; //第二小的值下标(绝对值比较)
    //输入3*4的二维数组
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
            scanf("%lf", &a[i][j]);
    }
    //开始比较
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 4; j++)
        {
            if ( fun(a[i][j]) < fun(a[minRow][minCol])  )
            {
                minRow = i;
                minCol = j;
            }
            if ( fun(a[i][j]) < fun(a[minRow2][minCol2]) && fun(a[i][j]) > fun(a[minRow][minCol]) )
            {
                minRow2 = i;
                minCol2 = j;
            }
        }
    }
    //输出
    printf("(%d,%d)=%lf",minRow2+1,minCol2+1,a[minRow2][minCol2]);

    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632