[C Question] 함수 응용
카테고리: c-question-lv1
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", °ree);
printf("변화된 화씨: %.1lf \n", CelToFah(degree));
break;
case 2:
printf("화씨 입력: ");
scanf_s("%lf", °ree);
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;
}
}
댓글 남기기