25.06.19 개발일지(배열, 함수, 포인터 응용)

2025. 11. 7. 09:37·6월 개발일지

 

25.06.19 개발일지

배열과 함수 포인터 응용

처음 가위바위보 프로그램을 함수를 사용해서 만들어 볼 때 배열을 선언해서 포인터 함수를 사용하는 법을 몰라서 마지막 승무패 결과를 카운트 해서 종합 결과창을 보여주는 부분을 구현하지 못했었다.

 

포인터를 통해 main 함수에서 선언한 배열을 함수에 전달해 사용할 수 있다는 걸 배우고 난 뒤 해결했다.

: main 함수에서 승무패를 카운팅하는 result 라는 배열을 선언해서 그 요소들을 다른 함수들에서 바로 사용했다.

: game_play 라는 함수에서 result 배열의 요소 result[0], result[1], result[2] 사용


전체 코드

 

#include <stdio.h>             // 가위바위보
#include <stdlib.h>
#include <time.h>
 
int player_number(int* p_num1)
{
    int num1;
    printf("가위(1), 바위(2), 보(3), 종료 및 결과 출력(0)\n");
    printf("숫자를 입력해주세요>> ");
    scanf("%d", &num1);
    *p_num1 = num1;

    return 0;
}

int computer_number(int* p_num2)
{
    int num2 = rand() % 3 + 1;
    *p_num2 = num2;

    return 0;
}

int rock_scissors_paper(int i, int j, int result[3])
{
    
    if (i == 1 && j == 1)
    {
        printf("사용자는 가위를 냈습니다.\n");
        printf("컴퓨터는 가위를 냈습니다.\n");
        printf("무승부입니다.\n");
        printf("\n");
        result[2] = result[2] + 1;
    }

    if (i == 1 && j == 2)
    {
        printf("사용자는 가위를 냈습니다.\n");
        printf("컴퓨터는 바위를 냈습니다.\n");
        printf("졌습니다. 분발하세요.\n");
        printf("\n");
        result[1] = result[1] + 1;
    }

    if (i == 1 && j == 3)
    {
        printf("사용자는 가위를 냈습니다.\n");
        printf("컴퓨터는 보를 냈습니다.\n");
        printf("이겼습니다. 축하합니다.\n");
        printf("\n");
        result[0] = result[0] + 1;
    }

    if (i == 2 && j == 1)
    {
        printf("사용자는 바위를 냈습니다.\n");
        printf("컴퓨터는 가위를 냈습니다.\n");
        printf("이겼습니다. 축하합니다.\n");
        printf("\n");
        result[0] = result[0] + 1;
    }

    if (i == 2 && j == 2)
    {
        printf("사용자는 바위를 냈습니다.\n");
        printf("컴퓨터는 바위를 냈습니다.\n");
        printf("무승부입니다.\n");
        printf("\n");
        result[2] = result[2] + 1;
    }

    if (i == 2 && j == 3)
    {
        printf("사용자는 바위를 냈습니다.\n");
        printf("컴퓨터는 보를 냈습니다.\n");
        printf("졌습니다. 분발하세요.\n");
        printf("\n");
        result[1] = result[1] + 1;
    }

    if (i == 3 && j == 1)
    {
        printf("사용자는 보를 냈습니다.\n");
        printf("컴퓨터는 가위를 냈습니다.\n");
        printf("졌습니다. 분발하세요.\n");
        printf("\n");
        result[1] = result[1] + 1;
    }

    if (i == 3 && j == 2)
    {
        printf("사용자는 보를 냈습니다.\n");
        printf("컴퓨터는 바위를 냈습니다.\n");
        printf("이겼습니다. 축하합니다.\n");
        printf("\n");
        result[0] = result[0] + 1;
    }

    if (i == 3 && j == 3)
    {
        printf("사용자는 보를 냈습니다");
        printf("컴퓨터는 보를 냈습니다");
        printf("무승부입니다.");
        printf("\n");
        result[2] = result[2] + 1;
    }

    return 0;
}


int game_play(int result[3])
{
    printf("[종합 결과]\n");
    printf("> 승 : %d\n", result[0]);
    printf("> 패 : %d\n", result[1]);
    printf("> 무 : %d\n", result[2]);
    
    return 0;
}

int main(void)
{
    int i, j;
    int result[3] = {0, 0, 0}; // 승무패 카운팅하는 배열 선언
    i = 1;

    while (i > 0)  // 0 입력시까지 무한반복
    {
        player_number(&i);

        computer_number(&j);

        rock_scissors_paper(i, j, result);
    }

    game_play(result);  //승무패 결과화면 출력

    return 0;
}
 

void main() 함수와 int main(void)의 차이점

 

int main(void)

- 반환형은 int이고, 매개변수가 없는 main 함수이다.

- ISO C표준에 따라 정확하게 맞는 형식

- 반환값 : ex) return 0; 은 정상 종료를 의미한다.

 

void main()

- 반환형이 void이고 매개변수가 없는 main함수

- 비표준 정의

- 일부 컴파일러에서는 허용되지만, 이식성이 떨어지고 운영체제에 종료 상태를 전달하지 못함

 

다른 함수를 선언할 때도 차이점이 있다.

 

void func(char cArr[])

- 아무 값도 반환하지 않는 함수

- 단순히 배열 내용을 변경하거나 출력만 할 때 사용(출력,변경 등 단순 작업)

- return 필요없음

 

char func(char cArr[])

- 문자형(char) 값을 반환하는 함수

- 배열을 기반으로 문자 1개를 계산하고 반환할 때 사용(문자 추출 등 계산 결과 반환)

- 반드시 char 타입 값 반환해야 함

 

'6월 개발일지' 카테고리의 다른 글

25.06.23 개발일지(C언어 콘솔게임 만들기)  (0) 2025.11.07
25.06.20 개발일지(다중포인터, 다차원배열,콘솔게임)  (0) 2025.11.07
25.06.18 개발일지 (C언어 간단한 프로그램 만들기)  (1) 2025.11.07
25.06.17 개발일지(C언어 간단한 프로그램 만들기 2)  (0) 2025.11.07
25.06.16 개발일지(C언어 간단한 프로그램 만들기 1)  (0) 2025.11.06
'6월 개발일지' 카테고리의 다른 글
  • 25.06.23 개발일지(C언어 콘솔게임 만들기)
  • 25.06.20 개발일지(다중포인터, 다차원배열,콘솔게임)
  • 25.06.18 개발일지 (C언어 간단한 프로그램 만들기)
  • 25.06.17 개발일지(C언어 간단한 프로그램 만들기 2)
dldmstj4378
dldmstj4378
dldmstj4378 님의 블로그 입니다.
  • dldmstj4378
    dldmstj4378 님의 블로그
    dldmstj4378
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • 비전 검사 (0)
      • 11월 개발일지 (6)
      • 10월 개발일지 (15)
      • 9월 개발일지 (26)
      • 8월 개발일지 (20)
      • 7월 개발일지 (26)
      • 6월 개발일지 (27)
      • 5월 개발일지 (16)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dldmstj4378
25.06.19 개발일지(배열, 함수, 포인터 응용)
상단으로

티스토리툴바