코딩 | 개념 정리/C

이번 포스팅에서는 세제곱근을 구하는 코드를 작성해보았습니다. 코드의 구조는 단순합니다. 2차원 배열에 정수, 제곱, 세제곱값을 각각 저장한 뒤 사용자가 세제곱값을 입력하면 해당 값을 정수에서 찾아 출력해주는 형태입니다. sqrt()를 사용하여 제곱근을 바로 출력해줄 수도 있지만, 해당 방법은 배열의 구조를 이해하는데 도움이 되었습니다. // 세제곱근 값 출력하기 #define _CRT_SECURE_NO_WARNINGS #include #define SIZE 10 int main(void) { int list[3][SIZE] = { 0, }; int i, num; for (i = 0; i < SIZE; i++) { list[0][i] += i; list[1][i] += i * i; list[2][i] +=..
이번 포스팅은 2차원 배열의 각 행과 열의 합계를 구하는 코드를 작성해보았습니다. 이중 반복문을 복습하는데 좋은 예제였네요. // 2차원 배열의 각 행과 열 합계 구하기 #include #define ROW_SIZE 3 // 행 사이즈 #define COL_SIZE 5 // 열 사이즈 int main(void) { int array[ROW_SIZE][COL_SIZE] = { {12, 56, 32, 16, 98}, {99, 56, 34, 41, 3}, {65, 3, 87, 78, 21} }; int row, col, sum; sum = 0; // 각 행의 합계 구하기 for (row = 0; row < ROW_SIZE; row++) { for (col = 0; col < COL_SIZE; col++) { ..
이번 포스팅에서는 배열을 활용하여 0~9까지 난수를 100번 생성 후 가장 많이 나온 수를 구하는 코드를 작성해보았습니다. 처음보면 잘 이해가 안갈 수도 있는데, 0~9가 나올 때마다 해당 배열의 값을 증감연산자로 증가시켜 준 다음, 마지막에 해당 배열을 가지고 최대값을 찾는다고 보시면 됩니다. // 0부터 9까지 난수를 100번 생성하여 가장 많이 생성된 수를 출력하기 #include #include #include #define COUNT 100 // 반복횟수 int main(void) { int i, max; int list[10] = { 0, }; srand((unsigned int)time(NULL)); for (i = 0; i < COUNT; i++) { ++list[rand() % 10]; ..
이번 포스팅에서는 인수 호출 방법에 대해 다루어 봤습니다. 인수 호출 방법은 기본적으로 2가지가 있는데요. 1. 값에 의한 호출 방법(일반적인 사용) 2. 참조에 의한 호출 방법(포인터 활용) 1번의 경우 일반적으로 코딩을 처음 배웠을 때 사용하는 방법으로 값을 직접 넣는 형태입니다. 2번의 경우 배열 이후 포인터를 배움으로써 주소에 대한 개념을 익히고 포인터를 활용하여 간접적으로 값을 넣는 형태입니다. /* 인수 전달 방법 1. 값에 의한 호출(call by value) 2. 참조에 의한 호출(call by reference) */ #include void swap(int x, int y); // 값에 의한 호출 이용 void swap2(int *px, int *py); // 참조에 의한 호출 이용 i..
이번 포스팅에서는 포인터를 활용해 배열의 원소를 역순으로 출력해보았습니다. // 배열의 원소를 역순으로 출력하기 #include void print_reverse(int a[], int n); int main(void) { int a[] = { 10, 20, 30, 40, 50 }; int size; size = sizeof(a) / sizeof(a[0]); // a 배열의 크기 구하기 print_reverse(a, size); return 0; } void print_reverse(int a[], int n) { int* p = a + n - 1; // 마지막 노드를 가리킨다. while (p >= a) // 첫번째 노드까지 반복 { printf("%d\n", *p--); // p가 가리키는 위치를 출..
이번 포스팅에서는 포인터와 배열을 다루어봤습니다. 배열을 이해하는데 무리가 없었는데, 포인터는 이해를 하는데 조금 시간이 걸리네요. 그래서 각각 특징을 포스팅을 통해 코드로써 소개해보려합니다. 첫번째 특징으로 "포인터는 배열의 인덱스 표기법보다 동작 속도가 빠르다." 입니다. 하단의 작성된 코드를 보시면 알 수 있듯이 둘의 결과값은 다르지 않습니다. 하지만, 포인터의 경우 배열처럼 인덱스값을 매번 호출할 필요는 없기에 그 속도는 더 빠르다고 합니다. // 포인터를 사용한 방법의 장점 // 포이터가 인덱스 표기법보다 빠르다. why? 인덱스를 주소로 변환할 필요가 없어서 #include int get_sum1(int a[], int n); int get_sum2(int a[], int n); int mai..
이번 포스팅에서는 하나의 배열 요소를 다른 요소에게 복사하는 코드를 작성해보았습니다. #include #define SIZE 10 void array_print(int a[], int size); // 배열 출력 함수 void array_copy(int a[], int b[], int size); // 배열 복사 함수 int main(void) { int a[SIZE] = { 0, 1, 2, 3, 4, 5 }; int b[SIZE] = { 0, }; array_print(a, SIZE); array_copy(a, b, SIZE); array_print(b, SIZE); return 0; } void array_print(int a[], int size) { int i; for (i = 0; i < SIZ..
이번 포스팅에서는 2개의 정수 배열을 비교하는 코드를 작성해보았습니다. 반복적으로 사용되어야 하는 부분은 모두 함수로 처리를 하여 main함수 내의 가독성을 최대한 높이고자 하였습니다. | 수정 전 코드(오류 있어요) > 댓글 달아주신거 보고서야 알았습니다. 해당 코드에 오류가 있다는 걸, 아래의 코드 실행시 댓글의 내용처럼 해당 코드는 바로 리턴을 해버리면서 판단 오류가 발생합니다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #define SIZE 10 int array_print(int a[], int size); // 배열 출력 함수 int array_equal(int a[], int b[], int size); // 배열 비교 함수 i..
PatienceLee
'코딩 | 개념 정리/C' 카테고리의 글 목록