본문 바로가기
프로그램 개발

쉽게 풀어쓴 C언어 express 9장 연습문제

by DRIN 2016. 9. 25.

목차

    반응형

    1.정적 지역변수 사용

    #include <stdio.h>

    void sum();

    void subtract();

    void multiply();

    void divide();

    double a, b;

    int main()

    {

    char c;

    while (1)

    {

    printf("연산을입력하시오:");

    scanf(" %lf %c %lf", &a, &c, &b);

    switch (c)

    {

    case '+': sum(); break;

    case '-': subtract(); break;

    case '*': multiply(); break;

    case '/': divide(); break;

    default: {

    printf("지원하지않는연산자입니다.");

    printf("\n");

    }break;

    }

    }

    }

    void sum()

    {

    static int count=0;

    count++;

    printf("덧셈은총%d번실행되었습니다.\n", count);

    printf("연산결과: %lf\n",a+b);

    }

    void subtract()

    {

    static int count = 0;

    count++;

    printf("뺄셈은총%d번실행되었습니다.\n", count);

    printf("연산결과: %lf\n", a - b);

    }

    void multiply()

    {

    static int count = 0;

    count++;

    printf("곱셈은총%d번실행되었습니다.\n", count);

    printf("연산결과: %lf\n", a * b);

    }

    void divide()

    {

    static int count = 0;

    count++;

    printf("나눗셈은총%d번실행되었습니다.\n", count);

    printf("연산결과: %lf\n", a / b);

    }

     

     

     

    1-2.전역변수사용

    #include <stdio.h>

    int sum_count = 0;

    int sub_count = 0;

    int mul_count = 0;

    int div_count = 0;

    void sum();

    void subtract();

    void multiply();

    void divide();

    double a, b;

    int main()

    {

    char c;

    while (1)

    {

    printf("연산을입력하시오:");

    scanf(" %lf %c %lf", &a, &c, &b);

    switch (c)

    {

    case '+': sum(); break;

    case '-': subtract(); break;

    case '*': multiply(); break;

    case '/': divide(); break;

    default: {

    printf("지원하지않는연산자입니다.");

    printf("\n");

    }break;

    }

    }

    }

    void sum()

    {

    sum_count++;

    printf("덧셈은총%d번실행되었습니다.\n", sum_count);

    printf("연산결과: %lf\n",a+b);

    }

    void subtract()

    {

    sub_count++;

    printf("뺄셈은총%d번실행되었습니다.\n", sub_count);

    printf("연산결과: %lf\n", a - b);

    }

    void multiply()

    {

    mul_count;

    printf("곱셈은총%d번실행되었습니다.\n", mul_count);

    printf("연산결과: %lf\n", a * b);

    }

    void divide()

    {

    div_count++;

    printf("나눗셈은총%d번실행되었습니다.\n", div_count);

    printf("연산결과: %lf\n", a / b);

    }

     

     

     

     

    2.주사위 면

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

     

    int get_dice_face()

    {

    static int a,count = 0, c0 = 0, c1 = 0, c2 = 0, c3 = 0, c4 = 0, c5 = 0;

    a=rand() % 6;

    count++;

     

    if (a == 0)

    c0++;

    else if (a == 1)

    c1++;

    else if (a == 2)

    c2++;

    else if (a == 3)

    c3++;

    else if (a == 4)

    c4++;

    else

    c5++;

    if (count % 100 == 0)

    printf("%d %d %d %d %d %d\n", c0, c1, c2, c3, c4, c5);

    }

    int main()

    {

    srand((unsigned)time(NULL));

    while (1)

    {

    get_dice_face();

    }

    }

     

     

     

    3.초기화 한번만 수행

    #include <stdio.h>

    #include <stdlib.h>

    #include <time.h>

     

    int get_random()

    {

    static int inited = 0;

    if (inited == 0)

    {

    srand((unsigned)time(NULL));

    inited++;

    }

    return rand();

    }

    int main()

    {

    int i = 0;

    while (i<5)

    {

    i++;

    printf("%d번째호출값:%d\n",i,get_random());

    }

    }

     

     

     

     

     

    4.

    #include <stdio.h>

     

    double recursive(int n)

    {

    if (n == 1)

    return 1;

    else

    return 1.0 / n + recursive(n - 1);

    }

    int main()

    {

    int n;

    printf("n의값을입력하시오:");

    scanf("%d", &n);

    printf("값은%lf입니다.\n", recursive(n));

    }

     

     

     

     

     

    5.

    #include <stdio.h>

    int amount;

    int save()

    {

    int n;

    printf("저축할금액:");

    scanf("%d", &n);

    amount += n;

    }

    int draw()

    {

    int n;

    printf("인출할금액:");

    scanf("%d", &n);

    amount -= n;

    }

    int main()

    {

    int n;

    while (1) {

    printf("메뉴를선택하세요:저축(1),인출(2):");

    scanf("%d", &n);

    if (n == 1)

    save();

    else if (n == 2)

    draw();

    else

    printf("잘못입력하셨습니다.\n");

    printf("현재잔액은%d입니다.\n", amount);

    }

    }

     

     

     

    6.

    #include <stdio.h>

     

    int get_tri_number(int n)

    {

    if (n == 1)

    return 1;

    else

    return n + get_tri_number(n - 1);

    }

    int main()

    {

    int n;

    printf("n의값을입력하시오:");

    scanf("%d", &n);

    printf("결과값:%d\n", get_tri_number(n));

    }

     

     

     

     

    7.

    #include <stdio.h>

     

    int b_c(int n, int k)

    {

    if (k == 0 || k == n)

    return 1;

    else

    return b_c(n - 1, k - 1) + b_c(n - 1, k);

    }

    int main()

    {

    int n,k;

    printf("nk의값을입력하시오:");

    scanf("%d %d", &n, &k);

    printf("결과값:%d\n", b_c(n,k));

    }

     

     

     

     

     

    8.

    #include <stdio.h>

     

    int s_d(int x)

    {

    if (x > 0)

    {

    s_d(x / 10);

    printf("%d ", x % 10);

    }

    }

    int main()

    {

    int x;

    printf("정수를입력하시오:");

    scanf_s("%d", &x);

    s_d(x);

    printf("\n");

    }

     

    2016/09/24 - [소스코드] - 쉽게 풀어쓴 C언어 express 8장 연습문제

    2016/09/24 - [소스코드] - 쉽게 풀어쓴 C언어 express 7장 연습문제

    2016/09/24 - [소스코드] - 쉽게 풀어쓴 C언어 express 5장 연습문제


    반응형