Prosto

if문과 for문이 사용된 문제들 -4 -C언어 본문

Programing/C Programing

if문과 for문이 사용된 문제들 -4 -C언어

Prosto 2016. 9. 25. 22:42


if문과 for문에 대한 이해가 부족하면 아래의 글을 먼저 봐주세요.

 

if문(조건문) 이해, 예제 -C언어

 

for문(반복문) 이해, 예제 -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문이 사용된 문제들 네 번째 글이었습니다.

다음 글에서 또 다양한 문제들을 올리도록 하겠습니다.

 

 

궁금한 점 있으시면 댓글이나 따로 메일로 질문하시면 시간되는 대로 답변드리겠습니다. ( 연락 )

Comments