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

연산자 - 예제 모음

by 길냥이 2025. 4. 20.
728x90

목차

  1. 실수 합산하기
  2. 내신 계산기
  3. 얼마나 가득 찬 거지?
  4. 9와 3/4 시간

 

1. 실수 합산하기

흠, 실수 2.48과 실수 1.50을 가지고 사칙연산을 해봅시다.

값은 소수점 둘째 자리까지 출력하세요.

float도 좋지만, 여기서는 double를 사용해 주세요.

 

입력

없음

 

출력

2.48 + 1.50 = 3.98
2.48 - 1.50 = 0.98
2.48 * 1.50 = 3.72
2.48 / 1.50 = 1.65

정답은..

 

다음과 같아요.

#include <stdio.h>

int main()
{
	double a = 2.48;
	double b = 1.50;

	printf("%.2lf + %.2lf = %.2lf\n", a, b, a + b);
	printf("%.2lf - %.2lf = %.2lf\n", a, b, a - b);
	printf("%.2lf * %.2lf = %.2lf\n", a, b, a * b);
	printf("%.2lf / %.2lf = %.2lf\n", a, b, a / b);

	return 0;
}

double형이라 lf를 사용하고, 소수점 2번째 자리까지 출력하기 위해 .2를 넣어 주세요.

scanf가 없으므로 버그 자르는 부분은 필요 없어요!

 

2. 내신 계산기

내신은 시수에 따라 성적에 가해지는 가중치가 달라요.

영어 2시수, 국어 3시수, 수학 5시수라고 할때 나온 학점을 받아서 내신점수를 출력하는 프로그램을 만들어 보죠.

내신의 시수들은 상수지만, 성적은 scanf로 받도록 해요.

성적은 float로 받아서 소수점 1자리까지 출력하시고요.

 

입력

영어 성적을 입력하세요 :4.5
국어 성적을 입력하세요 :3.3
수학 성적을 입력하세요 :2.0

 

출력

내신 점수 : 2.9

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	float eng = 0;
	float kor = 0;
	float mat = 0;

	printf("영어 성적을 입력하세요 :");
	scanf("%f", &eng);
	printf("국어 성적을 입력하세요 :");
	scanf("%f", &kor);
	printf("수학 성적을 입력하세요 :");
	scanf("%f", &mat);

	printf("내신 점수 : %.1f", ((eng * 2) + (kor * 3) + (mat * 5)) / 10);

	return 0;
}

점수 계산이 좀 복잡한데, 성적*시수 + ... 를 시수 총합으로 나눈 것으로 알 수 있어요.

 

내신은 숫자가 낮아질수록 좋다고요?

 

3. 얼마나 가득 찬 거지?

숫자를 계산할 때, 적은 수면 계산하기 쉽지만 수가 많아지면 계산하기 귀찮아져요.

한번 모 경기장의 좌석과 입장객 수로 입장률을 계산해 보도록 하죠.

모 경기장의 좌석은 23,646 석이 있고. 관중은 18,700 명이었어요. 입장률은 몇 퍼센트?

좌석과 관중은 int 변수로 저장해두고, 출력은 double형으로 소수점 둘째 자리까지 %를 붙어서 출력해주세요.

 

입력

없음

 

출력

입장률 : 79.08

정답은..

 

다음과 같아요.

#include <stdio.h>

int main()
{
	int stats = 23646;
	int audience = 18700;
	double rate = 0;

	rate = (double)audience / (double)stats * 100;

	printf("입장률 : %.2lf%%", rate);

	return 0;
}

(double)를 통해 int를 double로 형변환해서 저장해주세요. 

안 하면 int끼리 계산되어서 소수점이 증발해버린다고요. 사실 하나만 써도 되긴 하는데

 

그리고 /와 *는 연산 우선순위가 같기에 왼쪽부터 처리됩니다. 

근데 모르겠으면 그냥 괄호 쓰세요

 

%은 한번만 쓰면 %가 안 나옵니다. %%을 써야 %로 나와요. 그냥 %만 쓰면 변환문자로 취급됩니다.

 

4. 9와 3/4 시간

흠, 가끔 시간을 9.74 시간, 8.34시간처럼 말하는 사람들이 있어요.

이걸 시간, 분, 초 단위로 쪼개 볼까요?

시간은 double로, scanf를 통해서 받아 주세요.

출력값은 무조건 int여야 합니다.

 

입력

시간을 입력해주세요 : 9.46

 

출력

9.46시간은 9시간 27분 36초입니다.

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	double input = 0.0;
	double copy = 0.0;
	int hour = 0;
	int min = 0;
	int sec = 0;

	printf("시간을 입력해주세요 : ");
	scanf("%lf", &input);
	copy = input;

	hour = (int)input;
	input -= hour;

	input = input * 60.0;
	min = (int)input;
	input -= min;

	input = input * 60.0;
	sec = (int)input;

	printf("%.2lf시간은 %d시간 %d분 %d초입니다.", copy, hour, min, sec);

	return 0;
}

좀 복잡한데, int를 통해 input에서 시간만 꺼낸 다음 그 값을 빼낸 뒤

다시 그 값에 60을 곱하고 int에서 분만 꺼내고 그 값을 다시 빼고

다시 그 값에 60을 곱하고 int로 초로 변환하는거에요.

728x90

'프로그래밍 > C' 카테고리의 다른 글

여러 가지 함수 유형  (0) 2025.04.23
함수의 작성과 사용  (0) 2025.04.23
반복문 - 예제 모음  (0) 2025.04.18
선택문 - 예제 모음  (0) 2025.04.18
변수와 데이터 입력 - 예제 모음  (0) 2025.04.18