ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어로 구구단 만들기
    C언어/C언어 예제 2020. 7. 9. 06:28

    작년에 컴퓨터 시작할 때 쯤 적은 글인데 블로그에서 많은 분들이 찾는 글이라서...

     

    내용이 미흡해 해석을 따로 달아두려고 했는데, 아무리 써도 글이 좀 난해해 간단한 팁으로 대체합니다.

     

    그냥 간단히 아래 코드들 실행하면서 어떻게 돌아가는지 잘 모르겠다 싶으면

     

    for문 안에서 변화하는 숫자들을 출력해서 관찰하시면 직관적으로 쉽게 아실 수 있어요.

     

    예를 들어 아래 코드들은 대부분 for 안의 변수 i 혹은 j를 찍어보면 됩니다.


    Q. C언어로 구구단을 만드세요.

    1번. 1개의 숫자를 입력해서 해당 숫자에 입력되는 구구단만 출력

     

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    
    int main(void)
    {
      int num;
      printf("숫자를 넣어주세요 : ");
      scanf("%d", &num);           //입력부
    
      for (int i = 1; i <= 9; i++)  //숫자를 입력하면 for문에서 그걸 처리할 것 같지만...
      {                            //실제로 for문은 1~9를 입력부에 곱해주는 역할이라 1~9까지만 반복
        {
          printf("%d x %d = %d", num, i, num*i); 
        }                           //첫번째%d 입력부, 두번째%d 1~9, 세번째%d는 두수의 곱
        printf("\n");               //for문을 1~9를 반복하면서 입력된 수를 곱해주는 걸 인쇄
      }
    }

     

    위 예시에서 알 수 있는 것

     

    1. 숫자를 넣으면 for문에서 넣은 숫자를 처리할 것 같지만, 실제로는 for문은 1~9를 반복하기만한다.

     

    2. 입력된 숫자는 기존 for문으로 반복되는 숫자에 곱해주기만하는 역할을 한다.

     

     

    2번. 2개의 숫자를 입력해서 작은 숫자의 구구단부터 큰 숫자의 구구단까지 전부 출력

     

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    
    int main(void)
    {
      int num1, num2;
      printf("첫번째 숫자를 넣어주세요 : "); 
      scanf("%d", &num1);                    //작은 숫자가 들어갈 경우 여기서부터 구구단 출력 시작
      printf("두번째 숫자를 넣어주세요 : ");  
      scanf("%d", &num2);                    //큰 숫자가 들어갈 경우 여기까지 구구단 출력
    
      if (num1 > num2)  //보통 첫번째 작은 숫자, 두번째 큰 숫자지만 반대로 넣을 경우 교체하는 if문
      {
        int temp = 0;   //num1과 num2를 1대1로 교환하는건 불가능해서 임시의 변수를 만들어줌
        temp = num2;    //임시변수에 num2값을 먼저 입력하고 임시변수가 없을 경우 진행 안됨
        num2 = num1;    //num2의 값에 num1의 값을 입력
        num1 = temp;    //num1의 값은 임시변수에 있던 num2값을 입력
      }        
      for (int i = num1; i <= num2; i++) //1~9까지 9번 반복되는 두번째 for문이 몇번 돌아갈 것인지 
      {                                  //결정하는 for문. num1에서 시작되어 num2값에서 끝
        for (int j = 1; j <= 9; j++)     //1~9까지 반복되는 두번째 for문
        {
          printf("%d x %d = %d", i, j, i*j); //사용자가 입력한 첫번째 for문 값과 1~9가 반복인
          printf("\n");                      //두번째 for문값을 곱해준 뒤 인쇄한다.
        }
        printf("\n");              //해당 공백은 한 단위의 구구단이 끝나면 한칸넘겨주는 인쇄
      }
    }

     

    위 예시에서 알 수 있는 것

     

    1. 이중 for문은 사각형 만들기와 비슷하다.

    첫 for문은 세로줄의 숫자에 크게 관여하고 가로는 거기에 맞춰 움직인다.

     

    2. a라는 변수값과 b라는 변수값을 교환할 때는 1개의 임시 여분의 변수가 더 필요하다.

Designed by Tistory.