gpt4 book ai didi

c - c代码有什么问题吗?

转载 作者:行者123 更新时间:2023-11-30 20:46:01 25 4
gpt4 key购买 nike

#include<stdio.h>
int findMax(int **a,int m,int n)
{
int max,i,j;
max=a[0][0];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if(max<a[i][j])
max=a[i][j];
return max;
}
int main()
{
int a[20][20],m,n,i,j,maxim;
scanf("%d",&m); //Rows
scanf("%d",&n); //Cols
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
maxim=findMax((int **)a,m,n);
printf("Max is %d\n",maxim);
return 0;
}

上面的代码必须给出输入矩阵中的最大元素。

问题
编译代码时,我没有收到任何错误或警告,但在执行期间,代码在接受输入后停止运行。!

问题陈述指出必须使用int findMax(int **a,int m,int n)

最佳答案

二维数组不会衰减为指向指针的指针。通过使用:

  maxim=findMax((int **)a,m,n);

您正在强制编译器忽略您的错误。

而不是

int findMax(int **a,int m,int n)

使用

int findMax(int a[][20],int m,int n)

然后,只需使用以下命令调用该函数:

  maxim=findMax(a,m,n);

你说:

The problem statement says that int findMax(int **a,int m,int n) has to be used.

在这种情况下,您不能将二维数组用于 a。您必须使用:

int main()
{
// Define a to be an array of pointers.
int* a[20];
int m,n,i,j,maxim;

scanf("%d",&m); //Rows

// Make sure m not greater than 20. Otherwise, you'll end up
// accessing memory out of bounds.
if ( m > 20 )
{
// Deal with error.
}

scanf("%d",&n); //Cols

for(i=0;i<m;i++)
{
a[i] = malloc(sizeof(int)*n);
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}

maxim=findMax(a,m,n);
printf("Max is %d\n",maxim);

// Deallocate memory.
for(i=0;i<m;i++)
{
free(a[i]);
}

return 0;
}

关于c - c代码有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925206/

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