안녕하세요, 코린이의 코딩 학습기 채니입니다.
오늘은 조건 / 분기 학습한 내용을 포스팅 해보았습니다.
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 (참)로 지정해도 됨!