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를 실행한다
 }
}

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

업데이트: