已经会用C语言输出数组中第二大的值了,但是如何处理数组元素的符号只比较它们的绝对值大小呢,又如何输出其在数组第几行第几列的位置呢
比较的时候用abs()处理一下就可以了(或者自己写个转换函数,把负数转成正数),
运行结果:
代码如下:
#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;
}