언어/C

[코딩자율학습] 7일차 여러방향으로 분기하기

홍시_코딩기록 2024. 3. 12. 23:58

 

📌 난수 생성하기

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

int main(void) {
	printf("난수 초기화 이전... \\n");
	for (int i = 0; i < 10; i++) {
		printf("%d", rand() % 10);
	}
	printf("\\n\\n난수 초기화 이후... \\n");
	srand(time(NULL));//난수 초기화
	for (int i = 0; i < 10; i++) {
		printf("%d", rand() % 10);
	}
	return 0;
}

  • 난수를 초기화 안하면 계속 같은 수로 나옴.
  • 난수를 제대로 뽑으려면 항상 난수 초기화를 한 후에 rand()함수를 사용해야함.

❗ rand() 함수를 사용하려면 #include <time.h> #include <stdlib.h> 이 필요함.

 

 

📌 switch 문

(if 문)

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

int main(void) {
	srand(time(NULL)); //난수 초기화
	int i = rand() % 3;
	if (i == 0) {
		printf("가위\\n");
	} else if (i == 1) {
		printf("바위\\n");
	} else {
		printf("보\\n");
	}
	return 0;
}

(switch 문)

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

int main(void) {
	srand(time(NULL)); //난수 초기화
	int i = rand() % 3; //0 ~2 반환
	switch (i) {
		case 0:
			printf("가위\\n");
			break;
		case 1:
			printf("바위\\n");
			break;
		case 2:
			printf("보\\n");
			break;
		default:
			printf("몰라요\\n");	
	}
	return 0;
}
  • 값과 일치하는 case 문을 만나면 switch문을 탈출해야 함으로 break;를 적어야함.
  • default문은 switch 문 마지막에 오므로 break 문을 넣지 않아도 됨.

 

 

📌 숫자게임

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

int main(void) {
	srand(time(NULL));
	int num = rand() % 100 + 1;
	printf("정답: %d\\n", num);
	int answer = 0;
	int chance = 5;

	while (1)	{ //chance == 0 5번기회가 끝났을 때 코드 주기 위해 1로 (참으로) 넣음.
		printf("남은 기회 %d번\\n", chance--);
		printf("입력하쇼");
		scanf_s("%d", &answer);
		if (answer > num) {
			printf("down\\n");
		}
		else if (answer < num) {
			printf("up\\n");
		}
		else {
			printf("정답 맟춤!!!\\n");
			break;
		}

		if (chance == 0) {
			printf("\\n\\n\\n게임 끝났습니더");
			printf("정답: %d\\n", num);
			break;
		}
	}
	return 0;
}

  • 5번기회를 모두 사용했을 때에 코드를 주기위해 while을 chance가 0보다 클 때에서 매번 실행하도록 1(참)으로 바꿈.

 

 

 

📌 커피 심부름

#include <stdio.h>

int main(void) {
	int coffee = 0;
	int sandwich = 0;
	int total = 0;
	printf("커피?: ");
	scanf_s("%d", &coffee);
	printf("샌드위치?: ");
	scanf_s("%d", &sandwich);

	if (coffee > 0 && sandwich > 0) {
		total = (coffee * 3500) + (sandwich * 6000);
	} else {
		total = (coffee * 4500) + (sandwich * 6000);
	} 
	printf("총 %d입니다\\n\\n\\n\\n", total);
	return 0;
}

  • 서브웨이 먹고싶다.
  • 변수 받는게 헷갈려서 printf에서 &total로 받아서 오류가 났었다.