[C프로그래밍] 240417_7주차_배열

김나정·2024년 4월 17일
0

C

목록 보기
2/8

대학수업을 듣고 이해한 내용을 정리해서 올리는 게시물입니다. 틀린 부분이 있을지do...


예제#3: 배열에 성적 입력

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define STUDENTS 5

int main(void)
{
    int scores[STUDENTS];
    int sum = 0;
    int i, average;
    for (i = 0; i < STUDENTS; i++) {
        printf("학생들의 성적을 입력하시오 : ");
        scanf("%d", &scores[i]);
    }
    for (i = 0; i < STUDENTS; i++) {
        sum += scores[i];
    }
    average = sum / STUDENTS;
    printf("성적 평균 = %d\n", average);

    return 0;
}

Lab #1: 배열에 출석 기록하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define WEEK 15

int main(void)
{
    int attend[WEEK];
    int cnt = 0;
    double absent;

    for (int i = 0; i < WEEK; i++) {
        printf("%d번째 강의에 출석하셨나요?[출석은 1, 결석은 0] : ",i+1);
        scanf("%d", &attend[i]);
    }
    for (int i = 0; i < WEEK; i++) {
        if (attend[i] == 0) {
            cnt += 1;
        }
    }
    absent = (double)cnt / WEEK;
    if(absent>0.3)
        printf("수업 일수 부족입니다(%f%%). \n", absent*100);
    else
        printf("열심히 출석했군요! \n");

    return 0;
}

Lab #2: 가장 싼 물건 찾기

#include <stdio.h>
#define SIZE 10
int main(void)
{
	int prices[SIZE] = { 12, 3, 19, 6, 18, 8, 12, 4, 1, 19 };
	int MIN;
	printf("[ ");
	for (int i = 0; i < SIZE; i++) {
		printf("%d ", prices[i]);
	}
	printf("]\n");

	MIN = prices[0];//일단 첫번째 원소를 min으로 설정
	for (int i = 1; i < SIZE; i++)//두번째 원소부터 비교시작
	{
		if (prices[i] < MIN)
			MIN = prices[i];
	}
	printf("최소값은 %d입니다.\n", MIN);
	return 0;
}

도전문제(Lab2 최대값을 찾도록 변경)

#include <stdio.h>
#define SIZE 10
int main(void)
{
	int prices[SIZE] = { 12, 3, 19, 6, 18, 8, 12, 4, 1, 19 };
	int MAX;
	printf("[ ");
	for (int i = 0; i < SIZE; i++) {
		printf("%d ", prices[i]);
	}
	printf("]\n");

	MAX = prices[0];//일단 첫번째 원소를 min으로 설정
	for (int i = 1; i < SIZE; i++)//두번째 원소부터 비교시작
	{
		if (prices[i] > MAX)
			MAX = prices[i];
	}
	printf("최대값은 %d입니다.\n", MAX);
	return 0;
}

Lab #3: 배열에서 특정한 값 탐색하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 10
int main(void)
{
	int arr[SIZE] = { 10,20,30,40,50,60,70,80,90,100 };
	int key;

	printf("[ ");
	for (int i = 0; i < SIZE; i++) {
		printf("%d ", arr[i]);
	}
	printf("]\n");

	printf("탐색할 값을 입력하시오 : ");
	scanf("%d", &key);
	
	for (int i = 1; i < SIZE; i++)//두번째 원소부터 비교시작
	{
		if (arr[i] == key) {
			printf("탐색 성공!, 인덱스 = %d\n",i);
			break;
		}
	}
	return 0;
}

버블정렬

#include <stdio.h>
#define SIZE 8
int main(void) {
	int list[SIZE] = { 10, 5, 8, 9, 6, 4, 1, 2 };
	// 배열의 요소를 정렬한다. 
	for (int k = 0; k < SIZE; k++) {
		for (int i = 0; i < SIZE; i++) {
			printf("%d ", list[i]);
		}
		printf("\n");
		for (int i = 0; i < SIZE - 1; i++) {
			if (list[i] > list[i + 1]) { // 크기 순이 아니면
				// 서로 교환한다. 
				int tmp = list[i];
				list[i] = list[i + 1];
				list[i + 1] = tmp;
			}
		}
	}
	return 0;
}

Lab #4: 행렬의 덧셈

#include <stdio.h>
#define ROWS 3
#define COLS 3
int main(void) {
	int A[ROWS][COLS] = { { 1,0,0 }, { 0,1,0 }, { 0,0,1 } };
	int B[ROWS][COLS] = { { 1,0,0 }, { 0,1,0 }, { 0,0,1 } };
	int C[ROWS][COLS];
		for (int r = 0; r < ROWS; r++) {
			for (int c = 0; c < COLS; c++) {
				C[r][c] = A[r][c] + B[r][c];
				printf("%d ", C[r][c]);
			}
			printf("\n");
		}
	return 0;
}

Lab #5: Tic-Tac-Toe 게임

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	char board[3][3];
	int x, y;
	//보드 초기화
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			board[i][j] = ' ';
		}
	}
	//사용자로부터 좌표입력을 받고 보드 갱신
	for (int i = 0; i < 9; i++) {
		printf("(x,y)좌표 : ");
		scanf("%d %d", &x, &y);
		board[x][y] = (i % 2 == 0) ? 'X' : 'O';
		//보드를 화면에 그린다.
		for (int j = 0; j < 3; j++) {
			printf("---|---|---\n");
			printf(" %c | %c | %c \n", board[j][0], board[j][1], board[j][2]);
		}
		printf("---|---|---\n");
	}
	return 0;
}

Tic-Tac-Toe 게임 응용

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {

	char board[3][3];
	int x, y;
	int cnt = 0;
	//보드 초기화
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) {
			board[i][j] = ' ';
		}
	}
	//사용자로부터 좌표입력을 받고 보드 갱신
	printf("<차례가 되면 바둑을 놓을 좌표를 입력해주세요>\n");
	while (cnt<9) {
		if (cnt % 2 == 0) {
			printf("당신의 차례입니다! : ");
			scanf("%d %d", &x, &y);
			if (board[x][y] == ' ') {
				board[x][y] = 'X';
				//보드를 화면에 그린다.
				for (int j = 0; j < 3; j++) {
					printf("---|---|---\n");
					printf(" %c | %c | %c \n", board[j][0], board[j][1], board[j][2]);
				}
				printf("---|---|---\n");
				printf("\n");
				cnt++;
			}
			else {
				printf("이미 선택된 좌표입니다. 다시 입력해주세요!\n");
			}
		}
		else {
			printf("[컴퓨터]\n");
			for (int i = 0; i < 3; i++) {
				for (int j = 0; j < 3; j++) {
					if (board[i][j] == ' ') {
						board[i][j] = 'O';
						for (int k = 0; k < 3; k++) {
							
							printf("---|---|---\n");
							printf(" %c | %c | %c \n", board[k][0], board[k][1], board[k][2]);
						}
						printf("---|---|---\n");
						printf("\n");
						i = 100;
						cnt++;
						break;
					}
				}
			}
		}
		
	}
	return 0;
}
profile
molbwa

0개의 댓글