기초 프로그래밍 실습: 출력, 조건문 및 수학 연산

과제 1.1: 간단한 문자 그래픽 출력

#include <stdio.h>
int main()
{
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    printf(" O \n");
    printf("<H>\n");
    printf("I I\n");
    return 0;
}
이 코드는 단순한 얼굴 모양을 출력합니다. 각 줄에서 공백과 문자를 정확히 배치하여 시각적 형상을 만듭니다.

과제 1.2: 두 개의 얼굴을 수평으로 배열

#include <stdio.h>
int main()
{
    printf(" O   O \n");
    printf("<H> <H>\n");
    printf("I I I I\n");
    return 0;
}
두 개의 얼굴 요소를 공백으로 분리하여 가로 방향으로 배열합니다.

과제 2: 삼각형 성립 조건 검사

#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;
}
세 변의 길이를 입력받아 삼각부등식을 검사하고 결과를 출력합니다.

과제 3.1: 사용자 행동 확인 질문

#include <stdio.h>
int main()
{
    char response1, response2;
    
    printf("수업 전 예습, 후 복습 했나요? (y/Y: 있음, n/N: 없음): ");
    response1 = getchar();
    getchar(); // 버퍼에서 개행 문자 제거
    
    printf("\n코드 직접 작성해보셨나요? (y/Y: 작성함, n/N: 미작성): ");
    response2 = getchar();
    
    if ((response1 == 'y' || response1 == 'Y') && (response2 == 'y' || response2 == 'Y'))
        printf("\n로마는 하루만에 세워지지 않았습니다. 계속 노력하세요! :)\n");
    else
        printf("\n로마는 하루만에 무너지지 않습니다. 함께 만들어 봅시다.\n");
    return 0;
}
입력 후 `getchar()`가 없으면 다음 `getchar()` 호출이 개행 문자를 읽어버려 문제를 건너뛸 수 있습니다.

과제 4: 잘못된 입력 형식 오류 탐지

#include <stdio.h>
int main()
{
    int num1, num2, num3;
    char ch1, ch2, ch3;
    double val1, val2;
    
    scanf("%d%d%d", &num1, &num2, &num3); // & 누락 → 값 할당 실패
    printf("num1=%d, num2=%d, num3=%d\n", num1, num2, num3);
    
    scanf("%c%c%c", &ch1, &ch2, &ch3);
    printf("ch1=%c, ch2=%c, ch3=%c\n", ch1, ch2, ch3);
    
    scanf("%lf,%lf", &val1, &val2); // l 누락 → 형식 오류
    printf("val1=%.2f, val2=%.2f\n", val1, val2);
    
    return 0;
}
포인터 앞에 `&`가 누락되거나 형식 지정자에 오타가 있을 경우 데이터가 올바르게 읽히지 않습니다.

과제 5: 시간 단위 변환 계산

#include <stdio.h>
int main()
{
    int years;
    double seconds = 1e+9;
    years = (int)(seconds / (24.0 * 60.0 * 60.0 * 365.0) + 0.5);
    
    printf("%.0f초는 약 %d년입니다.\n", seconds, years);
    return 0;
}
10억 초를 년 단위로 변환하여 대략적인 시간 개념을 이해합니다.

과제 6.1: 거듭제곱 계산

#include <stdio.h>
#include <math.h>
int main()
{
    double base, result;
    scanf("%lf", &base);
    result = pow(base, 365);
    printf("%.2f의 365제곱은 %.2f입니다.\n", base, result);
    return 0;
}
입력된 숫자의 365제곱을 계산하고 소수점 둘째 자리까지 출력합니다.

과제 6.2: 반복 입력 처리

#include <stdio.h>
#include <math.h>
int main()
{
    double input;
    while (scanf("%lf", &input) != EOF)
    {
        double power = pow(input, 365);
        printf("%.2f의 365제곱: %.2f\n", input, power);
        printf("\n");
    }
    return 0;
}
여러 개의 입력 값을 반복적으로 받아서 각각의 365제곱을 계산합니다.

과제 7: 섭씨-화씨 변환

#include <stdio.h>
#include <math.h>
int main()
{
    double celsius;
    while (scanf("%lf", &celsius) != EOF)
    {
        double fahrenheit = 9.0 / 5.0 * celsius + 32;
        printf("섭씨 %.2f도는 화씨 %.2f도입니다.\n", celsius, fahrenheit);
    }
    return 0;
}
무한 입력 루프를 통해 여러 섭씨 온도 값을 화씨로 변환합니다.

과제 8: 세 변으로 삼각형 면적 계산

#include <stdio.h>
#include <math.h>
int main()
{
    int a, b, c;
    double perimeter, area;
    
    while (scanf("%d%d%d", &a, &b, &c) != EOF)
    {
        perimeter = (a + b + c) / 2.0;
        area = sqrt(perimeter * (perimeter - a) * (perimeter - b) * (perimeter - c));
        printf("변 길이: %d, %d, %d → 면적: %.3f\n", a, b, c, area);
        printf("\n");
    }
    return 0;
}
헤론 공식을 사용해 주어진 세 변으로 삼각형의 면적을 계산합니다.

태그: C Printf scanf if-else while loop

7월 7일 01:23에 게시됨