이 영역을 누르면 첫 페이지로 이동
caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

페이지 맨 위로 올라가기

caputdraconis

네트워크 관점에서의 클라우드 컴퓨팅을 공부하는 중입니다 :)

C/C++ 기초 강의 요약 (섹션1)

  • 2020.03.25 21:19
  • Security/지옥방 스터디
글 작성자: caputdraconis
반응형

VS Code를 사용하였습니다.

#include <stdio.h>

int main(){
    printf("Hello, World! \n");
}

stdio.h  표준 입출력 라이브러리. 함수의 매크로 정의, 상수, 여러 형의 입출력 함수가 포함된 헤더 파일

main()  한 프로젝트에서 한 번만 등장해야하는 함수. 제일 먼저 실행된다.

printf  stdio.h(표준 입출력 라이브러리)에 포함되어 있는 출력함수, 괄호 안의 문자열을 출력한다.

\n  줄바꿈을 명령하는 우리들만의 약속이랄까..

#include <stdio.h>

int main(){
    printf("동해물과 백두산이\n마르고\n닳도록");

    return 0;
}
#include <stdio.h>

int main(){
    printf("동해물과 백두산이 \n");
    printf("마르고\n");
    printf("닳도록\n");
    return 0;
}

 

" 동해물과 백두산이

  마르고

  닳도록 "을 두가지 방법으로 출력하고 있다. 위의 코드처럼 하나의 printf 함수 내에 \n을 사용하여 3줄을 한 번에 출력할 수도 있고, 밑의 코드처럼 한 줄마다 한 개의 printf 함수를 사용하여 출력할 수도 있다. 결과는 같은 것을 확인할 수 있었다.

 

#include <stdio.h>

int main(){
    //%d: 정수출력 {1,2,...}
    printf("%d + %d = %d\n", 2, 3, 5);

    // %f: 실수 출력 {3.14}
    printf("%f\n", 3.14);
    printf("%.2f\n", 3.141592); // %f는 소수점 6자리까지 출력, %.2f는 소수점 2째자리까지, 반올림해서 출력

    // %g: 실수 출력(지수 형태로도 출력)
    printf("%g\n", 3.141592);
    printf("%.3g\n", 8723984712.1283746872);

    // %c : 문자출력 (알파벳, 숫자, 몇몇 기호, \n )- 한글, 한자, 유니코드X
    printf("%c %c %c\n", 'a','b','c');

    // %s : 문자열 출력 (문자들이 열거)
    printf("%s\n", "안녕하세요");

}

printf 함수의 괄호 안 " "에 %d, %f, %g, %c, %s 등을  넣어 다양한 데이터 출력이 가능하다.

%d : 정수를 출력한다.

%f : 실수를 출력한다. 기본으로 소수점 6자리까지 출력이 되며, 소수점 몇째자리까지 출력할 것인지에 따라  %.2f %.3f %.4f 등을 사용할         수 있다.

%g : 실수를 출력한다.  3.141592를 출력할때는 %f와 다르지 않다. 하지만 숫자가 8723984712.1283746872가 되면 지수로 출력을 해주는 똑똑한 아이다.

%c : 문자를 출력한다. (알파벳, 숫자, 몇몇 기호 etc)- 한글, 일본어, 한자, 유니코드 X

%s : 문자열을 출력한다. (문장들이 열거 -> 문장)

 

 

변수 데이터(data)를 저장하기 위해 프로그램에 의해 이름을 할당받은 메모리 공간

#include <stdio.h>

int main(){
    int a; // 선언

    a=3; //대입 
    printf("%d\n", a);

    a=5;//대입
    printf("%d\n", a);
}

int a로 a 라는 변수를 선언(a라는 이름으로 4바이트 크기의 공간 마련해!)했다. 

a=3로 윗줄에서 마련한4바이트 크기의 a라는 공간에 숫자 3을 대입했다.

printf("%d\n",a)로 a의 값을 출력했다. 출력된 값은 3이다.

a=5로 좀 전에 선언하고 값까지 대입한 a라는 변수에 숫자 3 대신 숫자 5를 대입했다. 이제 변수 a 에는 숫자 3이 아닌 숫자 5가 들어가있다.

printf("%d\n", a)  아까 위의 코드와 같지만 출력값은 3이 아닌 5이다.

#include <stdio.h>

int main(){
    int a=2;//초기화
    int b=3;

    printf("%d + %d = %d\n",a,b,a+b);

    //변수 이름: 알파벳, 대소문자, _, 숫자(첫번째 X)
}

