개발 기록/C Language

개발 기록/C Language

[C언어] 두 점 사이의 거리 구하기 | sqrt 함수

#include #include struct Point { int x, y; }; int main(void) { struct Point p; p.x = 1; p.y = 2; struct Point p1; p1.x = 3; p1.y = 4; double a, b, c; a = p1.x - p.x; b = p1.y - p.y; c = sqrt(a * a + b * b); printf("%.2f\n", c); return 0; } a = x좌표 거리의 차이 b = y좌표 거리의 차이 c의 제곱 = a의 제곱 + b의 제곱 c = 루트(a의 제곱 + b의 제곱)

개발 기록/C Language

[C언어] 유클리드 호제법으로 최대공약수와 최소공배수 구하는 프로그램 | GCD, LCM

#define _CRT_SECURE_NO_WARNINGS #include int main(void) { int x, y, xy, z; int gcd = 0, lcm = 0; do { x = 0, y = 0; printf("두 수를 입력하세요 : "); scanf("%d %d", &x, &y); xy = x * y; if (x > 0 && y > 0) { while (1) { z = x % y; if (!z) { gcd = y; lcm = xy / y; break; } else { x = y; y = z; } } printf("최대공약수 = %d, 최소공배수 = %d\n", gcd, lcm); } else if (x != 0 || y != 0) { printf("양의 정수를 입력하세요. (Quit 0, 0..

개발 기록/C Language

[C언어] 소수(Prime) 구하기 | 효율적인 알고리즘

#define _CRT_SECURE_NO_WARNINGS #include int isPrime(int n) // 소수인지 아닌지 알려주는 함수 { for (int i = 2; i * i = 1000) { printf("\n"); continue; } int primeCnt = 1; for (int i = 2; i

개발 기록/C Language

[C언어] 대각선 방향으로 숫자 출력하기 | 배열 이용

#include #pragma warning (disable : 4996) int main() { int arr[100][100] = { 0 }; int a, b; int value = 1; int k = 0; scanf("%d %d", &a, &b); while (1) { for (int i = 0; i < b; i++) { for (int j = 0; j < a; j++) { if (i + j == k) arr[j][i] = value++; } } k++; if (value - 1 == a * b) { break; } } for (int i = 0; i < a; i++) { for (int j = 0; j < b; j++) { printf("%3d", arr[i][j]); } printf("\n");..

개발 기록/C Language

[C언어] 이중 for문 직각삼각형 출력하기 | Right Triangle

#include #pragma warning (disable : 4996) void printTriangle(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j

개발 기록/C Language

[C언어] 매개변수와 인수의 차이 | Parameter

우리는 함수를 접하기 시작하면서 매개변수와 인수라는 단어들을 많이 들어오고, 많이 사용해왔다. 그럼 매개변수와 인수의 정확한 차이는 뭘까? 매개변수는 함수 밖에서 전달된 값이 저장되는 변수이다. int add(int a, int b) { return a + b; } 위 코드에서 int a와 int b의 a,b가 매개변수이다. 인수는 함수를 호출할 때 괄호 안에 써서 전달하는 값이나 변수를 말하는 것이다. add(5, 3); 이 코드에서 괄호 안에 있는 5와 3이 인수이다.

개발 기록/C Language

[C언어] Call By Value와 Call By Reference | 값에 의한 호출, 참조에 의한 호출 | 함수 인수로 주소값 전달

#include void swap1(int, int); // call by value void swap2(int*, int*); // call by reference int main(void) { int a = 5, b = 8; printf("a = %d, b = %d\n", a, b); swap1(a, b); // 값에 의한 호출 printf("a = %d, b = %d\n", a, b); swap2(&a, &b); // 참조에 의한 호출 printf("a = %d, b = %d\n", a, b); return 0; } void swap1(int a, int b) { int temp = a; a = b; b = temp; } void swap2(int* a, int* b) { int temp = *a;..

개발 기록/C Language

[C언어] 선택 정렬 알고리즘 구현 | Selection Sort

선택 정렬은 아래 그림처럼 맨 앞의 수부터 제일 작은 수를 비교해 앞으로 보내는 과정을 반복하는 것이다. 현재 인덱스와 뒤의 가장 작은 값의 인덱스를 선택하여 교체하는 것에서 선택 정렬이라고 한다. #define _CRT_SECURE_NO_WARNINGS #include // 배열 출력 함수 void printArr(int value[], int n) { for (int i = 0; i < n; i++) printf("%3d", value[i]); printf("\n"); } // 선택 정렬 실행 함수 void selectionSort(int* value, int n) { int i, j; int min = 0; int temp = 0; // swap에 쓰기 위한 변수 (임시) // i for문 : fo..

개발 기록/C Language

[C언어] 버블 정렬 오름차순 알고리즘 구현 | Bubble Sort

버블 정렬은 사람이 이해하기 쉬운 정렬이면서, 가성비가 좋지 않은 정렬이다. 버블 정렬의 원리는 배열의 앞뒤 값을 비교하면서, 큰 값을 뒤로 넘기는 과정을 반복하는 것이다. #define _CRT_SECURE_NO_WARNINGS #include void BubbleSort(int arr[], int len); int main(void) { int arr[5] = { 4, 6, 1, 3, 9 }; int i; BubbleSort(arr, 5); // 정렬이 된 후 출력 for (i = 0; i < 5; i++) printf("%d ", arr[i]); return 0; } void BubbleSort(int arr[], int len) { int temp; for (int i = 0; i < len - ..

