본문 바로가기
College Computer Science/C Language

[C 프로그래밍 실습] 함수 1 (Lab 05)

by 2den 2020. 11. 21.
728x90

<Lab 05 문제 유형 요약>

 

  • Program 1 : mypow( ) 함수 구현
  • Program 2 : 화씨-섭씨 변환 함수 구현
  • Program 3 : 최댓값 반환 함수 구현, 삼항연산자
  • Program 4 : 원 둘레와 넓이 반환 함수 구현
  • Program 5 : 단리와 복리 계산 함수 구현

 

 


 

Program 1

 

임의의 실수와 정수, m 과 n을 입력 받아 다음과 같은 mypow() 함수를 작성하여 mn의 결과를 출력하는 프로그램을 작성하시오. (한번만 호출하여 수행하면 됨)

 

  • 함수 mypow(double m, int n)의 결과는 m^n
  • #include <math.h> 에 정의된 pow() 함수 와 mypow() 함수 결과를 모두 출력

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

double mypow(double m, int n)
{
	if (n == 1) return m;
	else return m * mypow(m, n - 1);
}

int main()
{
	double m = 0;
	int n = 0;

	printf("실수 m을 n번 제곱합니다.\n");
	printf("실수와 정수를 차례로 입력하시오 >> ");
	scanf("%lf %d", &m, &n);
	printf("pow(%lf, %d) 호출 : %.2lf\n", m, n, pow(m, n));
	printf("mypow(%lf, %d) 호출 : %.2lf\n", m, n, mypow(m, n));

	return 0;
}

 

 

 

Program 2

 

실수형으로 입력한 온도 마지막에 문자 F나 f이면 입력 받은 값을 화씨온도로 간주하여 섭씨온도로 바꾸고, 입력 받은 문자가 C나 c이면 입력 받은 값을 섭씨온도로 간주하여 화씨온도로 바꾸어 결과를 출력하는 프로그램을 작성하시오. (무한 반복 실행)

 

  • 화씨온도 F = (9 / 5)*C + 32
  • 섭씨온도 C = (5 / 9)*(F – 32)
  • 온도입력(예: 30.4c, 45.3F)

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

float ftoc(f_string)
{
	return (f_string - 32) * 5 / 9;
}

float ctof(c_string)
{
	return c_string * 9 / 5 + 32;
}

int main()
{
	char input[50];
	char forc;
	int length = 0;

	while (1)
	{
		printf("입력한 온도를 변환합니다. F,C,f,c를 붙여서 입력하시오\n");
		printf("온도 입력 >> ");
		scanf(" %s", input);
		length = strlen(input);
		forc = input[length - 1];

		if (forc == 'F' || forc == 'f') {
			input[length - 1] = '\0';
			printf("화씨온도 %.2f의 섭씨온도는 %.2f입니다.\n\n", atof(input), ftoc(atof(input)));
		}
		else if (forc == 'C' || forc == 'c') {
			input[length - 1] = '\0';
			printf("섭씨온도 %.2f의 화씨온도는 %.2f입니다.\n\n", atof(input), ctof(atof(input)));
		}
		else {
			printf("\n잘못된 문자를 입력했습니다.\n\n");
		}
	}

	return 0;
}

 

 

 

Program 3

 

세 개의 임의 정수를 입력 받아 가장 큰 수를 반환하는 함수를 구현하고, 그 결과를 출력하는  프로그램을 작성하시오.

#include <stdio.h>

int biggest(int a, int b, int c)
{
	return (((a > b) ? a : b) > c) ? ((a > b) ? a : b) : c;
}
int main()
{
	int a, b, c;

	while (1)
	{
		printf("세 개의 정수 중 가장 큰 정수를 출력합니다.\n");
		printf("세 개의 정수를 차례로 입력하시오 : ");
		scanf("%d %d %d", &a, &b, &c);

		printf(">>> 입력한 세 개 정수 %d %d %d 중에서 가장 큰 정수는 %d입니다.\n\n", a, b, c, biggest(a, b, c));
	}
	
	return 0;
}

 

 

 

Program 4

 

다음을 참고로 실수 r을 입력 받아 이 값을 반지름으로 하는 원의 면적과 둘레의 길이를 구하는 프로그램을 작성하시오.

 

  • 면적을 구하는 함수의 이름은 area()로, 원의 둘레를 구하는 함수의 이름은 circumference()로 하고, 원주율은 3.14로 매크로로 정의
  • 원의 면적을 구하는 식은 원주율(3.14)*r*r며 원의 둘레는 2*원주율(3,14)*r

#include <stdio.h>
#define PI 3.14

float area(float radius)
{
	return PI * radius * radius;
}

float circumference(float radius)
{
	return 2 * PI * radius;
}

int main()
{
	float rad, are, cir;

	while (1)
	{
		rad = 0, are = 0, cir = 0;
		printf("원의 반지름을 입력하면 원의 면적과 둘레의 길이를 구합니다.\n");
		printf("원의 반지름을 입력하시오 : ");
		scanf("%f", &rad);

		while (rad <= 0)
		{
			printf("원의 반지름을 양수로 입력하시오 : ");
			scanf("%f", &rad);
		}

		printf(">>> 원의 면적은 %.3f, 원의 둘레는 %.3f\n", area(rad), circumference(rad));
		printf("\n");
	}

	return 0;
}

 

 

 

Program 5

 

다음 이자 계산방식을 참고로 각각에 해당하는 함수를 만들어, 표준입력으로 원금, 이자율, 기간(년)을 입력하면 총액이 각각 출력되는 프로그램을 작성하시오.

 

  • 단리 계산 공식: S = a(1 + r * N), S(총액) , a(원금), N(년), r(이율)
  • 복리 계산 공식: S = a(1 + r)N, S(총액) , a(원금), N(년), r(이율)

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

double isolation(double principal, double year, double rate)
{
	double result = principal * (1 + rate * year);
	return result;
}

double welfare(double principal, double year, double rate)
{
	double result = principal * pow(1 + rate, year);
	return result;
}

int main()
{
	double principal, year, rate;

	while (1)
	{
		principal = 0, year = 0, rate = 0;

		printf("이자를 계산할 다음 세 항목을 입력하세요.\n");
		printf("1. 원금 "); scanf("%lf", &principal);
		printf("2. 년 "); scanf("%lf", &year);
		printf("3. 이율(%) "); scanf("%lf", &rate);
		rate /= 100.0;

		printf("단리 계산 총액은 %.2lf입니다.\n", isolation(principal, year, rate));
		printf("복리 계산 총액은 %.2lf입니다.\n", welfare(principal, year, rate));
		printf("\n");
	}

	return 0;
}

 

728x90

댓글