2015-01-25 3 views
-1

Здравствуйте, у меня есть такой код, и я хотел бы знать, почему он печатает только первый элемент массива.Печать 2D-массивов в C

int main() 
{ 
    double** mat; 
    int n; 
    int m; 
    printf("Input n,m\n"); 
    scanf("%d %d",&n,&m); 

    mat = (double**)malloc(n*sizeof(double*)); 
    for(int i=0; i<n; i++) 
    { 
     mat[i] = (double*)malloc(m*sizeof(double)); 
     for(int j=0; j<m; j++) 
     { 
      mat[i][j]= i*i+j*j; 
      printf("%lf\n",mat[i][j]); 

      return 0; 
     } 
    } 
} 

У меня есть еще один вопрос: что делать, если я хочу напечатать его в матричном формате?

+0

Не отвергни 'malloc' в с. –

+0

Переместите оператор 'return' в конец' main' перед '' ', чтобы исправить его. –

ответ

3

Вы возвращаете контроль из main в самом цикле - изменить код:

int main() 
{ 
    //... your code as it was before - fix your loops 
    int sum = 0; 
    for(int i=0; i<n; i++) 
    { 
     mat[i] = malloc(m*sizeof(double)); 
     for (int j = 0; j<m; j++) 
     { 
      mat[i][j] = i*i + j*j; 
      printf("%lf ", mat[i][j]); 
      sum = sum + mat[i][j]; 
     } 
     printf("\n"); 
    } 
    printf("\nsum is %d.", sum); 
    return 0; 
} 

Выход:

Input n,m 3 3 
0.000000 1.000000 4.000000 
1.000000 2.000000 5.000000 
4.000000 5.000000 8.000000 

sum is 30. 
+0

И у меня есть еще один вопрос: что мне делать, если я хочу напечатать его в матричном формате? – borbi

+0

@borbi - вам нужно поместить 'newline' во внешний цикл - см. Мои правки. – Sadique

+0

У меня есть еще один вопрос. Я хотел бы рассчитать сумму всех элементов матрицы, так как я помню двойное суммирование, и я пытаюсь сделать это как в 1D-массиве, и он не работает: int sum = 0; sum = + мат [i] [j]; pfintf ("\ n% lf", sum); Не могли бы вы сказать, где я ошибаюсь? – borbi