Algorithm/컴퓨터알고리즘

C 프로그램 사례

와븨 2022. 9. 28. 02:05

사례 1)

#include <stdio.h>

main()
{
    int SUM;
    int A;
    int B;
    
    A = 10;
    B = 25;
    SUM = A + B;
    
    printf("%d\n", SUM);
}
  • 변수 A와 B의 값을 합한 값을 변수 SUM에 저장 후 출력

사례 2)

#include <stdio.h>

void main()
{
    int SUM = 0, N1, N2, N;
    
    scanf("%d", &N1);
    scanf("%d", &N2);
    
    for(N = N1; N<=N2;N++){
    	SUM = SUM + N;
    }
    printf("%d부터 %d까지 정수의 합은 %d이다. \n", N1, N2, SUM);
}
  • 데이터 타입이 int형인 변수 SUM, N1, N2, N 생성. SUM은 0으로 초기화
  • N1과 N2를 사용자에게 입력받음
  • N1부터 N2까지 정수의 합을 SUM에 저장 후 출력

사례 3)

#include <stdio.h>

void main()
{
    int NUM[5] = {70, 60, 50, 80, 90};
    int MIN = 9999;
    int N;
    
    for (N = 0; N < 5; N++){
    	if (MIN > NUM[N]) {
        	MIN = NUM[N];
        }
    }
    printf("배열 NUM의 원소들 중에서 최솟값은 %d입니다. \n", MIN);
}
  • 배열변수 NUM의 5개 원소 값을 초깃값으로 설정하고 MIN을 9999로 초기화
  • N번 동안 NUM(N)이 MIN보다 더 작으면 새로운 MIN으로 바꿔 최솟값을 찾는 for문 반복
  • 최솟값 MIN 출력

사례 4)

#include <stdio.h>

void main()
{
    int n, Fact = 1;
    
    scanf("%d", &n);
    printf("%d", n);
    while(n>0) {
    	Fact = n * Fact;
        n = n - 1;
    }
    printf("의 누승은 %d입니다. \n", Fact);
}
  • 사용자에게 입력받은 변수 n의 팩토리얼 값을 출력

사례 5)

#include <stdio.h>

int factorial(int n)
{
    int Fact = 1;
    
    while(n>0){
    	Fact = n * Fact;
        n = n-1;
    }
    return Fact;
}

void main()
{
    int n, Fact;
    
    scanf("%d", &n);
    printf("%d", n);
    Fact = factorial(n);
    printf("의 누승은 %d입니다. \n", Fact);
}
  • 팩토리얼 함수 생성
  • 사용자에게 정수 n을 입력받아 n의 팩토리얼 값을 출력

사례 6)

#include <stdio.h>

int factorial(int n)
{
    int Fact = 1;
    
    if(n > 0) Fact = n * factorial(n-1);
    return Fact;
}

void main()
{
    int n, Fact;
    
    scanf("%d", &n);
    printf("%d", n);
    Fact = factorial(n);
    printf("의 누승은 %d입니다. \n",Fact);
}
  • 재귀 호출을 통해 사용자가 입력한 변수 n의 팩토리얼 값을 출력

사례 7)

#include <stdio.h>

void swap(int *L, int *R)
{
    int Temp;
    
    Temp = *L;
    *L = *R;
    *R = Temp;
}

int GCD(int X, int Y)
{
    for(;;){
        int M = X % Y;
        if(M == 0)
        	break;
        X = Y;
        Y = X;
    }
    return Y;
}

void main()
{
    int A, B, R;
    
    printf("두 수를 입력하세요. \n>>> 첫번째 수 = ");
    scanf("%d",&A);
    printf(">>>두번째 수 = ");
    scanf("%d", &B);
    
    if(A < B) swap(&A, &B);
    R = GCD(A,B);
    
    printf("최대공약수는 %d입니다. \n",R);
}
  • swap() 함수는 두 개의 포인터 변수를 받아들여 보관된 값을 서로 교환함
  • swap() 함수처럼 함수의 매개변수에 변수에 대한 주소를 전달하면서 함수를 호출한다. => Call by Address / Call by Reference
  • GCD() 함수는 두 수 X, Y의 최대공약수를 구한느 함수로 main() 함수에 의하여 호출된 후 최대공약수를 계산하여 반환