본문 바로가기
카테고리 없음

[C언어] if, else, break, continue, rand, switch

by 박채니 2021. 12. 31.

 

안녕하세요, 코린이의 코딩 학습기 채니입니다.

오늘은 조건 / 분기 학습한 내용을 포스팅 해보았습니다.

 

if문

// 버스를 탄다고 가정. 학생 / 일반인으로 구분 (일반인 : 20세)
	int age = 15;
	// if (조건) { ... } else { ... }
	if (age >= 20)
	{
		printf("일반인 입니다.\n");
	}
	else
	{
		printf("학생입니다.\n");
	}

 

age의 값에 어떤 숫자를 넣느냐에 따라 출력값이 달라짐!

ager가 15이면 "학생입니다." 출력 / age가 25이면 "일반인 입니다." 출력

 

if / else if / else

// 초등학생 (8~13) / 중학생 (14~16) / 고등학생 (17~19)으로 나누면?

	// if / else if / else 
	int age = 25;
	if (age >= 8 && age <= 13)
	{
		printf("초등학생입니다.\n");
	}
	else if (age >= 14 && age <= 16)
	{
		printf("중학생입니다.\n");
	}
	else if (age >= 17 && age <= 19)
	{
		printf("고등학생입니다.\n");
	}
	else
	{
		printf("성인입니다.\n");
	}

if, else if, else를 이용하여 여러가지 조건이 있을 때 원하는 값을 출력할 수 있도록 해보았다.

else if 는 중복으로 사용 가능하며, if와 else if에 해당되지 않는 값이 들어온다면 무조건 else절의 값을 불러오게 됨

 

* && = 그리고

* || = 또는 


break

// break
	// 1번부터 30번까지 있는 반에서 1번에서 5번까지 조별 발표를 합니다.
    
	for (int i = 1; i <= 30; i++)
	{
		if (i >= 6)
		{
			printf("나머지 학생은 집에 가세요.\n");
			break;
		}
		printf("%d 번 학생은 조별 발표 준비를 하세요.\n",i);
	}

break : 조건에 만족을 할 때 for문을 탈출

 

만약 break 가 없었다면, printf("%d 번 학생은 조별 발표 준비를 하세요.\n",i); 값들을 계속 출력 했을 것

break 입력 시 if절에 대한 조건이 맞다면 printf("%d 번 학생은 조별 발표 준비를 하세요.\n",i);를 수행하지 않고 for문을 탈출하게 된다.

@ 아래 출력값 참고

@ break 를 입력하지 않을 시 출력값

1 번 학생은 조별 발표 준비를 하세요.
2 번 학생은 조별 발표 준비를 하세요.
3 번 학생은 조별 발표 준비를 하세요.
4 번 학생은 조별 발표 준비를 하세요.
5 번 학생은 조별 발표 준비를 하세요.
나머지 학생은 집에 가세요.
6 번 학생은 조별 발표 준비를 하세요.
나머지 학생은 집에 가세요.
7 번 학생은 조별 발표 준비를 하세요.
나머지 학생은 집에 가세요.
8 번 학생은 조별 발표 준비를 하세요.
나머지 학생은 집에 가세요.
9 번 학생은 조별 발표 준비를 하세요.
나머지 학생은 집에 가세요.
ː
ː
@ break 입력 시 출력값

1 번 학생은 조별 발표 준비를 하세요.
2 번 학생은 조별 발표 준비를 하세요.
3 번 학생은 조별 발표 준비를 하세요.
4 번 학생은 조별 발표 준비를 하세요.
5 번 학생은 조별 발표 준비를 하세요.
나머지 학생은 집에 가세요.

countinue

// continue

// 1번부터 30번까지 있는 반에서 7번 학생은 아파서 결석
	// 7번을 제외하고 6번부터 10번까지 조별 발표를 하세요
	for (int i = 1; i <= 30; i++)
	{
		if (i >= 6 && i <= 10)
		{
			if (i == 7)
			{
				printf("%d 번 학생은 결석입니다.\n",i);
				continue;
			}
			printf("%d 번 학생은 조별 발표 준비를 하세요.\n", i);
		}
	}

continue : 조건에 맞으면 다음 문장을 수행하지 않고 다음 반복으로 넘어감

