본문 바로가기

코딩/백준 BOJ

[백준/C언어] 2739번 - 구구단

백준 웹사이트 "2739번 - 구구단" 문제풀이입니다.

언어는 C언어입니다. (제출 언어: C99)

 


문제

 

2739번: 구구단

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

www.acmicpc.net


소스 코드

#include <stdio.h>

int main(void){
    int N;
    scanf("%d", &N);

    for (int i = 1; i < 10; i++)
    {
        printf("%d * %d = %d\n", N, i, N*i);
    }
}

문제 풀이

  백준 단계별로 풀어보기 3단계 'for문' 첫번째 문제입니다. 앞으로 수도 없이 자주 사용하게 될, for문의 기초를 연습해볼 수 있습니다. 코드 작성 후 출력 결과를 꼭 확인해보시고, 띄어쓰기 같이 사소한 부분에서 틀리지 않게 주의해주세요!


참고

  Line 7을 보시면, for문을 생성할 때 변수 i도 같이 생성해줍니다. 이때 생성한 변수 i는 그 for문의 내부에서만 유효하며, for문 밖에서는 접근할 수 없습니다. 아래와 같은 예시를 볼까요?

 

#include <stdio.h>

int main(void){
    int N;
    scanf("%d", &N);

    for (int i = 1; i < 10; i++)
    {
        printf("%d * %d = %d\n", N, i, N*i);
    }
    printf("%d", i); // error!
}

 

위와 같이, Line 7에서 선언한 변수 i를 for문의 밖인 Line 11에서 접근하고자 하면 에러가 뜹니다. 만약 변수를 for문 밖에서 접근하고 싶다면, 그 변수의 선언도 for문 밖에서 해야 합니다. 아래를 찹고해주세요.

 

#include <stdio.h>

int main(void){
    int N;
    scanf("%d", &N);

    int i;
    for (i = 1; i < 10; i++)
    {
        printf("%d * %d = %d\n", N, i, N*i);
    }
    printf("%d", i);
}

 

이처럼 Line 7에서 변수를 생성하고, Line 8~11 for문에서 이용하는 방법이 있습니다. 이 경우, Line 12에서 변수 i에 접근해도 에러가 생기지 않습니다. 참고로, 이때 Line 12에서 출력되는 변수 i의 값은 10입니다. 'i++'에 의해 increment가 일어나 i의 값이 9에서 10으로 바뀐 후, 이 값을 'i<10'이라는 조건문과 비교하여 조건이 만족되지 않을 경우 for문의 종료가 일어난 형식이므로, 변수 i의 값은 9가 아닌 10이 됩니다.

반응형