유튜브 나도코딩 c언어 기초 강의 내용입니다.
#include <stdio.h>
int main(void)
{
// 버스를 탄다고 가정 학생/일반인으로 구분 (일반인 : 20세)
int age = 25;
if (age >= 20)
{
printf("일반인입니다.\n");
}
else
{
printf("학생입니다.\n");
}
return 0;
}
if를 이용해서 조건에 따라 다른게 실행되게 할 수 있다. age가 20이상이면 "일반인입니다."를 출력할 것이고
20보다 작다면 "학생입니다"를 출력할 것이다.
#include <stdio.h>
int main(void)
{
for (int i = 1; i <= 30; i++)
{
if (i >= 6)
{
printf("나머지 학생은 집에 가세요. \n");
break; // for문 탈출함.
}
printf("%d번 학생은 조별 발표 준비를 하세요.\n", i);
}
// 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);
}
}
return0;
}
첫번째 for문에서는 for문 안에서 i가 1~5일 때 "i번 학생은 조별 발표 준비를 하세요"가 출력 되고,
if를 사용해 i가 6 이상일 때 "나머지 학생은 집에 가세요"란 문구를 출력한다.
여기서 break가 사용되는데 만약 break를 사용하지 않는다면, i가 6~30일 때 25번 모두 "나머지 학생은 집에 가세요."가 출력된다. break를 사용해 i가 6을 만나면 "나머지 학생은 집에 가세요."를 출력하고 for문을 탈출할 수 있게 한다.
두번째 for문에서는 조건문 안에 또 조건문을 사용했다. i가 1부터 30까지 반복되고 i가 6부터 10까지는 "i번 학생은 조별 발표 준비를 하세요."가 출력되는데 i가 7이 되면 "7번 학생은 결석입니다."가 출력될 것이다. 만약 if (i ==7) 조건문에 continue를 사용하지 않는다면 "7번 학생은 결석입니다."가 출력되고 "7번 학생은 조별 발표 준비를 하세요."도 같이 출력될 것이다. 후자를 출력하지 않기 위해서 continue를 사용했다. continue는 다음 반복으로 바로 넘어가도록 하는 역할을 한다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // rand 함수를 사용하기 위해 필요한 헤더파일
{
// 랜덤함수
//int num = rand() % 3; // 3개의 경우의 수 중 하나를 뽑도록 함. 0부터 시작이라 0.1.2
printf("난수 초기화 전\n");
for (int i = 0; i < 10; i++)
{
printf("%d ", rand() % 10);
}
printf("\n\n");
srand(time(NULL)); //난수 초기화
printf("난수 초기화 후\n");
for (int i = 0; i < 10; i++)
{
printf("%d ", rand() % 10);
}
return 0;
}
랜덤 함수를 사용하기 위해서는 헤더파일 stdlib.h를 추가해줘야 한다.
그리고 rand를 사용해서 수를 랜덤으로 뽑을 수가 있는데 0~32767의 값을 랜덤으로 뽑아준다.
수가 광범위한데 만약 내가 뽑고 싶은 수가 0~9이면 나머지 연산자 %를 사용해서 % 10을 해주면 된다.
그리고 내가 뽑고 싶은 수가 1~10이라면 rand() % 10 +1 을 해주면 된다.
프로그램을 다시 실행해보면 rand를 사용해서 수를 랜덤으로 뽑았지만 계속 같은 수가 나오게 되는데, 이렇게 되면 수를 랜덤으로 뽑는 의미가 없어진다.
이유는 컴퓨터에서 난수를 생성하는 방법 때문이다. 컴퓨터에서 난수를 생성하는 방법은 seed값을 두고 그 seed값을 특정 공식으로 구해서 계속해서 난수를 생성하기 때문인데, 이를 해결하기 위해서 우리는 seed값을 현재 시간으로 해줄 것이다.
그러기 위해서는 헤더파일에 time.h를 추가해주고 srand(time(NULL))을 해주면 된다. (<<< 공식같은거니까 외워두도록..)
이제는 랜덤수를 뽑을 때마다 수가 다르게 나올 것이다 !
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
// switch case
int n = rand() % 3; // 0-2 반환
switch (n)
{
case 0:
{
printf("가위\n");
break;
}
case 1:
{
printf("바위\n");
break;
}
case 2:
{
printf("보\n");
break;
}
default:
{
printf("몰라요\n");
break;
}
// break문 안하면 하나 만족할 때 다음 나머지 것들을 모두 실행함.
}
int a = 15;
switch (a)
{
case 8:
case 9:
case 10:
case 11:
case 12:
case 13:printf("초등학생"); break;
case 14:
case 15:
case 16:printf("중학생"); break;
case 17:
case 18:
case 19:printf("고등학생"); break;
default: printf("학생이 아닌듯");
}
// a인 case부터 차례로 실행하는데 break만나면 탈출
return 0;
}
switch~case문에 대해서 알아보자.
switch(조건식)
{
case 정수값:
{
처리문;
break;
}
default:
처리문;
}
이런식으로 쓰이는데 조건식에는 변수, 상수, 산술식, 함수 등 아무거나 와도 상관없지만, 결과값이 정수값이어야 한다.
case 정수값; 의 정수값은 조건식에서 나올 수 있는 값이어야하고 만족하는 정수 값이 없다면 default문을 수행하는데,
default문은 있어도 되고 없어도 된다. 있다면 일반적으로 마지막에,,,,
각 케이스에 break를 써주지 않는다면, 만족하는 케이스가 나왔을 때 뒤에 나머지 케이스들도 모두 실행해줌.
예를 들어 위 코드의 두번째 케이스에서 case 16과 19에 break가 없다면, a = 15니까 case 15부터 실행되어 case 16을 만나면 "중학생"이 출력되고 case 17, 18, 19, default까지 실행 후 "고등학생"과 "학생이 아닌 듯"도 출력될 것이다.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
int num = rand() % 100 + 1; // 1부터 100까지 숫자 뽑기
printf("숫자 : %d \n", num);
int answer = 0; // 정답
int chance = 5; // 기회
while (1) // 1 : 참 0 : 거짓
{
printf("남은 기회 %d 번\n", chance--);
printf("숫자를 맞혀보세요 (1~100) : ");
scanf_s("%d", &answer);
if (answer > num) // 입력받은 수가 뽑은 수보다 크다면 DOWN 출력
{
printf("DOWN \n\n");
}
else if (answer < num) // 입력받은 수가 뽀ㅃ은 수보다 작다면 UP 출력
{
printf("UP \n\n");
}
else if (answer == num) // 입력받은 수와 뽑은 수가 같다면 정답입니다 ! 출력하고
{ // break를 통해 while 무한루프 탈출
printf("정답입니다 ! \n\n");
break;
}
else
{
printf("뭐냐 ?");
}
if (chance == 0) // 기회 5번을 다 써서 chance가 0이 되면 실패 출력하고
{ // break를 통해 while문 탈출
printf("실패");
break;
}
}
return 0;
}
간단한 프로젝트이다.
우리가 흔히 아는 숫자맞추기 업다운 게임인데, 랜덤으로 수를 뽑고 5번의 기회 안에 맞추면 된다.
랜덤으로 1~100 중 수 하나 뽑기, 입력받을 정답 0으로 선언과 초기화, 기회 5 선언과 초기화를 한다.
그 다음 while(1)로 무한루프를 돌릴껀데 정수를 입력받아서 랜덤으로 뽑은 수를 맞추면 된다.
'c언어 기초' 카테고리의 다른 글
c언어 포인터 pointer - 나도코딩 (0) | 2022.05.30 |
---|---|
c언어 배열 array - 나도코딩 (0) | 2022.05.30 |
c언어 함수 function - 나도코딩 (0) | 2022.05.29 |
c언어 loop, 반복문, 이중반복문, for,while, do while - 나도코딩 (0) | 2022.05.29 |
c언어 변수,자료형, printf, scanf - 나도코딩 (0) | 2022.05.29 |