연산과 자료형

seojin·2021년 8월 6일
0

c언어 문제풀이

목록 보기
2/3

[2-1] 정숫값을 읽어 들인 후 이에 10을 더한 값, 뺀 값, 곱한 값, 10으로 나눈 몫과 나머지를 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	/* a를 b로 나눈 몫은 / 를 이용해서, 나머지는 %를 이용해서 구한다. */

	int n;

	printf("정수 를 입력하시오 : ");
	scanf("%d", &n);

	printf("10을 더한 값 : %d \n", n + 10);
	printf("10을 뺸 값 : %d \n", n - 10);
	printf("10을 곱한 값 : %d \n", n * 10);
	printf("10으로 나눈 값의 몫 : %d \t 10으로 나눈 값의 나머지 : %d \n", n / 10, n%10);

	return 0;
}

[2-1] 정숫값을 읽어 들여 5로 나눈 몫과 나머지를 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	/* 형식 문자열이 아닌 %를 표시하고 싶은 경우에는 %%를 쓴다. 그 경우 printf("%%") 를 입력하면 %로 출력된다. 
	단, puts 함수는 형식 문자열 기능이 없기 때문에 %%가 그대로 %%로 출력됨! */

	int n;

	printf("정수 를 입력하시오 : ");
	scanf("%d", &n);

	printf("n / 5 = %d 이고, n %% 5 = %d 이다. \n", n / 5, n%5);

	return 0;
}

[2-3] 읽어 들인 정숫값 2개의 비율을 백분율로 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int x,y;

	printf("정수 x 를 입력하시오 : ");
	scanf("%d", &x);
	printf("정수 y 를 입력하시오 : ");
	scanf("%d", &y);
	printf("\n");

	// printf("백분율 : %d \n ", x / y * 100);
	printf("백분율 : %d \n ", 100 * x / y );

	// x / y * 100 하는 경우 앞에서부터 계산해서 0 * 100 으로 계산 될 여지가 있으므로 주의! 

	return 0;
}

[2-4] 정숫값 2개를 읽어 들여 그 합과 곱을 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int x,y;

	printf("정수 x 를 입력하시오 : ");
	scanf("%d", &x);
	printf("정수 y 를 입력하시오 : ");
	scanf("%d", &y);
	printf("\n");

	printf("합 : %d , 곱 : %d\n ", x+y, x*y );

	return 0;
}

[2-5] 읽어 들인 정숫값 2개의 평균값 부호를 반전한 값이 출력되는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int x,y;

	printf("정수 x 를 입력하시오 : ");
	scanf("%d", &x);
	printf("정수 y 를 입력하시오 : ");
	scanf("%d", &y);
	printf("\n");

	printf(" >> %d\n ", -1*(x+y)/2 );

	return 0;
}

[2-6] 읽어 들인 실숫값을 그대로 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	/* double 형 변수로 값을 읽어 들일 때 scanf 함수에 부여할 형식 지정사는 %lf이고, 
	printf 함수에 부여할 형식 지정자는 %f 이다. */

	double a; 

	printf("실수 값을 입력해주세요 : ");
	scanf("%lf", &a);

	printf("입력한 실수 값 : %f \n", a);

	return 0;
}

[2-7] 실숫값을 읽어 들여 그 값을 반지름으로 하는 원의 넓이를 구해서 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	double r; 

	printf("반지름을 입력해주세요 : ");
	scanf("%lf", &r);

	printf("원의 넓이 : %f \n", r*r*3.14);

	return 0;
}

[2-8] 정수 상수, 부동소수점 상수, int형 변수, double형 변수를 곱하거나 나누는 등 다양한 연산을 수행하는 프로그램을 작성해서 자료형과 연산에 관한 규칙을 확인하자.

/* 양쪽 피연산자의 자료형이 같은 경우 얻어지는 결과는
연산 대상인 피연산자와 같은 자료형이지만, 
양쪽이 다른 경우 작은 쪽의 자료형 피연산자가 더 큰 쪽의 자료형으로 변환된 다음 연산이 수행된다. 

따라서 int형 자료형과 double형 자료형끼리 연산을 수행하면 
int형 피연산자의 값이 double 형으로 변환되는 암묵적 형 변환이 수행된다. 

*/

[2-9] 실숫값 2개를 읽어 들여 앞의 값이 뒤의 값의 몇 %인가를 실수로 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	double a, b;

	printf("a값을 입력하시오 : ");
	scanf("%lf", &a); 
	printf("b값을 입력하시오 : ");
	scanf("%lf", &b);

	printf("답 : %lf %% \n", a / b * 100);

	return 0;
}

[2-10] 정숫값 2개를 읽어 들여 앞의 값이 뒤의 값의 몇 %인가를 실수로 출력하는 프로그램을 작성하자.

#include <stdio.h>

int main() {
	int a, b;

	printf("a값을 입력하시오 : ");
	scanf("%d", &a); 
	printf("b값을 입력하시오 : ");
	scanf("%d", &b);

	printf("답 : %lf %% \n", (double)a / b * 100);

	return 0;
}

'정수 / 정수' 연산에서는 소수부를 버린 몫(값)을 얻지만, 부동소수점수끼리의 연산에서는 버리기가 수행되지 않는다. 따라서 double형 a와 b의 값을 구하는 a/b 연산에서

  • a,b 가 정숫값 일떄는 100 x a / b와 a / b x 100 이 서로 다를 수 있다.
  • a,b가 실숫값일때는 a / b x 100 으로 해도 결과가 달라지지 않는다.

[2-11] 사다리꼴의 면적을 구하는 프로그램을 작성하자. 이때 윗변, 밑변, 높이를 정숫값으로 읽어 들여 넓이를 실숫값으로 출력한다.

#include <stdio.h>

int main() {
	int a, b, c;

	printf("윗변의 길이를 입력하시오 : ");
	scanf("%d", &a); 
	printf("밑변의 길이를 입력하시오 : ");
	scanf("%d", &b);
	printf("높이를 입력하시오 : ");
	scanf("%d", &c);

	printf("답 : %lf \n", (a + b) * c / 2.0);

	return 0;
}

[2-12] 키를 정숫값으로 읽어 들여 표준체중을 실수로 출력하는 프로그램을 작성하자. 표준체중은 (키-100)*0.9를 이용해 구한 다음 소수점 이하 한 자리까지만 출력한다.

#include <stdio.h>

int main() {
	int a;

	printf("키를 입력하시오 : ");
	scanf("%d", &a); 

	printf("표준체중은 %.1f입니다 \n", (a - 100) * 0.9);

	return 0;
}

[2-13] 키와 몸무게를 실숫값으로 읽어 들여 BMI를 출력하는 프로그램을 작성하자. BMI는 몸무게 / 키^2를 이용하여 구하되 소수점 이하는 2자리로 출력한다.

#include <stdio.h>

int main() {
	double a, b;

	printf("키를 입력하시오 : ");
	scanf("%lf", &a); 
	printf("몸무게를 입력하시오 : ");
	scanf("%lf", &b);

	printf("BMI는 %.2f입니다 \n", b / (( a/100.0)* (a / 100.0)));

	return 0;
}

0개의 댓글

관련 채용 정보