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 |