본문 바로가기

Code.D IT 프로젝트/C언어

[C언어 문제] 구구단 내림차순 출력

관련 글

[C언어 문제] 중첩문 for문을 이용한 구구단 출력



C언어 문제

구구단 내림차순 출력



문제)

scanf() 함수를 이용해서 입력받은 숫자 이하의 단을 내림차순으로 출력해주세요.



중첩 for문을 이용해서 구구단을 만들어 보겠습니다.



#include <stdio.h>

int main(void){

     int dan, i;

     printf("출력할 단을 입력해주세요  >> ");
     fflush(stdout);
     scanf("%d", &dan);

     //입력한 단부터 2단까지 1씩 감소하면서 반복
     for(; dan > 1; dan--){

         printf("%d단 \n", dan);

         //9부터 1까지 내림차순으로 곱하기
         for(i = 9; i > 0; i--){

              printf("%d * %d = %d \n", dan, i, dan*i);

         }

         printf("-------------- \n");

     }

     return 0;

}



다음은 출력 결과입니다.






입력받은 단 이하의 구구단을 구하는 프로그램입니다.

입력받은 dan으로부터 dan>1까지 1씩 감소하는 for 반복문을 만듭니다.

이 for문이 반복될 동안 9~1까지 내림차순으로 곱해주는 for문을 그 전 for문 안에 삽입합니다.

만일 위의 결과처럼 5를 입력받으면,

5단일 때, 9~1까지 곱해주고,

4단일 때, 9~1까지 곱해주고,

3단일 때, 9~1까지 곱해주고,

2단일 때, 9~까지 곱해주는 것을 반복합니다.

즉, 5~2단의 for문이 반복될 동안 9~1의 내림차순 for문이 반복되게 됩니다.

따라서 5~2단의 for문 안에 9~1의 내림 차순 for문이 중첩됩니다.