language/c 13

[C언어] 과제 Review - 로또 번호 생성기

과제는 로또 번호 생성기 코드다.1부터 45 사이의 번호 중 중복 없이 6개를 뽑고,선택 정렬로 오름차순 정렬한 뒤 5회 출력하는 구조다.1. 제출 코드 구성파일역할prg_lotto_main.c프로그램 시작점, 전체 반복 흐름 담당lib_lotto_logic.h함수 원형 선언lib_lotto_logic.c로또 번호 생성, 중복 검사, 정렬, 출력 구현 이 과제에서 가장 좋은 부분은 기능을 main에 몰아넣지 않고, 번호 생성/중복 검사/정렬/출력을 함수로 분리했다는 점이다.2. 전체 실행 흐름난수 시드 설정로또 번호 배열 준비5회 반복 중복 없는 번호 6개 생성 오름차순 정렬 결과 출력프로그램 종료 main()은 세부 계산을 직접 하지 않고, 필요한 함수를 순서대로 호출한다.int mai..

language/c 2026.09.28

[C언어] 기말고사 Review - 학생 성적 구조체

기말고사 코드는 학생 성적 처리 프로그램이다.학생 10명의 이름과 C언어 점수를 입력받고,최고 성적 학생의 이름과 전체 평균을 출력한다.1. 제출 코드 구성파일역할student_prg_main.c전체 실행 흐름student_lib.h구조체 정의, 상수, 함수 원형student_lib.c입력, 최고점 탐색, 평균 계산 함수 구현 기말 코드의 핵심은 구조체 배열과 함수 분리다.2. 구조체 설계#define NAME_LEN 16#define STD_NO 10typedef struct{ char sNameZ[NAME_LEN]; double dScore;} stStudent; 멤버의미sNameZ학생 이름 문자열dScoreC언어 점수 stStudent oStudent[STD_NO]처럼 선언하면 학생 10..

language/c 2026.09.21

[C언어] 중간고사 Review - 사칙연산 계산기

