이 영역을 누르면 첫 페이지로 이동
Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

페이지 맨 위로 올라가기

Daily Growth

Loving you is the reason I live. That’s why every day is precious, a step toward my dreams and you.

C 프로그래밍: 사용자 정의 함수와 중첩 루프

  • 2025.03.16 09:52
  • IT

프로그래밍을 하다 보면 반복적으로 작성해야 하는 코드가 자주 생긴다. 이를 함수로 만들어 두면 코드가 간결해지고 가독성이 높아진다. 오늘 공부는 C에서 사용자 정의 함수를 만드는 방법과 중첩 루프를 활용하는 방법을 기록해보았다(:

 

1. 사용자 정의 함수

어떤 작업을 여러 번 수행해야 한다면, 그 작업을 함수로 정의하는 것이 좋다. 예를 들어, "cough"를 세 번 출력하는 프로그램을 작성해보자.

 

1.1 반복문 없이 작성

#include <stdio.h>

int main(void)
{
    printf("cough\n");
    printf("cough\n");
    printf("cough\n");
}

위처럼 단순히 printf를 세 번 반복하는 방법이 있지만, 이는 코드의 재사용성을 떨어뜨린다.

 

1.2 반복문을 활용한 개선

#include <stdio.h>

int main(void)
{
    for (int i = 0; i < 3; i++)
    {
        printf("cough\n");
    }
}

for 루프를 활용하면 반복 횟수를 쉽게 조절할 수 있다.

 

1.3 사용자 정의 함수 활용

#include <stdio.h>

void cough(void)
{
    printf("cough\n");
}

int main(void)
{
    for (int i = 0; i < 3; i++)
    {
        cough();
    }
}

이제 cough라는 함수를 정의해 printf를 직접 호출하는 대신 함수를 사용했다. 이렇게 하면 코드가 더 직관적이고 유지보수가 쉬워진다.

 

1.4 함수 선언을 활용한 개선

C에서는 함수가 정의되기 전에 호출되면 오류가 발생할 수 있다. 이를 해결하기 위해 함수 선언을 활용한다.

#include <stdio.h>

void cough(void);

int main(void)
{
    for (int i = 0; i < 3; i++)
    {
        cough();
    }
}

void cough(void)
{
    printf("cough\n");
}

함수의 선언(prototype)을 main 함수보다 위에 두면, C 컴파일러가 해당 함수를 미리 인식할 수 있다.

 

1.5 매개변수를 활용한 함수 개선

#include <stdio.h>

void cough(int n);

int main(void)
{
    cough(3);
}

void cough(int n)
{
    for (int i = 0; i < n; i++)
    {
        printf("cough\n");
    }
}

이제 cough 함수를 호출할 때 원하는 횟수를 인자로 전달할 수 있다. 이렇게 하면 더욱 유연하게 사용할 수 있다.

 

1.6 사용자 입력을 받아 반환하는 함수

#include <cs50.h>
#include <stdio.h>

int get_positive_int(void);

int main(void)
{
    int i = get_positive_int();
    printf("%i\n", i);
}

int get_positive_int(void)
{
    int n;
    do
    {
        n = get_int("Positive Integer: ");
    }
    while (n < 1);
    return n;
}

이 함수는 양의 정수를 입력받을 때까지 반복하는 기능을 수행한다. get_positive_int 함수가 int 값을 반환하는 것을 알 수 있다.

 

2. 중첩 루프

중첩 루프를 사용하면 가로와 세로로 반복되는 패턴을 쉽게 구현할 수 있다. 예를 들어, n x n 크기의 # 블록을 출력하는 프로그램을 만들어보자.

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int n;

    do
    {
        n = get_int("Size: ");
    }
    while (n < 1);

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("#");
        }
        printf("\n");
    }
}

 

2.1 중첩 루프의 동작 방식

  1. do-while 루프를 사용해 n이 1보다 작은 값이 입력되지 않도록 한다.
  2. for 루프를 두 번 중첩해 n x n 크기의 #을 출력한다.
    • 첫 번째 for 루프(i 변수)는 세로 방향으로 n번 반복한다.
    • 내부 for 루프(j 변수)는 가로 방향으로 n번 #을 출력한다.
    • 내부 루프가 끝나면 줄바꿈(\n)을 수행해 다음 줄로 넘어간다.

이렇게 중첩 루프를 활용하면 원하는 크기의 패턴을 쉽게 만들 수 있다.

 


  • 사용자 정의 함수를 활용하면 코드의 재사용성을 높이고 가독성을 개선할 수 있다.
  • 함수 선언(prototype)을 사용하면 main 함수보다 아래에 위치한 함수도 호출할 수 있다.
  • 매개변수(parameter)를 활용하면 함수의 기능을 더 유연하게 만들 수 있다.
  • 중첩 루프를 사용하면 2차원 형태의 패턴을 출력할 수 있다.

 

반응형

'IT' 카테고리의 다른 글

C 언어 컴파일 과정 : 전처리, 컴파일, 어셈블, 링크  (0) 2025.03.17
부동 소수점 오류와 오버플로우: 프로그래밍에서 주의할 점  (1) 2025.03.16
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드  (0) 2025.03.15
CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리  (0) 2025.03.14
C 프로그래밍 기초 정리 | 변수, 조건문, 반복문  (0) 2025.03.13

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • C 언어 컴파일 과정 : 전처리, 컴파일, 어셈블, 링크

    C 언어 컴파일 과정 : 전처리, 컴파일, 어셈블, 링크

    2025.03.17
  • 부동 소수점 오류와 오버플로우: 프로그래밍에서 주의할 점

    부동 소수점 오류와 오버플로우: 프로그래밍에서 주의할 점

    2025.03.16
  • 리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드

    리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드

    2025.03.15
  • CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리

    CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리

    2025.03.14
다른 글 더 둘러보기

정보

Daily Growth 블로그의 첫 페이지로 이동

Daily Growth

  • Daily Growth의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (447) N
      • Design History (69)
      • IT (148) N
      • Typography (13)
      • UX • UI Design (10)
      • Money (62)
      • Health (53)
      • Words (6)
      • Reading (21)
      • English (64)

    나의 외부 링크

    • lody.design
    • lody.canada
    • lody.study
    • lody.diary

    정보

    self-improvement의 Daily Growth

    Daily Growth

    self-improvement

    블로그 구독하기

    • 구독하기
    • 네이버 이웃 맺기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © self-improvement.

    티스토리툴바