전역 변수로 N*N 2차원 배열을 선언하시오.
N은 매크로 상수로 정의하시오.
N*N 행렬로 출력하시오.
예:
3 x 3 행렬:
1 2 3
4 5 6
7 8 9
예:
다음처럼 대각선의 우측 상단 요소의 합계를 구하여 출력하시오.
1 2 3
5 6
9
출력 예
우측 상단 합계: 1 + 2 + 3 + 5 + 6 + 9 = 26
다음처럼 대각선의 좌측 상단 요소의 합계를 구하여 출력하시오.
1 2 3
4 5
7
출력 예
좌측 상단 합계:1 + 2 + 3 + 4 + 5 + 7 = 22
구현 코드
#include <stdio.h>
#define N 3
int arr[N][N];
int main()
{
int sum = 0;
printf("%dX%d 행렬:\n",N,N);
for (int row = 0; row < N; row++)//행
{
for (int col = 0; col < N; col++)//열
{
arr[row][col] = row * N + col +1;//순차적으로 값 설정
printf("%d ", arr[row][col]);//출력
}
printf("\n");//개행
}
sum = 0;
printf("우측 상단 합계:");
for (int row = 0; row < N; row++)//행
{
for (int col = row; col < N; col++)//열의 시작점을 row부터 1행에서는 1열부터, 2행은 2열부터, 3행은 3열부터,...
{
sum += arr[row][col];
printf("%d", arr[row][col]);
if (!(col == N - 1 && row == N - 1))//마지막 행이면서 마지막 열이 아닐 때
{
printf(" + ");//+ 연산자 출력
}
else//마지막 행이면서 마지막 열일 때
{
printf(" = ");// 등호 출력
}
}
}
printf("%d\n",sum);//합계 출력
sum = 0;
printf("좌측 상단 합계:");
for (int row = 0; row < N; row++)//행
{
for (int col = 0; col < (N-row); col++)//열의 마지막을 N-row보다 작을 때까지 1행은 N-0, 2행은 N-1, 3행은 N-2, ...
{
sum += arr[row][col];
printf("%d", arr[row][col]);
if (row < N - 1)//마지막 행이 아닐 때
{
printf(" + ");//+ 연산자 출력
}
else//마지막 행일 때
{
printf(" = ");// 등호 출력
}
}
}
printf("%d\n", sum);//합계 출력
return 0;
}