본문 바로가기
Program/C

15. C언어 프로그래밍의 사용자 정의 함수 유형

by Murciellago 2021. 11. 28.
반응형
SMALL

이 장에서는 함수를 사용하여 동일한 문제를 해결하기 위해 취할 수 있는 다양한 접근 방식에 대해 설명한다.

 

아래 4가지 프로그램은 사용자가 입력한 정수가 소수인지 아닌지를 확인한다.

 

예) 전달된 인수 및 반환값

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
#include <stdio.h>
 
void checkPrimeNumber();
 
int main()
{
   checkPriNum();    // argument is not passed
    return 0;
}
 
// return type is void meaning doesn't return any value
void checkPriNum()
{
    int n, i, flag = 0;
 
    printf("Enter a positive integer: ");
    scanf("%d",&n);
 
    for(i=2; i <= n/2++i)
    {
        if(n%i == 0)
        {
            flag = 1;
        }
    }
    if (flag == 1)
        printf("%d is not a prime number.", n);
    else
        printf("%d is a prime number.", n);
}
 
 

 

이 checkPrimeNumber()  함수는 사용자로 부터 입력을 받아 소수인지 여부를 확인하여 화면에 표시한다.

함수 checkPrimeNumber(); 내부의 문에서 빈 괄호는 main() 함수에 전달된 인수가 없음을 나타낸다.함수의 반환 유형은 void이다. 따라서 함수에서 값이 반환되지 않는다.

 

예) 전달된 인수가 없지만 반환값

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
#include <stdio.h>
int getInteger();
 
int main()
{
    int n, i, flag = 0;
 
   // no argument is passed
    n = getInteger();    
 
    for(i=2; i<=n/2++i)
    {
        if(n%i==0){
            flag = 1;
            break;
        }
    }
 
    if (flag == 1)
        printf("%d is not a prime number.", n);
    else
        printf("%d is a prime number.", n);
 
    return 0;
}
 
// returns integer entered by the user
int getInteger()       
{
    int n;
 
    printf("Enter a positive integer: ");
    scanf("%d",&n);
 
    return n;
}
 
 

 

n = getInteger(); 명령문의 빈 괄호는 함수에 전달된 인수가 없음을 나타낸다. 그리고 함수에서 반환된 값은 n이다.

 

여기에서 getInteger() 함수는 사용자로부터 입력을 받아 반환한다. 숫자가 소수인지 확인하는 코드는 main() 함수 내부에 있다.

 

예) 인수가 전달되었지만 반환값은 없음

 

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
#include <stdio.h>
void checkPriAndDis(int n);
 
int main()
{
    int n;
 
    printf("Enter a positive integer: ");
    scanf("%d",&n);
 
    // n is passed to the function
   checkPriAndDis(n);
 
    return 0;
}
 
// return type is void meaning doesn't return any value
void checkPriAndDis(int n) 
{
    int i, flag = 0;
 
    for(i=2; i <= n/2++i)
    {
        if(n%i == 0){
            flag = 1;
            break;
        }
    }
    if(flag == 1)
        printf("%d is not a prime number.",n);
    else
        printf("%d is a prime number.", n);
}
 
 

 

사용자가 입력한 정수 값이 checkPrimeAndDisplay() 함수에 전달된다.

여기서 checkPrimeAndDisplay() 함수는 전달된 인수가 소수인지 여부를 확인하고 적절한 메시지를 표시한다.

 

 

예) 전달된 인수 및 반환값

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
#include <stdio.h>
int checkPriNum(int n);
 
int main()
{
    int n, flag;
 
    printf("Enter a positive integer: ");
    scanf("%d",&n);
 
    // n is passed to the checkPrimeNumber() function
    // the returned value is assigned to the flag variable
    flag = checkPriNum(n);
 
    if(flag == 1)
        printf("%d is not a prime number",n);
    else
        printf("%d is a prime number",n);
 
    return 0;
}
 
// int is returned from the function
int checkPriNum(int n)
{
    int i;
 
    for(i=2; i <= n/2++i)
    {
        if(n%i == 0)
            return 1;
    }
 
    return 0;
}
 
 

 

사용자의 입력이 checkPrimeNumber() 함수로 전달된다.

checkPrimeNumber() 기능 검사 전달된 인수가 소수인지 아닌지 확인필요하다.

전달된 인수가 소수이면 함수는 0을 반환하고 전달된 인수가 소수가 아닌 경우 함수는 1을 반환한다. 반환된 값은 여러flag 값으로 표시된다. 

여부에 따라 flag 값이 0 또는 1이면 main() 함수에서 적절한 메시지가 표시된다.

 

 

반응형
LIST

'Program > C' 카테고리의 다른 글

17. C언어 지역변수의 범위  (0) 2021.11.28
16. C언어 재귀함수  (0) 2021.11.28
14. C언어 사용자 정의 함수  (0) 2021.11.28
13. C언어 전처리기와 매크로  (0) 2021.11.17
12. C언어 goto 문  (0) 2021.10.20

댓글