2016-12-16 12 views
0

Это программа для добавления матриц, но кажется, что компилятор пропускает второй scanf во втором вложенном цикле.Почему компилятор пропускает мой второй цикл scanf?

void input_add_matrices() { 
    printf("Input number of rows for matrices: "); scanf("%d", &nrow_matrix1); getchar(); 
    printf("Input number of columns for matrices: "); scanf("%d", &ncolumn_matrix1); getchar(); 
    printf("\nInput elements for matrix 1:\n"); 
    for(i=0; i<nrow_matrix1; i++){ 
     for(j=0; j<ncolumn_matrix1; j++){ 
      scanf("%d", &element_matrix1[i][j]); getchar(); 
     } 
    } 
    nrow_matrix2=nrow_matrix1; 
    ncolumn_matrix2=ncolumn_matrix2; 
    printf("\nInput elements for matrix 2:\n"); 
    for(i=0; i<nrow_matrix2; i++){ 
     for(j=0; j<ncolumn_matrix2; j++){ 
      scanf("%d", &element_matrix2[i][j]); getchar(); 
     } 
    } 
} 

Это ошибка компилятора или что-то еще? Пожалуйста помоги.

Выход:

Input number of rows for matrices: 2 
Input number of columns for matrices: 2 

Input elements for matrix 1: 
1 
2 
1 
2 

Input elements for matrix 2: 

Матрица 2 пусто.

+0

Параметр 'getchar' вызов не требуется. Формат ''% d ''для' scanf' пропускает ведущие пробелы, в том числе новую строку (что, я думаю, вас беспокоит). –

+1

Даже если я опускаю функцию getchar, она все еще встречается. –

+0

Поместите точку останова на этот второй цикл и отлаживайте свой код. Если он останавливается там, то это не компилятор, который пропускает этот цикл. Возможно, ваша программа действительно делает то, что вы ожидаете от нее, но это не значит, что компилятор ничего пропускает. –

ответ

5

Я думаю, что это строка кода ncolumn_matrix2=ncolumn_matrix2;, что приводит к ncolumn_matrix2 быть 0, так что цикл не вошел

+0

О, боже мой. Спасибо. Я этого не видел. –

+1

В этом случае это, по-видимому, ноль, но это действительно зависит от того, как инициализировалась «ncolumn_matrix2». Если это * не * инициализировано до этого значения * неопределенно *. –

+0

Да, спасибо. Это была моя вина. Я не видел, что я нажимаю 2 вместо 1. Это ошибка опечатки. Hahaha –

Смежные вопросы