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

선택문 - 예제 모음

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


목차

  1. 사이즈는 얼마?
  2. 계산기 업그레이드
  3. 정상 혈압 수치
  4. BMI 계산기
  5. 계산기 업그레이드 업그레이드

 

1. 사이즈는 얼마?

흠, 상의는 가슴둘레 기준으로 90,95,100,105를 S, M, L, XL로 나눠요.

한번 scanf로 이걸 받고 if문으로 분류해서 출력해 봅시다.

 

입력

가슴둘레를 입력하세요 : 98

 

출력

크기는 100(L) 입니다.

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int chest = 0;
	printf("가슴둘레를 입력하세요 : ");
	scanf("%d", &chest);

	if (chest <= 90)
	{
		printf("크기는 90(S) 입니다.");
	}
	else if (chest <= 95)
	{
		printf("크기는 95(M) 입니다.");
	}
	else if (chest <= 100)
	{
		printf("크기는 100(L) 입니다.");
	}
	else if (chest <= 105)
	{
		printf("크기는 105(XL) 입니다.");
	}
	else
	{
		printf("맞는 사이즈가 없네요..");
	}

	return 0;
}

당연하게도 scanf에 다른 숫자를 입력하면 다른 결과가 나올거에요.

 

2. 계산기 업그레이드

변수 a와 b, 그리고 출력으로 사용할 resule 변수를 선언하고 사칙연산을 처리해서 출력해 보세요.

까지는 이전과 동일하지만, 이번에는 scanf를 사용해 변수 a와 b에 해당하는 값을 받고 그에 해당하는 사칙연산을 처리해서 출력하세요. 가능하다면 도움말도 출력하시고요.

까지는 이전과 동일하지만, 이번에는 두 문자 사이에 연산자를 선택하도록 만들어서 해당하는 연산만 처리하도록 하세요. 연산자는 숫자로 받아도 좋아요.

 

입력

첫 번째 계산할 값을 입력하세요 => 180
연산자를 입력하세요
<1> 덧셈   <2> 뺄셈   <3> 곱셈   <4> 나눗셈 => 2
두 번째 계산할 값을 입력하세요 => 30

 

출력

180 - 30 = 150

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int a = 0;
	int b = 0;
	int kul = 0;
	int result = 0;

	printf("첫 번째 계산할 값을 입력하세요 => ");
	scanf("%d", &a);
	printf("연산자를 입력하세요\n");
	printf("<1> 덧셈   <2> 뺄셈   <3> 곱셈   <4> 나눗셈 => ");
	scanf("%d", &kul);
	printf("두 번째 계산할 값을 입력하세요 => ");
	scanf("%d", &b);
	switch (kul)
	{
	case 1:
		result = a + b;
		printf("%d + %d = %d\n", a, b, result);
		break;
	case 2:
		result = a - b;
		printf("%d - %d = %d\n", a, b, result);
		break;
	case 3:
		result = a * b;
		printf("%d * %d = %d\n", a, b, result);
		break;
	case 4:
		result = a / b;
		printf("%d / %d = %d\n", a, b, result);
		break;
	default:
		printf("잘못 입력하셧는데요!");
	}

	return 0;
}

물론 다른 연산자와 다른 값을 입력하면 다른 결과가 나오겠죠.

 

3. 정상 혈압 수치

나이와 혈압을 입력하고, 혈압을 받은 값에 따라 저혈압인지, 정상 혈압인지, 고혈압인지를 나타내세요.

 

연령 혈압
10대 110 ~ 134
20대 113 ~ 137
30대 114 ~ 142
40대 116 ~ 150
50대 121 ~ 159
60대 124 ~ 166
70대 이후 128 ~ 170

힌트를 하나 드리자면.. 나이는 구별되지만 혈압은 겹치므로, 나이를 switch로 먼저 나누고 case 안에 if ~ else를 넣으면 되지 않을까요?

 

입력

나이를 입력하세요 : 20
혈압을 입력하세요: 128

 

출력

