#c
#c
Вопрос:
#include <stdlib.h>
int main() {
int i, j, sum;
int a[2][4] = {{ 11, 15, 22, 7 }, { 12, 9, 16, 21 }};
for (i = 0; i < 2; i ) {
for (j = 0; j < 4; j ) {
printf("%d ", a[i][j]);
}
printf("n");
}
for (i = 0; i < 2; i ) {
sum = 0;
for (j = 0; j < 4; j ) {
sum = sum a[j][i];
}
printf("n%d", sum);
}
return 0;
}
Я пытался переключиться a[i][j]
на a[j][i]
, но он не добавляет столбцы. У меня нет проблем с добавлением строк. Я также хотел, чтобы каждый столбец соответствовал букве. Например, первый столбец A
будет 11 12
следующим.
Комментарии:
1. [i] [j] должно быть синхронизировано с диапазоном индексов. Если i из 0-1 и j из 0-3, то порядок должен быть a[i] [j]. Чтобы суммировать столбцы, вы должны изменить порядок циклов for . Сначала пройдите через j, а не через i.
Ответ №1:
Почему два цикла? Достаточно одного:
for (i = 0; i < 4; i )
{
sum = a[0][i] a[1][i];
printf("%d ", sum);
}
printf("n");
Если вы хотите два цикла:
for (i = 0; i < 4; i )
{
sum = 0;
for (j = 0; j < 2; j )
{
sum = a[j][i];
}
printf("%d ", sum);
}
printf("n");
должно сработать.
Больше проблем
#include <stdlib.h>
должно быть
#include <stdio.h>
Кроме того, объявление переменных, когда это необходимо, является хорошей привычкой в современном C, и выбирайте лучшие имена для своих переменных, т. Е. предпочитайте row
и col
снова i
j
и table
снова a
. Наконец, не используйте магические числа, такие как 2 и 4, в циклах, они подвержены ошибкам:
#include <stdio.h>
int main(void)
{
enum {rows = 2, cols = 4};
int table[rows][cols] =
{
{11, 15, 22, 7},
{12, 9, 16, 21}
};
for (size_t row = 0; row < rows; row )
{
for (size_t col = 0; col < cols; col )
{
printf("%d ", table[row][col]);
}
printf("n");
}
for (size_t col = 0; col < cols; col )
{
int sum = 0;
for (size_t row = 0; row < rows; row )
{
sum = table[row][col];
}
printf("%d ", sum);
}
printf("n");
return 0;
}
Комментарии:
1. Большое вам спасибо! Кроме того, есть ли у вас какие-нибудь идеи, можно ли добавить еще одну строку, но содержащую только буквы? Так что A соответствует 11 12, а B соответствует 15 9 и т. Д.?
2. Так что A соответствует 11 12, а B соответствует 15 9 и т. Д.? Я вас не понимаю, лучше, если вы исправите свой код и зададите новый вопрос с более подробной информацией.
Ответ №2:
Перед добавлением к нему любого другого значения установите значение sum равным 0. Язык программирования C не инициализирует значения нулем по умолчанию, вам нужно сделать это вручную.
int i, j, sum = 0;
Кроме того, добавление к сумме должно быть записано следующим образом:
sum = sum a[i][j];
Кроме этого, вам не нужно использовать два цикла, просто добавьте предыдущую строку в первый цикл после печати.
Комментарии:
1. Переменная
sum
устанавливается в 0 на каждой итерации первого цикла, поэтому проблем нет, иsum = sum a[i][j];
это не то, что хочет OP: например, первый столбец A будет 11 12. циклы должны быть переключены:for (i = 0; i < 4; i ) ... for (j = 0; j < 2; j )
вместоfor (i = 0; i < 2; i ) ... for (j = 0; j < 4; j )