Итак - я не совсем уверен, что знаю, что вы хотите, чтобы вывод был - но есть несколько проблем с тем, что у вас есть:
0: для ваших массивов имена должны описывать то, что массив в действительности содержит, A и C довольно неоднозначны.
1: используйте {} для определения области действия и ставьте {} в свои строки. (Возможно, он плохо вставлен в переполнение стека)
2: У вас есть набор циклов, который в основном устанавливает все в C на 0:
for(i=0;i<rows;i++)
{
for(j=0;j<cols; j++)
{
C[i][j]=0;
}
}
Тогда сразу после этого у вас есть:
for(i=0;i<rows;i++)
{
for(j=0;j<cols; j++)
{
A[i][j]=C[i++][j]; // <--- problem here
}
}
Итак, и A, и C заполнены всеми 0. Кроме того, у вас есть встроенный i ++ при доступе к столбцам в C. Это на самом деле меняет значение, используемое вашим циклом for, поэтому я получаю инкремент для каждой строки и для каждого столбца. Предположительно, вы хотите:
A[i][j]=C[i+1][j];
3: у вас есть похожая проблема здесь:
for(j=0;j<cols; j++)
{
for(i=0;i<rows;i++)
{
C[i][j]+=A[i][j++]; // Presumably you want j+1
}
}
4: Почему вы используете массив символов для C? Если он содержит сумму целых чисел, он, вероятно, должен быть объявлен как int. Если вы решили напечатать целые числа как шестнадцатеричные (или просто простые), было бы проще просто использовать printf для вывода целых чисел как шестнадцатеричных:
// use %d to print the integer "normally" (base 10)
// use %x if you want a hex value with lowercase letters
// use %X if you want a hex value with capital letters
printf("125 as hex is: 0x%x", 125); // 0x7d
Надеюсь, это направит вас в правильном направлении.
- Дан