과제 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;
}
헤론 공식을 사용해 주어진 세 변으로 삼각형의 면적을 계산합니다.