C 기반 프로그래밍 실습 예제 분석

기본 출력 작업

아스키 아트를 활용한 간단한 캐릭터 출력을 수행하는 코드입니다. 아래 프로그램은 사람 모양을 텍스트로 표현합니다.

#include <stdio.h>
int main() {
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    getchar();
    return 0;
}

동일한 패턴을 세로로 두 번 반복하거나, 가로 방향으로 복제하여 다중 캐릭터를 출력할 수 있습니다. 예를 들어, 두 개의 인물을 나란히 배치하려면 다음과 같이 수정합니다.

#include <stdio.h>
int main() {
    printf(" O   O   \n");
    printf("<H> <H>  \n");
    printf("I I I I  \n");
    getchar();
    return 0;
}

삼각형 조건 판별 프로그램

세 변의 길이를 입력받아 삼각형을 구성할 수 있는지 여부를 판단하는 로직을 구현합니다. 삼각형 성립 조건은 임의의 두 변의 합이 나머지 한 변보다 커야 한다는 것입니다.

#include <stdio.h>

int main() {
    double side1, side2, side3;
    scanf("%lf %lf %lf", &side1, &side2, &side3);

    if (side1 + side2 > side3 && 
        side1 + side3 > side2 && 
        side2 + side3 > side1) {
        printf("삼각형을 구성할 수 있습니다.\n");
    } else {
        printf("삼각형을 구성할 수 없습니다.\n");
    }

    return 0;
}

사용자 입력 기반 피드백 시스템

학습 습관에 대한 사용자 응답을 받아 적절한 피드백을 제공하는 간단한 대화형 프로그램입니다. 문자 입력 후 버퍼에 남은 개행 문자를 처리하기 위해 추가적인 getchar() 호출이 필요합니다.

#include <stdio.h>
int main() {
    char prep, practice;

    printf("수업 전 예습 및 복습을 했습니까? (y/n): ");
    prep = getchar();
    getchar(); // 개행 문자 제거

    printf("실제로 코드를 작성해 보셨습니까? (y/n): ");
    practice = getchar();

    if ((prep == 'y' || prep == 'Y') && (practice == 'y' || practice == 'Y')) {
        printf("꾸준한 노력이 중요합니다. 계속 유지하세요!\n");
    } else {
        printf("지금부터 시작해도 늦지 않았습니다. 함께 시작해 봅시다.\n");
    }

    return 0;
}

입력 형식 지정 실습

서로 다른 데이터 타입(int, double 등)을 특정 형식으로 입력받고 출력하는 방법을 연습합니다. 실수 입력 시 쉼표로 구분된 값을 올바르게 처리해야 하며, 이 경우 포맷 지정자에 쉼표를 포함해야 합니다.

#include <stdio.h>
int main() {
    int a, b, c;
    double x, y;

    scanf("%d %d %d", &a, &b, &c);
    printf("정수 값: a=%d, b=%d, c=%d\n", a, b, c);

    scanf("%lf,%lf", &x, &y);
    printf("실수 값: x=%.6f, y=%.6f\n", x, y);

    return 0;
}

초 단위 시간을 년 단위로 변환

10억 초가 약 몇 년에 해당하는지를 계산하는 프로그램입니다. 1년은 365일을 기준으로 환산하며, 정수형 나눗셈과 반올림을 고려합니다.

#include <stdio.h>
int main() {
    long seconds_per_year = 365L * 24 * 60 * 60;
    int total_seconds = 1000000000;
    int years = (int)((double)total_seconds / seconds_per_year + 0.5);

    printf("10억 초는 약 %d년입니다.\n", years);
    return 0;
}

거듭제곱 계산기

입력된 실수 값의 365제곱을 계산하여 출력합니다. math.h 헤더의 pow() 함수를 활용하며, 여러 번의 입력을 처리할 수 있도록 루프를 적용할 수 있습니다.

#include <stdio.h>
#include <math.h>

int main() {
    double base, result;
    while (scanf("%lf", &base) != EOF) {
        result = pow(base, 365);
        printf("%.2f의 365제곱: %.2e\n", base, result);
    }
    return 0;
}

섭씨-화씨 온도 변환기

섭씨 온도를 입력받아 화씨로 변환하는 반복형 프로그램입니다. 변환 공식은 F = C × 9/5 + 32 입니다.

#include <stdio.h>
int main() {
    float celsius, fahrenheit;
    while (scanf("%f", &celsius) != EOF) {
        fahrenheit = celsius * 9.0 / 5.0 + 32;
        printf("%.2f°C = %.2f°F\n", celsius, fahrenheit);
    }
    return 0;
}

헤론의 공식을 이용한 삼각형 면적 계산

세 변의 길이를 입력받아 헤론의 공식을 사용해 삼각형의 면적을 계산합니다. 먼저 반둘레를 구한 후, √[s(s-a)(s-b)(s-c)]를 계산합니다.

#include <stdio.h>
#include <math.h>
int main() {
    float a, b, c, s, area;
    while (scanf("%f %f %f", &a, &b, &c) != EOF) {
        s = (a + b + c) / 2.0;
        area = sqrt(s * (s - a) * (s - b) * (s - c));
        printf("삼각형의 면적: %.2f\n", area);
    }
    return 0;
}

태그: C Programming input/output conditional statements loops math functions

6월 3일 18:38에 게시됨