C언어 구구단 3단씩 출력 - ceon-eo gugudan 3danssig chullyeog

우리가 아는 구구단이다.

#include <stdio.h> int main() { printf("2 * 1 = 2\n"); printf("2 * 2 = 4\n"); printf("2 * 3 = 6\n"); printf("2 * 4 = 8\n"); printf("2 * 5 = 10\n"); printf("2 * 6 = 12\n"); printf("2 * 7 = 14\n"); printf("2 * 8 = 16\n"); printf("2 * 9 = 18\n"); return 0; }

지금은 2단만 작성하였는데

이 작업을 9단까지 한다면 매우 귀찮아질 것이다.

이를 다르게 표현해보자.

#include <stdio.h> int main() { int a, b, c; a = 2; b = 0; //b=0을 작성하여 b를 초기화하자. 선언 전에는 쓰레기 값이므로 무조건 초기화해줘야 한다. b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); b = b + 1; c = a * b; printf("%d * %d = %d\n", a, b, c); return 0; }

아까보다는 코드가 길어졌지만

우리가 지금 이와같이 작성하는 이유는

'규칙'을 찾기 위해서이다.

우리는 2단만이 아닌 9단까지 모두 출력하는 코드들 작성해야하기에

저 코드를 8번 반복한다면 최악의 코드가 될 것이다.

그래서 우리는 for문을 사용한 반복문을 사용할 것이다.

#include <stdio.h> int main() { int a; int i; a = 2; for (i = 1; i <= 9; i = i + 1) { printf("%d * %d = %d\n", a, i, a * i); } return 0; }

위의 코드에서 for문에 대해서 살펴보자.

물론 우리가 작성한 코드와 달리

초기, 조건, 갱신이 다양하게 변형될 수 있다.

지금 하는 과정은 '맛보기' 일 뿐이며

이후에 상세히 다루어볼 것이다.

하지만 아직은 2단까지만 가능하다.

이제 9단까지 만들어보자.

#include <stdio.h> int main() { int i, j; for (j = 2; j <= 9; j = j + 1) { for (i = 1; i <= 9; i = i + 1) { printf("%d * %d = %d\n", j, i, j * i); } } return 0; }

코드가 이해가 가든 가지않든 직접 한번 코드를 작성해보자.

위의 글을 다시 보고 이 코드를 작성한 뒤 생각을 해본다면 분명 이해할 수 있을 것이다.
꼭 생각하는 과정을 거치자! 생각하지 않고서는 성장할 수 없다!

다음 시간에는 if문에 대해서 간단히 알아보도록 하자!

누구나 쉽게 배우는 C 프로그래밍

71년생입니다. 84년 중학교 1학년 때 컴퓨터를 처음 접했습니다. 플로피 디스크가 별도로 달린 8비트 애플 호환기종에서 베이직을 배웠습니다. 그해 겨울 IQ1000 이라는 MSX 기종의 컴퓨터를 샀습니�

book.naver.com

//https//book.naver.com/bookdb/book_detail.nhn?bid=8187381

  • 다운 사이트 : //sourceforge.net/projects/orwelldevcpp/
  • 웹컴파일러 : //www.tutorialspoint.com/compile_c_online.php

오늘은 어제에 이여서 C언어 두번째 실습편입니다. c언어를 배우면 제일 먼저 실습 주제로 구구단을 코딩하게 됩니다. 학교에서나 학원에 가시면 무조건 이 코딩을 실습하게 되는데 국민 실습 코딩 주제로 생각하시면 됩니다. 구글 검색을 하시면 진짜 많이 게시물을 보실 거에요. 너무 유명한 주제의 코딩이라서 굳이 저까지 post로 작성을 할 필요가 있을지 하는 생각에 넘어 가려다가 그래도 어떻게 코딩하는지 그 과정과 어떻게 응용하는지 그 과정을 소개하면 좋을 것 같아서 오늘 주제는 구구단으로 결정했네요.

그러면 구구단이 어떻게 만들어지고 어떻게 응용하여 코딩 할 수 있는지 알아 볼까요.

1. 구구단

