当前位置: 代码迷 >> C语言 >> 问题:动态分配的问题
  详细解决方案

问题:动态分配的问题

热度:336   发布时间:2007-12-07 18:27:48.0
问题:动态分配的问题
#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);
}
搜索更多相关的解决方案: arr  int  max  动态  

----------------解决方案--------------------------------------------------------
#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);
}
----------------解决方案--------------------------------------------------------