문제 정의
실행 중에 임의의 숫자 9개를 입력받은 뒤, C 프로그래밍 언어를 사용하여 이 숫자들을 행(row), 열(column), 대각선(diagonal) 방향으로 각각 더한 값을 출력하는 프로그램을 작성해야 합니다.
즉, 입력받은 9개의 숫자를 다음과 같이 3×3 행렬 형태로 배치하고 각 방향별 합계를 계산합니다.
x y z p q r a b c
알고리즘
1단계: 변수 9개를 선언한다
2단계: 실행 중에 숫자 9개를 입력받는다
3단계: 입력받은 숫자를 3×3 행렬 형태로 저장한다
// x y z
// p q r
// a b c
4단계: 행(row) 연산 수행 - 각 행의 숫자를 모두 더하여 출력한다
// (x+y+z), (p+q+r), (a+b+c)
5단계: 열(column) 연산 수행 - 각 열의 숫자를 모두 더하여 출력한다
// (x+p+a), (y+q+b), (z+r+c)
6단계: 대각선(diagonal) 연산 수행 - 대각선 방향의 숫자를 더하여 출력한다
// (x+q+c), (a+q+z)프로그램 코드
#include<stdio.h>
int main(){
int x,y,z,p,q,r,a,b,c;
printf("enter any 9 numbers :\n");
scanf("%d%d%d%d%d%d%d%d%d",&x,&y,&z,&p,&q,&r,&a,&b,&c); // 숫자 9개 읽기
printf("%d %d %d\n",x,y,z);
printf("%d %d %d\n",p,q,r);
printf("%d %d %d\n",a,b,c);
printf("Row total:%d %d %d\n",(x+y+z),(p+q+r),(a+b+c)); // 행(row) 연산
printf("column total: %d %d %d\n",(x+p+a),(y+q+b),(z+r+c)); // 열(column) 연산
printf("diagonal total :%d %d\n",(x+q+c),(a+q+z)); // 대각선(diagonal) 연산
return 0;
}코드 설명
- 정수형 변수 9개(x, y, z, p, q, r, a, b, c)를 선언하여 행렬의 각 원소를 저장합니다.
scanf함수로 사용자로부터 숫자 9개를 한 번에 입력받습니다.- 입력받은 값들을 3줄씩 나누어 행렬 형태로 화면에 출력합니다.
- 행 합계는 같은 줄의 세 숫자를 더하고, 열 합계는 세로 방향의 숫자를 더하며, 대각선 합계는 좌상단→우하단(x+q+c)과 좌하단→우상단(a+q+z) 두 가지를 계산합니다.
실행 결과
enter any 9 numbers : 2 4 6 3 5 7 8 9 2 2 4 6 3 5 7 8 9 2 Row total:12 15 19 column total: 13 18 15 diagonal total :9 19
결과 검증
- 행 합계: 첫 번째 행 2+4+6=12, 두 번째 행 3+5+7=15, 세 번째 행 8+9+2=19
- 열 합계: 첫 번째 열 2+3+8=13, 두 번째 열 4+5+9=18, 세 번째 열 6+7+2=15
- 대각선 합계: 주대각선 2+5+2=9, 반대 대각선 8+5+6=19
이처럼 배열 없이 개별 변수만으로도 간단히 구현할 수 있으며, 규모가 큰 행렬이라면 2차원 배열과 반복문을 활용하면 더 효율적인 코드를 작성할 수 있습니다.