구구단은 어떻게 생겼나요. 우선 그 형태를 알아 볼까요.
2x1=2
2x2=4
2x3=6
2x4=8
2x5=10
2x6=12
2x7=14
2x8=16
2x9=18

이렇게 2단을 한번 써봤네요. 이 형태를 코딩을 해볼까요.

위 2단의 코딩을 보시면 어떤 규칙이 있는지 자세히 살펴보세요. 2가 9개 1~9까지의 숫자가 규칙적으로 나열된다 그리고 2에 대해 1~9까지의 숫자를 실제 곱한 결과가 나와 있습니다. 여기서, 규칙적인 숫자 1~9까지라 이 부분을 보신 분들은 for문의 원리를 기억 하신분들은 바로 이걸 for문을 이용하면 되겠군 하는 생각이 떠올라야 합니다.

for(i=1;i<=9;i++){ }

이게 머리속에서 떠올라야 합니다. 2단을 출력해 볼까요.

int i; int inputVal=2; for(i=1;i<=9;i++){ printf("%d x %d = %d\n,inputVal,i,inputVal*i); }

[결과]

이렇게 출력 됩니다. 그런데 구구단은 2단만 있는게 아니죠 1~9단까지 총 9개 단이 있습니다. 이 부분도 생각해보세요. 떠올라야 합니다. 1~9단이라 그러면 또 for문이지 하고요.

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

이렇게 2중 for문으로 i은 단을 나타내고 j은 1~9까지 곱을 하는 숫자를 나타냅니다.

[결과]

각 단별로 쭉 아래로 구구단이 출력 됩니다. 위 이미지는 원래 1단부터 출력 되는데 마지막 단부분만 잘려있네요.
이처럼 뭔가 구구단을 출력하는데 보기가 좀 그렇죠. 구구단은 만들었는데 보기에 좀 불편합니다.

이제 구구단을 응용해 볼까요.

2. 구구단 가로로 출력

for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ printf("%d x %d = %d \n",i,j,i*j); } }

위 코딩에서 조금만 수정 하면 됩니다.

[소스]

#include <stdio.h> int main(int argc, char *argv[]) { int i,j; for(i=1;i<=9;i++){ for(j=1;j<=9;j++){ printf(" | %dx%d=%2d", j, i, i*j); } printf(" |\n"); } return 0; }

위 소스를 보시면 j가 단이 되고 i가 1~9까지의 곱을 나타냅니다. 가로로 1~9단을 출력하기 때문에 처음에 구구단 코딩은 세로로 출력이라면 이건 가로로 출력이 되도록 바꾼 것이죠.

2x1=2 3x1=3 4x1=4 5x1=5 6x1=6 7x1=7 8x1=8 9x1=9

이런식으로 가가로 출력하고 for문 j가 끝나면 새로운 라인으로 이동 '\n' 명령어로 다은 곱을 출력하면 됩니다.

추가로

%2d => 출력 영역 2를 잡고 숫자를 오른쪽정렬로 해서 출력되게 함 %-2d => 출력 영역 2를 잡고 숫자를 왼쪽정렬로 해서 출력되게 함

글자를 출력하는 공간을 잡는 것인데 1이라는 숫자를 %3d에 출력하면 1앞에 2개의 공백 띄우고 1이라는 숫자가 출력 됩니다. 말보다는 결과를 보시면 이해가 빠르겠지요.

[결과]

깔끔하게 전체 구구단이 출력 되었죠.

여러분들은 여기서 끝나면 안됩니다. 한번 더 응용을 해봅시다.

3. 원하는 구구단을 출력

현재 지금까지 배운 C언어 기초문법을 응용하는 편이기 때문에 배운 내용 중 몇가지를 더 추가해서 응용을 해봐야겠지요.
우선 출력하고 싶은 구구단을 사용자가 직접 입력을 받고 싶다면 scanf()함수를 이용하면 됩니다.

scanf("%d",&inputVal);

이렇게 외부에서 입력을 받도록 만들었습니다.

그다음 입력 받은 구구단를 출력 해야 겠죠. 처음 2단을 출력한 코딩을 그대로 적용 하면 됩니다.

