*로 피라미드 그리기
--------------------------------------- 이하 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
.........*
........***
.......*****
......*******
.....*********
....***********
...*************
..***************
.*****************
*******************
(점은 몇 칸이나 띄워지는지를 나타내기 위해 표시함)