[ICON] C언어 멘토링 - 11차시 수업 : 배열(2차원 배열)

hhhhyelim·2022년 9월 12일
0

ICON

목록 보기
11/17
post-thumbnail

📆 일시

: 2022/09/08

📝 수업 내용

  • 다차원 배열
    - 다차원 배열의 개념
    - 2차원 배열의 선언
    - 2차원 배열의 초기화
    - 2차원 배열의 사용
  • 배열을 매개변수로 갖는 함수
    - 정의
    - 호출
  • 배열
    - 배열의 탐색
    - 배열의 정력

💻 실습 내용

  • 배열을 초기화하고, 배열의 이름, 크기, 원소의 크기를 출력하는 프로그램
  • 3x3 행렬의 합을 구하는 프로그램

  • 정수형 배열의 모든 원소를 특정값으로 채우는 함수를 작성하는 프로그램

  • 실수형 배열을 매개변수로 전달받아 원소들의 합계를 구하여 출력하는 프로그램

  • 초기화 한 배열에서 가장 큰 값을 찾고, 탐색하고 싶은 값의 인덱스 구하는 프로그램


📚 과제(4문제)

  1. 정수형 2차원 배열을 선언하여 그 안에 구구단의 결과를 9단까지 저장한 후 출력하는 프로그램을 작성하시오. 사용자 입력으로 숫자를 읽어들여서 선언한 2차원 배열을 이용하여 해당 구구단을 출력하는 프로그램을 작성하시오.

👉실행 예시

--구구단 표는 다음과 같습니다.
   2   4   6   8  10  12  14  16  18
   3   6   9  12  15  18  21  24  27
   4   8  12  16  20  24  28  32  36
   5  10  15  20  25  30  35  40  45
   6  12  18  24  30  36  42  48  54
   7  14  21  28  35  42  49  56  63
   8  16  24  32  40  48  56  64  72
   9  18  27  36  45  54  63  72  81
--원하는 구구단은? 3
   3   6   9  12  15  18  21  24  27
  1. 한 학기 성적은 중간고사 30점, 기말고사 30점, 팀 프로젝트 30점, 출석 10점으로 계산된다. 학생이 모두 5명일 때, 각 학생별 총점을 구하고 중간고사, 기말고사, 팀프로젝트, 출석, 총점의 평균을 구하여 출력하는 프로그램을 작성하시오. 성적을 저장하는 2차원 배열은 다음과 같이 초기화해서 사용하시오.

👉실행 예시

                중간    기말    팀플     출석    총점
학 생   1번:     28      28      26       9      91
학 생   2번:     30      27      30      10      97
학 생   3번:     25      26      24       8      83
학 생   4번:     18      22      22       5      67
학 생   5번:     24      25      30      10      89
항목별 평균:    25.0    25.6     26.4    8.4    85.4

👉참고

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

int main(void)
{
	int scores[SIZE][SIZE] = { // 학생 1명당 4개의 성적, 학생은 모두 5명임
		{28, 28, 26, 9},
		{30, 27, 30, 10},
		{25, 26, 24, 8}, 
		{18, 22, 22, 5}, 
		{24, 25, 30, 10}
	};
	double averages[SIZE] = { 0 };
	int i, j;

	//학생별 합계와 평균 계산
			
	//항목별 평균 계산
	
	printf("\t\t중간\t기말\t팀플\t출석\t총점\n");
	//학생별 점수 출력

	printf("항목별 평균:\t");
	//항목별 평균 출력

	return 0;
}
  1. 음악 재생 프로그램에는 재생 목록에 있는 곡들을 임의의 순서로 뒤섞는 셔플 기능이 있다. 이 셔플 기능처럼 크기가 10인 정수형 배열의 원소를 임의의 순서로 뒤섞는 프로그램을 작성하시오. 크기가 10인 정수형 배열은 다음과 같이 초기화해서 사용한다.

👉실행 예시

셔플 전: 12 43 39 98 71 63  8 16 54 85
셔플 후: 16 54 12 85  8 63 39 98 43 71

👉참고

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10

void print_array(int arr[], int size);

int main(void)
{
	int arr[MAX] = { 12, 43, 39, 98, 71, 63, 8, 16, 54, 85 };

	srand((unsigned int)time(NULL));
	printf("셔플 전: ");
	print_array(arr, MAX);

	for (int i = 0; i < MAX - 1; i++)
	{
		// 코드 채우기
	}
	printf("셔플 후: ");
	print_array(arr, MAX);

	return 0;
}

void print_array(int arr[], int size)
{
	for (int i = 0; i < MAX; i++)
		printf("%2d ", arr[i]);
	printf("\n");
}

 
  1. 기차표 예매 프로그램을 작성하려고 한다. 간단하 구현을 위해 좌석은 모두 10개라고 하자. 예매할 좌석수를 입력받아 빈 자리를 할당한다. 에매할 때마다 각 좌석은 상태를 출력한다. 이면 예매 가능, x는 예매 불가를 의미한다. 더 이상 예매할 수 없으면 프로그램을 종료한다.

👉실행 예시

-----------------------------------------
현재 좌석: [ O O O O O O O O O O ]
-----------------------------------------

예매할 좌석수? 5
1 2 3 4 5 번 좌석을 예매했습니다.
-----------------------------------------
현재 좌석: [ X X X X X O O O O O ]
-----------------------------------------

예매할 좌석수? 3
6 7 8 번 좌석을 예매했습니다.
-----------------------------------------
현재 좌석: [ X X X X X X X X O O ]
-----------------------------------------

예매할 좌석수? 5
남은 좌석 수가 2이므로 5좌석을 예매할 수 없습니다

👉참고

 #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAX_SEATS 10

void print_seat(char seats[], int size);

int main(void)
{
	char seats[MAX_SEATS] = { 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O' };
	int occupied = 0, want = 0;
	int empty = 0;
	
// 여기에 적합한 코드를 작성하시오.

	return 0;
}

void print_seat(char seats[], int size)
{
	printf("-----------------------------------------\n");
	printf("현재 좌석: [ ");

	// 좌석의 예약 상태 출력

	printf("]\n");
	printf("-----------------------------------------\n");
}

0개의 댓글