Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 프로그래밍

  1. C 언어로 피라미드 패턴 출력하기: 알고리즘과 전체 코드 예제

    프로그램 개요 피라미드(피라미드형 다면체)는 다각형 모양의 밑면과 하나의 점, 즉 꼭짓점(apex)을 연결하여 만들어지는 다면체입니다. 밑면의 각 변과 꼭짓점이 만나 삼각형을 형성하며, 이 삼각형을 측면(lateral face)이라고 부릅니다. 즉, 피라미드는 다각형 밑면을 가진 원뿔형 입체 도형이라 할 수 있습니다. n각형 밑면을 가진 피라미드는 n+1개의 꼭짓점, n+1개의 면, 2n개의 모서리를 가지며, 모든 피라미드는 자기 쌍대(self-dual) 구조를 갖습니다. 알고리즘 이 프로그램은 사용자로부터 행(row) 수를 입

  2. C언어로 플로이드 삼각형과 역방향 플로이드 삼각형 출력하기

    프로그램 개요플로이드 삼각형(Floyds Triangle)은 자연수를 직각삼각형 형태로 배열한 구조로, 컴퓨터 과학 교육에서 반복문 학습용으로 널리 활용됩니다. 유명한 컴퓨터 과학자인 로버트 플로이드(Robert Floyd)의 이름을 따서 명명되었으며, 왼쪽 상단 모서리부터 1로 시작해 각 행마다 연속된 숫자를 채워 나가는 방식으로 정의됩니다.1 15 14 13 12 11 2 3 10 9 8 7 4 5 6 6 5 4 7 8 9 10 3 2 1

  3. C 언어로 왼쪽·오른쪽 화살표 패턴 출력하는 프로그램

    프로그램 설명 이 프로그램은 사용자가 입력한 행(row) 수만큼 별(*) 문자를 이용해 왼쪽 화살표와 오른쪽 화살표 패턴을 콘솔 화면에 출력하는 C 언어 예제입니다. 중첩 for 반복문으로 각 행마다 출력할 공백과 별표의 개수를 조절하여 원하는 모양을 만들어 냅니다. 알고리즘 먼저 왼쪽 및 오른쪽 화살표 패턴을 출력할 행의 개수를 입력받습니다. 이후 다음 순서대로 패턴을 출력합니다. 1. 별표(*)로 화살표의 윗부분 패턴을 출력한다 2. 별표(*)로 역직각삼각형 패턴을 출력한다 3. 별표(*)로 화살표의 아랫부분 패턴을 출력한다

  4. C 언어로 속이 찬 마름모와 속이 빈 마름모 패턴 출력하는 프로그램 만들기

    프로그램 개요 이 글에서는 C 언어를 사용해 콘솔 화면에 속이 찬 마름모(Solid Rhombus)와 속이 빈 마름모(Hollow Rhombus) 별표(*) 패턴을 출력하는 방법을 알아봅니다. 두 패턴 모두 사용자가 입력한 행(row) 수에 따라 크기가 결정되며, 중첩 반복문(for 문)을 활용하면 간단하게 구현할 수 있습니다. 알고리즘 1. 속이 빈 마름모 사용자로부터 마름모를 구성할 행 수를 입력받습니다. 입력받은 행 수만큼의 크기를 가진 속이 빈 마름모를 생성합니다. 첫 번째 행에는 행 수와 동일한 개수의 별(*)을 모두

  5. C 언어로 단색 및 빈 정사각형 패턴 출력 프로그램 만들기

    프로그램 설명기하학에서 정사각형은 정다각형의 하나로, 네 변의 길이가 모두 같고 네 내각의 크기 역시 모두 같은 도형입니다. 즉, 모든 변과 각이 동일한 가장 대표적인 사각형이라 할 수 있습니다.이번 글에서 소개하는 프로그램을 실행하면 다음 이미지처럼 단색(속이 찬) 정사각형과 빈(속이 텅 빈) 정사각형 패턴이 화면에 출력됩니다.알고리즘단색 정사각형(Solid Square)단색 정사각형을 그리기 위해 사용자로부터 행(row)의 개수를 입력받는다. 각 행마다 모든 열(column)에 대해 * 문자를 출력한다.빈 정사각형(Hollow

  6. C 언어로 정사각형 안에 정사각형 출력하는 프로그램

    프로그램 개요이 프로그램은 아래 그림과 같이 큰 정사각형 내부에 작은 정사각형을 함께 출력하는 C 언어 코드입니다. 이중 반복문과 조건문을 활용한 대표적인 패턴 출력 예제로, 별(*)이나 특수 문자(#)를 이용한 도형 그리기의 기본 원리를 익히기에 좋습니다.알고리즘프로그램의 동작 흐름은 다음과 같습니다.1. 바깥쪽 정사각형을 그릴 행(row)의 개수를 사용자로부터 입력받는다 2. 입력받은 행의 개수만큼 바깥쪽 정사각형을 화면에 출력한다 3. 바깥쪽 정사각형 내부에 또 다른 정사각형을 출력한다예제 코드/* Program to prin

  7. C 언어에서 2의 거듭제곱 판별하기 — 비트 연산 트릭

    숫자 n이 주어졌을 때, 이 수가 2의 거듭제곱인지 판별하는 문제는 코딩 테스트와 알고리즘 학습에서 자주 만나게 되는 대표적인 유형입니다. 예를 들어 n = 16이라면 결과는 true이고, n = 12라면 false가 됩니다. 핵심 아이디어: 비트 연산 활용하기 이 문제는 비트 연산(bitwise operation)을 사용하면 반복문이나 나눗셈 없이 O(1) 시간 복잡도로 해결할 수 있습니다. 2의 거듭제곱인 수를 이진수로 표현하면 최상위 비트(MSB)만 1이고 나머지 비트는 모두 0이라는 뚜렷한 특징이 있습니다. 1 = 000

  8. C 언어 구조체(Structure)와 공용체(Union)의 차이점 완벽 비교

    C 언어는 동일한 자료형의 데이터뿐만 아니라 서로 다른 자료형의 데이터도 함께 저장할 수 있는 다양한 컨테이너를 제공합니다. 같은 자료형의 데이터를 저장할 때는 배열(Array)을 사용하고, 서로 다른 자료형의 데이터를 하나로 묶어 저장할 때는 구조체(Structure)와 공용체(Union)를 활용합니다.구조체와 공용체는 모두 서로 다른 자료형의 데이터를 담을 수 있다는 점에서 유사하지만, 메모리 할당 방식과 사용 목적에서 중요한 차이가 있습니다. 이 글에서는 두 개념의 핵심 차이점을 항목별로 자세히 살펴보겠습니다.1. 정의구조체(

  9. C 언어에서 strlen()과 sizeof()의 차이점 완벽 정리

    C 프로그래밍에서 문자열(string)은 여러 개의 문자(character)가 모여 이루어진 자료 구조로 정의할 수 있습니다. 그렇다면 하나의 문자열이 실제로 몇 글자로 구성되어 있는지 확인하려면 어떻게 해야 할까요? C 언어는 이러한 요구를 충족하기 위해 두 가지 방법을 제공하는데, 바로 strlen()과 sizeof()입니다.strlen()과 sizeof(), 무엇이 다를까?두 방법 모두 대상 피연산자의 크기나 길이를 구하는 데 사용된다는 공통점이 있지만, 내부적인 동작 방식과 구현 원리가 다르기 때문에 결과값에도 중요한 차이가

  10. C 언어에서 구조체(Structure)와 배열(Array)의 차이점 완벽 정리

    C 언어에서 구조체(Structure)와 배열(Array)은 모두 데이터를 담는 컨테이너 역할을 하는 자료구조입니다. 두 가지 모두 여러 데이터를 저장하고 저장된 데이터에 대해 다양한 연산을 수행할 수 있다는 공통점이 있습니다.하지만 내부적인 구현 방식과 동작 원리에서 중요한 차이점들이 존재합니다. 이 글에서는 구조체와 배열의 핵심적인 차이를 항목별로 비교하여 정리해 드립니다.구조체 vs 배열 주요 차이점 비교표번호구분 기준구조체 (Structure)배열 (Array)1정의서로 다른 타입의 변수들을 하나의 컨테이너에 담아 관리할 수

  11. C/C++에서 float와 double의 차이점 완벽 정리

    C/C++에서 float와 double의 차이점C/C++에서 소수점을 가진 실수(floating point number)를 표현하려면 float 또는 double 자료형이 필요합니다. 두 자료형 모두 실수를 다룰 수 있지만, 제공하는 정밀도(precision)에서 중요한 차이를 보입니다.간단히 말해, double은 float보다 약 2배 더 높은 정밀도를 가집니다. 즉, double은 배정밀도(double precision), float는 단정밀도(single precision) 방식으로 실수를 저장합니다.비트 구성과 정밀도doub

  12. 자바(Java)와 C 언어의 핵심 차이점 완벽 비교

    자바(Java)와 C는 프로그래밍 분야에서 가장 널리 사용되는 두 언어입니다. 각각 고유한 특징과 장점을 지니고 있어 전 세계적으로 폭넓게 활용되고 있습니다.이 글에서는 두 언어의 탄생 배경부터 프로그래밍 패러다임, 실행 방식까지 핵심적인 차이점을 표와 함께 정리했습니다.자바와 C 언어 비교표번호구분JavaC1등장 시기C 이후에 개발된 언어로, 1995년 제임스 고슬링(James Gosling)에 의해 만들어졌습니다.자바보다 앞선 시기인 1969년부터 1973년 사이에 데니스 M. 리치(Dennis M. Ritchie)가 개발했습니

  13. C/C++ strstr() 함수 완벽 가이드: 문자열 검색과 치환 활용법

    strstr() 함수는 문자열 처리(string handling)를 위해 사용되는 string.h 헤더 파일에 미리 정의된 표준 라이브러리 함수입니다. 이 함수는 메인 문자열(str1)에서 부분 문자열(str2)이 처음 나타나는 위치를 찾는 데 사용됩니다.함수 문법strstr() 함수의 기본 문법은 다음과 같습니다.char *strstr( char *str1, char *str2);매개변수str1: 검색 대상이 되는 원본(메인) 문자열str2: 메인 문자열 str1 안에서 찾고자 하는 부분 문자열반환값strstr() 함수는 부분 문

  14. C/C++ system() 함수 완벽 정리 – 문법부터 dir·date 명령 실행 예제까지

    C/C++에서 system() 함수는 표준 라이브러리에 포함된 강력한 도구로, 운영체제의 명령 프롬프트(터미널)에 직접 명령어를 전달해 실행할 수 있게 해줍니다. 이 글에서는 system() 함수의 기본 개념과 문법, 그리고 다양한 실전 예제를 통해 활용 방법을 자세히 알아보겠습니다.system() 함수란?system() 함수는 C/C++ 표준 라이브러리의 일부로, 운영체제의 명령 처리기(command processor) 또는 터미널에서 실행할 수 있는 명령어를 전달하는 데 사용됩니다. 전달된 명령의 실행이 완료되면 그 결과를 반환

  15. C/C++에서 브랜치 앤 바운드(Branch and Bound)로 풀어보는 0/1 배낭 문제

    이 알고리즘의 핵심 아이디어는 그리디(Greedy) 기법이 분할 가능한 배낭(Fractional Knapsack) 문제에서 최적의 해를 보장한다는 사실을 활용하는 것입니다.특정 노드를 통해 더 나은 해를 얻을 수 있는지 판단하려면, 그 노드를 경유하는 경우에 그리디 기법으로 계산한 이론상 최적해(상한값, Bound)를 구합니다. 만약 그리디 기법으로 계산한 값조차 지금까지 찾은 최적의 해보다 작다면, 해당 노드를 탐색해도 더 나은 결과를 얻을 수 없으므로 가지치기(Pruning)를 할 수 있습니다.전체 알고리즘단위 무게당 가치(va

  16. C/C++로 배우는 숫자 연결 퍼즐(Numberlink): 규칙과 생성 알고리즘

    숫자 연결 퍼즐은 n × n 크기의 정사각형 격자 보드에서 진행되는 퍼즐입니다. 보드를 이루는 칸 중 일부는 비어 있고, 일부는 고정 칸(solid square)이며, 고정되지 않은 일부 칸에는 정수 1, 2, 3, … 이 배치되어 있습니다. 각 정수는 보드 위에서 정확히 서로 다른 두 개의 칸을 차지합니다.플레이어의 목표는 각 정수가 놓인 두 칸을, 수평·수직 이동만으로 구성된 단순 경로를 통해 연결하는 것입니다. 이때 다음 세 가지 제약 조건이 적용됩니다.서로 다른 두 경로는 절대 교차해서는 안 됩니다.어떤 경로도 고정 칸을 지

  17. 컴퓨터 그래픽스의 A-버퍼(A-Buffer) 기법 완벽 이해하기

    A-버퍼(A-Buffer) 기법은 컴퓨터 그래픽스에서 중간 규모의 가상 메모리 컴퓨터를 위해 사용되는 간단한 은면 판별(hidden surface detection) 메커니즘입니다. 이 기법은 안티에일리어싱 버퍼, 영역 평균(area-averaged) 버퍼, 또는 누적 버퍼(accumulation buffer)라고도 불립니다.A-버퍼 기법이란?A-버퍼 기법은 깊이 버퍼(Z-버퍼) 알고리즘을 확장한 방식입니다. Z-버퍼 기법은 불투명한(opaque) 객체에만 적용할 수 있고 투명한(transparent) 객체에는 적용할 수 없다는 한

  18. C/C++에서의 AA 트리(AA Tree)란? 개념과 균형 유지 방법 총정리

    AA 트리란 무엇인가?컴퓨터 과학에서 AA 트리(AA Tree)는 정렬된 데이터를 효율적으로 저장하고 검색하기 위해 구현된 균형 트리(balanced tree)의 한 형태입니다. AA 트리는 이진 탐색 트리(binary search tree)의 일종인 레드-블랙 트리(red-black tree)의 변형으로 간주되며, 항목의 삽입과 삭제를 효율적으로 지원합니다.레드-블랙 트리와 달리, AA 트리에서는 빨간색 노드가 오른쪽 자식(right subchild)으로만 추가될 수 있으며 왼쪽 자식으로는 추가될 수 없습니다. 이러한 제약 조건의

  19. C/C++에서 C와 BASH 포크 폭탄 비교: 왜 BASH가 더 강력한가?

    C 포크 폭탄과 BASH 포크 폭탄의 차이BASH 포크 폭탄(fork bomb)이 C 프로그램으로 작성된 버전보다 훨씬 더 강력하다는 사실은 이미 널리 알려져 있습니다. 그 핵심 원인은 BASH에서 생성되는 프로세스는 부모 프로세스로부터 분리(detach)되기 때문입니다.즉, 처음 실행했던 부모 프로세스가 파괴되거나 강제 종료되더라도, 이후에 생성된 나머지 자식 프로세스들은 그대로 살아남아 계속 동작합니다. 반면 C 언어로 구현한 포크 폭탄은 부모 프로세스가 종료되는 순간 하위에 있던 자식 프로세스들이 자동으로 함께 소멸됩니다. 셸

  20. C/C++ 삼항 연산자(?:)의 숨겨진 동작 원리 – 타입 변환 3가지 사례 분석

    C/C++ 삼항 연산자란?C/C++에서 삼항 연산자(ternary operator)는 if~else 문을 한 줄로 대체할 수 있는 조건 연산자입니다. 기호는 ?:로 표현되며, ?는 if 부분에, :는 else 부분에 해당합니다.형식은 다음과 같습니다.조건식 ? exp2 : exp3조건식이 참이면 exp2가, 거짓이면 exp3가 평가됩니다. 겉보기에는 단순해 보이지만, 삼항 표현식의 반환 타입이 어떻게 결정되는가라는 문제에서 의외로 흥미로운 결과들이 나타납니다. 아래 세 가지 예제 프로그램을 통해 살펴보겠습니다.사례 1. 정상적으로

Total 1443 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:44/73  20-컴퓨터/Page Goto:1 38 39 40 41 42 43 44 45 46 47 48 49 50