본문 바로가기

게임프로그래밍 개발 수업/C언어 수업

C언어 스위치문과 3항연산자

03월24일

 

오늘은 스위치문을 학습 했던 날입니다.

 

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>	
//switch문

int main()
{
	int num;
	printf("1이상 5이하의 정수입력: : ");
	scanf_s("%d", &num);
	switch(num)
	{
	case 1: 
		printf("One \n");
		break;
	case 2:
		printf("Two \n");
		break;
	case 3:
		printf("Three \n");
		break;
	case 4:
		printf("four \n");
		break;
	case 5:
		printf("Five \n");
		break;
	default:
		printf("I don't know! \n");
		break;

	
	}
	return 0;
}

1~5 외의 수를 입력하면 I dnon't know를 출력하며 바로 switch문을 탈출하는 프로그램이다.

 

 

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>	
//switch문

int main()
{
	char sel;
	printf("M 오전, A 오후, E 저녁 \n");
	printf("입력: ");
	scanf_s("%c", &sel);

	switch (sel)
	{
	case 'M':
	case 'm':
		printf("Morning \n");
		break;
	case'A':
	case'a':
		printf("Afternoon \n");
		break;
	case 'E':
	case 'e':
		printf("Evening \n");
		break;	//꼭 필요하진 않다.

	}
	return 0;
}

 


 

함수에 대한 내용 학습

 

#include<stdio.h>

int main()
{
	int num1, num2;
	num1 = printf("12345\n");
	num2 = printf("I love my home \n");
	printf("%d %d \n", num1, num2);
	
	return 0;
}

함수가 값을 반환하면 반환된 값이 함수의 호출문을 대체하게 된다

위 코드는 문자열의 길이를 반환하는 함수다.

 

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

int Add(int num1, int num2)//매개변수 2개
{
	return num1 + num2;//return은 값을 반환한다는 뜻이 있다. return만 독립적으로 쓰일 경우 함수를 빠져나간다는 뜻이다.
}
int main(void)
{
	
	int result;
	result = Add(3, 4);//인자의 전달, 2개 전달됨
	printf("덧셈결과1: %d \n", result);
	result = Add(5, 8);//괄호 안의 수 2개를 '전달인자'라고 한다.
	printf("덧셈결과2: %d \n", result);
	return 0;

	//함수를 호출하고 나면 메모리 공간에서 사라지는데 이를 스택 메모리라고 한다.
	//위의 함수 호출 구문은 총 2번 호출하는 것이고 바로 다음 문장에서 메모리 공간에서 사라지는 것

}

스택 메모리의 특성에 대한 내용이 주석에 적혀 있다.

 

함수 활용 예제 

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


	int Add(int num1, int num2)	//인자전달 O , 반환값 O
	{
		return num1 + num2;

	}

	void ShowAddResult(int num)	//인자전달 O, 반환값 X
	{
		printf("덧셈 결과 출력: %d\n", num);
	}

	int ReadNum(void)	//인자전달 X, 반환값 O
	{
		int num;
		scanf_s("%d", &num);
		return num;
	}

	void HowToUseThisProg(void)	//인자전달 X, 반환값 X
	{
		printf("두 개의 정수를 입력하시면 덧셈 결과가 출력됩니다. \n");
		printf("자! 그럼 두개의 정수를 입력하세요. \n");
	}

	int main(void)
	{
		int result, num1, num2;
		HowToUseThisProg();
		num1 = ReadNum();
		num2 = ReadNum();
		result = Add(num1, num2);
		ShowAddResult(result);
		return 0;
	}

함수 활용 예제 2

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


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

int NumberCompare(int num1, int num2)
{
	if (num1 > num2)
		return num1;
	else
		return num2;
}

함수 활용 예제 3

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


int AbsoCompare(int num1, int num2);
int GetAbsoValue(int num);
//함수 선언만 하고 만들지도 않음

int main(void)
{
	int num1, num2;
	printf("두 개의 정수 입력: ");
	scanf_s("%d %d", &num1, &num2);
	printf("%d와 %d중 절대값이 큰 정수: %d\n",
		num1, num2, AbsoCompare(num1, num2));
	return 0;
}



//함수를 정의 했다.
int AbsoCompare(int num1, int num2)
{
	if (GetAbsoValue(num1) > GetAbsoValue(num2))
		return num1;
	else
		return num2;
}
//함수를 정의 했다.
int GetAbsoValue(int num)
{
	if (num < 0)
		return num * (-1);
	else
		return num;
}

 

 

 

3항연산자 사용 함수 문제

3개의 정수를 인자로 전달받아서 그중 가장 큰 수를 반환하는 함수와 작은수를 반환하는 함수를 정의해보자

더보기
#include<stdio.h>


int main(void)
{
	int num1, num2, num3;
	printf("3개의 정수를 입력 하세요");
	scanf_s("%d %d %d", &num1,&num2,&num3);

	printf("가장 큰 수는 %d 입니다.\n", MaxValue(num1, num2, num3));

	printf("가장 작은 수는 %d 입니다.\n", MinValue(num1, num2, num3));


}

int MaxValue(int n1, int n2, int n3)
{
	if (n1 > n2)
		return (n1 > n3) ? n1 : n3;
	else
		return (n2 > n3) ? n2 : n3;
}

int MinValue(int n1, int n2, int n3)
{
	if (n1 < n2)
		return (n1 < n3) ? n1 : n3;
	else
		return (n2 < n3) ? n2 : n3;

	return;
}