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;
}