개발 기록/C Language

[C언어] 달팽이 배열 만들기 | Snail Array

#define _CRT_SECURE_NO_WARNINGS #include #define SIDE 100 int arr[SIDE][SIDE]; // arr[100][100] void printarr(int n) { int i, j; for (i = 0; i 0) { for (i = 0; i < n; i++) { col += inc; arr[row][col..

개발 기록/C Language

[C언어] 포인터 배열이란? | 쉽게 이해하는 포인터 배열의 개념 | Pointer Array

포인터와 배열의 공통점? 뭐가 있을까? 지금부터 자세히 알아보겠다. 혹시 포인터의 개념이 잘 잡혀있지 않다면 관련 서적으로 좀 더 공부하거나, 아래 포인터의 개념을 설명한 글을 이해하고 오길 바란다. [C언어] 포인터가 대체 뭔데? / 쉽게 이해하는 포인터(Pointer)의 개념 (지금 포인터란 개념이 어려워도 스트레스 받지 말자. 많이 접하다 보면 익숙해진다.) ​ 포인터란 무엇일까? 일상생활에서의 포인터는 어떤 화면을 가리키는 불빛이 나오는 물건 등으로 생각할 white-world.tistory.com 포인터 배열이란 각 배열의 값에 주소를 가지는 배열이다. 말 그대로 포인터변수(어떠한 변수를 가리키는 변수)가 배열로 있는 것이다. (포인터배열과 배열포인터는 완전 다른 것이다.) 일반적으로 배열의 이..

개발 기록/C Language

[C언어] 포인터가 대체 뭔데? / 쉽게 이해하는 포인터(Pointer)의 개념

(지금 포인터란 개념이 어려워도 스트레스 받지 말자. 많이 접하다 보면 익숙해진다.) ​ 포인터란 무엇일까? 일상생활에서의 포인터는 어떤 화면을 가리키는 불빛이 나오는 물건 등으로 생각할 수 있다. 프로그래밍에서도 같은 의미로 쓰인다. 다시 말해, 프로그래밍에서 포인터는 '어떤 변수를 가리키는 변수'이다. ​ 그럼 가리킨다는 의미란 무엇일까? 손가락도 없는데 어떻게 가리킨다는 것일까? 이를 알기 위해서는 주소값이란 개념을 알아야 한다. ​ 모든 변수는 자체의 값만이 아니라, 주소값도 가지게 된다. 변수의 주소값은 컴퓨터에 의해 임의로 정해진다. 우리는 주소값을 이용하여 어떤 변수를 가리키게 하고, 한 변수의 값을 다른 변수로 바꿀 수 있다. ​ 주소값을 이용해서 어떤 변수를 가리키게 하기 위해 우리는 포..

개발 기록/C Language

[C언어] 문자열에서의 널 문자 (NULL)

#include int main(void) { char str[] = "Hello World!"; printf("str = %s\n", str); printf("str의 크기 : %d\n", sizeof(str)); // 왜 13이라고 나올까? printf("%d\n", sizeof("Hello")); // 왜 6이라고 나올까? return 0; } 위 코드에서 str의 크기는 왜 13이 나오고 Hello의 크기는 왜 6이 나올까? 그 답은, 항상 문자열의 끝에는 우리가 원하지 않아도 널 문자란 것이 붙기 때문이다. ​ null 문자는 말 그대로 빈 문자란 뜻이다. 문자열 배열에서 null ( '\0' ) 문자는 문자열의 끝을 알기 위해서 쓰는 것이다. #include int main(void) { ch..

개발 기록/C Language

[C언어] Sleep함수, system함수, clock함수, _kbhit함수 알아보기

Sleep() 말 그대로 정해진 시간동안 잠자게 하는(?) 함수 일정 시간동안 프로그램을 정지시킬 때 사용하는 함수 windows.h헤더파일 안에 있다. ms(밀리세컨드) 단위이기 때문에 1초를 정지시키기 위해서는 Sleep(1000) 으로 입력해야 한다. #include #include #include < int main(void) { while (1) { printf("hello!\n"); Sleep(1000); } return 0; } tmi 이 함수가 왜 C언어에서 time.h 헤더파일에 있지 않고 windows.h 헤더파일에 포함되어 있느냐? 그 이유는 "Sleep함수는 C언어의 런타임 함수가 아닌 Windows 운영체제의 API 함수이기 때문이다."라고 설명할 수 있다. system() 시스템..

개발 기록/C Language

[C언어] 숫자 뒤집기 / 반환값 있는 함수 이용 / Reverse

#include int Reverse(int num) { int rev = 0; while (num != 0) { rev *= 10; rev += num % 10; num /= 10; } return rev; } int main(void) { int n; scanf("%d", &n); printf("%d\n", Reverse(n)); return 0; }

우준성
'개발 기록/C Language' 카테고리의 글 목록 (2 Page)