C-C++/쉽게 풀어 쓴 C 언어 EXPRESS

[쉽게 풀어 쓴 C 언어 EXPRESS] 5장 Programming(실습) 답

최옥구 2023. 1. 9. 23:00
반응형

1. 사용자로부터 2개의 정수를 입력받아서 첫 번째 정수를 두 번째 정수로 나누었을 때 얻게 되는 몫과 나머지를 출력하는 프로그램을 작성하라.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	int x, y;
	printf("2개의 정수를 입력하시오 >> ");
	scanf("%d %d", &x, &y);
	printf("몫 : %d 나머지 : %d", x / y, x % y);
	

	return 0;
}

 


 

2. 2 개의 double 형의 실수를 읽어서 합, 차, 곱, 몫을 구하는 프로그램을 작성하라.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	float x, y;
	printf("실수를 입력하시오 >> ");
	scanf("%f %f", &x, &y);
	printf("%f %f %f %f", x + y, x - y, x * y, x / y);
	

	return 0;
}

 


 

3. 3개의 정수 값을 입력받아서, 3개의 정수 값 중에서 최댓값을 출력하는 프로그램을 작성하라.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	int x, y, z;
	printf("3개의 정수를 입력하세요 >> ");
	scanf("%d %d %d", &x, &y, &z);
	int max = (x > y) ? x : y;
	max = (y > z) ? y : z;
	printf("최대값 : %d", max);
	

	return 0;
}

 


 

4. cm로 표현된 키를 입력하여 피트와 인치로 변환하는 프로그램을 작성하라. 1피트는 12인치이고, 1인치는 2.54cm이다.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	int height = 0;
	printf("키를 입력하세요 >> ");
	scanf("%d", &height);
	float INCH = height / 2.54;
	int feet = INCH / 12;
	float inch = INCH - feet * 12;
	printf("%dcm는 %d피트 %f인치입니다.", height, feet, inch);
	

	return 0;
}

 


 

5. 100보다 작은 정수를 입력받아서 이것을 십의 자리, 일의 자리로 분리하여 출력하는 프로그램을 작성하라. 즉 사용자가 정수 23을 입력하면 2, 3을 차례로 출력하면 된다.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	int num = 0;
	printf("정수를 입력하시오 >> ");
	scanf("%d", &num);
	int ten = num / 10;
	int one = num % 10;
	printf("십의 자리 : %d\n", ten);
	printf("십의 자리 : %d\n", one);

	return 0;
}

 


 

6. int형의 정수를 비트 연산자를 사용하여서 2의 보수로 변환하는 프로그램을 작성하여 보자. 2의 보수는 먼저 전체 비트를 반전시킨 후에 1을 더하면 된다.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	int num = 0;
	printf("정수를 입력하시오 >> ");
	scanf("%d", &num);
	printf("2의 보수 : %d", ~num + 1);
	return 0;
}

 


 

7. 정수에 비트 연산자 << 를 한번 적용하면 2를 곱한 값을 얻을 수 있다. 또 정수에 비트 연산자 >>를 한번 적용하면 2로 나눈 값을 얻을 수 있다. 사용자로부터 정수 x, y를 입력받아서 x << y의 값을 출력하는 프로그램을 작성하여 보자.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	int num = 0, cnt = 0;
	printf("정수를 입력하시오 >> ");
	scanf("%d", &num);
	printf("2를 곱하고 싶은 횟수>> ");
	scanf("%d", &cnt);
	printf("%d << %d의 값 %d", num, cnt, num << cnt);
	return 0;
}

 


 

8. 구의 면적과 체적을 구하는 프로그램을 작성하라. 구의 반지름은 실수로 입력된다. 아래 공식을 사용하라. 파이 값은 기호 상수로 정의하라.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define PI 3.14

int main(void) 
{
	float radius = 0;
	printf("구의 반지름을 입력하시오 >> ");
	scanf("%f", &radius);
	printf("표면적은 %f입니다.\n", 4 * PI * radius * radius);
	printf("체적은 %f입니다.\n", 4.0 / 3.0 * PI * radius * radius * radius);
	return 0;
}

 


 

