gpt4 book ai didi

c - 二维数组 - 排序 |读取位置错误|访问冲突在C中

转载 作者:行者123 更新时间:2023-11-30 17:47:27 25 4
gpt4 key购买 nike

嘿伙计们,我正在尝试完成我的代码,但我没有获取值,而是收到错误消息.当我要输入留置权编号 54 或 60 时。

if(*arr[rows*columns]<num) or printf("Number value %d in a two-dimensional size is:%d\n",num,*arr[num]);

这是错误消息。

LB_12.exe 中 0x013137b2 处出现未处理的异常:0xC0000005:读取位置 0xabababab 时发生访问冲突

下一张图片中的任务描述和错误消息。怎么了?如果我希望程序打印这些值,我必须创建另一个数组并复制这些值?

Mission discrption and error msg

这是我的代码

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
void SortArray(int **arr,int rows,int columns,int num);
void freemalloc ( int **arr,int rows);

void main()
{
int **arr;
int i,j,rows,columns,num;
printf("Please enter the size of 2D array(rows ,cols)");
scanf("%d %d",&rows , &columns);
arr=(int **)malloc(rows*sizeof(int *)); // Allocate array of pointers
if(!arr) // Terms - if there is not enough memory,print error msg and exit the program.
{
printf("alloc failed\n");
return ;
}
for(i=0; i<rows; i++)
arr[i]=(int *)malloc(columns*sizeof(int)); // Allocate memory for each row
printf("Please fill the 2D array\n");
for(i=0 ; i<rows ; i++)
{
for (j=0 ; j<columns ; j++)
{
printf("row:%d columns:%d\n", i,j);
scanf("%d" , &arr[i][j]);
}
}

printf("Please enter a postive number: ");
scanf("%d",&num);
SortArray(arr,rows,columns,num);
freemalloc(arr,rows);

system("pause");
return;
}
void SortArray(int **arr,int rows,int columns,int num)
{
int i,j,temp;
for(i=0 ; i<rows ; i++ ) // Bubble sort for sorting the 2d array
{
for(j=0 ; j<i-1 ; j++ )
{
if(arr[i][j]>arr[i][j+1])
{
temp=arr[i][j];
arr[i][j]=arr[i][j+1];
arr[i][j+1]=temp;
}
}
}
if(*arr[rows*columns]<num)
{
printf("No solution,The maximum value is:%d\n",arr[rows*columns]);
}
else
{
printf("Number value %d in a two-dimensional size is:%d\n",num,*arr[num]);
}
}
void freemalloc ( int **arr,int rows)
{
int i;
for (i=0 ; i<rows ; i++) // Loop for free the array of pointers
{
free(arr[i]); // free each seprate row
}
free(arr);
}

最佳答案

我的猜测是rows * columns大于您分配的值,这意味着您尝试取消引用随机指针,导致未定义的行为并导致崩溃。

此外,您永远不会对任何内容进行排序,因为外部循环条件始终为 false(尝试将 > 更改为 < )。

关于c - 二维数组 - 排序 |读取位置错误|访问冲突在C中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934536/

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