[C Question] 함수 응용

Date:     Updated:

카테고리:

태그:

1. 조건에 맞게 numberCompare함수 정의 & 호출

조건
main 2줄, 함수 1줄

int main{
  "3과 4중에서 큰 수는 땡이다" 출력. numberCompare함수 활용 인자3,4
	"7과 2중에서 큰 수는 땡이다" 출력. numberCompare함수 활용 인자7,2
  
  return 0;
}
	

numberCompare함수. 2개의 정수를 받아서 큰 수를 반환하는 함수
정답
// start
// #include "header.h"
#include <stdio.h>

int numberCompare(int n1, int n2);

int main()
{
  printf("3과 4중에서 큰 수는 %d이다. \n", numberCompare(3, 4));
  printf("7과 2중에서 큰 수는 %d이다. \n", numberCompare(7, 2));
	
	return 0;
}

int numberCompare(int n1, int n2)
{
	return n1 > n2 ? n1 : n2;
}

1-1. 사용자로부터 정수 2개 받고 절대값이 큰 정수를 출력해보자 !

조건
"땡과 땡 중 절대값이 큰 정수: 땡"출력. absoCompare 함수 (인자 2개) 활용

absoCompare함수. 전달받은 정수 2개 중 절대값이 큰 정수 반환. getAbsoValue함수(1개) 활용

getAbsoValue함수. 전달받은 정수의 절대값을 반환하는 함수
정답
// start
// #include "header.h"
#include <stdio.h>

int absoCompare(int v1, int v2);
int getAbsoValue(int num);

int main()
{
	int v1, v2;
	printf("input: ");
	scanf_s("%d %d", &v1, &v2);
	printf("%d와 %d 중 절대값이 큰 정수: %d \n", v1, v2, absoCompare(v1, v2));

	return 0;
}

int absoCompare(int v1, int v2)
{
	return (getAbsoValue(v1) > getAbsoValue(v2) ? v1 : v2);
}

int getAbsoValue(int num)
{
	return num < 0 ? ~num + 1 : num;
}

2. 과제 4문제

2-1. 두 수를 입력받아서 화면에 출력하고 이어서 다음 줄에 두 수를 바꾸는 함수(swap함수)를 호출해보자 !

정답
// start
// #include "header.h"
#include <stdio.h>

void swap(int v1, int v2);

int main()
{
	int v1, v2;
	printf("input 2 numbers: ");
	scanf_s("%d %d", &v1, &v2);

	printf("x는 %d이고 y는 %d 입니다. \n", v1, v2);
	swap(v1, v2);

	return 0;
}

void swap(int v1, int v2)
{
	int temp;
	temp = v1;
	v1 = v2;
	v2 = temp;
	printf("swap을 적용한 v1은 %d, v2는 %d입니다. \n", v1, v2);
}


포인터를 쓰지 않고서는 swap에서 출력을 해줘야한다 !

2-2. 3개의 정수를 입력하고 그 정수들을 인자로 받아 가장 큰 수를 반환하는 함수, 가장 적은 수를 반환하는 함수를 정의하고 호출해보세요 !

함수는 2줄 제한
정답
// start
// #include "header.h"
#include <stdio.h>

int getMaxValue(int v1, int v2, int v3);
int getMixValue(int v1, int v2, int v3);

int main()
{
	int v1,v2,v3;
	printf("input 3 numbers: ");
	scanf_s("%d %d %d", &v1, &v2, &v3);

	printf("Max Number: %d \n", getMaxValue(v1, v2, v3));
	printf("Min Number: %d \n", getMixValue(v1, v2, v3));

	return 0;
}

int getMaxValue(int v1, int v2, int v3)
{
	if (v1 > v2)	return v1 > v3 ? v1 : v3;
	else				return v2 > v3 ? v2 : v3;
}

int getMixValue(int v1, int v2, int v3)
{
	if (v1 < v2)	return v1 < v3 ? v1 : v3;
	else				return v2 < v3 ? v2 : v3;
}

2-3. 섭씨(cel) 온도를 입력하면 화씨(Fah)로 변환해주는 함수와 그 반대도 만들어보자 !

조건
( fah - 32 / 1.8 ) = 섭씨
(degree * 1.8) + 32 = 화씨

반환하라는 말이 있으니 return 써야해서 printf 함수 사용해야함

CelToFah -> 매개변수는 없지만 리턴은 있어야 함
FahToCel -> 매개변수는 없지만 리턴은 있어야 함
정답
// start
// #include "header.h"
#include <stdio.h>

double CelToFah(double degree);
double FahToCel(double degree);

int main()
{

	int sel = 0;
	double degree = 0;
	printf("1. 섭씨를 화씨로  2. 화씨를 섭씨로 \n 선택>>");
	scanf_s("%d", &sel);

	switch (sel)
	{
	case 1:
		printf("섭씨 입력: ");
		scanf_s("%lf", &degree);
		printf("변화된 화씨: %.1lf \n", CelToFah(degree));
		break;
	case 2:
		printf("화씨 입력: ");
		scanf_s("%lf", &degree);
		printf("변화된 섭씨: %.1lf \n", FahToCel(degree));
		break;
	default:
		printf("1과 2중에 선택하셔야됩니다. \n");
		break;
	}
	return 0;
}

double CelToFah(double degree)
{
	return (degree * 1.8) + 32;
}

double FahToCel(double degree)
{
	return (degree - 32.0) / 1.8;
}

2-4. 피보나치 수열을 재귀함수를 사용하지 않고 함수로 구현해보자 !

조건
함수에는 매개변수 1개, 지역변수 4개가 있다 !
정답
#include <stdio.h>

void fibo(int n);

int main()
{
	int n;

	printf("input: ");
	scanf_s("%d", &n);

	fibo(n);

	return 0;
}

void fibo(int n)
{
	int start = 0, next = 1, before, i;

	for (i = 0; i < n; i++)
	{
		printf("%d ", start);
		before  = start;
		start += next;
		next = before;
	}
}

c-question-lv1 카테고리 내 다른 글 보러가기

댓글 남기기