a 값과 b값의 합을 출력하는 프로그램이다.

평소에는 %d에 하나의 변수를 대응해 출력시킨 것과 달리, 위 프로그램에서는 3번째 %d에 a+b의 값을 대응시켰다.

출력값은 2 + 3 = 5 가 될 것이다.

 

#include <stdio.h>

int main(){
    //정수형
 

    printf("%d", sizeof(char)); //char의 크기
    printf("%d", sizeof(short); //short의 크기
    printf("%d", sizeof(long)); //long의 크기
    printf("%d", sizeof(long long)); //long long의 크기
    printf("%d", sizeof(int)); //int의 크기

    //실수형

    printf("%d", sizeof(float)); //float의 크기
    printf("%d", sizeof(double)); //double의 크기
}

 

8비트는 1바이트다.

바이트  컴퓨터의 저장 단위. 컴퓨터가 조작하는 정보의 최소 처리 단위.

 

<정수형>

char(1바이트)-문자를 담는 데 사용

short(2바이트)

long(4바이트)

long long(8바이트)

int(시스템에 따라서 자동결정, 대체로 long)

 

<실수형>

float(4바이트)

double(8바이트)

#include <stdio.h>

int main(){
    int a,b;

    scanf("%d%d", &a,&b);//&:포인터

    int hap=a+b;
    int cha=a-b;
    int gop=a*b;
    int mok=a/b;

    printf("%d + %d = %d\n",a,b,hap);
    printf("%d - %d = %d\n",a,b,cha);
    printf("%d * %d = %d\n",a,b,gop);
    printf("%d / %d = %d\n",a,b,mok);
}

scanf  stdio.h(표준 입출력 라이브러리)에 포함되어 있는 입력함수, 사용자의 입력값을 받는다.

printf함수로 정수 출력하는 형태와 비슷하지만, scanf 함수는 입력된 값을 대입할 변수 이름 앞에 &을 붙여주어야한다.

 

#include <stdio.h>

int main(){
    float a,b;

    scanf("%f%f", &a,&b);//&:포인터

    float hap=a+b;
    float cha=a-b;
    float gop=a*b;
    float mok=a/b;

    printf("%f + %f = %f\n",a,b,hap);
    printf("%f - %f = %f\n",a,b,cha);
    printf("%f * %f = %f\n",a,b,gop);
    printf("%f / %f = %f\n",a,b,mok);
}

위의 소스코드와 같은 기능을 가진 프로그램이지만, 정수 계산만 가능했던 위의 코드와 달리 %f를 사용함으로써 실수를 입력 및 출력이 가능했고, float으로 변수를 선언함으로써 실수 값을 가질 수 있었다.

 

 

#include <stdio.h>

int main(){
    char a;

    printf("문자 입력: ");
    scanf("%c", &a);

    printf("%c의 ASCII 값 : %d\n",a,a );
}

https://blog.naver.com/demon24/150142064065 

ASCII CODE 초창기에는 다양한 방법으로 문자를 표현했지만, 호환 문제가 생겼고 이런 문제를 해결하기 위해ANSI1)에서ASCII(American Standard Code for Information Interchange)라는 표준 코드 체계를 제시했고, 현재 이 코드가 일반적으로 사용되고 있다.

a라는 변수에 문자를 사용자로부터 입력받아 그 문자의 ASCII 값을 출력하는 프로그램이다.

 

#include <stdio.h>

int main(){
    int a;

    printf("숫자 입력: ");
    scanf("%d", &a);

    printf("%d의 ASCII 문자 : %c\n",a,a );
}

 위 프로그램을 반대로 바꿔본 것이다.

문자를 입력하면 그 문자에 해당하는 아스키코드 값을 출력한 위의 코드와 달리 숫자를 입력하면 그 숫자가 아스키코드인 문자를 출력한다.

 

 

  데이터형 데이터 크기 범위
정수형 byte 1byte(8bit) -2^8 ~ 2^8-1
short 2byte(16bit) -2^16 ~ 2^16-1
int 4byte(32bit) -2^32 ~ 2^32-1
long 8byte(64bit) -2^64 ~ 2^64-1
실수형 float 4byte(32bit) -2^32 ~ 2^32-1
double 8byte(64bit) -2^64 ~ 2^64-1
논리형 boolean 1byte(8bit) -2^8 ~ 2^8-1
문자형 char 1byte(8bit) true or false