중간고사 코드는 사칙연산 계산기다.사용자가 10+20, 7/2처럼 연산식을 입력하면 연산자를 판단해 결과를 출력하고,0/0을 입력하면 프로그램을 종료한다.1. 문제 핵심요구코드에서 필요한 처리반복 입력while 반복종료 조건0/0 입력 검사연산자 판단+, -, *, / 조건 분기나눗셈 예외두 번째 정수가 0인지 검사출력 형식정수 연산과 실수 나눗셈 출력 구분2. 실행 흐름반복 시작 연산식 입력 0/0이면 종료 연산자에 따라 계산 오류가 있으면 오류 메시지 출력 정상 계산이면 결과 출력반복 종료 이 코드에서 iFlag는 "정상 계산이 되었는가"를 표시하는 변수다. 오류가 난 경우에는 결과 출력 단계로 넘어가지 않게 막아준다.3. 핵심 코드 구조while (TRUE){ pri..

language/c 2026.09.14

[C언어] 10. 구조체와 동적할당

배열은 "같은 자료형"만 묶을 수 있었다. 하지만 학생 한 명은 학번(정수), 이름(문자열), 학점(실수)처럼 서로 다른 자료형의 정보로 이뤄진다. 이렇게 여러 자료형을 하나로 묶어 새 자료형을 만드는 것이 구조체다. 여기에 실행 중 메모리를 빌리는 동적 할당까지 더하면, 마침내 연결 리스트 같은 자료구조를 만들 수 있다.1. 구조체 (Structure)구조체(Structure)서로 다른 자료형의 여러 변수를 하나로 묶어 새로운 자료형을 정의하는 문법이다. 관련 있는 데이터를 한 덩어리로 다룰 수 있게 해준다. struct student { int number; // 학번 char name[10]; // 이름 double grade; // 학점};struct 키워드로 정의를 ..

language/c 2026.09.07

[C언어] 09. 포인터 (Pointer)

포인터는 C언어를 어렵게 만드는 동시에 강력하게 만드는 핵심 개념이다. 나도 여기서 한 번 막혔는데, 사실 한 문장으로 요약된다. 포인터는 값이 아니라 "값이 있는 주소"를 담는 변수다.지금까지 scanf에서 &를 붙였던 것, 배열 이름이 곧 주소였던 것이 모두 이 포인터로 이어졌다.1. 포인터란?모든 변수는 메모리 어딘가에 저장되고, 그 위치를 가리키는 주소를 갖는다.포인터(Pointer)다른 변수의 주소를 저장하는 변수다. 일반 변수가 "값"을 담는다면, 포인터는 "그 값이 사는 집 주소"를 담는다. 그래서 어떤 타입을 가리키든 포인터 자체의 크기는 일정하다(주소는 결국 하나의 정수이므로).두 개의 핵심 연산자가 있다.주소 연산자 &: 변수의 주소를 구한다. &i는 변수 i의 주소.간접 참조(역참조)..

language/c 2026.08.31

[C언어] 08. 문자열 (String)

[C언어] 08. 문자열 (String)다른 언어에는 문자열 타입이 따로 있지만, C에는 없다. C에서 문자열은 문자(char)들의 배열이다. 이 단순한 사실에서 C 문자열의 모든 특징과 주의점이 나온다는 걸 오늘 정리하며 알았다.1. 문자열과 NULL 문자문자열은 문자들이 죽 늘어선 것이고, 문자 배열(char[])에 저장한다. 그런데 배열만으로는 "어디까지가 문자열인지" 알 수 없다. 그래서 C는 문자열의 끝에 특별한 표식을 둔다. NULL 문자 '\0'이 문자열의 끝을 표시한다모든 C 문자열은 끝에 NULL 문자('\0')가 붙는다. printf나 strlen 같은 함수는 이 '\0'을 만날 때까지를 하나의 문자열로 인식한다. 즉 "abc"는 사실 a, b, c, '\0' 네 글자가 저장된 것이다...

language/c 2026.08.24

[C언어] 07. 배열 (Array)

학생 10명의 점수를 다루려고 변수 10개를 따로 선언하면, 합계를 구할 때 10번 더해야 하고 인원이 바뀌면 코드를 전부 고쳐야 한다. 배열은 같은 종류의 데이터 여러 개를 하나의 이름으로 묶어, 이런 번거로움을 없애준다.1. 배열이란?배열(Array)같은 자료형의 데이터 여러 개를 하나의 변수 이름으로 묶어 관리하는 자료구조다. 각 데이터는 0부터 시작하는 인덱스(index)로 구별하며, 크기는 고정되고 메모리의 연속된 공간에 저장된다.int scores[10]; // int형 10개짜리 배열scores[0]부터 scores[9]까지 10개의 요소가 만들어진다. 인덱스가 0부터 시작하므로, 크기가 10인 배열의 마지막 인덱스는 9다. 이걸 놓쳐 scores[10]에 접근하면 배열 범위를 벗어나는 ..

language/c 2026.08.17

[C언어] 06. 함수 (Function)

프로그램이 커지면 같은 코드가 여기저기 반복되고, 전체를 한눈에 파악하기 어려워진다. 함수는 특정 기능을 하나의 덩어리로 묶어 이름을 붙인 것으로, 이 문제를 푸는 핵심 도구다. 우리가 이미 써 온 printf, scanf도 모두 함수였다.1. 함수란?함수(function)특정 작업을 수행하는 명령어들의 묶음으로, 고유한 이름을 가지며 입력(인수)을 받아 결과(반환값)를 돌려줄 수 있다.함수를 쓰면 좋은 점은 분명했다.중복 제거: 같은 코드를 반복하지 않고 한 번 정의해 여러 번 호출한다.재사용: 한 번 잘 만든 함수는 다른 프로그램에서도 쓸 수 있다.모듈화: 프로그램을 기능 단위로 나눠, 개발과 유지보수가 쉬워진다.함수는 크게 우리가 직접 만드는 사용자 정의 함수와, 표준 라이브러리가 제공하는 라이브러..

language/c 2026.08.10

[C언어] 05. 반복문

같은 작업을 여러 번 해야 할 때, 코드를 여러 번 복사하는 대신 반복문을 쓴다. "1부터 100까지 더하기"를 덧셈 100줄로 쓰지 않고 몇 줄로 끝내는 것이다. C의 반복문에는 while, do~while, for 세 가지가 있다. 종류특징while조건이 참인 동안 반복 (반복 횟수를 모를 때)do ~ while일단 한 번 실행한 뒤 조건 검사 (최소 1회 보장)for정해진 횟수만큼 반복1. while 문조건이 참인 동안 중괄호 안을 반복한다. 조건을 먼저 검사하므로, 처음부터 거짓이면 한 번도 실행되지 않는다(0번 이상).while (조건) { 수행 문장;} 반복 횟수를 미리 알 수 없을 때(예: "0이 입력될 때까지") 적합하다.int n;while (1) { /..

language/c 2026.08.03

[C언어] 04. 조건문

지금까지의 프로그램은 위에서 아래로 한 줄씩 차례대로 실행됐다. 하지만 실제 프로그램은 "조건에 따라 다르게" 동작해야 한다. 이렇게 실행 흐름을 바꾸는 문장을 제어문이라 하고, 그중 조건에 따라 갈래를 나누는 것이 조건문이다.0. 제어 구조의 세 가지 형태 구조설명순차 구조위에서 아래로 차례대로 실행선택 구조조건에 따라 실행할 문장을 선택 (조건문)반복 구조조건이 참인 동안 문장을 반복 (반복문) 모든 프로그램은 이 세 구조의 조합으로 만들어진다. 이 글에서 다루는 건 가운데의 선택 구조다.1. if 문if는 조건식이 참일 때만 중괄호 안의 문장을 실행한다.if (조건식) { 조건이 참일 때 수행할 문장;} int iNo = 10;if (iNo > 0) { printf("양수입니다.\n");..

language/c 2026.07.27