본문 바로가기

C언어

심화 C 언어 2 (각종 변수형 - 모든 코딩에서 찾아볼 수 있는 '기본 자료형')

bool 

: 1 byte (8bit)

참 거짓을 판단 (true / false), 정수형

 

char

: 1 byte (8bit)

~128 ~127 숫자를 저장

  • 숫자 형태로 출력하고 싶다면 %d
  • 문자 형태로 출력하고 싶다면 %c

대부분의 문자 / 문자열을 저장하는데 유용하게 사용

#include <cstdio>


int main() {
    
    char c = 'a';
    // ' (작은 따옴표)를 이용해서 문자 한 개를 엮어주게 되면 아스키 테이블에 있는 이 숫자로 치환이 돼서
       변수에 들어가게 되고 그 값이 %c를 만나서 문자 형태로 출력이 된다

    
    printf("%d\n", c);
    
    return 0;
}

출력값 
97
#include <cstdio>


int main() {
    
    if (97 == 'a'){
        printf ("97은 'a' 입니다.");
    }
    
    return 0;
}
// 97 == 'a' 이 표현은
우리가 보기엔 문자로 보이지만 이것이 c언어에서 봤을 때는 이것이 숫자로 치환이 돼서 계산됨

int 

: 4 byte (32bit)

-2, 147, 483, 648, ~2, 147, 483, 647의 숫자를 저장

integer의 약자로 정수를 의미

컴퓨터에서 가장 빨리 수행할 수 있는 정수 연산 단위

 

float

: 4 byte (32bit)

소수점수를 저장

float point 의 약자

부동 소수점수로 우리가 흔히 실수형태의 자료형을 계산할 때 이용

 

double

: 8 byte (64bit)

소수점수를 저장

double precision float point의 약자

2배 정밀도를 갖는 소수점수

float 보다 표현 범위가 더 넓다

 

"%05d" : 다섯자리 숫자 그보다 작으면 0으로 채워줌

"%05.2f" : 다섯자리 숫자인데 . 도 포함함, .2는 소수점 두번째 자리 까지 표기

 

연습 프로그래밍 #1

사용자로부터 실수형 변수 1과 실수형 변수 2를 입력받고

문자 '+', '-', '/', '*', '%'를 연산자로 입력받아

해당 연산을 수행하는 계산기를 만들어 주세요

실수부의 숫자는 소수점수 3자리까지 출력하며 

if가 아닌 switch 구문을 활용해 주세요

#include <cstdio>


float getFloat();
// 사용자로부터 실수를 입력받는 함수


char getChar();
// 사용자로부터 문자를 입력받는 함수




int main() {


    float value1;
    float value2;
    char oper;
    
    float result;
    
    value1 = getFloat();
    value2 = getFloat();
    oper = getChar();
    // 함수 호출
    
    switch (oper){
    case '+':
            result = value1 + value2;
            printf("결과는 %.3f 입니다.\n", result);
            break;
    case '-':
            result = value1 - value2;
            printf("결과는 %.3f 입니다.\n", result);
            break;
    case '/':
            result = value1 / value2;
            printf("결과는 %.3f 입니다.\n", result);
            break;
    case '*':
            result = value1 * value2;
            printf("결과는 %.3f 입니다.\n", result);
            break;
    case '%':
            result = (int)value1 % (int)value2; //나머지 연산은 int로 형변환 해야함
            printf("결과는 %.3f 입니다.\n", result);
            break;
    default:
            printf("올바르지 않은 연산자 입니다.\n");
            break;
            
    }
    
    return 0;
}


float getFloat() {
    float input;
    fseek(stdin, 0, SEEK_END);
    printf ("실수를 입력해주세요: ");
    scanf("%f", &input);
    return input;
    }

char getChar() {
    char input;
    fseek(stdin, 0, SEEK_END);
    printf("문자를 입력해주세요: ");
    scanf("%c", &input);
    return input;
    }

간단하게 정리한 경우

#include <cstdio>


float getFloat();
// 사용자로부터 실수를 입력받는 함수


char getChar();
// 사용자로부터 문자를 입력받는 함수




