如何从其他行中差异最大的2D阵列中打印特定行

  • 本文关键字:2D 阵列 打印 其他 c
  • 更新时间 :
  • 英文 :


我试图解决一个问题。它说,我可以让用户输入一些数字到一个数组中,并显示这对数字的差值最大。我已经逐行解决了所有行的差异,但现在我无法打印其他行中差异最大的特定行。

这是我的代码-

#include<stdio.h>
#include<limits>
int main()
{
int array1[10][10];
int num, row, column;
printf("How many rows and columns are needed: ");
scanf("%d %d", &row, &column);
printf("nHow many numbers you want to enter: ");
scanf("%d", &num);
printf("nEnter %d numbers: ", num);
for(int i=0; i<row; i++)
{
for(int j=0; j<column; j++)
{
scanf("%d", &array1[i][j]);
}
printf("n");
}
for(int i=0; i<row; i++)
{
int largeA = array1[i][0];
int smallA = array1[i][0];
int highEleInArray = array1[0][0];
for(int j=0; j<column; j++)
{
if(array1[i][j] > largeA)
{
largeA = array1[i][j];
}
if(array1[i][j] < smallA)
{
smallA = array1[i][j];
}
}
unsigned diff = 0u +  largeA - smallA;
printf("%dn", diff);
int flag = 0;
for(int j=0; j<i; j++)
{
flag = 1;
//check if there's any similar column
for(int k=0; k<=column; k++)
{
if(array1[i][k] != array1[i][k])
{
flag = 0;
}
if(flag == 1)
{
break;
}
}
//if none of the row is similar
if(flag == 0)
{
for(int j=0; j<column; j++)
{
if(array1[i][j] > highEleInArray)
{
if(highEleInArray == diff)
{
highEleInArray = array1[i][j];
printf("n%dn", highEleInArray);
}
}
}
}
}
}
return 0;
}

我期待这个输出-

样本输入

20 27 28 22

12 22 12 20

22 24 25 33

33 30 30 29

样本输出

8

10

11

4

22 24 25 33的差异最大,为11。

您所需要做的就是记住最高行的索引以及差异,如下所示:

unsigned highdiff = 0;
int highrow = 0;
...
if (diff > highdiff)) {
highdiff = diff;
highrow = i;
}

...
for(int j=0; j<column; j++) {
printf("%d ", array1[highrow][j]);
}
printf("has the highest difference which is %un", highdiff);

最新更新