C언어 공부

C언어 기초 - 7 switch / float / char 자료형의 출력

당혜성 2025. 3. 12. 22:52

1. switch 구문

switch구문은 if와 비슷한 역할을 한다.

예시 코드를 보자

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	int value = 1;

	switch (value) {
	case 0:
		printf("value의 값은 0입니다");
	case 1:
		printf("value의 값은 1입니다");
		break;
	default:
		printf("value의 값은 0도 1도 아닙니다");
		break;
	}

	return 0;
}

 

if로 대입하면, switch 는 if고  (value)는 조건 값이다

 

case 0: 은 value == 0 이라는 뜻이고, 만약 이 값이 맞다면

printf("value의 값은 0입니다"); 가 출력이 된다.

 

만약 value의 값이 1이라면

printf("value의 값은 1입니다"); 가 출력이 된다.

 

만약 둘 다 아니라면

default에 있는 printf("value의 값은 0도 1도 아닙니다"); 가 출력이 된다.

 

break; 는 만약 이 값이 맞다면 switch구문을 멈추는 것이다.

 

기본적인 사용법은 이렇다

 

참고로 문자형도 된다.

 

예시 코드를 보도록 해보자

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	char a = 'b';
	switch (a) {
	case 'a':
		printf("a의 단어는 a입니다");
	case 'b':
		printf("a의 단어는 b입니다");
		break;
	default:
		break;
	}
	return 0;
}

이런식으로도 가능하다

2. flaot 자료형

flaot 자료형은 flaot point를 줄인말로, 부동소수점 이라는 뜻이다.

간단한 코드를 보겠다

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	float a = 2.452;
	printf("%f", a);

	return 0;
}

float는 소수점까지 출력이 가능하다.

아마 실행하면 2.452000이 나올텐데, 기본적으로 이렇게 나온다.

 

만약 이 숫자를 더 줄이고 싶다면 이렇게 만들면 된다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	float a = 2.452;
	printf("%.2f", a);

	return 0;
}

% 뒤에 숫자를 사용하면 소수점 2번째 자리까지 출력하겠따는 뜻이다

 

만약 3 4 10 을 적으면 소숫점 3 4 10의 자리까지 출력한다는 뜻이다

 

3. char 자료형

char 자료형은 Character의 줄임말로, 문자형 자료형이다.

문자를 출력하는데 사용된다. 예시 코드를 보자

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	char a = 'hi';
	printf("%c", a);

	return 0;
}

이렇게 하면된다. 아마 이대로 실행한다면 i만 뜰것인데 그것이 왜 그러하냐면,

 

이건 '문자열' 이아닌 '문자'만 출력한다. 그래서 h가 빠지고 i만 출력되게 된다. 정확히 문자의 끝 한 글자만 출력이 된다.

 

그리고 다르게도 출력이 가능한데, 예시 코드를 보자

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	char a = 49;
	printf("%c", a);

	return 0;
}

이러면 숫자가 출력될 것이다.

???:"왜 숫자가 출력이 되나여?"

 

문자열에 숫자를 넣으면, 아스키코드의 번호에 따라 출력이된다. 

 

 

아스키코드 표

아스키코드 표이다. 보면, 49의 아스키코드값 1이 출력이 된다. 

 

???:"만약에 int float char 를 출력할때 %d %f %c를 안넣고, int에 %f을 넣는다거나 char에 %d를 넣으면 어떻게 되나여?"

 

그럴시에 치환이 되서 나온다

 

만약 char a = 'y' 를 %d로 출력하게 된다면, y의 아스키코드 값인 121이 나온다.

 

한 번씩 출력을 다르게 해보자

 

정리

switch의 사용법

 

switch(변수명){

case 0:

printf("값은 0 입니다");

case 1:

printf("값은 1 입니다");

break;

default:

break;

}

 

flaot 자료형

 

flaot point의 줄임말

 

float a = 2.45344

출력시 %f를 사용하고, 소수점을 줄이고 싶다면 %뒤에 %.2f %.4f 를 넣도록 하자

 

char 자료형

 

 Character의 줄임말

 

cahr a = 'b', char a = 4

출력시 %c를 사용하고, 문자가3개 4개일 경우에는 맨 끝에이는 문자 하나만 출력이 된다.

 

연습

연습문제를 풀며 연습해 보도록 하자

 

더보기

사용자로부터 실수형 변수1과 실수형 변수2를 입력받고 문자 + - * / %를 연산자로 입력받아 해당 연산을 수행하는 계산기를 만들자. 실수부의 숫자는 소수점수 3자리까지 출력하며 if가 아닌 switch 구문을 활용하자.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
	float a, b;
	char oper;
	printf("값 입력: \n");
	scanf("%f", &a);
	fseek(stdin, 0, SEEK_END);

	printf("값 입력: \n");
	scanf("%f", &b);
	fseek(stdin, 0, SEEK_END);

	printf("연산자 입력");
	scanf("%c", &oper);
	fseek(stdin, 0, SEEK_END);

	switch (oper) {
	case '+':
		printf("값은 %.3f", a + b);
		break;
	case '-':
		printf("값은 %.3f", a - b);
		break;
	case '*':
		printf("값은 %.3f", a * b);
		break;
	case '/':
		printf("값은 %.3f", a / b);
		break;
	case '%':
		float result;
		result = (int)a % (int)b;
		printf("값은 %.3f", result);
		break;
	default:
		break;
	}
	return 0;
}

내 코드.

※반드시 내가 쓴 코드가 정답이 아니다. 할때마다 달라질 수 있고, 더 간단하게 줄여서 사용도 가능하다

 

퀘스트

더보기

연습 문제에서 만든 프로그램에 연산자로 입력받은 값이 p일 경우 a의 b제곱을 계산하고, 

x일 경우 프로그램을 종료하며

r일 경우 랜덤한 연산자를 선택하여 연산 결과를 출력하는 프로그램을 작성하시오.

제곱을 계산할 때 cmath 헤더 파일에 선언된 pow 함수를 사용하고,

랜덤을 계산할때 stdlib.h 헤더파일에 선언된 rand 함수를 사용하자

다음 시간에 답을 알아보도록 하자

 

상당히 난이도가 있다고 생각하는데, 자기가 한번 검색해서 pow와 rand 사용법을 알아보자.