프로그래밍 기본지식 7탄

최주영·2022년 12월 3일
0

C언어

목록 보기
8/15

✅가변매개변수란 ? 무엇인지 예를 들어 설명하시오

매개 변수의 개수가 가변적으로 변할 수 있는 기능입니다. stdarg.h 표준 라이브러리를 사용해야합니다. 이것은 인자 수를 제한 없이 할 수 있도록 하는 함수를 허용합니다


✅순환(recursion) 함수란? 무엇인지 예를 들어 설명하시오

자기 자신을 호출하는 반복 함수입니다.
ex)

if(n<=1)
      return 1;
   else
     return (n * factorial(n-1));

✅10!(팩토리얼)을 구하는 순환 함수를 작성해 보시오.

  • 소스 코드
#include <stdio.h>

long factorial(int);

int main(void) {
    int n = 10;
    printf("10!(팩토리얼)을 구하는 순환 함수를 작성해 보시오.\n");
    printf("===============================\n");
    printf("%d!는 %d입니다.\n", n, factorial(n));
    printf("===============================\n");
    printf("작성자 : 2017E7043 최주영");
}

long factorial(int n)
{
    printf("factorial(%d) = ", n);
    if (n <= 1)
    {
        printf("return(1)\n");
        return 1;
    }
    else
    {
        printf("return(%d * factorial(%d))\n",n,n-1);
        return (n * factorial(n - 1));
    }
}
  • 출력결과

✅10진수를 8진수로 변환하는 함수(Dec2Oct)를 순환 함수를 작성

  • 소스코드
#include <stdio.h>

void Dec2oct(int);

int main(void) {
   int n;
    printf("8진수로 변환할 정수를 입력하세요 : ");
    scanf_s("%d", &n);
    printf("===============================\n");
    printf("변환 결과는 : ");
    Dec2oct(n);
    printf("입니다.\n");
    printf("===============================\n");
    printf("작성자 : 2017E7043 최주영");
}

void Dec2oct(int n) {
    if (n < 1)
        return n;
    else
    {
        Dec2oct(n / 8);
        printf("%d", n % 8);
    }
}
  • 출력결과

✅원판이 10개인 하노이 타워를 옮기려면 몇 번 이동해야하는가 ?

  • 소스코드
#include <stdio.h>
#include<math.h>
void hanoi_tower(int, char, char, char);


int main(void)
{
    int n;
    printf("문제 : 원판이 10개인 하노이 타워를 옮기려면 몇번 이동해야하는가?\n");
    printf("=====================\n");
    printf("원판의 개수를 입력하시오 : ");
    scanf_s("%d", &n);
    hanoi_tower(n, 'A', 'B', 'C');
    printf("=====================\n");
    printf("총 이동횟수는 = %.0f\n", pow(2, n) - 1);
    printf("=====================\n");
    printf("작성자 : 2017E7043 최주영");
    return 0;
}

void hanoi_tower(int n, char from, char tmp, char to)
{
    int cnt;
    if (n == 1)
    {
        printf("원판 1을 %c에서 %c로 옮긴다.\n", from, to);
    }
    else {
 
        hanoi_tower(n - 1, from, to, tmp);
        printf("원판 %d을 %c에서 %c로 옮긴다.\n",n,from, to);
        hanoi_tower(n - 1, tmp, from, to);
    }
}
  • 출력결과

✅5자리 정수값을 입력받아 한글로 출력하는 프로그램을 작성

  • 소스코드
#include <stdio.h>
void nod(int);

int main(void)
{
    int n;
    int num;
    printf("문제 : 5자리 정수값을 입력받아 한글로 출력하는 프로그램을 작성하시오.\n");
    printf("================================\n");
    printf("최대 5자리 정수를 입력하시오 : ");
    scanf_s("%d", &n);
    printf("================================\n");
    if ((n / 10000) >= 1 && (n / 10000 <= 9))
    {
        num = n / 10000;
        nod(num);
        printf("만");
        n = n % 10000;
    }
    if ((n / 1000) >= 1 && (n / 1000 <= 9))
    {
        num = n / 1000;
        nod(num);
        printf("천");
        n = n % 1000;
    }

    if ((n / 100) >= 1 && (n / 100 <= 9))
    {
        num = n / 100;
        nod(num);
        printf("백");
        n = n % 100;
    }

    if ((n / 10) >= 1 && (n / 10 <= 9))
    {
        num = n / 10;
        nod(num);
        printf("십");
        n = n % 10;
    }

    if ((n / 1) >= 1 && (n / 1 <= 9))
    {
        if (n == 1)
        {
            printf("일");
        }
        nod(n);
    }
    printf("\n");
    printf("================================\n");
    printf("작성자 : 2017E7043 최주영");
    return 0;
}

void nod(int num)
{
    switch (num)
    {
    case 2:
        printf("이");
        break;
    case 3:
        printf("삼");
        break;
    case 4:
        printf("사");
        break;
    case 5:
        printf("오");
        break;
    case 6:
        printf("육");
        break;
    case 7:
        printf("칠");
        break;
    case 8:
        printf("팔");
        break;
    case 9:
        printf("구");
        break;
    default:
        break;
    }
}
  • 출력결과
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글