读书人

C语言动态二维double型数组赋值有关问

发布时间: 2012-10-18 13:46:55 作者: rapoo

C语言动态二维double型数组赋值问题
#include"stdio.h"
#include"malloc.h"

typedef struct Array
{
double **a;
int row_num;
int col_num;
}Array;


main()
{

int i,j;
Array arr1;

//input A
printf("Matrix A\nInput rows and columns:");
scanf("%d %d", &arr1.row_num, &arr1.col_num);
printf("%d rows, %d columns\n", arr1.row_num, arr1.col_num);
arr1.a=(double **)malloc(arr1.row_num*sizeof(double *));
for(i=0;i<arr1.row_num;i++)
{
arr1.a[i]=(double*)malloc(arr1.col_num*sizeof(double));
}
for(i=0;i<arr1.row_num;i++)
{
for(j=0;j<arr1.col_num;j++)
{
printf("Input A[%d][%d]: ",i,j);
scanf("%f",&arr1.a[i][j]);
//printf("%d\n", &arr1.a[i][j]);
}
}
//printf("%d %d",arr1.a,&arr1.a[0][0]);

printf("\nmatrix A = ");
for(i=0;i<arr1.row_num;i++)
{
for(j=0;j<arr1.col_num;j++)
{
printf("%f ",arr1.a[i][j]);
}
printf("\n ");
}

printf("\n");

for(i=0; i<arr1.row_num; i++)
{
free(arr1.a[i]);
}
free(arr1.a);
}


为什么输出数组元素不正确,如图片所示。请大家帮帮忙,感激不尽!




[解决办法]

C/C++ code
//在堆中开辟一个4×5的二维double数组#include <stdio.h>#include <malloc.h>double **p;int i,j;void main() {    p=(double **)malloc(4*sizeof(double *));    if (NULL==p) return;    for (i=0;i<4;i++) {        p[i]=(double *)malloc(5*sizeof(double));        if (NULL==p[i]) return;    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            p[i][j]=(double)(i*5+j);        }    }    for (i=0;i<4;i++) {        for (j=0;j<5;j++) {            printf(" %4.1lf",p[i][j]);        }        printf("\n");    }    for (i=0;i<4;i++) {        free(p[i]);    }    free(p);}//  0.0  1.0  2.0  3.0  4.0//  5.0  6.0  7.0  8.0  9.0// 10.0 11.0 12.0 13.0 14.0// 15.0 16.0 17.0 18.0 19.0 

读书人网 >C++

热点推荐