정상 혈압입니다.

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int age = 0;
	int blood = 0;

	printf("나이를 입력하세요 : ");
	scanf("%d", &age);
	age = age / 10;

	printf("혈압을 입력하세요: ");
	scanf("%d", &blood);

	switch (age)
	{
	case 0:
	case 1:
		if (blood <= 110)
			printf("저혈압입니다.\n");
		else if (blood <= 134)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	case 2:
		if (blood <= 113)
			printf("저혈압입니다.\n");
		else if (blood <= 137)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	case 3:
		if (blood <= 114)
			printf("저혈압입니다.\n");
		else if (blood <= 142)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	case 4:
		if (blood <= 116)
			printf("저혈압입니다.\n");
		else if (blood <= 150)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	case 5:
		if (blood <= 121)
			printf("저혈압입니다.\n");
		else if (blood <= 159)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	case 6:
		if (blood <= 124)
			printf("저혈압입니다.\n");
		else if (blood <= 166)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	default:
		if (blood <= 128)
			printf("저혈압입니다.\n");
		else if (blood <= 170)
			printf("정상 혈압입니다.\n");
		else
			printf("고혈압입니다.\n");
		break;
	}

	return 0;
}

너무 대책없이 길어지는거같은데..

아무튼 switch ~ case 문의 내부에도 if ~ else문을 집어넣을 수 있어요.

 

4. BMI 계산기

BMI란 몸무개 / (키*키), 이때 몸무개는 kg 단위, 키는 m단위로 계산하는 것을 말해요.

한번 해볼까요, 키는 cm으로, 몸무개는 kg로 받습니다. 

BMI값이 20 미만이면 저체중, 20 이상 25 미만이면 정상 체중, 25 이상이면 과체중이에요.

 

입력

체중을 입력하세요(kg) : 68
키를 입력하세요(cm) :178.8

 

출력

BMI지수 : 21.27
정상 체중입니다.

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	int kg = 0;
	double cm = 0;
	double BMI = 0;

	printf("체중을 입력하세요(kg) : ");
	scanf("%d", &kg);

	printf("키를 입력하세요(cm) :");
	scanf("%lf", &cm);

	cm = cm / 100.0;
	BMI = kg / (cm * cm);

	printf("BMI지수 : %.2lf\n", BMI);

	if (BMI < 20)
		printf("저체중입니다.");
	else if (BMI <= 25)
		printf("정상 체중입니다.");
	else
		printf("과체중입니다.");

	return 0;
}

계산에 주의하세요.

 

5. 계산기 업그레이드 업그레이드

이전의 계산기는 수식을 숫자로 입력해야 했었죠.

이번에는 19+1237처럼 받아봅시다.

%f%c%f를 이용하세요.

 

입력

사칙연산 입력 : 1.381+186.2389

 

출력

1.4 + 186.2 = 187.6

정답은..

 

다음과 같아요.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main()
{
	float stat1 = 0.0, stat2 = 0.0;
	char cha = '0';

	printf("사칙연산 입력 : ");
	scanf("%f%c%f", &stat1, &cha, &stat2);

	switch (cha)
	{
	case '+':
		printf("%.1f + %.1f = %.1f", stat1, stat2, stat1 + stat2);
		break;
	case '-':
		printf("%.1f - %.1f = %.1f", stat1, stat2, stat1 - stat2);
		break;
	case '*':
		printf("%.1f * %.1f = %.1f", stat1, stat2, stat1 * stat2);
		break;
	case '/':
		printf("%.1f / %.1f = %.1f", stat1, stat2, stat1 / stat2);
		break;
	default:
		break;
	}

	return 0;
}

switch ~ case문은 문자열도 받을 수 있다고요?(문자열은 결국 int값이기 때문)

728x90

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

연산자 - 예제 모음  (0) 2025.04.20
반복문 - 예제 모음  (0) 2025.04.18
변수와 데이터 입력 - 예제 모음  (0) 2025.04.18
상수와 데이터 출력 - 예제 모음  (0) 2025.04.18
중첩 반복문과 반복문 탈출  (0) 2025.04.18