Я пытался решить задачу в C на HackerRank. Существует квадратная матрица с n строками и столбцами. Задача состоит в том, чтобы напечатать абсолютную разницу между двумя суммами диагоналей матрицы как одно целое.Printf не работает, если присутствует другой printf
Вот ссылка: https://www.hackerrank.com/challenges/diagonal-difference
Я могу получить правильный ответ, но оператор Е() в конце кода не работает, если я не добавить ненужный Printf («») до для оператора цикла. Может ли кто-нибудь объяснить, почему это происходит?
Заранее спасибо
Вот код:
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>
int main()
{
int n;
scanf("%d",&n);
int a[n][n],sum_d1=0,sum_d2=0,a_i,a_j;
for(a_i = 1; a_i <= n; a_i++)
{
for(a_j = 1; a_j <= n; a_j++)
{
scanf("%d",&a[a_i][a_j]);
if(a_j==a_i)
sum_d1=sum_d1+a[a_i][a_j];
}
}
printf("");// the last printf works only when this statement is present
for(a_i=1;a_i<=n;a_i++)
{
for(a_j=n;a_j>0;a_j--)
{
if((a_i+a_j)==(n+1))
sum_d2=sum_d2+a[a_i][a_j];
}
}
printf("%d",abs(sum_d1-sum_d2)); //this doesn't work if there is no printf above
return 0;
}
Вы неопределенное поведение, потому что вы индексирует массив в позиции '[ п] '. – paddy
У вас также отсутствует ошибка новой строки. Добавьте '\ n' в конец строки формата, чтобы исправить ее. Таким образом, линия закончится правильно, а не болтается при выходе из программы. –
@TomKarzes Почему пустая строка printf до этого исправить? – Barmar