cal.c
#include <stdio.h>
int add(int value1, int value2) // 더하기 함수 정의
{
return value1 + value2;
}
int sub(int value1, int value2) // 빼기 함수 정의
{
return value1 - value2;
}
int mul(int value1, int value2) // 곱하기 함수 정의
{
return value1 * value2;
}
int div(int value1, int value2) // 나누기 함수 정의
{
return value1 / value2;
}
int main(void)
{
int num1, num2;
char opt;
printf("첫번째 숫자를 입력하세요 : ");
scanf("%d", &num1); // 숫자를 입력 받음
getchar(); // 스트림 비우기
printf("수행할 동작을 입력하세요(+, -, x, /) : ");
scanf("%c", &opt); // 동작(문자)을 입력받음
getchar(); // 스트림 비우기
printf("두번째 숫자를 입력하세요 : ");
scanf("%d", &num2); // 숫자를 입력받음
switch (opt) // 입력한 동작에 따라 연산 수행 및 출력
{
case '+':
printf("%d %c %d = %d", num1, opt, num2, add(num1, num2));
break;
case '-':
printf("%d %c %d = %d", num1, opt, num2, sub(num1, num2));
break;
case 'x':
printf("%d %c %d = %d", num1, opt, num2, mul(num1, num2));
break;
case '/':
printf("%d %c %d = %d", num1, opt, num2, div(num1, num2));
break;
}
C
복사
결과
mine.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
printf("지뢰찾기 게임 시작\n\n");
int x, y; // x, y 좌표로 사용할 변수 선언
int ix, iy; // 유저가 입력한 x, y 좌표를 저장할 변수 선언
int arr[10][10] = {0}; // 10*10 배열 생성 및 내용 초기화
srand((unsigned int)time(NULL)); // 시간으로 시드값 설정
int count = 0; // 카운트 할 변수
int mine = 10; // 지뢰 갯수 선언
while (count < mine) // 0~9 까지 반복하며 지뢰 10개 설치
{
int x = rand() % 10; // 0~9 까지 랜덤 값 추출
int y = rand() % 10; // 0~9 까지 랜덤 값 추출
if (arr[x][y] >= 0)
{
arr[x][y] = -100; // 지뢰가 설치되는 좌표의 값은 -100
arr[x - 1][y - 1] += 1; // 지뢰가 설치된 좌표 기준으로 8칸은 +1
arr[x][y - 1] += 1;
arr[x][y + 1] += 1;
arr[x + 1][y + 1] += 1;
arr[x - 1][y] += 1;
arr[x - 1][y + 1] += 1;
arr[x + 1][y] += 1;
arr[x + 1][y - 1] += 1;
count++; // 카운트 증가
}
}
for (x = 0; x < 10; x++) // 10번 반복
{
for (y = 0; y < 10; y++) // 10번 반복
{
printf("%d\t", arr[x][y]); // 지뢰판 출력
}
printf("\n");
}
printf("\n\n");
while(1) {
printf("좌표를 입력하세요 : x y"); // 좌표 입력
scanf("%d %d", &ix, &iy);
if (arr[ix][iy] < 0) {
printf("게임에 패배하셨습니다"); // 입력한 좌표가 음수면 패배
break;
}
}
}
C
복사
결과
문제점
•
배열 인덱스가 0 인 부분에 의도하지 않은 +1 값이 들어가는 경우가 있음 (x, y 축 동일)
◦
arr[0-1] 같은 경우 실행하지 않는 예외처리가 필요함
•
지뢰를 -100으로 설정하는 것에 대한 고민 필요 (다른 방법이 있을듯함)
•
선택한 곳이 지뢰가 아닐 경우 주변 8칸이 오픈되는 기능 필요
◦
해당 기능이 구현되지 않아서 ‘ㅁ’ 등 판 형태로 출력하지 않고 숫자를 그대로 출력하도록 했습니다