gpt4 book ai didi

c - 二维数组如何打印数字及其坐标

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:14 25 4
gpt4 key购买 nike

我需要找到并打印出二维数组每一行中的最大值和最小值。到目前为止,这是我尝试过的。

int max(int N, int masyvas[][])
{
int i, j, max[N][N]
for(i=0; i<N; i++)
for(j=i; j<N; j++)
if(masyvas[i][j] > max) max=masyvas[i][j];
return max;
}

我知道这行不通,但它是否至少有一点用处?关于我应该如何处理这个问题的任何建议?

最佳答案

你非常接近。两个主要问题是 max 类型(不应该是另一个数组,但只是一个普通的 int),以及你没有重置的事实每行之前的 max 值。

int i, j, max;
for(i=0; i<N; i++) {
max = 0; // reset max before checking a row
for(j=i; j<N; j++) {
if (masyvas[i][j] > max) max = masyvas[i][j];
}
}

添加 min 检查应该不难:

int i, j, max, min;
for(i=0; i<N; i++) {
max = min = 0; // reset max & min before checking a row
for(j=i; j<N; j++) {
if (masyvas[i][j] > max) max = masyvas[i][j];
if (masyvas[i][j] < min) min = masyvas[i][j];
}
// print the values here
}

现在,您说您想要打印这些值。你可以在结束时这样做外循环,如上所示。像原来一样返回最终值代码没有多大意义,因为只有最后一行 max 和 min 仍然会在那里。另一种方法(可能是您想要的)是使 max 和 min 成为一个数组并返回一个指针:

int *maxValues = calloc(sizeof(int) * N);
int i, j;
for(i=0; i<N; i++)
for(j=i; j<N; j++)
if (masyvas[i][j] > maxValues[i]) maxValues[i] = masyvas[i][j];

return maxValues;

您可能已经注意到返回最大值和最小值(数组)您将需要另一个级别的指针...

int **
find_max_and_min(int **masyvas)
{
int **values = malloc(sizeof(int *) * 2);
values[0] = calloc(sizeof(int) * N); // to hold min
values[1] = calloc(sizeof(int) * N); // to hold max

for (int i = 0; i < N; i++) {
for (int j = i; j < N; j++) {
if (masyvas[i][j] > values[1][i]) values[1][i] = masyvas[i][j];
if (masyvas[i][j] < values[0][i]) values[0][i] = masyvas[i][j];
}
}
return values;
}

int **result = find_max_and_min(data);
// now result[0] is a 1d array of N size with the minimal values of each
// row i from data, and result[1] is a similar array but holding the max
// of each row.

关于c - 二维数组如何打印数字及其坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40792179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com