Prosto
if문과 for문이 사용된 문제들 -4 -C언어 본문
프로그래밍을 이용하여 프로그램을 만들 때
빠지지 않는, 가장 중요한 if문과 for문에 대하여 제대로 익히기 위해
if문(조건문)과 for문(반복문) 문제(예제)들을 풀어보도록 합시다.
저번 시간과 마찬가지로 진행됩니다!
이번 시간의 문제는 총 3개입니다.
각 문제에 대한 출력 결과 예시와 힌트
그리고 완성된 소스와 그에 대한 설명이 함께 제공될 겁니다.
자 그럼 시작해볼까요?
문제 1.
출력 결과와 같이 입력된 숫자 층의 반 피라미드를 만드시오.
(출력 결과 예1 : 5입력)
(출력 결과 예2 : 8입력)
문제 2.
출력 결과와 같이 입력된 숫자 층의 반 피라미드를 만드시오.
(문제 1과 반대로 우측을 기준으로 반 피라미드 형상을 하고있습니다.)
(출력 결과 예1 : 5입력)
(출력 결과 예2 : 9입력)
문제 3.
출력 결과와 같이 입력된 숫자 층의 피라미드를 만드시오.(피라미드 문제 완성형)
(출력 결과 예1 : 5입력)
(출력 결과 예1 : 8입력)
완성 소스와 설명
(소스는 스크린샷입니다. [소스가 화면에 안 들어올 정도로 길다면 따로 올려드리고요.] )
문제 1.
4번 라인에서 피라미드의 층이 될 num 변수를 선언했습니다.
10번 라인에서 for문을 이용하여 1부터 입력받은 수(num)까지 반복합니다.
(반복은 for(;;){ }로 중괄호 내부의 내용을 실행합니다.)
11번 라인에서 10번 라인의 for문의 조건이 맞아 반복될 때마다
for문을 이용하여 0부터 현재 반복되는 숫자인 i까지 1씩 증가하며 반복합니다.(해당 층)
12번 라인에서 printf로 *을 하나 출력합니다.(반복이니 층 수 만큼 *이 찍히겠죠?)
14번 라인에서 11번 라인의 for문이 끝나면 printf로 줄을 바꿔줍니다.(다음층으로 넘어감)
문제 2.
4번 라인에서 피라미드의 층이 될 num 변수를 선언했습니다.
10번 라인에서 for문을 이용하여 1부터 입력받은 수(num)까지 반복합니다.
(반복은 for(;;){ }로 중괄호 내부의 내용을 실행합니다.)
11번 라인에서 10번 라인의 for문의 조건이 맞아 반복될 때마다
for문을 이용하여 0부터 입력받은 층의 수(num) - 현재 반복되는 숫자인 i까지
1씩 증가하며 반복합니다.(전체 층 - 해당 층 = 공백의 수)
12번 라인에서 printf로 공백을 하나 출력합니다.
(반복이니 해당 층의 공간 중 별을 제외한 숫자만큼 찍히겠죠?)
14번 라인에서 10번 라인의 for문의 조건이 맞아 반복될 때마다
for문을 이용하여 0부터 현재 반복되는 숫자인 i까지 1씩 증가하며 반복합니다.(해당 층)
15번 라인에서 printf로 *을 하나 출력합니다.(반복이니 층 수 만큼 *이 찍히겠죠?)
17번 라인에서 11, 14 라인의 for문들을 순서대로 마치면 printf로 줄을 바꿔줍니다.(다음층으로 넘어감)
문제 3.
4번 라인에서 피라미드의 층이 될 num 변수를 선언했습니다.
10번 라인에서 for문을 이용하여 1부터 입력받은 수(num)까지 반복합니다.
(반복은 for(;;){ }로 중괄호 내부의 내용을 실행합니다.)
11번 라인에서 10번 라인의 for문의 조건이 맞아 반복될 때마다
for문을 이용하여 0부터 입력받은 층의 수(num) - 현재 반복되는 숫자인 i까지
1씩 증가하며 반복합니다.(전체 층 - 해당 층 = 공백의 수)
12번 라인에서 printf로 공백을 하나 출력합니다.
(반복이니 해당 층의 공간 중 별을 제외한 숫자만큼 찍히겠죠?)
14번 라인에서 10번 라인의 for문의 조건이 맞아 반복될 때마다
for문을 이용하여 *을 출력하게 합니다.
여기서 조건부분이 중요하겠네요. 저는 이렇게 했습니다.
기본적으로 찍어줄 별 하나 + 층이 오를 때마다 2개씩 상승
그렇게해서 j < 1+( (i-1) * 2);라는 조건이 만들어졌네요. (다른 방법도 있겠죠?)
i=1이면 1, i=2이면 3, 3이면 5, ..이렇게 잘 되는 걸 확인할 수 있겠네요.
15번 라인에서 printf로 *을 하나 출력합니다.(반복이니 필요한 만큼 *이 찍히겠죠?)
17번 라인에서 11, 14 라인의 for문들을 순서대로 마치면 printf로 줄을 바꿔줍니다.(다음층으로 넘어감)
이번 시간에는 *을 이용하여 피라미드를 만들어보는 예제(문제)들을 풀어봤습니다.
이런문제들도 많이 해보면 실력이 느는데 도움이 되겠죠?
그리고 이번에는 if문이 아닌 for문에 대한 문제들이었습니다.(그것도 다중 for문)
if문과 for문이 사용된 문제들 네 번째 글이었습니다.
다음 글에서 또 다양한 문제들을 올리도록 하겠습니다.
궁금한 점 있으시면 댓글이나 따로 메일로 질문하시면 시간되는 대로 답변드리겠습니다. ( 연락 )
'Programing > C Programing' 카테고리의 다른 글
프로그램 일시정지, PAUSE -C언어 (0) | 2016.09.27 |
---|---|
if문과 for문이 사용된 문제들 -5 -C언어 (0) | 2016.09.26 |
프로젝트 생성(New project)이 안 되는(실패하는) 경우 -C언어 (9) | 2016.09.25 |
if문과 for문이 사용된 문제들 -3 -C언어 (2) | 2016.09.24 |
if문과 for문이 사용된 문제들 -2 -C언어 (3) | 2016.09.22 |