본문 바로가기

Algorithm 문제 풀이/C

윤성우의 열혈 C 프로그래밍 문제 풀이 Chapter 5

문제 05 - 1

문제 1)
프로그래밍 사용자로부터 두 점의 x, y 좌표를 입력 받아서, 두 점이 이루는 직사각형의 넓이를 계산하여 출력하는 프로그램을 작성해보자. (변형 : 좌 상단의 x, y 좌표가 우 상단의 x, y 좌표 값보다 작다는 가정 X)
입력 예제
좌 상단의 x, y 좌표 : 2 4
우 상단의 x, y 좌표 : 4 8
출력예제
두 점이 이루는 직사각형의 넓이는 8입니다.
#include <stdio.h>
#include <math.h>

int main() {
	int x1, x2, y1, y2;
	printf("좌 상단의 x y 좌표: ");
	scanf_s("%d %d", &x1, &y1);
	printf("우 상단의 x y 좌표: ");
	scanf_s("%d %d", &x2, &y2);

	int square = abs(x2 - x1) * abs(y2 - y1);
	printf("두 점이 이루는 직사각형의 넓이는 %d입니다.", square);

	return 0;
}

※ 참고

절댓값 구하기 -> 절댓값 반환 함수(abs, labs, fabs) 사용

절댓값 함수들이 포함되어있는 헤더파일 : <math.h>

int - abs 함수

long - labs 함수

double - fabs 함수

 

 

문제 2)
프로그램 사용자로부터 두 개의 실수를 입력 받아서 double형 변수에 저장하자. 그리고 두 수의 사칙연산의 결과를 출력해보자.
#include <stdio.h>

int main() {
	double a, b;
	scanf_s("%lf %lf", &a, &b);
	printf("%f + %f = %f\n", a, b, a + b);
	printf("%f - %f = %f\n", a, b, a - b);
	printf("%f * %f = %f\n", a, b, a * b);
	printf("%f / %f = %f\n", a, b, a / b);
	return 0;
}

※ 참고

double형 데이터 출력할 때는 서식문자 %f 사용, double형 데이터 입력 받을 때에는 서식문자 %lf를 사용한다.

 

문제 3)
Appendix A의 아스키 코드 표를 참조하여 다음의 질문의 답을 해 보자.
1. 아스키 코드를 구성하는 값의 범위는 어떻게 되는가?
2. 대문자 A에서부터 대문자 Z까지 값이 어떻게 증가하는가? 증가의 폭을 말해보자.
3. 알파벳 대문자와 소문자간의 값의 차는 어떻게 되는가? 규칙성을 말해보자.

1. 값의 범위는 0이상 127이하이다. (따라서 1바이트로 표현 가능하다.)

2. 값이 1씩 증가한다.

3. 대문자와 소문자간의 값의 차는 32이다.

 

문제 4)
프로그램 사용자로부터 아스키 코드 값을 정수의 형태로 입력 받은 후에 해당 정수의 아스키 코드 문자를 출력하는 프로그램을 작성해보자. 예를 들어서 프로그램 사용자가 정수 65를 입력하면 문자 A를 출력해야한다.
#include <stdio.h>

int main() {
	int a;
	printf("정수를 입력하세요: ");
	scanf_s("%d", &a);
	printf("%c", a);
	return 0;
}
문제 5)
프로그램 사용자로부터 알파벳 문자 하나를 입력 받는다. 그리고 이에 해당하는 아스키 코드 값을 출력하는 프로그램을 만들어보자. 예를 들어서 프로그램 사용자가 문자 A를 입력하면 정수 65를 출력해야한다.
#include <stdio.h>

int main() {
	char a;
	printf("아스키코드를 입력하세요: ");
	scanf_s("%c", &a);
	printf("%d", a);
	return 0;
}