티스토리 뷰

과제 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


생소한 단어를 발견해도 당황하지 말아야 될 것 같네요. 


구글링으로 조금만 살펴보고 몇번만 시행착오를 겪으면 해결할 수 있습니다.


다들 문제만 보고 포기하지 않았으면 좋겠습니다. 


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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
글 보관함