제어문의 문법을 보면 어렵지 않아요.
그런데 실제 프로그래밍에서 사용하려면 논리를 전개해는 것이 어려워요.
다양한 문제를 해결하면서 조금씩 숙련시킬 수 있어요.
간단한 제어문 연습을 해 봐요.
먼저 속이 빈 정사각형을 출력하는 것을 해 봐요.
최종 사용자가 정수를 입력하면 입력한 정수에 맞게 속이 빈 정사각형을 출력하는 거예요.
물론 화면의 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. 다음처럼 입력한 정수의 높이에 맞게 산봉우리를 출력하는 프로그램을 작성하시오.
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
47. 포인터 + 정수 (0) | 2016.01.01 |
---|---|
46. 배열 선언문 (0) | 2016.01.01 |
45. 배열과 포인터 개요 (0) | 2016.01.01 |
44. 정리하기 (0) | 2016.01.01 |
43. 매크로 구문 (0) | 2016.01.01 |
41. 반복문 (while, do while, for) (0) | 2016.01.01 |
40. 선택문 (switch case) (0) | 2016.01.01 |
39. 조건문 (if, else) (0) | 2016.01.01 |
38. 정리하기 (0) | 2016.01.01 |
37. 기타 연산자 (0) | 2016.01.01 |