00:20 반복문
01:14 [실습] while문 1에서 100까지 합계 구하기
02:30 [실습] do while문 1에서 100까지 합계 구하기
03:11 [실습] do while문 음수 입력 전까지 합계 구하기
04:34 [실습] for문 1에서 100까지 합계 구하기
05:43 별출력
05:51 [실습] 별출력 - 속이 빈 정사각형 출력
제어문의 문법을 보면 어렵지 않아요.
그런데 실제 프로그래밍에서 사용하려면 논리를 전개해는 것이 어려워요.
다양한 문제를 해결하면서 조금씩 숙련시킬 수 있어요.
간단한 제어문 연습을 해 봐요.
먼저 속이 빈 정사각형을 출력하는 것을 해 봐요.
최종 사용자가 정수를 입력하면 입력한 정수에 맞게 속이 빈 정사각형을 출력하는 거예요.
물론 화면의 X좌표의 폭과 Y좌표의 폭이 서로 달라 정사각형처럼 보이지는 않아요.
논리를 먼저 생각하세요.
정수를 입력받는 것이 제일 먼제 해야 할 일겠죠.
scanf_s("%d",&n);//입력
그리고 입력한 정수만큼 정사각형을 출력해야 되겠죠.
따라서 입력한 정수만큼 반복 수행하는 구문이 필요하겠네요.
for(line=1;line<=n;line++)//line: 1~n { //line에서 해야 할 일 }
맨 위줄과 아래 줄은 같은 일을 수행하고 나머지 줄도 같은 일을 수행하겠네요.
for(line=1;line<=n;line++)//line: 1~n { if((line==1)||(line==5))//line is 1 or n { //line에서 해야 할 일 } else//거짓 { } }
그리고 맨 위줄과 맨 아래 줄은 별을 입력한 정수만큼 출력해요.
이 때 출력할 별의 수는 입력한 정수만큼이예요.
따라서 입력한 정수만큼 별을 출력하는 반복문이 필요해요.
for(star=1; star<=n;star++) { putchar('*'); }
나머지 줄은 맨 앞에 별을 출력하고 입력한 정수 -2 만큼의 공백을 출력하고 다시 별을 출력해야겠죠.
물론 줄을 구분하기 위한 개행문자도 출력해야겠죠.
putchar('*');//별1 for(space=1;space<=(n-2);space++)//공백 n-2 { putchar(' '); } putchar('*');//별1
이처럼 해야 할 일이 무엇인지 파악하는 과정이 필요해요.
//속이 빈 정사각형 // 입력 // 5 //출력 // ***** 1 별5, 개행 // * * 2 별1, 공백3, 별1, 개행 // * * 3 별1, 공백3, 별1, 개행 // * * 4 별1, 공백3, 별1, 개행 // ***** 5 별5, 개행 //line: 1~n //line is 1 or n 가 참 //별 n //line is 1 or n 가 거짓 //별1, 공백(n-2), 별1 //개행 #include <stdio.h> int main(void) { int n; int line,space,star; scanf_s("%d",&n);//입력 for(line=1;line<=n;line++)//line: 1~n { if((line==1)||(line==5))//line is 1 or n 가 참 { for(star=1; star<=n;star++) { putchar('*'); } } else//line is 1 or n 가 거짓 { putchar('*');//별1 for(space=1;space<=(n-2);space++)//공백 n-2 { putchar(' '); } putchar('*');//별1 } putchar('\n');//개행 } return 0; }
다음의 기본 연습을 직접 해 보세요.
생각보다 많은 시간이 걸릴 수도 있어요.
바로 개발 도구에 코딩을 하는 것보다 전체적인 논리를 종이게 기술하는 등의 작업을 먼저 해 보세요.
그리고 논리를 파악한 후에 구현하는 것이 비용을 줄일 수도 있어요.
◈ 기본 연습 (정답 바로가기)
1. 다음처럼 입력한 정수 높이의 삼각형을 출력하는 프로그램을 작성하시오.
2. 다음처럼 입력한 정수의 높이에 맞게 다이아몬드를 출력하는 프로그램을 작성하시오.
3. 다음처럼 입력한 정수의 높이에 맞게 산봉우리를 출력하는 프로그램을 작성하시오.