본문 바로가기
IT/프로그래밍

C언어 본색 파트1 Chapter 6 연습문제 솔루션

by nutrient 2021. 5. 31.
728x90
728x170

 

1번

#include <stdio.h>
int main()
{
	//int num; 
	double num;

	printf("실수를 입력하세요 : ");
	//scanf("%d", &num);
	scanf("%lf", &num);

	//printf("당신이 입력한 수는 %d입니다. \n", num);
	printf("당신이 입력한 수는 %.2lf입니다. \n", num);
	return 0;
}

/*
	실수를 입력받고 출력할 수 있도록 수정하는 문제입니다.
	4, 8, 11 번째 줄은 int, 즉 정수를 다루기 위한 코드이므로
	5, 9, 12 번째 줄과 같이 수정되어야 합니다. 
	12번째 줄의 서식문자 %lf 사이의 .2는 소수점 둘째자리까지 표시함을 의미합니다. 
*/

 

2번

#include <stdio.h>
int main()
{
	//char c=200;
	int c=200;
	 
	printf("c=%d \n", c);

	return 0;
}

/*
	자료형의 표현 범위에 관한 문제입니다.
	원래 코드인 4번째 줄의 코드는 문자형 변수를 선언하여 200으로 초기화 하였습니다.
	하지만 문자형 변수는 200이라는 큰 수를 담을 수 없기 때문에
	출력하면 이상한 값이 나오게 됩니다. 
	따라서 200이라는 수를 담을 수 있을 정도로 충분히 큰 자료형인 정수형을 사용하면
	원하는 결과를 출력할 수 있습니다. 
*/

 

3번

#include <stdio.h>
int main()
{
	int i;
	float f;
	double d;

	i=(long)('a'+1.3); 
	f=2.49+i;		   
	d=(double)f*i;	   

	// 데이터 손실 여부를 확인하기 위해 출력해 봅니다.
	printf("%d \n", i);
	printf("%lf \n", f);
	printf("%lf \n", d);
}

/*
	'a'는 아스키코드에 따라 정수 97로 다루어지기 때문에 'a'+1.3은 98.3으로 계산됩니다.
	하지만 이를 long 형으로 강제 형변환하면서 실수부가 손실되어 i는 98이 됩니다. 
	정수인 i에 2.49를 더하면 손실을 최소화하는 방향으로 100.49의 double형으로 자동 형변환이 되며
	f는 float이기 때문에 더 작은 자료형으로 형변환이되면서 실수부에서 약간의 손실이 발생합니다.
	float 형인 f를 double로 강제 형변환 할때에는 손실이 발생하지 않지만 정수형인 i와 곱하면 손실이 일어나게 됩니다. 
*/

 

4번

#include <stdio.h>
int main(void)
{
	int c;

	printf("input = ");
	scanf("%d", &c);

	printf("입력한 코드에 해당하는 문자는 %c입니다. \n", c);

	return 0;
}

/*
	입력은 정수형으로 받고
	출력을 문자형으로 하는 문제입니다. 
*/

 

5번

#include <stdio.h>
int main()
{
	double result;
	double input1;
	double input2;

	printf("input 2 numbers = ");
	scanf("%lf %lf", &input1, &input2);

	result = input1/input2;
	printf("나눗셈 결과 = %lf \n", result);

	return 0;
}

/*
	사용자가 입력하는 실수까지 받을 수 있어야 하고 
	(정수 간의 나눗셈이라 하더라도) 실수형의 결과값도 다룰 수 있어야 하기 때문에
	변수들을 double 형으로 선언해야 합니다. 
*/

 

6번

#include <stdio.h>
int main()
{
	double r, v, result;
	
	printf("원형 트랙의 반지름(km): ");
	scanf("%lf", &r);
	printf("자동차의 속도(km/h): ");
	scanf("%lf", &v);

	result = (2*3.14*r)*60/v;

	printf("자동차가 트랙을 한바퀴 완주하는데 걸리는 시간은 %.3lf분 입니다.", result);

	return 0;
}

/*
	11번째 줄의 (2*3.14*r)는 트랙의 둘레를 계산한 것이고 
	여기에 곱해주는 60은 시간단위를 분단위로 바꾸기 위한 것입니다. 
*/

 

7번

#include <stdio.h>
int main()
{
	double r, area, length;
	
	printf("원의 반지름: ");
	scanf("%lf", &r);

	area = 3.14*r*r;
	length = 2*3.14*r;

	printf("원의 면적: %.2lf\n원의 둘레: %.2lf \n", area, length);

	return 0;
}

/*
	책에서의 힌트대로 9, 10번째 줄을 구현하면 됩니다. 
*/

 

728x90
그리드형

댓글