공용체(Union)란?공용체(union)는 서로 다른 데이터 타입을 가진 여러 변수가 하나의 메모리 공간을 공유하는 자료구조입니다. 구조체(structure)와 비슷하게 선언하지만, 모든 멤버가 같은 메모리 위치를 사용한다는 점이 가장 큰 차이입니다.공용체의 기본 문법C 언어에서 공용체를 선언하는 기본 문법은 다음과 같습니다.union uniontag{ datatype member 1; datatype member 2;
C 프로그래밍 언어에서 문자(character)는 영문 대소문자(A-Z, a-z), 숫자(0-9), 공백(white space), 또는 특수 기호를 모두 포함하는 개념입니다. 이 글에서는 C 언어에서 문자를 다루는 기본적인 방법과 주요 입출력 함수를 예제와 함께 살펴보겠습니다.문자 변수 선언C 언어에서 문자 연산을 위해 변수를 선언하는 기본 문법은 다음과 같습니다.char a = A; // 문자 상수를 이용한 선언char 자료형은 단일 문자 하나를 저장하며, 작은따옴표( )로 감싼 문자 상수를 통해 초기화할 수 있습니다.문자 입출력
문자열을 처리하다 보면 각 문자가 몇 번 등장했는지 세어야 하는 경우가 자주 있습니다. 이번 글에서는 C 언어로 문자열 내 각 알파벳 문자의 빈도수를 계산하는 프로그램을 작성하는 방법을 알고리즘부터 실행 결과까지 차근차근 살펴보겠습니다. 알고리즘 다음 단계를 따르면 각 문자의 빈도를 세는 C 프로그램을 손쉽게 작성할 수 있습니다. 1단계: MAX 크기를 정의한다. 2단계: char형 변수와 int형 변수를 선언한다. 3단계: 콘솔에서 문자열을 입력받는다. 4단계: 문자열의 길이를 구한다. 5단계: 각 문자의 빈도를 0으로 초기화한다
C 언어에서 문자열(string)이란 문자들이 모인 배열을 의미합니다.문자열 선언문자열 배열은 다음과 같은 형식으로 선언합니다.char stringname [size];예를 들어 char string[50];은 길이 50자를 저장할 수 있는 문자열을 선언하는 코드입니다.문자열 초기화문자열을 초기화하는 방법에는 두 가지가 있습니다.단일 문자 상수 사용 − 각 문자를 개별적으로 대입합니다.char string[10] = { H, e, l, l, o, \0 };문자열 상수 사용 − 큰따옴표로 묶은 문자열을 한 번에
시, 분, 초 단위로 시작 시간과 종료 시간을 입력받은 뒤, 두 시간 사이의 차이를 구하는 것이 이 프로그램의 목표입니다.시간 차이를 계산할 때 핵심이 되는 것은 자리내림(빌려오기) 처리입니다. 예를 들어 초 단위에서 빼야 할 값이 더 크다면 분에서 1을 빌려와 초에 60을 더해 계산해야 하며, 분 단위도 마찬가지 방식으로 처리합니다.시간 차이 계산 로직시작 시간과 종료 시간의 차이를 구하는 기본적인 논리는 다음과 같습니다.while (stop.sec > start.sec){ --st
삼각형은 세 개의 변과 세 개의 각으로 이루어진 도형입니다. 세 변의 길이 관계에 따라 삼각형은 다음과 같이 세 가지 유형으로 분류할 수 있습니다.정삼각형(Equilateral Triangle): 세 변의 길이가 모두 같은 삼각형이등변삼각형(Isosceles Triangle): 두 변의 길이가 같은 삼각형부등변삼각형(Scalene Triangle): 세 변의 길이가 모두 다른 삼각형이 글에서는 사용자로부터 세 변의 길이를 입력받아 해당 삼각형이 어떤 유형에 속하는지 판별하는 C 프로그램을 작성하는 방법을 알아보겠습니다.알고리즘프로그
비트 회전(Bit Rotation)이란?주어진 숫자의 비트를 회전하는 C 프로그램을 작성하려면 먼저 다음과 같은 요소들을 이해해야 합니다.비트는 왼쪽에서 오른쪽으로, 또는 오른쪽에서 왼쪽으로 회전할 수 있습니다.왼쪽 회전(left rotation)에서는 각 비트가 왼쪽으로 이동하며, 가장 왼쪽에 있던 비트(MSB)는 다시 맨 오른쪽으로 순환합니다.오른쪽 회전(right rotation)에서는 각 비트가 오른쪽으로 이동하며, 가장 오른쪽에 있던 비트(LSB)는 다시 맨 왼쪽으로 순환합니다.사용자로부터 숫자와 함께 회전 횟수를 입력받아
이진수 프로그래밍에서 자주 다뤄지는 개념인 후행 0(Trailing Zeros)과 선행 0(Leading Zeros)에 대해 알아보겠습니다. 두 값 모두 비트 시프트와 AND 연산만으로 간단하게 계산할 수 있습니다. 후행 0(Trailing Zeros)이란? 후행 0이란 이진수에서 최하위 비트(LSB) 쪽 끝에 연속해서 위치한 0들을 의미합니다. 즉, LSB에서 시작해 처음으로 1인 비트를 만나기 전까지 등장하는 0의 개수를 말합니다. 예시 10진수 104를 이진수로 변환하면 다음과 같습니다. (MSB) 1101000 (LSB
행렬의 대부분의 원소가 0으로 이루어져 있을 때, 이를 희소 행렬(Sparse Matrix)이라고 부릅니다. 희소 행렬은 메모리 절약과 연산 최적화가 중요한 다양한 분야에서 자주 등장하는 개념입니다.희소 행렬의 예시다음은 3x3 크기의 행렬 예시입니다.1 1 0 0 0 2 0 0 0위 행렬을 보면 총 9개의 원소 중 6개가 0이므로, 대부분의 원소가 0인 희소 행렬이라고 할 수 있습니다.문제 정의주어진 행렬이 희소 행렬인지 아닌지를 판별하는 프로그램을 작성해야 합니다.판별 기준과 해결 방법행렬 내 0의 개수가 전체 원소 개수의 절반
C 프로그래밍에서 배열 병합(Merge)이란 두 개의 배열을 입력받아 하나로 합치고, 그 결과를 세 번째 배열에 저장하는 작업을 의미합니다. 특히 각 배열이 정렬되어 있다면, 두 배열의 요소를 순서대로 비교하면서 효율적으로 병합할 수 있습니다. 이 글에서는 병합 알고리즘의 핵심 로직과 전체 예제 코드, 실행 결과까지 자세히 살펴보겠습니다.두 배열을 병합하는 핵심 로직병합 알고리즘의 기본 아이디어는 간단합니다. 각 배열을 가리키는 인덱스 변수(j, k)를 두고, 두 배열의 현재 요소를 비교한 뒤 더 작은 값을 결과 배열(c)에 차례대
개요배열 안에 같은 값이 여러 번 들어 있을 때, 이를 모두 제거하고 고유한(unique) 요소만 남긴 배열을 만드는 방법을 알아보겠습니다. 이 글에서는 C 언어를 사용해 중복 요소를 삭제하는 핵심 로직과 전체 소스 코드, 실제 실행 결과까지 차근차근 살펴봅니다.중복 요소 삭제 로직배열에서 중복 요소를 삭제하는 핵심 로직은 다음과 같습니다.1. 바깥쪽 반복문(i)으로 기준이 되는 요소를 하나 선택합니다.2. 안쪽 반복문(j)으로 그 뒤에 있는 요소들을 차례대로 비교합니다.3. 두 값이 같으면(a[i] == a[j]) 세 번째 반복문
열거형(enumerated data type)은 프로그래머가 자신만의 데이터 타입을 새로 정의하고, 해당 타입의 변수가 가질 수 있는 값들을 명확하게 지정할 때 사용되는 자료형입니다. 코드의 가독성을 높이고 의미 있는 이름으로 상수를 관리할 수 있어 실무에서 널리 활용됩니다. 열거형을 선언할 때 사용하는 키워드는 enum입니다. 문법(Syntax) 열거형 데이터 타입의 기본 문법은 다음과 같습니다. enum tagname{ identifier1, identifier2,…&he
2의 보수(Twos Complement)란?컴퓨터에서 음수를 표현할 때 널리 사용되는 2의 보수는 주어진 이진수에 대해 다음 두 가지 방법으로 계산할 수 있습니다.방법 1 – 먼저 1의 보수(모든 비트 반전)를 구한 뒤, 여기에 1을 더합니다.방법 2 – 최하위 비트(LSB)부터 처음으로 1이 등장하는 자리까지(그 1을 포함하여)는 그대로 두고, 나머지 상위 비트들은 모두 반전시킵니다.2의 보수를 구하는 핵심 로직1의 보수 값에 캐리(carry)를 이용해 1을 더하는 과정은 아래와 같이 구현할 수 있습니다.for(i = SIZE -
스트롱 넘버(Strong Number)란 각 자릿수의 팩토리얼(factorial) 값을 모두 더한 합이 원래 숫자와 같은 수를 의미합니다.예시123 → 1! + 2! + 3! = 1 + 2 + 6 = 9자릿수 팩토리얼의 합인 9가 원래 숫자 123과 일치하지 않으므로, 123은 스트롱 넘버가 아닙니다.145 → 1! + 4! + 5! = 1 + 24 + 120 = 145자릿수 팩
C 언어에서 여러 개의 문자(character)가 배열 형태로 연결된 것을 문자열(string)이라고 합니다. 이번 글에서는 문자열의 선언과 초기화 방법을 먼저 짚어본 뒤, 문자열 속 모음(vowel)만 골라 대문자 또는 소문자로 변환하는 C 프로그램을 예제 코드와 함께 단계별로 살펴보겠습니다. 문자열 선언 문자 배열의 기본 선언 형식은 다음과 같습니다. char stringname [size]; 예를 들어 char a[50];이라고 선언하면 최대 50글자를 저장할 수 있는 문자열이 만들어집니다. 문자열 초기화 문자열을 초기화하
C 언어에서 소프트웨어 개발 방법론을 적용해 실제 문제를 해결하는 과정은 문제 정의 → 분석 → 설계(알고리즘) → 구현 → 테스트의 단계를 거칩니다. 이 글에서는 대표적인 예제인 이차방정식의 근 구하기를 통해 각 단계를 하나씩 살펴보겠습니다.문제 정의이차방정식 ax² + bx + c = 0 의 두 근을 구합니다.이차방정식은 항상 두 개의 근(실근 또는 허근)을 가집니다.분석프로그램에 필요한 입력과 출력은 다음과 같이 정의할 수 있습니다.입력(Input) — 계수 a, b, c의 값출력(Output) — 두 근 r1, r2의 값풀이
C 언어에서 함수는 크게 두 가지 유형으로 분류됩니다.라이브러리 함수(사전 정의 함수)사용자 정의 함수라이브러리 함수(Predefined / Library Functions)시스템 라이브러리에 이미 정의되어 있는 함수입니다.프로그래머는 라이브러리에 있는 기존 코드를 그대로 재사용할 수 있어 오류 없는 코드를 작성하는 데 도움이 됩니다.함수를 사용하려면 해당 함수의 문법(원형)을 알고 있어야 하며, 관련 헤더 파일을 포함해야 합니다.예를 들어, sqrt() 함수는 math.h 헤더 파일에 정의되어 있으며, 사용 방법은 y = sqrt
C언어에서 프로그램의 흐름을 제어하는 대표적인 의사결정(조건 판단) 문장은 다음과 같습니다. 단순 if 문(simple – if statement) if – else 문 중첩 if – else 문(nested if-else) else – if 사다리(ladder) switch 문 1. 단순 if 문(Simple if Statement) if 키워드는 주어진 논리 조건이 참(True)일 때 특정 문장 블록을 실행하기 위해 사용됩니다. 조건이 거짓(False)이면 해당 블록은 건너뛰고 다음 문장으로 넘어갑니다. 문법(Synta
C 프로그래밍에서 함수는 인수(매개변수)의 존재 여부와 반환값(return value)의 유무를 기준으로 크게 네 가지 범주로 나눌 수 있습니다. 이 분류는 함수가 데이터를 어떻게 주고받는지에 따라 결정되며, 각 유형은 서로 다른 상황에서 유용하게 활용됩니다. 인수가 없고 반환값도 없는 함수 인수가 없고 반환값이 있는 함수 인수가 있고 반환값이 없는 함수 인수가 있고 반환값도 있는 함수 1. 인수가 없고 반환값도 없는 함수 호출하는 쪽에서 아무런 데이터도 전달하지 않고, 함수 역시 결과를 되돌려주지 않는 가장 단순한 형태입니다.
C 언어에서 범위(scope)는 변수에 접근할 수 있는 프로그램상의 영역을 의미합니다. 변수를 어디에 선언하느냐에 따라 그 변수가 보이는 범위와 생존 기간이 달라지며, 크게 전역 범위와 지역 범위로 나뉩니다. 전역 범위(Global Scope) 전역 범위는 함수나 블록 바깥쪽에서 선언된 변수가 프로그램이 종료될 때까지 모든 영역에서 접근 가능함을 의미합니다. 즉, 어떤 함수 안에서도 전역 변수를 읽거나 수정할 수 있습니다. 예제 #include<stdio.h> int c = 30; /* 전역 영역 */ main() { &