问题:动态分配的问题
#include<stdio.h>void max(int arr[][3],int m,int n);
void main()
{
int arr[2][3];
int i,j;
printf("input the data for arr:");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
scanf("%d",&arr[i][j]);
printf("\n");
}
max(arr,2,3);
getch();
}
void max(int arr[][3],int m,int n)
{
int max,c=0,l=0,i,j;
int (*p)[3];
max=arr[0][0];
p=arr;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if (max<*(*(p+i)+j))
{
max=*(*(p+i)+j);
l=i;
c=j;
}
printf("\nthe max value is:%d",max);
printf("\nthe line is:%d.the column is:%d.\n",l,c);
}
这个是我原来的程序
现在我想用动态分配的办法来实现
下没是我写的 但是问题很多 我改不来 希望高手来帮忙改改
#include<stdio.h>
void max(int *p,int m,int n);
void main()
{
int *p=NULL;
int i,j,c,l;
printf("input lines of arr:");
scanf("%d",&l);
printf("input column of arr:");
scanf("%d",&c);
p=(int *)calloc(l*c,sizeof(int));
if(!p)
{
printf("memory request failed!\n");
exit(1);
}
/* */
printf("input the data for arr:");
for(i=0;i<l;i++)
{
for(j=0;j<c;j++)
scanf("%d",*(p+i)+j);
printf("\n");
}
/**/
max(*p,l,c);
free(p);
getch();
}
void max(int *p,int m,int n)
{
int max,col=0,line=0,i,j;
int (*p1)[];
max=*p1;
/**/
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if (max<*(*(p1+i)+j))
{
max=*(*(p1+i)+j);
line=i;
col=j;
}
printf("\nthe max value is:%d",max);
printf("\nthe line is:%d.the column is:%d.\n",line,col);
}
----------------解决方案--------------------------------------------------------
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void MAX(int *p,int m,int n);
int main()
{
int *p=NULL;
int i,j,c,l;
printf("input lines of arr:");
scanf("%d",&l);
printf("input column of arr:");
scanf("%d",&c);
p=calloc(l*c,sizeof(int));
if(!p)
{
printf("memory request failed!\n");
exit(1);
}
printf("input the data for arr:\n");
for(i=0;i<l;i++)
for(j=0;j<c;j++)
scanf("%d",p+i*c+j);
printf("\n");
for(i=0;i<l;i++)
for(j=0;j<c;j++){
printf("%10d",*(p+i*c+j));
if(j==c-1)
printf("\n");
}
MAX(p,l,c);
free(p);
getch();
return 0;
}
void MAX(int *p,int m,int n)
{
int max,col=0,line=0,i,j;
max=*p;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
if (max<*(p+i*n+j))
{
max=*(p+i*n+j);
line=i;
col=j;
}
printf("\nthe max value is:%d",max);
printf("\nthe line is:%d.the column is:%d.\n",line,col);
}
----------------解决方案--------------------------------------------------------