C언어/C언어 예제

C언어로 두 숫자 입력받아 사각형 모양으로 숫자를 출력

ksge7 2020. 7. 10. 03:39

Q. 일정 숫자를 입력받아 조건에 맞는 직사각형을 출력하세요

1번 예시

4, 5 입력시 1   5   9   13   17
2   6  10   14   18
3   7  11   15   19
4   8  12   16   20
3, 6 입력시 1   4   7  10  13  16
2   5   8  11  14  17
3   6   9  12  15  18

1번 표현식

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
  int row = 0;
  int column = 0;
  printf("가로 길이를 입력해주세요 : ");
  scanf("%d", &row); 
  // 가로 길이 입력, 사각형에서 가로줄 갯수, 가로줄 마지막 숫자를 나타내는 기준점
  printf("\n");
  printf("세로 길이를 입력해주세요 : ");
  scanf("%d", &column); // 세로 길이 입력, 사각형에서 세로줄 갯수

  {for (int i = 1; i <= row*column; i+=row){
  // i범위는 가로*세로, i는 row만큼 증가시켜야됨. 
  // j는 가로줄 마지막 숫자 다음 숫자로 새로운 줄에서 시작해됨.
  // i++를 하면 다음줄에서 j가 2에서 시작됨. row를 더해줘야 다음 줄에서 온전하게 시작됨
    for (int j = i; j < i+row; j++){
  // j는 i를 이어받아 마지막에 1을 더해서 i+row +1증가된 숫자로 첫 번째 숫자가 인쇄된다.
  // j의 범위는 i부터 시작했기에 i에 가로 길이를 뜻하는 row를 더해서 그 범위가 결정된다.
      printf("  %d", j);
    }
    printf("\n");
  }
}
}

 

*** 위 예시에서 알 수 있는 것들 ***

1. 2중 for문에서 상위 for문은 세로줄의 길이를 하위 for문은 가로줄의 길이를 인쇄한다.

2. 가로와 세로 줄은 따로 노는 듯하지만 이번 예제처럼 둘이 숫자가 이어질 경우 아주 끈끈하게 연결된다.