C언어 함수 3
title: “C언어 함수 3” categories:
-
C
#C언어 함수 3 : 네이버 블로그
함수는 라이브러리 함수와 사용자 정의 함수로 나뉜다
rand 함수 = 난수를 생성하는 함수이다
동전 던지기 예제
#include
/\*오류날시 추가하세요
#include
#include\*/
int coin\_toss();
int main() {
int toss;
int heads = 0;
int tails = 0;
srand(time(NULL)); //rand의 시드를 지정한다
for (toss = 0; toss < 100; toss++)
{
if (coin\_toss() == 1) //coin\_toss함수의 return값에 따라 head와 tails를 1올린다
heads++;
else
tails++;
}
printf("동전의 앞면: %d \n", heads);
printf("동전의 뒷면: %d \n", tails);
return 0;
}
int coin\_toss() {
int i = rand() % 2; //0부터 1까지의 수 중 랜덤하게 고른다
if (i == 0)
return 0;
else
return 1;
}
rand() %수의 범위
범위는 0부터 시작된다. 범위를 0부터 1까지로 잡기 위해서는 rand() %2가 된다.
#include
#include
int main() {
double x, y;
double pi = 3.1415926535;
x = pi / 2.;
y = sin(x);
printf("sin (%f) = %f\n", x, y);
y = cos(x);
printf("cos (%f) = %f\n", x, y);
return 0;
}
위는 라이브러리 삼각함수이다 math.h로 불러올 수 있다
각도는 라디안으로 표시된다 위의 함수는 pi를 2로 나누니 90도가 됩니다.
sin 90도 = 1
cos 90도 = 0
예제. 다음식을 프로그래밍해 파이를 50자리까지 구하라
#include
double denominator(double k) {
return 2\*k \* (2\*k + 1)\*(2\*k + 2);
}
int main(void) {
double sum = 3.0;
double result = 0;
for (int i = 1; result != sum; i++)
{
result = sum;
sum = i % 2 != 0 ? sum + (4.0 / denominator(i)) : sum - (4.0 / denominator(i));
}
printf("Pi= %.50f\n", sum);
}
for 조건문으로 시그마부분을 처리한다
denominator 함수는 수식의 분모를 처리한다
for 반복문에서 result 가 sum 과 같으면 반복을 종료시킨다. double 기본형은 소수점 50자리를 넘지 않는다
static에 관한 예제
#include
void init();
int main(){
init(); //첫 작동
init(); //두번째 작동
init(); //세번째 작동
return 0;
}
void init() {
static int inited = 0; //static int
if(inited==0){
puts("네트워크 장치를 작동");
inited = 1; //작동 후 inited를 1로
}
else
puts("이미 작동되었습니다");
}
다음은 재귀함수입니다
#include
int main(){
int n;
puts("정수를 입력하세요");
scanf("%d", &n);
printf("%d!는 %d입니다", n, fact(n));
}
int fact(int a) {
static int sum = 1;
if (a == 1)
return sum;
else
{
sum = sum\*a; //sum에 a를 곱한다
a--; //a를 1 감소시킨다
return fact(a); //fact(a)를 반환하며 a를 실행한다
}
}
재귀함수의 사용으로 반복문 없이 팩토리얼을 구할 수 있다.