Coding/C

[C언어] 문자 자료형, 상수 사용하기 - 코딩도장

GunP4ng 2023. 12. 2. 23:07

[코딩도장] Unit 9 ~ 11


1. 문자 자료형, 상수

1. 문자 자료형

정수 자료형인 char를 이용하여 문자 한 개를 저장한다

char의 크기 & 범위

 

○ 추가

unsigned char는 파일이나 네트워크 패킷의 내용을 1바이트 단위로 표현할 때 주로 사용

Windows에서는 unsigned char BYTE 자료형으로 정의해서 사용

 

char 에 문자를 저장할 때는 문자에 해당하는 정수 값을 저장하게 된다

문자, 숫자, 제어문자는 0 ~ 255 까지 정수에 대응되며 이 규칙을 ASCII 코드라고 한다

 

ASCII 코드

 

C 언어에서 문자는 ' '(작은따옴표)로 묶어서 표현한다

char c1 = 'a';

※ 작은따옴표는 문자 하나만 묶을 수 있다.  두 개 이상은 불가능하다

 

pritnf 함수에서 문자를 출력할 때는 %c 를 이용한다

printf("%c", a);

 

자주 사용하는 제어문자로는  LF, CR, TAB 이 있다

LF, CR, TAB 제어문자 ASCII 코드

제어문자도 마찬가지로 printf 로 출력할 수 있다

printf("%c", \n);

 

2. 상수

상수는 변하지 않는 값을 말한다

변수는 한 번 선언하면 값을 계속 바꿀 수 있지만, 

상수는 값을 바꿀 수 없다

 

상수는 const 를 붙여서 선언한다

리터럴은 "문자 그대로" 라는 뜻이지만 C언어에서는 값 그 자체를 뜻한다

//         ↓ 상수
const int con1 = 10;
//               ↑ 리터럴

 

리터럴은 코드 상에서 값을 바로 입력하는 것이다

아래 코드에서 10, 0.1f, a, Hello, world! 가 리터럴이 된다

printf("%d\n", 10);
printf("%f\n", 0.1f);
printf("%c\n", 'a');
printf("%s\n", "Hello, world!");

 

 

정수 리터럴 접미사는 정수 리터럴의 크기와 부호 유무를 표기할 때 사용한다

정수 리터럴 접미사

 

실수 리터럴 접미사는 실수 리터럴의 크기를 표기할 때 사용한다

실수 리터럴 접미사

 

3. 문자 입출력 함수

입력값을 변수에 저장할 때는 scanf 함수를 이용한다

변수 앞에는 &를 붙여줘야 한다

int num1;
float num2;
char c1;
 
scanf("%d %f %c", &num1, &num2, &c1);

%d : 정수

%f : 실수

%c : 문자

 

getchar 함수는 표준 입력에서 문자 하나를 입력받고 

putchar 함수는 표준 출력에 문자 하나를 출력한다

char c1 = getchar();

putchar(c1);

2. 심사문제

9.7 제어 문자 사용하기

다음 소스 코드를 완성하여 "Hello   world"가 각 줄에 두 번 출력되게 만드세요("Hello" "world" 사이는 탭으로 띄웁니다).

정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.

#include <stdio.h>
 
int main()
{
    char c1;
    char c2;
    char c3;
 
    ________
    ________
    ________
 
    printf("Hello%cworld%cHello%cworld\n", c1, c2, c3);
 
    return 0;
}

 

정답

c1 = '\t';
c2 = '\n';
c3 = '\t';


9.8 알파벳 소문자를 대문자로 변환하기

다음 소스 코드를 완성하여 "A"가 출력되게 만드세요.

정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.

#include <stdio.h>
 
int main()
{
    char c1 = 'a';
 
    printf("%c\n", c1 ___);
 
    return 0;
}

 

정답

- 32

 

ASCII 코드에서 

a 는 97

A 는 65

97 - 65 = 32


10.8 리터럴 사용하기

다음 소스 코드를 완성하여 Hello, world! 76 -2147483647 4.528172가 출력되게 만드세요.

정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.

#include <stdio.h>
 
int main()
{
    printf("%s %o %lld %Lf\n", "Hello, world!", ______________________);
 
    return 0;
}

 

정답

076, -2147483647LL, 4.528172L

 

%s 는 문자열이므로 리터럴 Hello, world!

%o 는 8진수이므로 리터럴 076

%lld 는 long long 이므로 리터럴 -2147483647LL

%Lf 는 long double 이므로 리터럴 4.528172L


10.9 상수 사용하기

다음 소스 코드를 완성하여 -2.225074e-308 0x1285 9223372036854775807가 출력되게 만드세요.

정답에는 밑줄 친 부분에 들어갈 코드만 작성해야 합니다.

#include <stdio.h>
 
int main()
{
    const ______________________;
    const int con2 = 0x1285;
    const long long con3 = 9223372036854775807LL;
 
    printf("%Le 0x%x %lld\n", con1, con2, con3);
 
    return 0;
}

 

정답

long double con1 = -2.225074e-308L;

 

%e 는 long double 자료형에 지수표기법을 사용한다

const long double con1 = -2.225074e-308L; 과 같이 선언하면 된다


11.7 정수, 실수, 문자 입력받기

표준 입력으로 정수, 실수, 문자가 입력됩니다. 입력된 정수, 실수, 문자를 각 줄에 출력하는 프로그램을 만드세요.

정답에는 C 언어 컴파일러에서 정상적으로 컴파일되는 전체 코드를 입력해야 합니다.

 

정답

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main() {
    int num1;
    float num2;
    char c;
    
    scanf("%d %f %c", &num1, &num2, &c);
    printf("%d\n%f\n%c\n", num1, num2, c);
    
    return 0;
}