본문 바로가기
IT/프로그래밍

누구나 쉽게 즐기는 C언어 콘서트 8장 실습문제 정답

by nutrient 2020. 12. 13.
728x90
728x170

누구나 쉽게 즐기는 C언어 콘서트 8장 실습문제 정답

 

누구나 쉽게 즐기는 C언어 콘서트 8장 실습문제 정답

 

1번

#include <stdio.h>

double f(double x, double y);

int main(void) {
	double x, y;

	x = 1.0, y = 1.0;
	printf("x=%.1lf, y=%.1lf, f(x,y)=%lf\n", x, y, f(x, y));
	x = 2.0, y = 1.0;
	printf("x=%.1lf, y=%.1lf, f(x,y)=%lf\n", x, y, f(x, y));
	x = 1.0, y = 2.0;
	printf("x=%.1lf, y=%.1lf, f(x,y)=%lf\n", x, y, f(x, y));

	return 0;
}

double f(double x, double y) {
	return 1.5*x + 3.0*y;
}

 

2번

#include <stdio.h>

double get_bigger(double, double);

int main(void) {
	double x, y;

	printf("실수를 입력하시오: ");
	scanf("%lf", &x);
	printf("실수를 입력하시오: ");
	scanf("%lf", &y);

	printf("더 큰수는 %lf입니다.\n", get_bigger(x, y));

	return 0;
}

double get_bigger(double a, double b) {
	if (a > b)
		return a;
	return b;
}

 

3번

#include <stdio.h>

void draw_stars(void);

int main(void) {
	draw_stars();
	printf("Hello World!\n");
	draw_stars();

	return 0;
}

void draw_stars(void) {
	printf("*****************\n");
}

 

4번

#include <stdio.h>

void get_divisor(int a);

int main(void) {
	int n;

	printf("약수를 구할 값 입력: ");
	scanf("%d", &n);

	get_divisor(n);

	return 0;
}

void get_divisor(int a) {
	int div;

	printf("%d=", a);
	for (div = 1; div <= a; div++)
		if (a%div == 0)
			printf("%d ", div);
	printf("\n");

}

 

5번

#include <stdio.h>

void prime(int a);

int main(void) {
	int i;

	for (i = 2; i <= 100; i++)
		prime(i);

	return 0;
}

void prime(int a) {
	int i;

	for (i = 2; i <= a; i++)
		if (a%i == 0)
			break;

	if (a == i)
		printf("%d ", a);
}

 

6번

#include <stdio.h>
#include <math.h>

void ipower(int a, int b);

int main(void) {
	int n = 3, k = 5;

	ipower(n, k);

	return 0;
}

void ipower(int n, int k) {
	int i, result;

	for (i = 0; i <= k; i++) {
		result = pow(n, i);
		printf("%d\n", result);
	}
}

 

7번

#include <stdio.h>
#include <math.h>

void dist_2d(double x1, double y1, double x2, double y2);

int main(void) {
	double x1, x2, y1, y2;

	printf("첫번째 점의 좌표를 입력하시오:(x, y)");
	scanf("%lf %lf", &x1, &y1);
	printf("두번째 점의 좌표를 입력하시오:(x, y)");
	scanf("%lf %lf", &x2, &y2);

	dist_2d(x1, y1, x2, y2);

	return 0;
}

void dist_2d(double x1, double y1, double x2, double y2) {
	double d = 0;

	d = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));

	printf("두점 사이의 거리는 %lf입니다.", d);
}

 

8번

#include <stdio.h>
#include <math.h>

void quad_eqn(double a, double b, double c);

int main(void) {
	double a, b, c;

	printf("2차 방정식의 계수를 입력하시오:\n");
	printf("a: ");
	scanf("%lf", &a);
	printf("b: ");
	scanf("%lf", &b);
	printf("c: ");
	scanf("%lf", &c);

	quad_eqn(a, b, c);

	return 0;
}

void quad_eqn(double a, double b, double c) {
	double D, v1 = 0, v2 = 0;

	D = pow(b, 2.0) - (4 * a*c);

	if (D > 0) {
		v1 = (-b + sqrt(D)) / (2 * a);
		v2 = (-b - sqrt(D)) / (2 * a);
		printf("두 개의 실근\n%lf, %lf\n", v1, v2);
	}
	else if (D == 0) {
		v1 = -b / (2 * a);
		printf("중근\n%lf\n", v1);
	}
	else if (D < 0)
		printf("근이 없다.\n");
}

 

9번

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int victory = 0, defeat = 0, i = 1;

void Monte_Carlo(int a);

int main(main) {
	int coin;

	srand((unsigned int)time(NULL));

	while (1 == 1) {
		coin = rand() % 2 + 1;

		Monte_Carlo(coin);
	}

	return 0;
}