@ 아래 출력값 참고

@ continue 입력하지 않을 시 입력값

6 번 학생은 조별 발표 준비를 하세요.
7 번 학생은 결석입니다.
7 번 학생은 조별 발표 준비를 하세요.
8 번 학생은 조별 발표 준비를 하세요.
9 번 학생은 조별 발표 준비를 하세요.
10 번 학생은 조별 발표 준비를 하세요.
@ continue 입력 시 출력값

6 번 학생은 조별 발표 준비를 하세요.
7 번 학생은 결석입니다.
8 번 학생은 조별 발표 준비를 하세요.
9 번 학생은 조별 발표 준비를 하세요.
10 번 학생은 조별 발표 준비를 하세요.

rand

// rand
	// 가위 0 바위 1 보 2
    
    #include <time.h>
    
 	srand(time(NULL));
	int i = rand() % 3; // 0 ~ 2 반환
	if (i == 0)
	{
		printf("가위\n");
	}
	else if (i == 1)
	{
		printf("바위\n");
	}
	else if (i == 2)
	{

		printf("보\n");
	}
	else
	{
		printf("몰라요\n");
	}

#include <time.h>  ---> rand를 쓸 때 time.h를 꼭 입력해줘야 함

srand(time(NULL));  ---> 난수초기화를 해줘야 동일한 값을 불러오지 않음

int i = rand() % 3;   ---> 3개의 숫자 중에 컴퓨터가 랜덤으로 출력 // 0 ~ 2 반환

 

switch

switch 구문 이용하여 동일한 출력값을 나타내기

srand(time(NULL));
	int i = rand() % 3;
	switch (i)
	{
	case 0:printf("가위\n"); break;
	case 1:printf("바위\n"); break;
	case 2:printf("보\n"); break;
	default:printf("몰라요\n"); break;
	}

switch (값) { ... }  // 값을 받아서 값이 해당하는 경우에 맞도록 출력

값이 0이면 "가위"를 출력 , 1이면 "바위"를 출력, 2면 "보"를 출력, 해당 하지 않으면 "몰라요" 출력

 

switch case ~는 각 경우마다 break 문을 입력해줘야 함

ex)

int i = 0;

switch case ~ (동일)

--> 출력값 : 가위 바위 보 몰라요

switch else는 하기 조건은 확인도 하지 않고 값을 나타내는 특성이 있기 때문 // 그로 인해 break 문을 입력해줘야 함

 

int i = 1;

switch case ~ (동일)

--> 출력값 : 바위 보 몰라요

int age = 15;
	switch (age)
	{
	case 8:
	case 9:
	case 10:
	case 11:
	case 12:
	case 13: printf("초등학생입니다.\n"); break;
	case 14:
	case 15:
	case 16: printf("중학생입니다.\n"); break;
	case 17:
	case 18:
	case 19:printf("고등학생입니다..\n"); break;
	default:printf("성인입니다.\n");
	}

case ~ 를 만났을 때 문장 끝에 break 가 있다면 밑에 있는 case를 실행 안하고 끝남

다만, break 가 없으면 조건 비교를 하지 않고 실행을 함. (break를 만나면 그제서야 switch case를 탈출!)


프로젝트

// Up and Down

	srand(time(NULL));
	int num = rand() % 100 + 1;
	printf("숫자 :%d\n", num);
	int answer = 0;
	int chance = 5;

	while (chance > 0)
	{
		printf("남은 기회 %d번\n", chance--);
		printf("숫자를 맞혀보세요 (1~100) : ");
		scanf_s("%d", &answer);

		if (answer > num)
		{
			printf("DOWN ↓\n\n");
		}
		else if (answer < num)
		{
			printf("UP ↑\n\n");
		}
		else if (answer == num)
		{
			printf("\n\n정답입니다 !");
			break;
		}
		else
		{
			printf("알 수 없는 오류가 발생하였습니다\n\n.");
		}

		if (chance == 0)
		{
			printf("\n\n모든 기회를 다 사용하셨네요, 아쉽게 실패했습니다.");
			break;
		}
	}

while 문의 조건을 chance > 0 이 아닌 1 (참)로 지정해도 됨!