반응형
1. 난수 발생함수를 이용하여 만든 주사위 눈을 알아맞히는 게임을 작성하라.
#include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { srand((unsigned)time(NULL)); int dice_value, dot; int input; int ch; while (1) { dice_value = rand(); printf("\n"); printf("1. 시작 \n"); printf("2. 종료 \n"); scanf_s("%d", &ch); switch (ch) { case 1: printf("\n"); printf("주사위 눈수를 입력해주세요 : "); scanf_s("%d", &dot); do { printf("\n"); printf("주사위 눈 수를 맞춰보세요. 포기하시려면 범위 밖의 수를 입력하세요 : "); scanf_s("%d", &input); if (input <= 0 || input > dot+1) { break; } if (input == (dice_value % dot) + 1) { printf("\n"); printf("맞추셨습니다. \n"); printf("초기화면으로 돌아갑니다. \n"); break; } printf("\n"); printf("입력하신 %d는 답이 아닙니다. \n", input); } while (input != (dice_value % dot) + 1); break; case 2: return 0; break; default : printf("\n"); printf("잘못 입력하셨습니다. 다시 입력하세요. \n"); break; } } }
2. 난수 발생함수를 이용하여 로또복권(6/45)의 6개의 수를 중복됨이 없이 뽑는 프로그램을 작성하라.
#include <stdio.h> #include <time.h> #include <stdlib.h> int main(void) { srand((unsigned)time(NULL)); int lotto[6]; int temp; temp = (rand() % 45) + 1; //중복없이 뽑기 for (int i = 0; i < 6; i++) { for (int k = 0; k < i; k++) { if (lotto[k] == temp) { //중복된게 있으면 temp = (rand() % 45) + 1; //다시 뽑고 k = 0; //처음부터 다시 검사한다. } } lotto[i] = temp; } //요즘 애용하고 있는 삽입정렬로 오름차순 정렬. for (int i = 0; i < 6 - 1; i++) { for (int k = i + 1; k < 6; k++) { //값 교환은 xor swap으로 if (lotto[i] > lotto[k]) { lotto[i] ^= lotto[k]; lotto[k] ^= lotto[i]; lotto[i] ^= lotto[k]; } } } //출력 for (int i = 0; i < 6; i++) { printf("%2d ", lotto[i]); } }
반응형