함수는 라이브러리 함수와 사용자 정의 함수로 나뉜다

rand 함수 = 난수를 생성하는 함수이다

동전 던지기 예제

#include<stdio.h>
/*오류날시 추가하세요
#include<stdlib.h>
#include<time.h>*/
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<stdio.h>
#include<math.h>
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<stdio.h>
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<stdio.h>
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<stdio.h>
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를 실행한다
	}
}

재귀함수의 사용으로 반복문 없이 팩토리얼을 구할 수 있다.

카테고리:

업데이트: