자료/C언어 스케치

[C 언어 스케치] 프로그래밍 연습 4장 문제 풀이, 솔루션 (2)

PSY_CHOPATH 2020. 6. 30. 18:32

CHAPTER 4 ::

프로그래밍 연습


11. 세 수를 입력받아 가장 큰 수를 구하는 프로그램을 조건 연산자를 이용하여 작성하시오.

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main(void)
{
	int A,B,C,D,E;

	printf("==세 정수를 입력받아 가장 큰 수를 구하는 프로그램입니다.==\n\n");

	printf("첫 번째 정수를 입력해 주세요: ");
	 scanf("%d", &A);
	printf("두 번째 정수를 입력해 주세요: ");
	 scanf("%d", &B);

	 D = (A < B) ? B : A;	// A와 B를 비교, 더 큰 수를 D로 설정

	printf("세 번째 정수를 입력해 주세요: ");
	 scanf("%d", &C);

	 E = (C < D) ? D : C;	// D와 C를 비교, 더 큰 수를 E로 설정

	printf("\n입력된 세 정수 중에서 가장 큰 수는 %d 입니다.\n", E);

	return 0;
}

 


12. 표준입력으로 키와 몸무게를 실수로 입력 받아 다음 조건을 이용하여 정상인지, 비만인지 출력하는 프로그램을 작성하시오.

(몸무게 <= (키 - 100) * 0.9)이면 정상, 아니면 비만
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main(void)
{
	double height, weight; 
	
	printf("==키와 몸무게를 바탕으로 비만인지 아닌지 추정하는 프로그램입니다.==\n\n");

	printf("본인의 키를 입력해 주세요. : ");
	 scanf("%lf", &height);
	printf("본인의 몸무게를 입력해 주세요. : ");
	 scanf("%lf", &weight);

	printf("\n당신의 체중은 %s \n", weight <= (height - 100) * 0.9 ? "다행히 정상입니다." : "아쉽게도 비만입니다.");

	return 0;
}


13. 다음 조건을 만족하는 프로그램을 작성하시오.

º 원금이 1,000,000인 경우, 예치 기간을 년 단위로 입력 받아 만기시 총 금액을 출력

º 년단위단리이자 = 원금 * 이율(4.5%) * 년(예치기간)

·º 만기 시 총 수령액(단리적용) = 원금(1 + 이율(4.5%)  * 년(예치기간))
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main(void)
{
	double principal = 1000000;
	double rate = 0.045;
	double total_receipts;
	int period_year;

	printf("==원금이 1,000,000(백만원)이고 이율이 4.5%%일 때, 예치기간에 따른 만기시 총 수령액을 계산하는 프로그램입니다.==\n\n");
	printf("예치 기간을 년 단위로 입력해 주세요: ");
	scanf("%d", &period_year);  							
	
	total_receipts = principal * (1 + rate * period_year);

	printf("\n만기시 총 수령액은 %.0f 원 입니다.\n", total_receipts);

	return 0;
}


14. 위 프로그램에서 다음 조건을 만족하는 프로그램으로 수정하여 작성하시오.

º 원금이 1,000,000인 경우, 예치 기간을 년 단위로 입력 받아 만기 시 총 금액을 출력

º 만기 시 총 수령액(복리적용) = 원금(1 + 이율(4.5%))^년(예치기간)

º 함수 pow(a, b) = ab이용, #include <math.h>필요
#define _CRT_SECURE_NO_WARNINGS

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

int main(void)
{
	double principal = 1000000;
	double rate = 0.045;
	double total_receipts;
	int period_year;

	printf("예치 기간을 년 단위로 입력해 주세요: ");
	scanf("%d", &period_year);

	total_receipts = principal * pow((1 + rate), period_year);

	printf("\n만기시 총 수령액은 %.0f 원 입니다.\n", total_receipts);

	return 0;
}


15. 이차원 평면에서 다음 두 점 (3.2, 4.6) (-8.3, -2.3)의 중간 지점을 출력하는 프로그램을 작성하시오.

(X1, Y1)과 (X2, Y2)의 중간지점 = ((X1 + X2)/2, (Y1 + Y2)/2)
#include <stdio.h>

int main(void)
{
	double x1, x2, y1, y2;
	x1 = 3.2, y1 = 4.6, x2 = -8.3, y2 = -2.3;

	printf("중간지점 : (%.1f, %.1f)\n", (x1 + x2) / 2, (y1 + y2) / 2);

	return 0;
}


16. 지불할 금액을 정수로 입력 받아 화폐단위가 각각 몇 개씩 필요한지 출력하는 프로그램을 작성하시오.

º 입력은 최소 천원 단위로 입력

º 화폐단위는 50000, 10000, 5000, 1000 4가지이며, 가능한 큰 화폐단위로 지불

º 입력이 236,000이면 50000원권 4개, 10000원권 3개, 5000원권 1개, 1000원권 1개
#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

int main(void)
{
	int money;

	printf("==지불할 최소한의 화폐 단위와 지폐 수를 출력하는 프로그램입니다.==\n\n");
	printf("지불할 금액(최소단위는 천원) : ");
		scanf("%d", &money);
	
	printf("\n%d 원을 입력받았습니다. 이는\n\n", money);
	printf("50000원%7d개\n", money / 50000);			// 오만으로 나눠 몫을 출력
	printf("10000원%7d개\n", money % 50000 / 10000);		// 오만으로 나머지연산해서 남은 것들을 만으로 나눠 몫을 출력
	printf("5000원 %7d개\n", money % 10000 / 5000);		// 만으로 나머지연산해서 남은 것들을 오천으로 나눠 몫을 출력
	printf("1000원 %7d개 \n\n입니다.\n", money % 5000 / 1000);	// 오천으로 나머지연산해서 남은 것들을 천으로 나눠 몫을 출력

	return 0;
}