C언어 16

[자료구조 - C언어] Linked List(2) - create, insert

사용된 함수 create_node : 동적 메모리를 할당받아 메인 함수에서 입력받은 값을 구조체 멤버 변수(value)에 대입함. append_node : tail노드에 새로운 노드를 붙이는 역할을 함. prepend_node : head노드 앞에 새로운 노드를 붙이는 역할을 함. print_node : 생성된 노드를 출력함. Create - 노드 생성하기 - 배열을 이용하여 "string"으로 노드 구성하기 - #include #include typedef struct node { char value; struct node* next_node; }NODE; NODE* create_node(char v) { NODE* mynode; mynode = (NODE*)malloc(sizeof(NODE)); //..

[자료구조 - C언어] Linked List

Array대신 Linked List를 사용하는 이유는 무엇일까? 예를 들어, char arr[6] = "linked"; 이런 배열이 있다고 하자. 0~5까지의 배열 칸에 알파벳이 하나씩 들어가 있을 것이다. 여기서 'n'을 삭제하려면 'n' 삭제하고 뒤에 있는 나머지 배열 칸의 값들을 전부 복사하여 한 칸씩 앞에 넣어 줘야 한다. 이렇게 배열 인덱스를 바꿔 주는 것은 번거롭고 복잡하기 때문에 "링크드 리스트(Linked List)"를 사용하여 추가, 삭제 등 각 노드의 수정을 용이하게 한다. 연습하기 1 헤드 노드 하나만 생성하여 값을 넣고 다음 노드에는 NULL로 설정하기 #include typedef struct node { char value; struct node *next_node; }NODE;..

[C언어] 로또 번호 뽑기

976회차 당첨번호 : 4, 12, 14, 25, 35, 37 + 2(보너스 번호) 난수 사용(srand, rand, time.h) goto문 사용 : goto문은 코드 길이를 줄여주지만 가독성이 아주 떨어집니다. Sleep() 함수 사용 / Windows 헤더 파일 include * srand와 rand의 차이점 srand는 일련의 규칙성을 가지고 난수를 생성하고, rand는 규칙성 없이 여러 개의 패턴으로 난수를 생성합니다. 로또 번호 추출하기 #include #include #include #include void sortArr(int* lotto, int length) { //난수로 추출한 번호 정렬 for (int i = 0; i < length - 2; i++) { for (int j = i ..

C언어 2021.08.17

[C언어] 구조체(1)

구조체 구조체는 반복되는 변수들을 편하게 관리하기 위해서 사용합니다. 변수들의 공통 요소를 찾아 구조체로 묶어 사용하며, 이렇게 만들어진 구조체는 재사용의 목적이 되기도 합니다. 방법① struct 구조체명 { //구조체 데이터타입 변수명1; 데이터타입 변수명2; }; void main() { //메인함수 struct 구조체명 구조체변수; 구조체변수.변수명1 = 값1; 구조체변수.변수명2 = 값2; } Ex) 방법① : x, y 좌표 출력하기 struct structEx{ //구조체 int x; //데이터타입 변수명1; int y; //데이터타입 변수면2; }; void main() { //메인 함수 struct structEx sE; sE.x = 10; // "구조체변수.멤버변수" 형식으로 초기화 sE..

C언어 2021.08.07

[C언어] 1차원 배열

배열 배열은 저장 공간들이 나열되어 있는 형태입니다. Ex) 값 4개를 저장하기 위해 저장공간을 4개 사용하는 것은 너무 많기에 크기가 4인 배열을 한 번 선언하여 사용 배열 선언 방법 3가지 int arr[3]; //크기가 3인 배열을 선언만 한 상태 int arr[] = {1, 2, 3}; //값을 3개 넣어 초기화한 상태 int arr[3] = {1, 2, 3}; //크기가 3인 배열을 선언하여 초기화한 상태 배열 인덱스 int arr[5] = {1, 2, 3, 4, 5}; //크기가 5인 배열을 초기화 for(int i = 0; i < sizeof(arr)/sizeof(int); i++) { printf("arr[%d] : %d\n", i, arr[i]); //배열의 값을 출력 } sizeof(a..

C언어 2021.08.03

[C언어] 교통카드, 카페 주문하기 예제

교통카드 잔액 확인 while 반복문을 사용하여 잔액이 부족할 경우 종료 if 조건문을 사용하여 나이에 따라 요금을 다르게 설정 요금을 지불하고 교통카드에 남은 금액 출력 #include void main() { int childrenMaxAge = 13; int teenagerMaxAge = 19; int adultmaxAge = 150; int cMoney = 500; int tMoney = 1000; int aMoney = 1200; int money = 10000; int age = 0; while (1) { printf("나이를 입력하세요 : "); scanf_s("%d", &age); if (age 0) { printf("어린이 입니다.\n"); money -= cMoney; if (money..

C언어 2021.08.02