int main() {


    float value1;
    float value2;
    char oper;
    
    float result;
    bool valid = true; //default인 경우 오류나는 것 해결 방법
    
    value1 = getFloat();
    value2 = getFloat();
    oper = getChar();
    // 함수 호출
    
    switch (oper){
    case '+':
            result = value1 + value2;
            break;
    case '-':
            result = value1 - value2;
            break;
    case '/':
            result = value1 / value2;
            break;
    case '*':
            result = value1 * value2;
            break;
    case '%':
            result = (int)value1 % (int)value2; //나머지 연산은 int로 형변환 해야함
            break;
    default:
            valid = false;
            break;
    }
    if (valid == true){
        printf("결과는 %.3f 입니다.\n", result); // 쓸데없이 긴 코드 다 없앰
}
    else{
        printf("올바르지 않은 연산자 입니다.\n");
    }
    return 0;
}


float getFloat() {
    float input;
    fseek(stdin, 0, SEEK_END);
    printf ("실수를 입력해주세요: ");
    scanf("%f", &input);
    return input;
    }
char getChar() {
    char input;
    fseek(stdin, 0, SEEK_END);
    printf("문자를 입력해주세요: ");
    scanf("%c", &input);
    return input;
    }

 

과제형 연습 프로그래밍

예제 프로그램에서 만든 프로그램에 연산자로 입력받은 값이 

'p' 일 경우 value1의 value2 제곱을 계산하고

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

'r' 일 경우 랜덤한 연산자를 선택하여

연산 결과를 출력하는 프로그램을 작성하세요

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

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

 

prc.hpp

#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>


float getFloat();
char getChar();


prc.cpp

#include "prc.hpp"




float getFloat();
// 사용자로부터 실수를 입력받는 함수
char getChar();
// 사용자로부터 문자를 입력받는 함수


int main() {




    float value1;
    float value2;
    char oper;
    
    int w;
    
    float result;
    bool valid = true; // default인 경우 오류나는 것 해결 방법
    bool exit = false;
    
    value1 = getFloat();
    value2 = getFloat();
    oper = getChar();
    // 함수 호출
    
    switch (oper){
    case '+':
            result = value1 + value2;
            break;
    case '-':
            result = value1 - value2;
            break;
    case '/':
            result = value1 / value2;
            break;
    case '*':
            result = value1 * value2;
            break;
    case '%':
            result = (int)value1 % (int)value2; // 나머지 연산은 int로 형변환 해야함
            break;
    case 'p':
            // 제곱을 구하는 코드 pow()
            result = pow(value1, value2);
            break;
                
    case 'x':
            // 종료하는 코드
            exit = true;
            break;
        
    case 'r':
            // 랜덤 값을 구하는 코드를 넣자
            srand(time(0)); // 실행할 때마다 다른 랜덤 값이 나옴
            w = rand() % 6; // 0~5
            /* rand라는 함수를 쓰면 정수형 형태의 임의의 랜덤수가 나오게 됨
             이것을 범위를 지정해서 랜덤 값을 구하기 위해서는 % 연산을 활용하면 됨*/
            if (w == 0){
                result = value1 + value2;
            }
            else if (w == 1){
                result = value1 - value2;
            }
            else if (w == 2){
                result = value1 * value2;
            }
            else if (w == 3){
                result = value1 / value2;
            }
            else if (w == 4){
                result = (int)value1 / (int)value2;
            }
            else if (w == 5){
                result = pow( value1, value2 );
            }
            break;
    default:
            valid = false;
            break;
    }
    if (valid == true){
        printf("결과는 %.3f 입니다.\n", result); // 쓸데없이 긴 코드 다 없앰
    }
    else if (exit == true){
        printf("프로그램을 종료합니다.\n");
    }
    else{
        printf("올바르지 않은 연산자 입니다.\n");
    }
    return 0;
}




float getFloat() {
    float input;
    fseek(stdin, 0, SEEK_END);
    printf ("실수를 입력해주세요: ");
    scanf("%f", &input);
    return input;
    }
char getChar() {
    char input;
    fseek(stdin, 0, SEEK_END);
    printf("문자를 입력해주세요: ");
    scanf("%c", &input);
    return input;
    }