티스토리 뷰

Test/C

*로 피라미드 그리기

kiostory 2018. 12. 9. 21:35

--------------------------------------- 이하 2018년 12월 9일

직각삼각형 출력


#include <stdio.h>

int main(void)

{

    int nInput, column, raw;

    scanf_s("%d", &nInput);


    for (raw=1;raw <= nInput;++raw) 
    {
        for (column=1;column <= nInput-raw;column++) 
            putchar('\t');
 

        for (; nInput - column >= 0; column++) 
            printf("*\t");

  
        putchar('\n');                       

    }

return 0;

}

------------------- 결과

10 입력 후 엔터
                                                                        *

                                                                *       *

                                                        *       *       *

                                                *       *       *       *

                                        *       *       *       *       *

                                *       *       *       *       *       *

                        *       *       *       *       *       *       *

                *       *       *       *       *       *       *       *

        *       *       *       *       *       *       *       *       *

*       *       *       *       *       *       *       *       *       *


Process exited after 2.22 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .


[주석]

#include <stdio.h>

int main(void)

{

}

 scanf_s("%d", &nInput);

 int column, raw;

 for (raw=1;raw <= nInput;++raw) // 1열부터 입력받은 nInput열까지 반복
 {
  for (column=1;column <= nInput-raw;column++)  // 빈칸을 찍기위한 for문.
                                             // 각열의 첫번째 컬럼부터 nInput-현재열 반복(10열이면 9회등)
                                                // 빈 칸을 찍기위한 for문이라 nInput-현재열 번호로 계산
                                             // ex) 첫번째 열은 10-1, 두번째 10-2.. 짝어야할 빈칸의 개수

   putchar('\t');
  

  for (; nInput - column >= 0; column++) // 별을 찍기위한 for문.
              // 빈칸을 찍기위한 for문에서 최종의 column값이 10,9,8...
              // nInput은 최초 입력한 상수이므로 10이면 별하나, 9면 별둘...

   printf("*\t");
  

  
  putchar('\n');                         // 컬럼을 다 채우면 개행
 }

 return 0;

}



--------------------------------------- 이하 2018년 12월 9일

위의 코드와 99% 동일한데 직각삼각형이 아닌 이등변 삼각형이 결과물임.

왜그럴까? 단순히 Tab을 space로만 바꿈. 컬럼 줄을 맞춰주는 tab이 원인임.

이등변 삼각형 출력


#include <stdio.h>

int main(void)

{

    int nInput, column, raw;

    scanf_s("%d", &nInput);


    for (raw=1;raw <= nInput;++raw) 
    {
        for (column=1;column <= nInput-raw;column++) 
            putchar(' ');       // space로 바꿈
 

        for (; nInput - column >= 0; column++) 
            printf("* ");       // space로 바꿈

  
        putchar('\n');                       

    }

return 0;

}


------------------- 결과

10 입력 후 엔터


         *
        * *
       * * *
      * * * *
     * * * * *
    * * * * * *
   * * * * * * *
  * * * * * * * *
 * * * * * * * * *
* * * * * * * * * *


Process exited after 2.394 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .






--------------------------------------- 이하 2016년 9월 19일

#include <stdio.h>

 

//#define HEIGHT 5

 

int main()

{

int HEIGHT;

printf("몇층으로 만들까요?(2 이상 숫자를 입력해주세요.)");

scanf("%d",&HEIGHT);

 

for(int i=1;i<HEIGHT*2;i++)

{

if(i%2==0)

continue;

 

for(int k=0;k<(HEIGHT*2-i)/2;k++)

printf(".");

 

for(int j=1;j<=i;j++)

printf("*");

printf("\n");

}

 

return 0;

 

결과:

--------------------------------------------------------------------------------------

몇층으로 만들까요?(2 이상 숫자를 입력해주세요.)10

.........*

........***

.......*****

......*******

.....*********

....***********

...*************

..***************

.*****************

*******************

 

 

(점은 몇 칸이나 띄워지는지를 나타내기 위해 표시함)

'Test > C' 카테고리의 다른 글

1차원 배열에서 최대값 구하기  (0) 2018.12.10
break, continue  (0) 2018.12.09
[자료구조-1] 배열 직접 정의와 malloc의 차이  (0) 2018.12.08
[자료구조-1] 포인터  (0) 2018.12.08
vsual studio 단축키  (0) 2018.12.08
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함