9. 그리스 최초의 수학자이자 천문학자인 탈레스는 지팡이 하나로 피라미드의 높이를 재었다고 한다. 탈래스는 지팡이를 똑바로 땅에 세우고 지팡이를 움직여서 지팡이의 그림자와 피라미드의 그림자를 일치시켰다. 삼각형 ABC와 삼각형 ADE는 닮음꼴이므로 다음의 수식이 성립한다.

AC : AE = BC : DE

 

따라서 AC와 AE, BC를 안다면 DE를 계산할 수 있다. AC와 AE, BC를 입력하여서 DE를 구하는 프로그램을 작성하라. 입력되는 수치는 모두 실수로 한다.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define PI 3.14

int main(void) 
{
	float stickHeight = 0, stickShadow = 0, distance = 0;
	printf("지팡이의 높이를 입력하시오 >> ");
	scanf("%f", &stickHeight);
	printf("지팡이의 그림자의 길이를 입력하시오 >> ");
	scanf("%f", &stickShadow);
	printf("피라미드까지의 거리를 입력하시오 >> ");
	scanf("%f", &distance);
	float height = (distance / stickShadow) * stickHeight;
	printf("피라미드의 높이는 %f입니다.", height);
	return 0;
}

 


 

10. 조건 연산자 >만을 이용하여 2차원 공간의 x 좌표와 y 좌표를 입력받아서 그 좌표가 속하는 사분면을 출력하는 프로그램을 작성하시오. (x > 0 && y > 0)? printf("1 사분면") : printf(" ");와 같은 문장을 사용하여 작성해 본다.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define PI 3.14

int main(void) 
{
	int x, y;
	printf("x좌표를 입력하세요 > ");
	scanf("%d", &x);
	printf("y좌표를 입력하세요 > ");
	scanf("%d", &y);
	(x > 0) && (y > 0) ? printf("1 사분면") : printf("");
	(x < 0) && (y > 0) ? printf("2 사분면") : printf("");
	(x < 0) && (y < 0) ? printf("3 사분면") : printf("");
	(x > 0) && (y < 0) ? printf("4 사분면") : printf("");
}

 


 

11. 약 2200년 전에 그리스의 에라토스테네스는 최초로 지구의 크기를 측정하였다. 일단 지구를 구형으로 가정하고 또 태양 광선은 지구의 어느 곳에서나 평행하게 비친다고 가정하였다. 또 원호의 길이는 중심각에 비례한다는 원리를 사용하였다. 하지날 정오에 시에네에서 햇빛이 수직으로 비칠 때, 알렉산드리아에서는 막대와 그림자가 이루는 각도가 7.2'로 측정되었다. 또 시에네에서 알렉산드리아까지의 거리는 약 900km로 측정되었다. 이것을 이용하여서 지구의 반지름을 계산하여 보자.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define PI 3.14

int main(void) 
{
	float distance, angle;
	printf("거리를 입력하시오 > ");
	scanf("%f", &distance);
	printf("y좌표를 입력하세요 > ");
	scanf("%f", &angle);
	float round = (360 / angle) * distance;
	float radius = round / PI / 2;
	printf("지구의 반지름은 %f입니다.", radius);
}

 


 

12. 비트 이동 연산을 이용하여 문자 4개를 받아서 하나의 unsigned int형의 변수 안에 저장하는 프로그램을 작성하라. 첫 번째 문자는 비트 0부터 비트 7까지에 저장되고 두 번째 문자는 비트 8부터 비트 15까지 세 번째 문자는 비트 16에서 비트 23까지, 네 번째 문자는 비트 24부터 비트 31까지 저장된다. 결과로 생성되는 정수 값은 16진수로 출력하도록 한다. 비트 이동 연산과 비트 OR 연산을 사용하라.

[결과]

[소스 코드]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) 
{
	unsigned int temp = 0;
	char c1, c2, c3, c4;
	printf("첫번째 문자를 입력하세요 : ");
	scanf(" %c", &c1);
	printf("두번째 문자를 입력하세요 : ");
	scanf(" %c", &c2);
	printf("세번째 문자를 입력하세요 : ");
	scanf(" %c", &c3);
	printf("네번째 문자를 입력하세요 : ");
	scanf(" %c", &c4);

	temp = temp | c1;
	temp = temp | (c2 << 8);
	temp = temp | (c3 << 16);
	temp = temp | (c4 << 24);

	printf("결과값 : %x", temp);
}
반응형