개발 기록/C Language

[C언어] 대소고 기말 평가 대비 코드 | 구조체, 미로 재귀 탐색, 소수

우준성 2021. 6. 21. 11:05
// 점을 표현하는 구조체

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

typedef struct _p {
	int x;
	int y;
}Point;

struct Point {
	int x, y;
};

int main(void)
{
	struct Point p1, p2;
	// Point p1, p2;
	p1.x = 5;
	p1.y = 6;

	return 0;
}

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int m[9][9] = { // maze
	{2,2,2,2,2,2,2,2,2},
	{2,0,0,0,0,0,0,0,2},
	{2,0,2,2,0,2,2,0,2},
	{2,0,2,0,0,2,0,0,2},
	{2,0,2,0,2,0,2,0,2},
	{2,0,0,0,0,0,2,0,2},
	{2,2,0,2,2,0,2,2,2},
	{2,0,0,0,0,0,0,0,2},
	{2,2,2,2,2,2,2,2,2}
};

int Si, Sj, Ei, Ej, success, idx, Path_i[100], Path_j[100];
// S : Start, 출발점
// E : End, 도착점
// success : 통과에 성공하면 1
// idx : 경로 배열 인덱스
// ri, rj : 지나간 길을 저장함 (i는 행, j는 열)

int visit(int, int);

int main(void)
{
	idx = 0;
	success = 0;

	printf("미로 탈출 게임\n");
	Si = 1, Sj = 1;
	Ei = 7, Ej = 7;

	if (visit(Si, Sj) == 0)
		printf("못 찾았음\n");
	else
		printf("모든 경로를 찾았음\n");

	return 0;
}

int visit(int i, int j)
{
	static int path = 1;
	m[i][j] = 1;
	Path_i[idx] = i, Path_j[idx] = j; // 경로 Path를 저장
	idx++;
	
	// 만약 도착점에 도달했다면
	if (i == Ei && j == Ej)
	{
		printf("%d번째 찾은 경로\n", path++);

		for (int k = 0; k < idx; k++) // 경로 출력
		{
			printf("(%d %d)", Path_i[k], Path_j[k]);
		}
		printf("\n");
		success = 1; // 경로 찾기 성공
	}

	// *** 미로를 본격적으로 탐색하는 코드 *** 이 코드 꼭 기억하기

	if (m[i][j + 1] == 0) // 오른쪽으로 탐색
		visit(i, j + 1);
	if (m[i + 1][j] == 0) // 아래쪽으로 탐색
		visit(i + 1, j);
	if (m[i][j - 1] == 0) // 왼쪽으로 탐색
		visit(i, j - 1);
	if (m[i - 1][j] == 0) // 위쪽으로 탐색
		visit(i - 1, j);

	idx--;
	m[i][j] = 0;

	return success;
}

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int isPrime(int n) // 소수인지 아닌지 알려주는 함수
{
	for (int i = 2; i * i <= n; i++)
	{
    	// 이 부분 꼭 기억!!!
		if (n % i == 0)
			return 0; // 소수가 아니다
	}

	return 1; // 소수이다
}

int main(void)
{
	while (1)
	{
		int n;
		printf("숫자 : ");
		scanf("%d", &n);
		if (n < 2) return 0;
		if (n >= 1000)
		{
			printf("\n");
			continue;
		}
		int primeCnt = 1;
		for (int i = 2; i <= n; i++)
		{
			if (isPrime(i))
			{
				printf("%d ", i);
			}
		}
		printf("\n");
	}

	return 0;
}

<OMR카드>

서술형 단답형

*정답 번호 명확히 표기하여 검정색 볼펜으로 작성하기

 

화이팅!! 😆😄

 

반응형