목차
1. 3의 0거듭제곱부터 3의 10거듭제곱까지의 값을 출력
♣결과
>>1 3 9 27 81 243 729 2187 6561 19683 59049
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
void get_prime(int);
int main(void)
{
get_prime(3, 10);
return 0;
}
void get_prime(int x, int n)
{
int value;
for (int i = 0; i <= n; i++) {
value =pow(x, i);
printf("%d ", value);
}
}
//olivia_codingschool
2. (1,1)에서 (10, 10)까지의 거리 구하기
♣결과
>>12.727922
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
double get_distance(int,int,int,int);
int main(void)
{
printf("%lf", get_distance(1, 10, 1, 10));
return 0;
}
double get_distance(int x1, int x2, int y1, int y2)
{
double distance;
distance = sqrt(pow((x1 - x2), 2) + pow((y1 - y2), 2));
return distance;
}
//olivia_codingschool
3. 2차 방정식 근의 판별식이 양수인 경우에만 근을 구하기
2차 방정식의 일반적인 형태는 ax^2 + bx + c = 0 입니다. 여기서 a, b, c는 상수입니다.
2차 방정식의 근을 구하기 위해서는 먼저 판별식 D를 구해야 합니다. 판별식은 아래와 같이 정의됩니다.
D = b^2 - 4ac
판별식 D에 따라서 방정식의 근의 개수와 종류가 결정됩니다.
D > 0 일 때 (두 개의 서로 다른 실근) D > 0 이면 방정식의 근은 두 개이며, 두 근은 서로 다릅니다. 이 경우, 근의 공식은 다음과 같습니다.
x1 = (-b + √D) / 2a x2 = (-b - √D) / 2a
D = 0 일 때 (한 개의 중근) D = 0 이면 방정식의 근은 한 개이며, 그 근은 중복됩니다. 이 경우, 근의 공식은 다음과 같습니다.
x = -b / 2a
D < 0 일 때 (두 개의 허근) D < 0 이면 방정식의 근은 두 개이며, 두 근은 허수입니다. 이 경우, 근의 공식은 다음과 같습니다.
x1 = (-b + i√|D|) / 2a x2 = (-b - i√|D|) / 2a
여기서 i는 허수 단위입니다. |D|는 D의 절댓값을 나타냅니다.
♣결과
>>근1:3.732051, 근2:0.267949
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
double get_distance(int,int,int,int);
int main(void)
{
equation(1, -4, 1);
return 0;
}
int equation(int a, int b, int c)
{
int equa;
equa = b * b - 4 * a * c;
double answer_1, answer_2;
if (equa > 0) {
answer_1 = (- b + sqrt(equa)) / 2 * a;
answer_2 = (- b - sqrt(equa)) / 2 * a;
printf("근1:%lf, 근2:%lf", answer_1, answer_2);
}
else printf("근이 없음");
return equa;
}
//olivia_codingschool
4. 동전 던지기 게임 구현하기(앞면 1, 뒷면 0, 종료 2)
-몬테카를로 시뮬레이션
몬테카를로 시뮬레이션(Monte Carlo simulation)은 확률과 관련된 문제를 해결하는 데에 사용되는 수학적인 계산 방법입니다. 몬테카를로 시뮬레이션은 임의의 난수를 생성하여, 이를 이용하여 문제의 해를 추정하는 방법입니다.
예를 들어, 원주율 값을 구하는 문제를 생각해보겠습니다. 원의 넓이는 반지름의 제곱에 원주율을 곱한 값이므로, 원주율 값을 구하기 위해서는 반지름이 1인 원 안에 임의의 점을 무작위로 찍고, 원 안에 있는 점의 수와 원 밖에 있는 점의 수를 세어서 비율을 계산하면 됩니다. 이렇게 찍힌 점의 수가 많을수록 결과가 정확해집니다.
몬테카를로 시뮬레이션은 확률 분포가 알려지지 않은 경우나, 확률 분포에 대한 수식이 복잡한 경우에 유용하게 사용됩니다. 또한, 현실적인 문제에 대한 시뮬레이션을 수행할 때도 많이 사용됩니다.
♣결과
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int coin_game();
int main(void)
{
coin_game();
return 0;
}
int coin_game()
{
while (1) {
int choice;
printf("앞면1, 뒷면0, 종료2___\b\b");
scanf("%d", &choice);
int computer;
srand(time(NULL));
computer = rand() % 2;
if (choice == 2) {
printf("게임을 종료합니다.");
break;
}
else if (choice == computer) printf("이겼습니다\n");
else printf("졌습니다\n");
}
return 0;
}
//olivia_codingschool
5. 사용자, 컴퓨터 각각 주사위 3번씩 굴려 나온 수를 모두 합했을 때 누구의 수가 더 큰지 구하기
♣결과
>> 누가 이겼다 혹은 졌다라고 표시됨
♧코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
int dice_game();
int main(void)
{
dice_game();
return 0;
}
int dice_game()
{
int computer, user;
int computer_sum = 0;
int user_sum = 0;
srand(time(NULL));
for (int i = 0; i < 3; i++) {
computer = rand() % 6 + 1;
computer_sum += computer;
}
for (int j = 0; j < 3; j++) {
user = rand() % 6 + 1;
user_sum += user;
}
if (computer_sum>user_sum) {
printf("컴퓨터가 이겼습니다.");
}
else if (computer_sum<user_sum) printf("사용자가 이겼습니다\n");
else printf("비겼습니다\n");
return 0;
}
//olivia_codingschool
'C언어 > 참고서: C언어 콘서트' 카테고리의 다른 글
C언어 45차시 포인터, 메모리, 변수, 포인터 연산자 &, *, %p, 간접참조연산자 (0) | 2023.04.05 |
---|---|
C언어 44차시 함수 연습문제 4 (0) | 2023.04.05 |
C언어 42차시 함수 연습문제 2 (0) | 2023.04.04 |
C언어 41차시 재귀함수 알고리즘 연습하기 +자료형 변형 (0) | 2023.04.04 |
C언어 40차시 함수 연습문제 1 (0) | 2023.04.04 |