양수 부분에서 -1한 이유는 0을 포함하고 있기 때문이다.

 

 

signed와 unsigned

바이트 맨 앞에 부호를 담당하는 비트가 있는데 위의 데이터 타입들은 모두 signed(음수와 양수 모두 범위에 포함)이고 부호를 표시하기 위해 맨 앞 비트를 포기한다. 부호를 표기할 필요가 없는 데이터들이 쓰인다면 굳이 맨 앞 비트를 포기할 필요가 없다. 그래서 나온게 unsigned!

 

 

 

종합문제

1.두 숫자를 입력받아서 그 숫자들의 합을 출력하는 프로그램을 만들어 보세요.

#include <stdio.h>

int main(){

    int val1=0,val2=0;//두 변수 선언 및 0으로 초기화

    printf("두 숫자를 입력하새요. 두 숫자 사이에는 공백이 필요합니다:)\n");
    printf(">");
    scanf("%d %d", &val1, &val2);

    printf("%d + %d = %d", val1, val2, val1+val2);
}

 

2.체중(kg, 실수)과 키(m, 실수)를 입력받아서 체질량 지수를 구하는 프로그램을 만들어 보세요.

 BMI 지수=몸무게 / 키^2

#include <stdio.h>

int main(){
    float weight=0, height=0;
    char name[45];

    
    printf("체중은 kg 단위, 신장는 m 단위로! 소수점까지 입력 가능합니다 \n");
    printf("이름 체중 신장를 차례대로 입력해주세요!\n");
    printf(">");
    scanf("%s %f %f",name,&weight, &height);

    printf("\n\n 체중 %f kg 신장 %f m 라고 입력해주셨는데요!\n %s님의 BMI지수는 %f입니다 :)\n", weight, height, name, weight/height/height );
    return 0;
}

 

3.알파벳을 입력 받아서 그 다음 알파벳을 출력하는 프로그램을 만들어 보세요. (z제외)

#include <stdio.h>

int main(){
    char alphabet;//알파벳 입력받을 character 변수

    printf("알파벳을 입력하세요 *Z제외* \n");
    printf(">");
    scanf("%c", &alphabet);
    if(alphabet=='z'||alphabet=='Z'){
        printf("z 또는 Z는 안됩니당 :)\n");
        return 0;
    }
    
    int next_alphabet=alphabet+1;
    printf("%c \n", next_alphabet);
    return 0;
}

 

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • C/C++ 기초 강의 요약 (섹션7)

    C/C++ 기초 강의 요약 (섹션7)

    2020.03.27
  • C/C++ 기초 강의 요약 (섹션4)

    C/C++ 기초 강의 요약 (섹션4)

    2020.03.27
  • C/C++ 기초 강의 요약 (섹션3)

    C/C++ 기초 강의 요약 (섹션3)

    2020.03.27
  • C/C++ 기초 강의 요약 (섹션2)

    C/C++ 기초 강의 요약 (섹션2)

    2020.03.27
다른 글 더 둘러보기

정보

caputdraconis 블로그의 첫 페이지로 이동

caputdraconis

  • caputdraconis의 첫 페이지로 이동

검색

메뉴

    카테고리

    • 분류 전체보기 (168)
      • Cloud (3)
      • Computer Network (12)
      • Database (2)
      • Terraform (2)
      • 🥚고리즘 (13)
      • 겅부겅부🙃 (10)
        • Naver CS50 코칭스터디 (2)
        • Machine Learning (1)
        • Computing System (6)
      • 언어&프레임워크 (20)
        • Python (4)
        • Django (10)
        • Node JS (1)
        • C++ (2)
        • Java (1)
        • Flutter (2)
      • Security (76)
        • WebHacking Study (11)
        • 지옥방 스터디 (22)
        • 여름방학 스터디 (2)
        • PWN Study (6)
        • SUA Reversing Study (3)
        • PWN (3)
        • WebHacking (20)
        • Reversing (4)
      • 알고 있으면 도움되지 않을까,,? (23)
      • 일상다반사 (1)
      • 근황 정리 (1)
      • 42 Seoul (1)
        • Setting (1)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 웹해킹.kr
    • 리스트함수
    • 드림핵
    • 파이썬함수
    • 파이썬
    • 파이썬기초
    • old-16
    • Python

    나의 외부 링크

    • Github
    • solved.ac
    • caputdraconis@kakao.com

    정보

    caputdraconis의 caputdraconis

    caputdraconis

    caputdraconis

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. Copyright © caputdraconis.

    티스토리툴바