티스토리 뷰
과제 1
다음과 같이 출력하는 프로그램을 작성하라. (단, 별 하나가 프린트 된 후 약 1초의 시간이 지난 후에 다음 별이 프린트 되어야 한다.)
Tip > 조건을 리스트화 하고 순서를 작성해보자.
1. 표시할 줄의 갯수를 지정한다.
2. 매 층마다 층수에 맞는 별을 출력한다. (시간 딜레이는 1초)
3. 각 층에 *을 채운 후에는 줄바꿈을 실행한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdio.h> #include <Windows.h> // system() 함수를 사용하기 위한 라이브러리 #define STAR '*' // 표시할 문자 #define FLOOR 4 // 나타낼 층 수 int main() { for (int i = 1; i <= FLOOR; i++) { for (int j = 1; j <= i; j++) { printf("*"); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } printf("\n"); } return 0; } | cs |
프로그램의 이해를 위해 아래 기능을 수행해보자.
1-1. 출력할 줄 수를 입력 받아 1번과 같은 방식으로 출력하는 프로그램을 작성하라.
1-2. 1-1번과 같은 방식으로 동작하는 프로그램을 작성하되 별 대신 다음과 같이 숫자를 출력하는 프로그램을 작성하라.
1-3. 함수 printAStar()를 작성하여 사용하라. // printAStar() : * 한 개를 출력하는 함수
1-4. 함수 printStars()를 작성하여 사용하라. // printStars(n) : *을 n개만큼 옆으로 출력하는 함수
1-5. 재귀 함수를 사용하라.
1-1. 출력할 줄 수를 입력 받아 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 | #include <stdio.h> #include <Windows.h> // system() 함수를 사용하기 위한 라이브러리 #define STAR '*' // 표시할 문자 int main() { int FLOOR; printf("출력할 층 수를 입력하세요 : "); scanf("%d", &FLOOR); system("cls"); for (int i = 1; i <= FLOOR; i++) { for (int j = 1; j <= i; j++) { printf("*"); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } printf("\n"); } return 0; } | cs |
1-2. 1-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 | #include <stdio.h> #include <Windows.h> // system() 함수를 사용하기 위한 라이브러리 #define STAR '*' // 표시할 문자 int main() { int FLOOR; printf("출력할 층 수를 입력하세요 : "); scanf("%d", &FLOOR); system("cls"); for (int i = 1; i <= FLOOR; i++) { for (int j = 1; j <= i; j++) { printf("%d", j); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } printf("\n"); } return 0; } | cs |
1-3. 함수 printAStar()를 작성하여 사용하라. // printAStar() : * 한 개를 출력하는 함수
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 | #include <stdio.h> #include <Windows.h> // system() 함수를 사용하기 위한 라이브러리 #define STAR '*' // 표시할 문자 void printStar(void) { printf("*"); } int main() { int FLOOR; printf("출력할 층 수를 입력하세요 : "); scanf("%d", &FLOOR); system("cls"); for (int i = 1; i <= FLOOR; i++) { for (int j = 1; j <= i; j++) { printStar(); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } printf("\n"); } return 0; } | cs |
1-4. 함수 printStars()를 작성하여 사용하라. // printStars(n) : *을 n개만큼 옆으로 출력하는 함수
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 | #include <stdio.h> #include <Windows.h> // system() 함수를 사용하기 위한 라이브러리 #define STAR '*' // 표시할 문자 void printStars(int length) { for (int j = 1; j <= length; j++) { printf("*"); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } } int main() { int FLOOR; printf("출력할 층 수를 입력하세요 : "); scanf("%d", &FLOOR); system("cls"); for (int i = 1; i <= FLOOR; i++) { printStars(i); printf("\n"); } return 0; } | cs |
1-4. 함수 printStars()를 작성하여 사용하라. // printStars(n) : *을 n개만큼 옆으로 출력하는 함수1-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 | #include <stdio.h> #include <Windows.h> // system() 함수를 사용하기 위한 라이브러리 #define STAR '*' // 표시할 문자 unsigned int printStars(int FLOOR, unsigned int length) { if (FLOOR >= length) { for (int j = 1; j <= length; j++) { printf("*"); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } printf("\n"); return printStars(FLOOR, length + 1); } else { return 0; } for (int i = 1; i <= FLOOR; i++) { for (int j = 1; j <= i; j++) { printf("*"); Sleep(1000); // 1000ms = 1초 동안 딜레이를 줍니다. } printf("\n"); } } int main() { int FLOOR; printf("출력할 층 수를 입력하세요 : "); scanf("%d", &FLOOR); system("cls"); printStars(FLOOR, 1); return 0; } | cs |
생소한 단어를 발견해도 당황하지 말아야 될 것 같네요.
구글링으로 조금만 살펴보고 몇번만 시행착오를 겪으면 해결할 수 있습니다.
다들 문제만 보고 포기하지 않았으면 좋겠습니다.
'프로그래밍 > C' 카테고리의 다른 글
[자료구조] 2일차_과제(180316) - 오목 (0) | 2018.03.16 |
---|---|
[창의적it 프로그래밍] 1차 과제 -구조체- (0) | 2018.03.13 |
[자료구조] 1일차_생각해 볼 내용(180312) (0) | 2018.03.08 |
[자료구조] 1일차_토론(180312) (0) | 2018.03.07 |
[자료구조] 1일차_실습(180309) (1) | 2018.03.06 |
- Total
- Today
- Yesterday
- vue
- SQLite
- Gatsby.js
- DevOps
- Next.js
- vue.js
- Cloud
- 이진탐색 #중복
- oracle
- Remix
- RDBMS
- aws
- MySQL
- PostgreSQL
- alpine.js
- svelte
- Angular
- REACT
- Azure
- Quasar
- nuxt.js
- nosql
- gcp
- node.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |