본문 바로가기
쉽게 풀어쓴 C언어 Express (개정3판)

쉽게 풀어쓴 C언어 Express (개정3판) 9장 Programming 문제풀이

by Enhydra lutris 2023. 3. 30.

예전에 써뒀던 글인데 코드 복붙을 잘못해서 들여쓰기가 안되어 있습니다

개발도구에 코드 복붙하시고, 비주얼 스튜디오 기준 Ctrl + K + F를 하면 들여쓰기가 됩니다.


1번


#include <stdio.h>


int add(int, int);

int sub(int, int);

int mul(int, int);

int div(int, int);


int main(void)

{

char op;

int x, y;

int i;


do

{

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

scanf("%d %c %d", &x, &op, &y);

if (op == '+')

printf("연산 결과: %d \n", add(x, y));

else if (op == '-')

printf("연산 결과: %d \n", sub(x, y));

else if (op == '*')

printf("연산 결과: %d \n", mul(x, y));

else if (op == '/')

printf("연산 결과: %d \n", div(x, y));

else

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

} while (op == 'q'); //q 입력하면 종료되게 프로그래밍함


return 0;

}

int add(int x, int y)

{

static int count;

count++;

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

return (x + y);

}


int sub(int x, int y)

{

static int count;

count++;

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

return (x - y);

}

int mul(int x, int y)

{

static int count;

count++;

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

return (x * y);

}

int div(int x, int y)

{

static int count;

count++;

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

return (x / y);

}


2번


#include <stdio.h>

#include<stdlib.h>

#include<time.h>


int get_dice_face();

static int d1, d2, d3, d4, d5, d6;


int main(void)

{

int i;

srand(time(NULL));


for (i = 0; i < 100; i++)

{

get_dice_face();

}


printf("1->%d\n2->%d\n3->%d\n4->%d\n5->%d\n6->%d\n", d1, d2, d3, d4, d5, d6);


return 0;

}


int get_dice_face()

{

int result;

result = rand() % 6+1;

if (result == 1)

d1++;

else if (result == 2)

d2++;

else if (result == 3)

d3++;

else if (result == 4)

d4++;

else if (result == 5)

d5++;

else if (result == 6)

d6++;

}


3번


#include <stdio.h>

#include <stdlib.h>


int check();


int main(void)

{

check();

check();

check();

check();

return 0;

}


int check()

{

static int call_count = 0;

call_count++;

if (call_count > 3)

{

printf("로그인 시도횟수 초과\n ");

return 0;

}

printf("비밀번호: ");

int n;

scanf("%d", &n);

if (n == 1234)

{

printf("로그인 성공!!\n ");

return 1;

}

return 0;

}


4번


#include <stdio.h>

#include <stdlib.h>

#include <time.h>


void get_random();


int main(void)

{

get_random();

get_random();

get_random();

get_random();


return 0;

}


void get_random()

{

static int inited = 0;

if (inited == 0)

{

inited = 1;

srand((unsigned)time(NULL));

printf("초기화 실행\n");

}

else

{

printf("%d\n", rand());

}

}


5번


#include <stdio.h>

int sum(int n);


int main()

{

int number, result;


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

scanf("%d", &number);


result = sum(number);


printf("1부터 %d까지의 합=%d\n", number, result);

}


int sum(int num)

{

if (num != 0)

{

return num + sum(num - 1);

}

else

{

return num;

}

}


6번


#include <stdio.h>


int power(int base, int power_raised);


int main(void)

{

int b, p;


printf("밑수:");

scanf("%d", &b);

printf("지수:");

scanf("%d", &p);


printf("%d^%d = %d", b, p, power(b, p));


return 0;

}


int power(int base, int power_raised)

{

if (power_raised != 1)

{

return base * power(base, power_raised - 1);

}

else

{

return base;

}

}


7번


#include <stdio.h>


int show_digit(int x);


int main(void)

{

int n;


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

scanf("%d", &n);

show_digit(n);

printf("\n");


return 0;

}


int show_digit(int x)

{

if (x / 10 > 0)

{

show_digit(x / 10);

}

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

}


8번


#include <stdio.h>


int digits(int a);


int main(void)

{

int num;


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

scanf("%d", &num);


printf("자리수의 합: %d", digits(num));

}


int digits(int a)

{

static int count = 1;


if (a / 10 != 0)

{

count++;

digits(a / 10);

}


return count;

}


9번


#include <stdio.h>


int get_digit_sum(int num);


int main()

{

int n, sum;

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

scanf("%d", &n);

sum = get_digit_sum(n);


printf("자리수의 합: %d\n", sum);


return 0;

}


int get_digit_sum(int n)

{

if (n == 0)

{

return 0;

}

return ((n % 10) + get_digit_sum(n / 10));

}


10번


#include <stdio.h>


double recursive(double n);


int main(void)

{

double num;


scanf("%lf", &num);

printf("%lf", recursive(num));


return 0;

}


double recursive(double n)

{

if (n != 1)

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

else

return(n);

}


11번


#include <stdio.h>


int recursive(int n, int k);


int main(void)

{

int n, k;


printf("n=");

scanf("%d", &n);

printf("k=");

scanf("%d", &k);

printf("%d\n", recursive(n, k));

return 0;

}


int recursive(int n, int k);

{

if (n == 1 || n == k)

return 1;

else

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

}


12번

#include <stdio.h>


int fib(int n);


int main(void)

{

int i;


for (i = 0; i < 10; i++)

printf("fib(%d) = %d\n", i, fib(i));


return 0;

}


int fib(int n)

{

if (n == 0)

return 0;

else if (n == 1)

return 1;

else

return fib(n - 2) + fib(n - 1);

}

댓글