void Monte_Carlo(int r) {
	int user;

	printf("앞(1) 또는 뒤(2)를 선택하시오(종료는 -1):");
	scanf("%d", &user);

	//printf("%d 번째 결과\n", i++);

	if (user == -1)
		exit(1);

	else if (user == r) {
		printf("사용자가 이겼습니다.\n");
		victory++;
	}
	else {
		printf("컴퓨터가 이겼습니다.\n");
		defeat++;
	}
}

 

10번

#include <stdio.h>

void add(int a, int b);
void sub(int a, int b);
void mul(int a, int b);
void div(int a, int b);

int main(void) {
	int n1, n2;
	char op;

	while (1 == 1) {
		printf("연산을 입력하시오(종료는 Ctrl+C): ");
		scanf("%d%c%d", &n1, &op, &n2);

		switch (op) {
		case '+': add(n1, n2);
			break;
		case '-': sub(n1, n2);
			break;
		case '*': mul(n1, n2);
			break;
		case '/': div(n1, n2);
			break;
		}
	}

	return 0;
}

void add(int a, int b) {
	static int sadd = 1;

	printf("덧셈은 총 %d번 호출되었습니다.\n", sadd++);
	printf("연산 결과 : %d\n", a + b);

}

void sub(int a, int b) {
	static int ssub = 1;

	printf("뺄셈은 총 %d번 호출되었습니다.\n", ssub++);
	printf("연산 결과 : %d\n", a - b);
}

void mul(int a, int b) {
	static int smul = 1;

	printf("곱셈은 총 %d번 호출되었습니다.\n", smul++);
	printf("연산 결과 : %d\n", a*b);
}

void div(int a, int b) {
	static int sdiv = 1;

	printf("나눗셈은 총 %d번 호출되었습니다.\n", sdiv++);
	printf("연산 결과 : %d\n", a / b);
}

 

11번

(a)

#include <stdio.h>

int save(int amount);
int save_total = 0;

int main(void) {
	int res, amount;

	while (1 == 1) {
		printf("얼마를 저축하시겠습니까?(종료는 -1): ");
		scanf("%d", &amount);

		if (amount == -1) {
			printf("종료\n");
			break;
		}

		res = save(amount);

		printf("지금까지의 저축액은 %d입니다.\n", res);
	}

	return 0;
}

int save(int amount) {
	save_total += amount;

	return save_total;
}

 

(b)

#include <stdio.h>

int save(int amount);

int main(void) {
	int res, amount;

	while (1 == 1) {
		printf("얼마를 저축하시겠습니까?(종료는 -1): ");
		scanf("%d", &amount);

		if (amount == -1) {
			printf("종료\n");
			break;
		}

		res = save(amount);

		printf("지금까지의 저축액은 %d입니다.\n", res);
	}

	return 0;
}

int save(int amount) {
	static int save_total = 0;

	save_total += amount;

	return save_total;
}

 

(c)

#include <stdio.h>

int save(int amount);
int draw(int amount);
int save_total = 0;

int main(void) {
	int res, amount;

	while (1 == 1) {
		printf("얼마를 저축하시겠습니까?(종료는 -1): ");
		scanf("%d", &amount);

		if (amount == -1) {
			printf("종료\n");
			break;
		}

		res = save(amount);

		printf("지금까지의 저축액은 %d입니다.\n", res);

		printf("얼마를 인출하시겠습니까?(종료는 -1): ");
		scanf("%d", &amount);

		if (amount == -1) {
			printf("종료\n");
			break;
		}

		res = draw(amount);

		printf("지금까지의 저축액은 %d입니다.\n", res);
	}

	return 0;
}

int save(int amount) {
	save_total += amount;

	return save_total;
}

int draw(int amount) {
	save_total -= amount;

	return save_total;
}

 

12번

#include <stdio.h>

void show_digit(int x);

int main(void) {
	int num;

	while (1 == 1) {
		printf("정수를 입력하시오: ");
		scanf("%d", &num);

		if (num < 0) break;

		show_digit(num);
		printf("\n");
	}

	return 0;
}

void show_digit(int x) {
	if (x > 0) {
		show_digit(x / 10);
		printf("%d ", x % 10);
	}
}

 

13번

#include <stdio.h>
#include <math.h>

int recurse(int);

int main(void) {
	int num;

	printf("정수를 입력하시오: ");
	scanf("%d", &num);

	printf("%d\n", recurse(num));

	return 0;
}

int recurse(int a) {
	if (a != 1)
		return pow(a, 3) + recurse(a - 1);
	return 1;
}
728x90
그리드형

댓글