본문 바로가기
프로그래밍 공부흔적/C

[C] 인프런 나도코딩 3일차 S5(배열)

by 뷕뺙쀡 2020. 8. 1.

SECTION 5 ) 배열

배열은 여러 개의 변수를 함께, 동시에 생성

배열 값 설정 방법
EX)int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
배열의 값을 설정할 땐 변수 X 무조건 상수
값보다 선언 수가 적을 경우엔 0
arr[]={1,2,3} <- 이런 식으로 설정해도 ㄱㅊ

문자 VS 문자열
문자열 EX)char str[4]="HI!" <- [H][I][!][\0]
문자열 끝에는 '끝을 의미하는 NULL 문자 '\0'이 포함되어야함

//영어는 1글자 : 1byte
//한글은 2글자 : 2byte

문자열 심화  
아스키 코드 값 출력 <- NULL은 0
각 문자 당 아스키 코드 값이 있음
참고 : 아스키 코드? 미국표준협회에서 제시한 표준 코드 체계
7bit 총 128개의 코드 (0~127)
참고 0~127 사이의 아스키코드 정수값에 해당하는 문자 확인은%c 이용

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

int main(void)
{
	srand(time(NULL));
	printf("\n\n===아빠는 대머리 게임을 시작합니다===\n\n");
	int answer; //사용자 입력값
	int treatment = rand() % 4; //발모제 선택

	int cntShowBottle = 0; //이번 게임에서 보여줄 병 개수

	//3번의 기회
	for (int i = 1; i <=3; i++)
	{
		int bottle[4] = {0,0,0,0};//4개의 병
		cntShowBottle = rand() % 2 + 2; //보여줄 병 개수 2 or 3
		
		int isincluded = 0;

		printf("%d번째 시도\n\n",i);

		for (int j=0; j < cntShowBottle; j++)
		{
			int randBottle = rand() % 4;//0~3

			//아직 선택되지 않은 병이면, 선택 처리
			if (bottle[randBottle] == 0)
			{
				bottle[randBottle] = 1;
				if(randBottle == treatment)
				{
					isincluded = 1;
				}
			}
			//이미 선택된 병이면, 중복이므로 다시 선택
			else
			{
				j--;
			}
		}

		//사용자에게 문제 표시
		for (int k = 0; k < 4; k++)
		{
			if (bottle[k] == 1)
				printf("%d ", k + 1);
		}
		printf("물약을 머리에 바릅니다\n\n");

		if (isincluded == 1)
		{
			printf("머리가 자라났습니다\n\n");
		}
		else
		{
			printf("대머리가 그대로입니다\n\n");
		}
		printf("계속 하려면 아무나키나 누르세요\n\n");
	}

	printf("\n발모제는 몇 번일까요?\n");
	scanf_s("%d", &answer);
	if (answer==treatment+1)
	{
		printf("정답입니다");
	}
	else
	{
		printf("떙 틀렸어요 정답은 %d", treatment+1);
	}
	return 0;
}

//getchar()을 하면 계속 두번째와 세번째 시도가 같이 나와서 빡쳐서 걍 지워버렸음 왜인지는 아직도 모름
//서로 보여주는 병 개수를 달리하지 않아도 달리 나오길래 걍 없애버림

 

 

C 프로그래밍 - 입문부터 게임 개발까지 - 인프런

C 는 조금 어렵지만, 아주 기본이 되는 언어입니다. C 를 마스터 하고 나면, 다른 언어는 굉장히 쉽게 배울 수 있습니다. 그리고, 나도코딩이 깜짝! 놀랄만큼 쉽게 알려드리겠습니다. C 프로그래밍

www.inflearn.com

 

댓글