Chapter3 프로그래밍 연습

milpy·2022년 3월 30일
0

C 기초 플러스 6판

목록 보기
2/18

01

정수 오버플로, 부동소수점 수 오버플로와 언더플로가 발생했을 때 사용자의 시스템이 무엇을 하는지 알아보라. 즉 이 문제를 확인할 수 있는 프로그램을 작성하라. (가장 큰 값과 가장 작은 값에 대해 알아보기 위해 limit.h와 float.h에 대한 4장의 논의를 살펴볼 수 있다.)

#include<stdio.h>
#include<limits.h>
#include<float.h>
int main(void)
{
	int maxInt, minInt;
	float maxFlt, minFlt;

	maxInt = INT_MAX;
	minInt = INT_MIN;

	maxFlt = FLT_MAX;
	minFlt = FLT_MIN;

	printf("int overflow : %d\n", maxInt + 1);
	printf("int underflow : %d\n", minInt - 1);

	printf("float overflow : %f\n", maxFlt * 10);
	printf("float underflow : %f\n", minFlt / 10);

	return 0;
}

02

66과 같은 ASCII 코드값을 사용자에게 입력하도록 요청하고, 그 ASCII 코드값에 해당하는 문자를 출력하는 프로그램을 작성하라.

#include<stdio.h>

int main(void)
{
	int asc;
	printf("ASCII 값을 입력하세요 : ");
	scanf("%d",&asc);

	printf("%d = %c\n", asc, asc);

	return 0;
}

03

경보음을 한 번 울리고, 다음과 같은 텍스트를 출력하는 프로그램을 작성하라.

예시

갑작스런 소리에 깜짝놀라 샐리는 외쳤다,
"호박대왕이다!"

코드

#include<stdio.h>

int main(void)
{
	printf("\a");
	printf("갑작스런 소리에 깜짝놀라 샐리는 외쳤다.\n");
	printf("\"호박대왕이다!\"\n");

	return 0;
}

04

부동소수점 수를 하나 읽고, 처음에는 소수점 표기로, 다음에는 지수 표기로, 그 다음에는 시스템이 지원한다면 p 표기로 출력하는 프로그램을 작성하라. 출력은 다음과 같이 되어야 한다. (실제로 화면에 표시되는 지수부의 자릿수는 시스템마다 다를 수 있다.)

예시

부동소수점 수를 입력하시오 : 64.25
고정소수점 표기 : 64.250000
지수 표기 : 6.425000e+01
p 표기 : 0x1.01p+6

코드

#include<stdio.h>

int main(void)
{
	float val;

	scanf("%f", &val);

	printf("%f\n", val);
	printf("%e\n", val);
	printf("%a\n", val);

	return 0;
}

05

1년은 약 3.156*(10의7승)초에 해당한다. 나이로 햇수를 입력받아, 초 단위로 출력하는 프로그램을 작성하라.

#include<stdio.h>

int main(void)
{
	int y;
	long double sec;

	printf("나이를 입력하세요 : ");
	scanf("%d", &y);

	sec = (3.156e+7) * y;

	printf("taotal sec = %e\n", sec);

	return 0;
}

06

물 분자의 질량은 약 3.0*(10의 -23승)그램이다. 물 1쿼트(quart)는 약 950그램이다. 쿼트 단위로 물의 양을 입력받아, 그 안에 들어있는 물 분자의 개수를 출력하는 프로그램을 작성하라.

#include<stdio.h>

int main(void)
{
	long double num = 3.0e-23;
	int quart;

	printf("쿼트를 입력해주세요 : ");
	scanf("%d", &quart);

	printf("%d quart는 : %e\n", quart, (quart * 950 / num) );

	return 0;
}

07

1인치는 2.54cm이다. 키를 cm단위로 입력받아 인치단위로 출력하는 프로그램을 작성하라. 원한다면 인치단위로 입력받아 센치단위로 출력하는 프로그램을 작성해도 상관없다.

#include<stdio.h>

int main(void)
{
	float inch = 2.54;
	int num;

	printf("cm을 입력해주세요 : ");
	scanf("%d", &num);

	printf("%d cm = %.1f inch\n", num * inch);

	return 0;
}

08

**미국에서는 부피 단위로 pint를 사용한다. 1 pint는 2cups이고, 1 cup은 8 ounces, 1ounce는 2 tablepoons, 1 tablespoon은 3 teaspoons이다.
cup 단위로 부피가 얼마인지 묻고 그것을 pints, ounces, tablespoons, teaspoons으로 환산하여 표시하는 프로그램을 작성하라. 왜 이 경우에 부동소수점이 정수형 보다 더 적합한지 설명하라.

#include<stdio.h>

int main(void)
{
	float pint = 0.5;
	int ounce = 8;
	int tablespoon = 16;
	int teaspoons = 48;

	int cup;

	printf("cup을 입력하세요 : ");
	scanf("%d", &cup);

	printf("pint : %.1f\n", cup * pint);
	printf("ounce : %d\n", cup * ounce);
	printf("tablespoon : %d\n", cup * tablespoon);
	printf("teaspoons : %d\n", cup * teaspoons);

	return 0;
}

0개의 댓글