[정답] 43. 제어문 연습 - 별출력
1. 다음처럼 입력한 정수 높이의 삼각형을 출력하는 프로그램을 작성하시오.
답:
//삼각형 출력
//입력
//
5               
- n
//출력
//    
*             1- 공백 4, 별1, 개행
//   
***           2- 공백 3, 별3, 개행 
//  
*****          3- 공백2, 별5, 개행
//  *******        4-
공백1, 별7, 개행 
// *********       5- 공백0, 별9, 개행
 
//공백 = n-line
//별 = 2*line -1
//개행=1
 
#include <stdio.h>
 
int main(void)
{
    int n;
    int line,space,star;
    
    scanf_s("%d",&n);//입력
    for(line=1;line<=n;line++)//n개 라인
    {
        for(space=1;space<=(n-line);space++)//공백 n-line개
        {
           
putchar(' ');
        }
        for(star =1;
star<=(2*line -1); star++)//별 2*line -1개
        {
           
putchar('*');
        }
        putchar('\n');//개행
    }
    return 0;
} 
 
2. 다음처럼 입력한 정수의 높이에 맞게 다이아몬드를 출력하는 프로그램을 작성하시오.
답:
// 다이아몬드 출력
// 입력
//
5               
- n
//출력
//    
*             1- 공백 4, 별1, 개행
//   
***           2- 공백 3, 별3, 개행 
//  
*****         3- 공백2, 별5, 개행
//  *******        4-
공백1, 별7, 개행 
// *********      5- 공백0, 별9, 개행
//  *******        4-
공백1, 별7, 개행 
//  
*****         3- 공백2, 별5, 개행
//   
***           2- 공백 3, 별3, 개행
//    
*            1- 공백 4, 별1, 개행
 
//line:1~n
    //공백 = n-line
    //별 = 2*line -1
    //개행=1
//line:n-1 ~ 1
    //공백 = n-line
    //별 = 2*line -1
    //개행=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
    {
        for(space=1;space<=(n-line);space++)//공백 n-line개
        {
           
putchar(' ');
        }
        for(star =1;
star<=(2*line -1); star++)//별 2*line -1개
        {
           
putchar('*');
        }
        putchar('\n');//개행
    }
    for(line=n-1; line>=1;line--)//line:n-1 ~ 1
    {
        for(space=1;space<=(n-line);space++)//공백 n-line개
        {
           
putchar(' ');
        }
        for(star =1;
star<=(2*line -1); star++)//별 2*line -1개
        {
           
putchar('*');
        }
        putchar('\n');//개행
    }
    return 0;
}
 
3. 다음처럼 입력한 정수의 높이에 맞게 산봉우리를 출력하는 프로그램을 작성하시오.
//산봉우리 출력
//입력
//5               
- n
//출력
//                   
*                                     
1                       
공백(9+9),별1, 개행
//                  
***                                   
2                       
공백(9+8), 별3, 개행
//                 
*****                       
           3                       
공백(9+7),별5, 개행
//                
*******                                
4                        
공백(9+6), 별7, 개행
//               
*********                               
5                        
공백(9+5), 별9, 개행
//
    *        
***********         
*                  
6  공백4, 별1, 공백4, 공백4, 별11, 공백4, 공백4, 별1, 개행
//    ***     
*************       
***                 
7  공백3, 별3, 공백3, 공백3, 별13, 공백3, 공백3, 별3, 개행
//   *****   
***************    
*****               
8  공백2, 별5, 공백2, 공백2, 별15, 공백2, 공백2, 별5, 개행
//  *******  ***************** 
*******              
9  공백1, 별7, 공백1, 공백1, 별17, 공백1, 공백1, 별7, 개행
// *************************************           
10   공백0, 별9, 공백0, 공백0, 별19, 공백0, 공백 0, 별9,개행 
//line:1~2*n
//조건(line<=n)이 참일 때
     //공백= (2*n-1)+(2*n-line) = 4*n -1-line
     //별 = 2*line-1
     //개행
//조건(line<=n)이 거짓일 때
     //공백 = 2*n-line
     //별 = 2*(line-n)-1
     //공백 = 2*(2*n-line)     
     //별 = 2*line-1
     //공백 = 2*(2*n-line)
     //별 = 2*(line-n)-1
     //개행 
#include <stdio.h> 
int main(void)
{
    int n;
    int line,space,star;
    
    scanf_s("%d",&n);//입력
    for(line=1;line<=2*n;line++)//line: 1~2n
    {
        if(line<=n)//line is 1~n
        {
             
for(space=1;space<=(4*n
- 1 - line);space++)//공백 4*n - 1 - line개
             
{
                 
putchar(' ');
             
}
             
for(star
=1; star<=(2*line -1); star++)//별 2*line -1개
             
{
                 
putchar('*');
             
}
            
 putchar('\n');//개행
        }
        else//line is n+1
~ 2n
        {
             
for(space=1;space<=(2*n-line);space++)//공백 2n-line개
             
{
                 
putchar(' ');
             
}
             
for(star
=1; star<=2*(line-n)-1; star++)//별 2*(line-n)-1개
             
{
                 
putchar('*');
             
}
             
for(space=1;
space<=(2*(2*n-line));space++)//공백 2*(2*n-line) 개
             
{
                 
putchar(' ');
             
}                 
             
for(star
=1; star<=(2*line-1); star++)//별 2*line-1개
             
{
                 
putchar('*');
             
}
             
for(space=1;
space<=(2*(2*n-line));space++)//공백 2*(2*n-line) 개
             
{
                 
putchar(' ');
             
}
             
for(star
=1; star<=2*(line-n)-1; star++)//별 2*(line-n)-1개
             
{
                 
putchar('*');
             
}
             
putchar('\n');//개행
        }
      
    }
    return 0;
}
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
| [정답] 디딤돌 C언어 50. 인덱스 연산자 (0) | 2016.05.01 | 
|---|---|
| [정답] 디딤돌 C언어 49. 간접 연산자 (0) | 2016.05.01 | 
| [정답] 디딤돌 C언어 47. 포인터 + 정수 (0) | 2016.05.01 | 
| [정답] 디딤돌 C언어 46. 배열 선언문 (0) | 2016.05.01 | 
| [정답] 디딤돌 C언어 44.정리하기(제어문) (0) | 2016.05.01 | 
| [정답] 41. 반복문(while, do while, for) (0) | 2016.04.30 | 
| [정답] 디딤돌 C언어 40. 선택문(switch case) (0) | 2016.04.30 | 
| [정답] 디딤돌 C언어 39. 조건문(if, else) (0) | 2016.04.30 | 
| [정답] 디딤돌 C언어 38. 정리하기 (연산자) (0) | 2016.04.30 | 
| [정답] 디딤돌 C언어 36. 증감 연산자 (0) | 2016.04.30 |