gpt4 book ai didi

c - 用0-99的随机数填充C中的二维数组,然后按降序排序

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:16 24 4
gpt4 key购买 nike

这对我的家庭作业来说是个问题,但我一直在尝试打印数组。该程序将提示用户输入“行数”和“列数”,但会立即终止而不打印任何内容,我不确定为什么会这样。

我的排序功能也不起作用。代码给了我关于指针的错误,但在这一点上我不太熟悉它们。如果有一种不用指针的方法,我想那会更好。但如果最好的方法是使用指针,请包括它。非常感谢您的帮助

警告:赋值从指针生成整数而不进行强制转换 [-Wint-conversion] temp = A[i];

错误:赋值给数组类型的表达式 A[i] = A[j];

错误:赋值给数组类型的表达式 A[j] = 温度;

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N1 100

#define M1 100

void fillMatrix(int A[][M1], int N, int M);
int sortMatrix(int A[][M1],int rowsize, int colsize);
void displayArray(int A[][M1], int N, int M);

int main(void)
{
int array[N1][M1] = {0};

fillMatrix(array, N1, M1);

displayArray(array, N1, M1);

//sortMatrix(array, N1, M1);

return 0;
}

void fillMatrix(int A[][M1], int N, int M)
{
int rows = 0, columns = 0;
//ASK FOR ROWS
printf("Enter a number of rows: ");
scanf("%i", &rows);

if(rows < 0 && rows >= 100)
{
printf("Invalid Input.\n");
printf("Enter a number of rows: ");
scanf("%i", &rows);
}
//ASK FOR COLUMNS
printf("Enter a number of columns: ");
scanf("%i", &columns);

if(columns < 0 && columns >= 100)
{
printf("Invalid Input.\n");
printf("Enter a number of columns: ");
scanf("%i", &columns);
}
//FILLS ARRAY W/ RANDOM INT VALUES BETWEEN 0 AND 100
srand(time(NULL));

for(int i = 0; i < rows; i++)
{
for(int j = 0; j < columns; j++)
{
A[i][j] = 0 + rand() % 100;
}
}
}

/*int sortMatrix(int A[][M1],int rowsize, int colsize)
{
int temp = 0;
for(int i = 0; i < rowsize; i++)
{
for (int j = 0 ; j < colsize; j++)
{
if(A[i] > A[j])
{
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}
return 0;
}*/

void displayArray(int A[][M1], int N, int M)
{
for(int i = 0; i < N; i++)
{
for(int j = 0; j < M; j++)
{
printf("%i ", A[i][j]);
}
}
}

最佳答案

是的,好吧。首先 sortMatrix(int A[][M1]...。在这种情况下,您将传递一个指向数组行的指针。在 C++ 中,没有其他方法可以将数组传递给函数,仅通过指针。 Look over there.

其次,当您执行类似A[i] > A[j] 的操作时,您正在比较行的指针(顺便说一下,通常是 comparing pointers is UB。但是,在您的在这种情况下,这只是比较行地址,这仍然不是您想要对数组进行排序时应该做的事情)。我建议使用 A[i][M1] > A[j][M1]。这样,您将比较元素。

最后但并非最不重要的一点。

but will terminate immediately without printing anything

您是说控制台窗口会立即关闭吗?在这种情况下,您可能需要在打印数组后将 cin.get(); 添加到您的代码中,或者添加 system("pause");,以防您使用 clear C,或 something like this , 如果不。

UPD。

  1. 如果您使用的是干净的 C,那么您应该使用 cin.get(); 而不是 getchar();
  2. system("pause"); 真正只有 Windows 的东西。

附注另外,请阅读 Paul Ogilvie 和 Mike Housky 的其他笔记。他们正在写好东西。

p.p.s.请原谅,如果有任何错误。英语不是我的母语,所以请随意编辑答案。

如果您有任何问题,请随时与我联系。我会尽力回答。

关于c - 用0-99的随机数填充C中的二维数组,然后按降序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51310589/

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