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

C 프로그래밍

  1. C 언어에서 반복되는 값을 간단히 초기화하는 배열 표기법

    C에서 반복 값 배열 초기화하기배열(Array)은 동일한 데이터 타입의 여러 값을 하나의 이름으로 관리할 수 있게 해주는 자료구조입니다. 그런데 실제 개발 과정에서는 같은 값이 여러 번 반복되는 상황이 자주 발생합니다. 예를 들어 3, 3, 3, 3처럼 동일한 숫자를 연속해서 저장해야 하는 경우입니다.이럴 때마다 일일이 값을 나열하면 코드가 길어지고 실수할 가능성도 커집니다. 이를 위해 C 언어(GCC 계열 컴파일러)는 범위 지정 초기화 문법을 제공하여 프로그래머의 작업 부담을 크게 줄여줍니다.문법(Syntax)[시작 인덱스 ...

  2. C 언어로 과잉수(풍부한 수) 판별하기: 개념부터 코드까지

    과잉수(Abundant Number)란?과잉수는 수론(number theory)에서 다루는 개념으로, 자기 자신을 제외한 모든 진약수의 합이 자기 자신보다 큰 수를 의미합니다. 풍부한 수 또는 과대수라고도 부릅니다.가장 대표적인 예는 12입니다. 12의 약수는 1, 2, 3, 4, 6, 12이고, 자기 자신을 뺀 진약수는 1, 2, 3, 4, 6입니다. 이들의 합은 16으로 12보다 크므로, 12는 과잉수입니다.참고로 과잉수는 12, 18, 20, 24, 30, 36처럼 주로 짝수에서 나타나며, 홀수 과잉수 중 가장 작은 수는 94

  3. C 언어 부울 배열 퍼즐: 반복문·조건문 없이 모든 요소를 0으로 만들기

    부울 배열 퍼즐이란?부울(Boolean) 배열 퍼즐은 두 개의 요소로 구성된 배열의 모든 값을 0으로 바꾸는 문제입니다. 이 배열에는 반드시 하나의 요소는 0이며, 나머지 하나는 0일 수도 있고 아닐 수도 있습니다.이 퍼즐을 해결하려면 프로그램이 0이 아닌 요소를 찾아내어 그 값을 0으로 변경해야 합니다.해결을 위한 제약 조건이 퍼즐에는 다음과 같은 까다로운 제약 조건이 주어집니다.허용되는 연산은 보수(complement) 연산뿐이며, 그 외의 연산은 사용할 수 없습니다.반복문(for, while 등)과 조건문(if, switch

  4. C 프로그래밍 퍼즐: 산술 연산 없이 두 숫자를 하나로 합치는 방법

    이번 C 프로그래밍 퍼즐은 두 개의 숫자를 하나로 합치는 문제입니다. 단, 산술 연산자, 문자열 함수, 그리고 그 외 어떠한 함수도 사용할 수 없다는 제약 조건이 있습니다.퍼즐의 요구 사항은 다음과 같습니다.입력 : 12 , 54출력 : 1254해결 아이디어: 토큰 붙여넣기 연산자(##)이 퍼즐의 최적 해법은 C 전처리기(preprocessor)가 제공하는 토큰 붙여넣기 연산자(token-pasting operator, ##)를 활용하는 것입니다.매크로를 정의할 때 ## 연산자를 사용하면, 매크로에 전달된 두 개의 토큰이 전처리 단

  5. C 프로그램으로 처음 n개 짝수의 제곱합 구하기

    처음 n개의 짝수의 제곱합이란, 각 짝수를 제곱한 뒤 그 값들을 모두 더한 결과를 의미합니다. 예를 들어 n = 3이라면, 처음 세 개의 짝수는 2, 4, 6이고, 각각을 제곱하면 4, 16, 36이 되며, 이를 모두 더한 56이 바로 구하고자 하는 합입니다.처음 n개의 짝수의 제곱합을 구하는 방법은 크게 두 가지가 있습니다.1. 반복문(Loop) 활용하기반복문을 사용하여 1부터 n까지 숫자를 하나씩 증가시키면서 각 짝수를 구하고, 그 값을 제곱한 후 sum 변수에 누적하는 방식입니다.예제 코드#include <iostream

  6. 곱셈(*)·나눗셈(/) 연산자 없이 C 프로그램으로 거듭제곱(Power) 함수 직접 구현하기

    거듭제곱(Power) 함수는 동일한 수를 여러 번 곱하는 연산입니다. 예를 들어 5의 n제곱(5n)은 5를 n번 곱한 값, 즉 5 × 5 × 5 × … (n번)과 같습니다. 이러한 거듭제곱 계산을 곱셈(*)과 나눗셈(/) 연산자 없이 구현하려면 중첩 루프(nested loop)를 활용하여 숫자를 지정된 횟수만큼 반복해서 더하는 방식을 사용할 수 있습니다.동작 원리곱셈은 본질적으로 덧셈의 반복입니다. 예를 들어 4 × 4는 4를 4번 더한 값과 같으므로, 덧셈만으로도 곱셈 결과를 얻을 수 있습니다. 이 원리를 확장하면 거듭제곱 역시

  7. C 프로그램으로 처음 n개 자연수의 제곱합 구하기

    처음 n개 자연수의 제곱합이란?처음 n개 자연수의 제곱합은 1부터 n까지 각 자연수를 제곱한 값들을 모두 더한 결과입니다.입력 - 5출력 - 55설명 - 12 + 22 + 32 + 42 + 52 = 55처음 n개 자연수의 제곱합을 구하는 방법은 크게 두 가지가 있습니다.방법 1: 반복문 사용가장 직관적인 방법은 반복문을 활용하는 것입니다. 1부터 n까지 숫자를 하나씩 순회하며 각 숫자의 제곱을 구하고, 이를 합계 변수에 계속 누적하면 됩니다.예제 코드#include <iostream> using namespace std;

  8. C/C++로 팩토리얼(계승) 값의 후행 0 개수 구하기

    후행 0을 세는 기본 원리팩토리얼(계승) 값에서 후행 0(trailing zero), 즉 숫자 맨 뒤에 붙은 0의 개수를 구하는 핵심 원리는 소인수 중 2와 5가 몇 쌍이나 만나는지를 세는 것입니다. 2와 5가 곱해지면 10이 되고, 이 10 하나당 결과값 끝에 0이 하나씩 추가되기 때문입니다.예시로 이해하기7! = 5040이므로 후행 0은 1개입니다.위 논리를 적용해 보면, 7! = 2 × 3 × 4 × 5 × 6 × 7을 소인수로 분해할 때 2는 3개, 5는 1개가 나옵니다. 2와 5를 짝지으면 한 쌍만 남으므로 후행 0의 개수

  9. C 언어 vs BASH 포크 폭탄, 무엇이 다를까?

    포크 폭탄(Fork Bomb)은 리눅스 기반 시스템을 표적으로 삼는 DoS(Denial of Service, 서비스 거부) 공격의 일종입니다. 이 공격은 fork() 시스템 콜을 무한히 반복 호출하여 프로세스와 메모리 자원을 고갈시키고, 결국 시스템 전체를 마비시키려는 목적을 가지고 있습니다.BASH 포크 폭탄가장 유명한 포크 폭탄은 다음과 같은 한 줄짜리 BASH 스크립트입니다.:(){ :|: & };:얼핏 보면 난해해 보이지만, 구조를 하나씩 뜯어보면 단순합니다.:() — :라는 이름의 함수를 정의하는 부분입니다.{ }

  10. C 언어로 주어진 숫자의 일의 자리를 구하고 그 배수 관계 출력하기

    숫자 N을 입력받아 그 수의 일의 자리 숫자를 구한 뒤, 이 숫자를 나누어떨어지게 하는 수, 즉 일의 자리 숫자가 배수가 되는 수들을 화면에 출력하는 C 프로그램을 만들어 보겠습니다. 입력 − N=326출력 − 일의 자리 숫자는 6이며, 이에 해당하는 수는 2와 3 참고 − 어떤 숫자든 일의 자리는 그 수를 10으로 나눈 나머지를 계산하면 쉽게 구할 수 있습니다. 예를 들어 숫자 N의 일의 자리가 필요하다면 N%10을 사용하면 되고, 이 연산은 N의 일의 자리 숫자를 그대로 반환합니다. 알고리즘 START Step 1 → 변수 nu

  11. 부동소수점 없이 1/n의 소수점 아래 k자리 출력하기 – C 언어 구현

    문제 개요양의 정수 n과 자릿수 k가 주어졌을 때, 1/n의 계산 결과를 소수점 아래 k자리까지 출력하는 것이 목표입니다.부동소수점(float, double) 자료형을 활용하면 비교적 쉽게 구현할 수 있지만, 여기서는 부동소수점 연산 없이 정수 연산만으로 해결하는 방법을 소개합니다. 부동소수점은 표현 가능한 정밀도에 한계가 있어 요구되는 자릿수가 많아질 경우 오차가 발생할 수 있기 때문에, 정수 기반 접근이 더 안정적입니다.입력 및 출력 예시입력 — n=5, k=5출력 — 20000즉, n=5이고 k=5라면 1/5 = 0.20000

  12. C 프로그래밍: if문과 switch문 없이 숫자를 영어 단어로 출력하는 방법

    개요이 글에서는 주어진 숫자 값을 영어 단어 형태로 출력하는 C 프로그램을 다룹니다. 일반적으로 switch문의 case 0~9를 활용하면 쉽게 구현할 수 있지만, 이번 과제의 핵심은 if문과 switch문을 전혀 사용하지 않고 이를 해결하는 것입니다.예시입력 − N = 900출력 − NINE ZERO ZERO이 문제는 0부터 9까지의 숫자에 해당하는 단어들을 담은 포인터 배열을 활용하면 간단하게 해결할 수 있습니다. 문자열로 변환된 숫자의 각 자릿수를 인덱스 삼아 배열에서 단어를 꺼내 출력하는 방식입니다.알고리즘START Step

  13. C 프로그래밍으로 연속된 0 두 개와 1 세 개가 나오지 않도록 n개의 0과 m개의 1 출력하기

    N개의 0과 M개의 1로 구성된 수열을 생성해야 하며, 만들어진 수열에는 연속된 두 개의 0과 연속된 세 개의 1이 포함되어서는 안 됩니다.입력 − N=5, M=9출력 − 1 1 0 1 1 0 1 1 0 1 0 1 0 1참고 − 위와 같은 수열을 만들 수 있으려면 조건식 (m < n-1) || m >= 2 * (n + 1)이 반드시 거짓이어야 합니다. 만약 이 조건이 참이라면 주어진 개수로는 유효한 수열을 만들 수 없습니다.아래의 정답 코드로 바로 넘어가기보다는, 먼저 문제의 풀이 로직을 이해한 뒤 스스로 해결해 보는 것

  14. C 프로그램으로 문장에서 가장 긴 회문(Palindrome) 단어 찾는 방법

    주어진 문장 안에서 가장 긴 회문(팰린드롬)을 찾아 출력하는 것이 이번 문제의 목표입니다.회문(Palindrome)이란?회문이란 문자열을 거꾸로 뒤집어도 원래와 동일하게 읽히는 단어나 문자열을 의미합니다.예시 – Nitin은 문자열을 뒤집어도 Nitin 그대로이므로 회문입니다.여기서의 과제는 주어진 문장에서 가장 긴 회문 단어를 찾아내는 것입니다.예를 들어 다음과 같은 문장이 있다고 가정해 보겠습니다.malayalam liemadameil iji이 문장에는 세 개의 회문 단어가 포함되어 있지만, 그중 가장 긴 것은 liemadame

  15. C 프로그램으로 합이 k 이하인 세 원소 조합(트리플렛) 출력하기

    여러 개의 요소로 구성된 배열이 주어졌을 때, 정확히 세 개의 요소를 선택하여 그 합이 k보다 작거나 같은 모든 조합(트리플렛)을 찾아내는 것이 이번 글의 목표입니다. 중첩 반복문을 활용한 완전 탐색 방식으로 비교적 간단하게 해결할 수 있습니다.문제 예시입력 − arr[] = {1, 2, 3, 8, 5, 4}출력 − {1, 2, 3} {1, 2, 5} {1, 2, 4} {1, 3, 5} {1, 3, 4} {1, 5, 4} {2, 3, 5} {2, 3, 4}접근 방법먼저 sizeof(arr)/sizeof(arr[0]) 연산을 통해 배

  16. C 언어로 단 하나의 루프만 사용해 별(*) 패턴 출력하기

    이번 글에서는 continue 문을 활용해 오직 하나의 루프만으로 별(*) 패턴을 화면에 출력하는 방법을 알아보겠습니다. 일반적으로 이중 반복문(중첩 루프)을 사용해야 하는 패턴 출력 문제를, 단일 루프와 조건 분기만으로 해결하는 것이 핵심 과제입니다.알고리즘단일 루프로 피라미드 형태의 별 패턴을 만들기 위해서는 행(row)과 열(column)의 역할을 각각 변수가 나누어 담당하도록 설계해야 합니다. 아래는 그 동작 흐름입니다. 루프 종료 STOP핵심 아이디어이 코드의 핵심은 두 변수의 역할 분담입니다. 변수 i는 현재 몇 번째 행

  17. C 프로그램으로 특정 문자가 N번째로 나타난 이후의 문자열 출력하기

    이 문제의 목표는 사용자가 지정한 문자가 주어진 횟수만큼 나타난 이후 부분의 문자열을 출력하는 것입니다.입력 및 출력 예시입력 : string = {I am harsh vaid} Char = a Count = 2 출력 : rsh vaid사용자가 문자 a와 출현 횟수 2를 지정했으므로, a가 두 번째로 나타난 위치 바로 뒤부터 남은 문자열을 출력하면 됩니다. 위 예시에서 a는 am의 a와 harsh의 첫 번째 a로 두 번 등장하며, 그 이후인 rsh vaid가 최종 출력됩니다.알고리즘 반복 종료 STOP예제 코드#i

  18. C 프로그래밍으로 직각삼각형의 내접원 넓이 구하기

    직각삼각형 안에 내접하는 원(내원, incircle)의 넓이를 구하려면 먼저 내원의 반지름을 알아야 합니다. 다행히 직각삼각형에서는 세 변의 길이만 알면 내원의 반지름을 아주 간단한 공식으로 계산할 수 있습니다.내원 반지름 공식직각삼각형의 내원 반지름은 다음 공식으로 구합니다.r = (P + B − H) / 2여기서 P는 수직변(높이), B는 밑변, H는 빗변을 의미합니다.원의 넓이 공식원의 넓이는 일반적으로 다음 공식으로 계산합니다.넓이 = π × r²이때 π(파이)는 22/7 또는 3.14의 값을 사용하고, r은 원의 반지름입니

  19. C 언어로 N변 정다각형에 내접하는 가장 큰 원의 면적 구하기

    정다각형 내부에 그릴 수 있는 가장 큰 원은 모든 변에 동시에 접하는 내접원(inscribed circle)입니다. 이 원의 반지름은 다각형의 중심에서 한 변까지의 거리, 즉 아포팀(apothem)과 같으며, 다음 공식으로 구할 수 있습니다.r = a / (2 × tan(180/n))여기서 a는 정다각형 한 변의 길이, n은 변의 개수입니다.수학적 유도 과정정n각형은 중심을 기준으로 n개의 합동인 이등변삼각형으로 나눌 수 있습니다. 중심에서의 전체 각도는 360°이므로, 삼각형 하나가 차지하는 중심각은 360/n°입니다.이 삼각형을

  20. C 프로그램으로 대각선 길이가 주어진 육각형의 넓이 구하기

    육각형은 여섯 개의 변으로 이루어진 닫힌 도형이며, 정육각형은 여섯 변의 길이가 모두 같고 각의 크기도 모두 동일한 육각형을 말합니다. 이 글에서는 육각형의 대각선 길이 d만 주어졌을 때 그 넓이를 구하는 방법을 알아보겠습니다.육각형의 내각은 하나당 120도이며, 모든 내각의 합은 720도입니다.넓이 공식 유도하기먼저, 한 변의 길이가 a일 때 육각형의 넓이를 구하는 기본 공식은 다음과 같습니다.Area = (3a2 √3) / 2정육각형에서는 모든 변의 길이가 같고 내각이 120도이므로, 가장 긴 대각선 d는 한 변의 길이의 두 배

Total 1443 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:27/73  20-컴퓨터/Page Goto:1 21 22 23 24 25 26 27 28 29 30 31 32 33