본문 바로가기

프로그래밍/코딩 첫 걸음

21-05-18

1. 배열로 평균 구하기

#include <stdio.h>

int get_average(int scores[], int n);

int main()
{
	int scores[5] = { 1, 2, 3, 4, 5 };
	int avg;

	avg = get_average(scores, 5);
	printf("평균 = %d\n", avg);
	return 0;
}

int get_average(int scores[], int n)
{
	int i;
	int sum = 0;

	for (i = 0; i < n; i++)
	{
		sum += scores[i];
	}
		return sum / n;
}

배열의 경우, 사본이 아닌 원본이 전달된다. 즉, 전역 변수와 같은 성질을 갖는다.

 


2. 선택 정렬

#include <stdio.h>
#define SIZE 10

int main()
{
	int list[SIZE] = { 3, 2, 9, 7, 1, 4, 8, 0, 6, 5 };
	int i, j, temp, least;

	for (i = 0; i < SIZE - 1; i++)
	{
		least = i;
		for (j = i + 1; j < SIZE; j++)
		{
			if (list[j] < list[least])
				least = j;
		}
		temp = list[i];
		list[i] = list[least];
		list[least] = temp;
	}
	for (i = 0; i < SIZE; i++)
	{
		printf("%d ", list[i]);
	}

	printf("\n");
	return 0;
}

최솟값을 찾아 먼저 배치하는 알고리즘.

 


3. 이진 탐색

#include <stdio.h>
#define SIZE 16

int binary_search(int list[], int n, int key);

int main()
{
	int key;
	int grade[SIZE] = { 2,6,11,13,18,20,22,27,29,30,34,38,41,42,45,47 };
	printf("탐색할 값을 입력하시오: ");
	scanf("%d", &key);
	printf("탐색 결과 = %d\n", binary_search(grade, SIZE, key));

	return 0;
}

int binary_search(int list[], int n, int key)
{
	int low, high, middle;
	low = 0;
	high = n - 1;

	while (low <= high)
	{
		printf("[%d %d]\n", low, high);
		middle = (low + high) / 2;
		if (key == list[middle]) 
			return middle;
		else if (key > list[middle])
			low = middle + 1;
		else
			high = middle - 1;
	}
	return -1;
}

반으로 잘라가면서 탐색하는 알고리즘.

 


4. 2차원 배열의 할당

#include <stdio.h>
#include <stdlib.h>

#define ROWS 3
#define COLS 5

int main()
{
	int s[ROWS][COLS];
	int i, j;
	srand((unsigned)time(NULL));

	for (i = 0; i < ROWS; i++)
		for (j = 0; j < COLS; j++)
			s[i][j] = rand() % 100;

	for (i = 0; i < ROWS; i++)
	{
		for (j = 0; j < COLS; j++)
			printf(" %02d ", s[i][j]);
		printf("\n");
	}

	return 0;
}

 


5. 3×3 행렬의 덧셈

#include <stdio.h>
#include <stdlib.h>

#define ROWS 3
#define COLS 3

int main()
{
	int A[ROWS][COLS] = {
		{2,3,0},
		{8,9,1},
		{7,0,5} };
	int B[ROWS][COLS] = {
		{1,0,0},
		{1,0,0},
		{1,0,0} };
	int C[ROWS][COLS];

	int r, c;

	for (r = 0; r < ROWS; r++)
		for (c = 0; c < COLS; c++)
			C[r][c] = A[r][c] + B[r][c];

	for (r = 0; r < ROWS; r++) {
		for (c = 0; c < COLS; c++)
			printf("%d ", C[r][c]);
		printf("\n");
	}

	return 0;
}

'프로그래밍 > 코딩 첫 걸음' 카테고리의 다른 글

값에 의한 호출(call-by-value)과 참조에 의한 호출(call-by-reference)  (0) 2021.06.29
21-05-24  (0) 2021.05.24
21-05-17  (0) 2021.05.17
21-05-15  (0) 2021.05.15
21-05-07  (0) 2021.05.07