(함수의 구조, 선언) 1~100까지의 합, 구구단

2024. 3. 31. 21:50정보처리,전산/Clang

반응형
#include <stdio.h>

// 함수 원형 선언
int hap(int end);

// main 함수
int main(void)
{
    // 함수 호출 및 결과 출력
    printf("1부터 100까지의 합: %d\n", hap(100)); 
    return 0;
}

// 함수 정의
int hap(int end)
{
    int i, total = 0;
    // 1부터 end까지의 합 계산
    for (i = 1; i <= end; i++)  
    {
        total += i;
    }
    return total;
}

 

함수 : 특정한 기능을 할 수 있도록 구조화한 코드의 집합

인수 : 함수의  매개 변수에 전달하는 실제 값

매개 변수 : 함수에서 값을 전달받기 위해 정의하는 변수

 

 

return은 함수를 호출한 위치에 반환값을 돌려준다.

 

- 함수의 이름은 hap이며 함수의 이름은 중복될 수 없고, 매개 변수와 반환값을 가진다.

 

- 데이터형에 맞게 반환 값을 하나만 지정할 수 있으며 반환 값이 없는 경우 void 를 사용해야한다.

void func(void)
{

}

 

반환 값과 매개 변수가 없는 함수의 정의

 

 

-반환 값이 없고 매개 변수가 int 인 함수의 정의

void func(int value)
{
}

 

- 반환 값이 없고 매개 변수가 하나 이상인 경우 함수의 정의

 

void func(int value ,int value2)
{

}

 

-반환 값이 있고 매개 변수가 없는 경우

int func(void)
{
 	return value
}

 

 

- 반환 값이 double이며  매개 변수 있는 경우

double func(int value)
{
	return value
}

 

 

 

 

 함수를 만들 때 주의해야 할 사항


- 함수는 반환값으로 한 개만 지정할 수 있다 


- 함수는 이름이 중복될 수 없다.


- 매개 변수의 이름은 중복될 수 없다.


- 매개 변수의 수는 일치해야 한다. 매개 변수와 인수는 서로 그 개수가 같아야 한다.
- 함수는 반환값이 없을 때도 return문을 사용할 수 있다. 함수는 반환값을 돌려주기 위해 return문을 사용하는데, 반환값이 없는 void형에서 return; 문만을 사용하여 함수를 즉시 종료할 수 있다.


- 함수의 실행을 멈추고자 하는 곳에서 return문을 사용할 수 있다. 함수의 실행을 종료해야 하는 곳에는 어디에든 return문이 올 수 있다. return문은 함수의 끝에만 올 수 있는 것이 아니며, 반환하고자 하는 곳마다 올 수 있다.

 

-  함수는 또 다른 함수를 호출할 수 있다. 함수 내에서 다시 다른 함수를 호출할 수 있으며 다른 함수의 호출에서 또 다른 함수를 호출하는 것도 허용된다.

 

 

#include <stdio.h>

void gugu(int dan);

int main(void)
{
    int dan;

    printf("단을 입력하세요: ");
    if (scanf("%d", &dan) != 1 || dan < 1 || dan > 9) {
        printf("잘못된 입력이다. 1부터 9까지의 숫자를 입력하세요.\n");
        return 1; // 잘못된 입력이 발생한 경우 1을 반환하여 프로그램 종료
    }

    gugu(dan);
    return 0; // 프로그램이 성공적으로 종료되었음을 나타내는 반환값
}

void gugu(int dan)
{
    int i;

    printf("%d단:\n", dan);
    for (i = 1; i <= 9; i++)
    {
        printf("%2d  %2d = %3d\n", dan, i, dan  i);
    }
}

 

-  scanf 함수를 사용하여 사용자로부터 정수를 입력받고, 그 값이 조건을 만족하지 않으면 오류 메시지를 출력하고 프로그램을 종료한다.


1. scanf("%d", &dan) != 1: scanf 함수가 반환하는 값이 1이 아닌 경우, 즉 입력이 정수가 아닌 경우를 의미한다. 사용자가 숫자가 아닌 다른 값(예: 문자)을 입력했을 때를 처리한다.

2. dan < 1: 사용자가 입력한 값이 1보다 작을 때이다. 1보다 작은 값은 허용되지 않는 값이다.

3. dan > 9: 사용자가 입력한 값이 9보다 클 때이다. 9보다 큰 값은 허용되지 않는 값이다.

이런 경우에는 "잘못된 입력이다. 1부터 9까지의 숫자를 입력하세요."라는 메시지를 출력하고, 프로그램을 오류 상태로 종료하기 위해 return 1;을 사용한다. 이것은 프로그램이 다른 프로그램이나 시스템에게 잘못된 입력이 발생했음을 알리는 방법 중 하나이다. 종료 코드 1은 일반적으로 오류를 나타내며, 종료 코드 0은 정상 종료를 나타낸다.

 

 

 

 

 

 

 

 

■ 함수를 사용하여 부분합 출력

#include <stdio.h>

// 함수 원형 선언
int hap_range(int start, int end);

int main(void) // main 함수 반환값을 int로 변경
{
  // 각 범위의 합을 출력
  printf("1~10까지 합 : %d \n ", hap_range(1,10));
  printf("50~100까지 합 : %d \n ", hap_range(50,100));
  printf("100~200까지 합 : %d \n ", hap_range(100, 200));

  return 0; // main 함수에서는 정수 반환을 해야 합니다.
}

// 주어진 범위의 합을 구하는 함수
int hap_range(int start, int end)
{
  int i, hap=0;
  for(i=start; i<=end; i++)
  {
    hap += i;
  }
  return hap;
}

 

 

#구조화 프로그래밍

 

기능별로 코드를 독립시키는 것이다. main 함수에 모든 기능을 넣을 수 있지만 디버깅을 위해 고유한 기능을 갖는 함수를 작성하는 것이 생산성에 좋다.

반응형

'정보처리,전산 > Clang' 카테고리의 다른 글

비트연산  (0) 2024.06.22
call by reference  (0) 2024.06.16
랜덤 숫자 발생 후 입력 값 존재 유무 찾기  (0) 2024.05.29
최빈값 구하기  (0) 2024.05.16
배열 포인터  (0) 2024.04.08