카테고리 없음
C로 별찍기 연습
오리@
2017. 12. 31. 02:40
1) 피라미드
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 | #include <stdio.h> void main() { int line; int star; int vp; for (line=1; line < 6; line++) { for (vp=0; vp <= 4 - line; vp++) { printf(" "); } for (star=0; star < (2 * line) - 1; star++) { printf("*"); } printf("\n"); } } | cs |
2. 다이아몬드 (5줄)
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #include <stdio.h> void main() { int line = 0; // 줄 갯수 int star = 1; // 별의 갯수 int vp = 1; // 빈공간 갯수 int branchPoint = 3; // 다이아몬드 가로 반지름(증가, 감소 분기점) for (line = 1; line < 6; line++) { int i = 0; int j = 0; if (line == branchPoint + 1) { //만약 4로 넘어가면 star와 vp 변수를 초기화 시킴 star = 2; vp = 2; } if (line <= branchPoint) { //현재 line 번호 가 반지름에 해당하는 라인 번호보다 작을 경우는 : 별은 증가하고, 빈 공간은 감소한다. (상단부) for (i = 0; i < 4-vp; i++) { printf(" "); } vp++; for (j = 0; j < (2 * star) - 1; j++) { printf("*"); } star++; } else { //만약 line 번호가 반지름에 해당하는 라인 번호 보다 커진다면 : 빈 공간은 증가하고 별은 감소한다. (하단부) for (i = 0; i < vp; i++) { printf(" "); } vp++; for (j = 0; j < (2 * star) - 1; j++) { printf("*"); } star--; } //모든 for문이 돌고 난 후 한 칸 띄우기 printf("\n"); } } | cs |
3. 원하는 홀수 줄 입력받아서 다이아몬드 만들기
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | #include <stdio.h> void main() { int line = 0; // 줄 갯수 int star = 1; // 별의 갯수 int vp = 1; // 빈공간 갯수 //입력 받는 부분 printf("******************* 신기하고 재미있는 별찍기 프로그램 *******************"); puts(""); printf("출력할 라인 수를 입력하세요."); puts(""); scanf_s("%d", &line); //유효성 검사 if (line % 2 == 0) { printf("홀수가 아닙니다. 홀수만 입력해 주세요~"); puts(""); return; } //입력 받은 숫자 확인 printf("출력할 라인 수 : %d", line); puts(""); int branchPoint = (line/2)+1; // 다이아몬드 가로 반지름(증가, 감소 분기점) int s; for (s = 1; s < line+1; s++) { int i = 0; int j = 0; if (s == branchPoint + 1) { //만약 분기점 넘어가면 star와 vp 변수를 초기화 시킴 star = branchPoint-1; vp = branchPoint-1; } if (s <= branchPoint) { //현재 line 번호 가 반지름에 해당하는 라인 번호보다 작을 경우는 : 별은 증가하고, 빈 공간은 감소한다. (상단부) for (i = 0; i < (line-1) - vp; i++) { printf(" "); } vp++; for (j = 0; j < (2 * star) - 1; j++) { printf("*"); } star++; } else { //만약 line 번호가 반지름에 해당하는 라인 번호 보다 커진다면 : 빈 공간은 증가하고 별은 감소한다. (하단부) for (i = 0; i < vp; i++) { printf(" "); } vp++; for (j = 0; j < (2 * star) - 1; j++) { printf("*"); } star--; } //모든 for문이 돌고 난 후 한 칸 띄우기 printf("\n"); } } | cs |