首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-10-18 
C语言动态二维double型数组赋值问题#includestdio.h#includemalloc.htypedef struct Array{double **a

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 

热点排行