#include <stdio.h>
#include <stdlib.h>
int ten(int ran) { //1~10까지 이므로 %10(나머지)
return ran % 11;
}
void ex1() {
int ranNum = rand();
int i;
for (int i = 0; i < 5; i++) {
printf("난수: %d, 10자리 난수: %d\n", ranNum,ten(ranNum));
ranNum = rand();
}
}
int main() {
ex1();
}
난수: 41, 10자리 난수: 8
난수: 18467, 10자리 난수: 9
난수: 6334, 10자리 난수: 9
난수: 26500, 10자리 난수: 1
난수: 19169, 10자리 난수: 7
#include <stdio.h>
#include <stdlib.h>
void main()
{
int ranNum = rand();
int i;
for (i = 0; i < 5; i++) {
printf("%d\n", ranNum);
ranNum = rand();
}
}
41
18467
6334
26500
19169
난수란, 규칙성 없이 임의로 생성되는 수
난수를 총 5번 생성하는데 모두 0이상의 정수가 나오는 것을 확인 할 수 있다
[01] 1~10까지의 난수를 생성하고 사용자가 난수를 맞출때 까지 반복하는 프로그램
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main(){
srand((unsigned int)time(NULL)); //시간정보를 이용해 난수 생성
int randNum = rand() % 10 + 1; //1~10까지의 난수 설정
int choice = 0;
while (1) {
printf("난수를 맞춰보세요(1~10사이): ");
scanf_s("%d", &choice);
if (choice == randNum) {
printf("정답입니다\n");
break;
}
else {
printf("틀렸습니다. 재시도\n");
}
}
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int ten2(int ran) { //1~10까지 이므로 %10(나머지)
return ran % 10 +1;
}
void ex2() {
srand((unsigned int)time(NULL));
int answer = ten2(rand());
int tryu;
while (1) {
tryu = ten2(rand());
printf("정답은: %d 유저의 숫자: %d", answer, tryu);
if (tryu == answer) {
printf("축하합니다.");
break;
}
printf("틀렸습니다.\n");
}
}
[02] 위의 응용문제, main함수에는 호출문 외에 존재하지 않게하기
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void randNUM(){
srand((unsigned int)time(NULL)); //시간정보를 이용해 난수 생성
int randNum = rand() % 10 + 1; //1~10까지의 난수 설정
int choice = 0;
while (1) {
printf("난수를 맞춰보세요(1~10사이): ");
scanf_s("%d", &choice);
if (choice == randNum) {
printf("정답입니다\n");
break;
}
else {
printf("틀렸습니다. 재시도\n");
}
}
}
void main() {
randNUM();
}
난수를 맞춰보세요(1~10사이): 5
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 1
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 4
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 3
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 6
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 9
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 8
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 7
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 2
틀렸습니다. 재시도
난수를 맞춰보세요(1~10사이): 10
정답입니다
[01] 가위바위보 게임 프로그램 만들기
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
static const char* CHOICE[] = { "가위", "바위", "보" };
static const char* WIN = "승리";
static const char* LOSE = "패";
static const char* TIE = "비김";
void main() {
int iRandom = 0; //1가위 2바위 3보
int iSelection = 0;
//컴퓨터의 랜덤값 저장
srand(time(NULL)); //srand 값 초기화
iRandom = (rand() % 3) + 1;
printf("1가위 2바위 3보: ");
scanf_s("%d", &iSelection);
printf("\n 사용자: %s", CHOICE[iSelection-1]); //배열이 0부터 시작하므로 1을 빼준다
printf("\n 컴퓨터: %s\n", CHOICE[iRandom - 1]);
//결과출력
if (iSelection == iRandom) {
printf(TIE);
}
else {
switch (iSelection) {
case 1:printf(iRandom == 3 ? WIN : LOSE);
break;//내가 낸 값이 1가위, 컴퓨터가 낸 랜덤값이 3보 일 때
case 2:printf(iRandom == 1 ? WIN : LOSE);
break;
case 3:printf(iRandom == 2 ? WIN : LOSE);
break;
}
}
}
1가위 2바위 3보: 3
사용자: 보
컴퓨터: 보
비김
1가위 2바위 3보: 2
사용자: 바위
컴퓨터: 가위
승리
1가위 2바위 3보: 2
사용자: 바위
컴퓨터: 보
패
[02] 가위바위보 게임은 함수로 만들고, main함수에는 호출문 외에 존재하지 않게하기
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
static const char* CHOICE[] = { "가위", "바위", "보" };
static const char* WIN = "승리";
static const char* LOSE = "패";
static const char* TIE = "비김";
void game()
{
int iRandom = 0; //1가위 2바위 3보
int iSelection = 0;
//컴퓨터의 랜덤값 저장
srand(time(NULL)); //srand 값 초기화
iRandom = (rand() % 3) + 1;
printf("1가위 2바위 3보: ");
scanf_s("%d", &iSelection);
printf("\n 사용자: %s", CHOICE[iSelection - 1]); //배열이 0부터 시작하므로 1을 빼준다
printf("\n 컴퓨터: %s\n", CHOICE[iRandom - 1]);
//결과출력
if (iSelection == iRandom) {
printf(TIE);
}
else {
switch (iSelection) {
case 1:printf(iRandom == 3 ? WIN : LOSE);
break;//내가 낸 값이 1가위, 컴퓨터가 낸 랜덤값이 3보 일 때
case 2:printf(iRandom == 1 ? WIN : LOSE);
break;
case 3:printf(iRandom == 2 ? WIN : LOSE);
break;
}
}
}
void main() {
game(); //가위바위보 함수만 가져오기
}
[03] 가위바위보 다르게 풀어보기 (함수를 계속 만들어서 메인 함수에 호출하도록)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int ten2(int ran) { //1~10까지 이므로 %10(나머지)
return ran % 10 +1;
}
void ex2() {
srand(time(NULL));
int answer = ten2(rand());
int tryu;
while (1) {
tryu = ten2(rand());
printf("정답은: %d 유저의 숫자: %d\n", answer, tryu);
if (tryu == answer) {
printf("축하합니다.");
break;
}
printf("틀렸습니다.\n");
}
}
int three(int ran) {
return ran % 3 + 1; //0이 있으므로 +1을 해준다
}
int computer(void) {
return three(rand());
}
int user(void) {
int invalue;
printf("유저의 가위1 바위2 보3 를 선택해주세요: ");
scanf_s("%d", &invalue);
return invalue;
}
int winloss(int c, int u) {
if (u == 1) {
if (c == 3) {
return 1;
}
}
else if (u == 2) {
if (c == 1) {
return 1;
}
}
else if (u == 3) {
if (c == 2) {
return 1;
}
}
return 0;
}
void game() {
//이길 때 까지 반복
while (1) {
//컴퓨터 선택
int cuser = computer();
//유저 선택
int userv = user();
//승패 판단
if (1 == winloss(cuser, userv))
{
printf("축하드립니다. 이겼습니다.");
break;
}
printf("컴퓨터는 %d 당신은 %d 입니다. 졌습니다.", cuser, userv);
}
}
void ex3() {
game();
}
int main() {
//ex1();
//ex2();
ex3();
}
유저의 가위1 바위2 보3 를 선택해주세요: 3
컴퓨터는 3 당신은 3 입니다. 졌습니다.유저의 가위1 바위2 보3 를 선택해주세요: 2
컴퓨터는 3 당신은 2 입니다. 졌습니다.유저의 가위1 바위2 보3 를 선택해주세요: 1
컴퓨터는 2 당신은 1 입니다. 졌습니다.유저의 가위1 바위2 보3 를 선택해주세요: 3
축하드립니다. 이겼습니다.
길이가 5인 int형 배열을 만들고 사용자로부터 5개의 정수 입력 받기
오름차순, 내림차순 함수 사용해서 main에서 호출하기
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void inputarry(int arr[],int index) {
printf("배열의 %d 번째 값 입력: ", index+1); //몇 번째이므로 +1
scanf_s("%d", &arr[index]);
}
void decs(int arr[]) {
int max,maxi, tmp;
int resultarr[5];
for (int i = 0; i < 5; i++) {
max = arr[i];
maxi = i;
for (int j = i+1; j < 5; j++) {
if (max < arr[j]) {
tmp = max;
max = arr[j];
arr[maxi] = max;
arr[j] = tmp;
}
}
}
}
void asc(int arr[]) {
for (int i = 0; i < 5; i++) {
printf("%d ", arr[4 - i]);
}
}
void ex5() {
int iarry[5];
//배열 입력
for (int i = 0; i < 5; i++) {
inputarry(iarry, i);
}
//내림차순
decs(iarry);
for (int i = 0; i < 5; i++) {
printf("%d ", iarry[i]);
}
printf("\n");
//내림차순
asc(iarry);
}
int main() {
//ex1();
//ex2();
//ex3();
//ex4();
ex5();
}
배열의 1 번째 값 입력: 4
배열의 2 번째 값 입력: 5
배열의 3 번째 값 입력: 6
배열의 4 번째 값 입력: 2
배열의 5 번째 값 입력: 9
9 6 5 4 2
2 4 5 6 9
'Dev. > C++' 카테고리의 다른 글
구조체 (0) | 2022.04.04 |
---|---|
포인터의 포인터/싱글포인터/더블포인터 (0) | 2022.04.01 |
함수 심화 문제 /배열을 전달 받는 함수/call by value / call by reference (0) | 2022.03.30 |
함수의 이해 응용문제 (0) | 2022.03.28 |
함수의 이해 기본예제/함수정의와 호출/지역변수 전역변수 (0) | 2022.03.28 |
댓글