개발 기록

개발 기록/C Language

[C언어] 도서 종합 관리 프로그램 개발 계획서 | development plan

학교 수행평가 과제로 위처럼 만들어봤다. 소스코드와 실행 방법은 아래 글에 첨부되어있다. [C언어] 도서 관리 프로그램 | 도서 대출, 반납, 등록, 검색 | 구조체, 파일입출력 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #define BOOK_NAME_SIZE 50 #define BOOK_AUTH_SIZE 30 #define BOOK_PUBL_SIZE 30 void borrowbook(); // 도서 대출 함수 void returnbook.. white-world.tistory.com

개발 기록/C Language

[C언어] 구조체 복사 strcpy, memcpy 알아보기

C언어에서는 구조체란 개념을 사용하고, 한 구조체변수에서 다른 구조체변수로 구조체를 복사하려면 아래처럼 할 수 있다. #define _CRT_SECURE_NO_WARNINGS #include #include typedef struct _p { char name[20]; int x; int y; }Point; int main(void) { Point p1, p2; strcpy(p1.name, "구조체 복사"); p1.x = 10; p1.y = 20; // 아래 출력되도록 p2에 p1의 값을 복사해보자. strcpy(p2.name, p1.name); p2.x = p1.x; p2.y = p1.y; printf("%s\n", p2.name); printf("%d %d\n", p2.x, p2.y); return ..

개발 기록/C Language

[C언어] 구조체로 학생 정보 입력받고 출력하기 | struct, typedef

#define _CRT_SECURE_NO_WARNINGS #include // 구조체를 사용하여 이름과 나이를 입력받아 출력하는 프로그램 typedef struct data { char name[20]; int age; int stunum; }Student; int main() { Student me; printf("이름 입력 : "); scanf("%s", me.name); printf("나이 입력 : "); scanf("%d", &me.age); printf("학번 입력 : "); scanf("%d", &me.stunum); //출력하는 코드를 작성해보세요. printf("제 이름은 %s, 나이는 %d, 학번은 %d입니다.\n", me.name, me.age, me.stunum); return 0; ..

개발 기록/C Language

[C언어] 도서 관리 프로그램 | 도서 대출, 반납, 등록, 검색 | 구조체, 파일입출력

#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #define BOOK_NAME_SIZE 50 #define BOOK_AUTH_SIZE 30 #define BOOK_PUBL_SIZE 30 void borrowbook(); // 도서 대출 함수 void returnbook(); // 도서 반납 함수 void registerbook(); // 도서 등록 함수 void printbook(); // 도서 목록 출력 함수 void searchmenu(); // 도서 검색 메뉴 함수 void searchbookbyname(); // 도서명으로 검색 void searchbookbyauth(); // 저자로 검색 void searchbookbyp..

개발 기록/C Language

[C언어] 로또 번호 추첨하고 맞추는 프로그램 | Lottery

#define _CRT_SECURE_NO_WARNINGS #include #include int main(void) { int cnt = 0; int randNum; int isSame; int input[7] = { 0, }; int lottery[7] = { 0, }; int randomArray[51] = { 0, }; srand(time(NULL)); printf("로또 7개의 숫자를 입력하세요(1~50 중복입력불가) : "); for (int i = 0; i < 7; i++) scanf("%d", &input[i]); for (int i = 0; i < 7; i++) { randNum = rand() % 50 + 1; if(randomArray[randNum]) { i--; continue; }..

개발 기록/JAVA

[JAVA] 자바 컴파일 결과가 exe가 아닌 class인 이유

자바 소스 코드를 실행하는 과정에서 컴파일러는 자바 소스코드를 이용해 클래스 파일을 생성한다. 그런데 C와 같은 언어에서는 최종으로 exe 파일을 생성한다. ( 이 exe 파일은 단순히 더블클릭으로 실행시키기만 하면 작동된다. ) ​ 자바에서는 왜 실행하기도 어려운 클래스 파일을 만드는 걸까? 먼저, C와 C++같은 언어에서는 컴파일된 실행 파일을 모든 운영체제에서 동일하게 사용 불가능하다. 윈도우에서 컴파일한 실행 파일을 리눅스에서 사용할 수 없다는 이야기다. 하지만 자바에서는 JVM이라는 중간단계 역할을 수행하는 것이 있기 때문에, 한번 작성해 컴파일한 파일은 어떤 운영체제에서든 사용 가능하다. ( 자바는 JVM으로 이러한 장점이 생겼지만, 반대로 C와 같은 언어에서는 없는 중간 단계가 자바에는 있어..

개발 기록/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 - ..

우준성
'개발 기록' 카테고리의 글 목록 (5 Page)