for(i=1;i<=9;i++){ printf("%2dx%d=%-2d \n",inputVal,i,inputVal*i); }

원하는 단을 입력받는데 계속 받도록 하고 싶다면 어떻게 해야 할까요. while()문이 떠오르셔야 합니다. 언제까지인지 모르지만 계속 반복을 한다면 가변적 반복이니깐 while문입니다. 여기서 더 깊게 생각한다면 구구단 프로그램이니깐 어찌되었든 무조건 한번은 외부에서 입력을 받아야 겠죠. 그러면 do-while()문이 떠올라야 합니다.

그리고 마지막에는 무한 구구단 입력을 받으면 안되겠죠. 뭔가 빠져나오는 조건을 만들어야 겠죠. 구구단을 탈출하는 조건식을 만들어야 합니다. 여기에서는 그냥 0단이 입력되면 구구단을 종료하는 걸로 했습니다. 원래는 따로 문자로 종료 y or n로 하셔도 되지만 그냥 두번 scanf()입력 받도록 하기 귀찮아서 0단으로 빠져나오게 표현했네요.

[소스]

#include <stdio.h> #include <windows.h> int main(int argc, char *argv[]) { int i,j; int inputVal=2; do{ printf("원하는 구구단을입력하시오?(종료=0)"); scanf("%d",&inputVal); if(inputVal!=0){ system("cls"); printf("[%d 구구단]\n",inputVal); for(i=1;i<=9;i++){ printf("%2dx%d=%-2d \n",inputVal,i,inputVal*i); } } }while(inputVal!=0); return 0; }

구구단 코딩 부분은 굳이 설명은 안드려도 되겠죠. 여기서 새로운 한개가 코딩되었는데 뭘까요.

#include <windows.h> system("cls");

이 코딩은 시스템 명령으로 cls은 화면을 지우는 명령입니다. 즉, 구구단을 입력 받고 출력하고 계속 반복하다보면 콘솔창에 출력부분이 세로로 계속 출력되면 지져분하고 보기도 안좋습니다. 그래서 새로 구구단이 입력 될 때마다 이전 구구단은 지우도록 하는 명령을 새롭게 추가했습니다. 이건 사실 초보 코딩부분이 아니라 어느정도 익숙하신 분들이 쓰는 표현이라 이정도까지는 초보분들은 아실 필요없이 이런게 있다는 정도만 이해해 주세요.

아무튼 결과를 보죠.

[결과]

2단 입력 후 다시 0단 입력으로 do-while문을 빠져나온 결과네요. 아무튼 깔끔하게 입력 받은 구구단이 출력 되었네요.

마무리

오늘은 구구단을 코딩하는 과정을 보여 드렸습니다. 이처럼 구구단은 2중 for문을 이용하여 출력 할 수 있는데 처음에서는 세로로 출력 했다가 다시 가로로 출력하고 다시 구구단을 입력 받아 해당 구구단을 출력하는 응용 코딩을 하였습니다.
이처럼 구구단 하나의 주제를 가지고 다양한 방식의 코딩을 할 수 있습니다. 이 표현 뿐 아니라 다른 표현도 가능합니다. 얼마나 상상하고 응용하느냐에 따라 코딩은 다양해 집니다. 이런 표현은 지금까지 post한 내용을 기반으로 충분히 여러분들도 하실 수 있습니가.

이렇게 해서 전반부분 내용을 최대한 구구단 코딩에 담아 냈습니다. 코딩이란 어떤 하나를 주제로 하나의 코딩으로 끝나면 실력이 늘지 않습니다. 위에서 했던 것처럼 처음 세로로 구구단을 출력했을 때 발생되는 문제점을 해결하기 위해 가로로 출력해보고 또 여기서 끝나지 않고 전체를 출력하는 것보다 외부에서 입력 받아서 특정한 원하는 구구단을 출력해보고 이런식으로 계속 자기 자신에게 질문을 던지고 그 질문에 대해 코딩을 해보면서 상상력과 응용력을 키우셔야 코딩이 재미있r게 할 수 있고 실력도 늘어납니다.

Sponsored ( Powered by dclick )

Toplist

최신 우편물

태그