C 초보 2차원 배열의 행/열의 합구하기 이상한 결과값
조회수 1024회
2차원 배열을 난수를 이용해서 만든 후에, 각 행과 각 열의 합계를 구하여 출력한 후 2차원 표로 배열을 출력하는 프로그램입니다. 근데 표랑 도출된 합계값이랑 비교해보면 서로 일치가 안되요. 예를 들어서 2행의 합계는 72라고 뜨는데, 표에서 2행의 합을 실제로 구해보면 179가 나와요. 어디서 잘못된 걸 까요?
#include <stdio.h>
#include <time.h>
#define ROWS 5 //열(가로)
#define COLS 3 //행(세로)
int main(void)
{
int a[ROWS][COLS];
srand((unsigned)time(NULL));
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
a[i][j] = rand() % 100;
}
}
int sum = 0;
for (int i = 0; i < ROWS; i++)
{
sum = 0;
for (int j = 0; j < COLS; j++)
{
sum += a[i][j];
}
printf("%d열의 합계: %d\n", i, sum);
}
for (int j = 0; j < COLS; j++)
{
sum = 0;
for (int i = 0; i < COLS; i++)
{
sum += a[i][j];
}
printf("%d행의 합계: %d\n",j ,sum);
}
for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLS; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
행의 합계를 구하는 루프를 자세히 보시면 오타가 있습니다.
for (int j = 0; j < COLS; j++) { sum = 0; for (int i = 0; i < COLS; i++) { sum += a[i][j]; } printf("%d행의 합계: %d\n",j ,sum); }
위의 코드에서 2중 for루프의 조건이 모두
변수 < COLS
로 동일합니다. 위의 코드를 아래와 같이 바꾸세요.for (int j = 0; j < COLS; j++) { sum = 0; for (int i = 0; i < ROWS; i++) { sum += a[i][j]; } printf("%d행의 합계: %d\n",j ,sum); }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력