从键盘输入行数m,列数n,从堆上动态分配一个m行,n列的int型二维数组,并从

2025-06-26 08:41:07
推荐回答(2个)
回答1:

#include "stdio.h"
#include "stdlib.h"
int main(void){
    int m,n,*t,**p,i,j;
    while(1){
        printf("Enter m & n(int m,n>0)...\n");
        if(scanf("%d%d",&m,&n)==2 && m>0 && n>0){
            p=(int **)malloc(sizeof(int*)*m);
            t=(int *)malloc(sizeof(int)*m*n);
            if(!p || !t){
                printf("Application memory failure...\n");
                exit(0);
            }
            printf("Please enter %d line %d column data...\n",m,n); 
            for(j=i=0;i            for(i=0;i                for(j=0;j                    scanf("%d",p[i]+j);
                printf("\n");
            }
            free(t);
            free(p);
            break;
        }
        printf("Error, redo: ");
        fflush(stdin);
    }
    return 0;
}

回答2:

#include 
#include 
int main()
{
    int i,t,y,u;
    printf("输入m#n,用#隔开\n");
    scanf("%d#%d",&i,&t);
    int *r=(int *)malloc(i*t*sizeof(int));
    for(y=0;y    {
        for(u=0;u        {
            printf("请输入第%d行%d列的值:\n",y,u);
            scanf("%d",&(r[y+u]));
        }
    }
    free(r);
    return 0;
}