Для начала объявляйте переменные в минимальном объеме, в котором они используются.
Например, это объявление
int n, i, j, k;
только сбивает с толку читателей кода. Например, неясно видеть это объявление, где объявленная переменная n
используется в коде, если она используется.
Во-вторых, не используйте magi c числа, например 10. Вместо этого используйте именованные константы.
Например, массив может быть объявлен как.
enum { N = 10 };
char a[N][N];
А в циклах вы можете написать, например,
for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ )
{
scanf( " %c", &a[i][j] );
}
}
Кажется, ваш массив не содержит строк.
Таким образом, условие в операторе if
if (strcmp(&a[i][j], "I") == 0)
{
a[i][j] = 'H';
}
недопустимо еще и потому, что вы собираетесь проверять только один символ массива с символом 'I'
, а не подмассивом массива с строковый литерал "I"
.
Перепишите оператор, например,
if ( a[i][j] == 'I' )
{
a[i][j] = 'H';
}
Вы можете вывести массив проще, используя только один для l oop, например
for ( size_t i = 0; i < N; i++ )
{
printf( ".*s\n", N, a[i] );
}