SlideShare a Scribd company logo
2013년 1학기 프로그래밍 및 실습
Chap. 2 C 프로그래밍 기초




    Bo-Kug Seo (sbk8941@mms.ssu.ac.kr)
          Soongsil Univ. MMS Lab.
o                           2



g
이 장에서 다룰 내용

o



    프로그램을 작성할 때 꼭 필요한 내용들

    printf() 함수의 기본 형태

   printf() 함수의 서식 지정

   scanf() 함수의 사용

   변수의 이해

   데이터 형식과 배열
o                                           3



g
프로그램 작성 순서 복습

o
   프로그래밍 작성 순서 요약




    – 프로젝트 만들기 : 소스 파일보다 프로젝트를 먼저 생성해야 함

    – 코딩 : C 컴파일러가 알아들을 수 있는 형식으로 문서 작성

    – 빌드 : 컴파일과 링크를 합친 개념
       • 컴파일 : 소스를 컴퓨터가 이해하는 오브젝트 파일로 변환
       • 링크 : 여러 개의 오브젝트 파일을 하나의 실행파일로 묶음

    – 실행 : 빌드의 결과인 .exe 파일을 작동
o                                               4



g
프로그램의 구성과 실행과정

o
   프로그램은 함수들로 만들어진다.
    – 함수는 입력되는 데이터를 가공하여 특별한 출력을 만들어내는 단위코드이
      다.




   메인함수가 다른 함수들을 호출하여 실행된다.
    – 세 개의 함수로 구성된 프로그램 (10과 20을 더하여 화면에 출력).
o                                     5



g
메인함수

o
   프로그램에는 반드시 하나의 메인함수가 있어야 한다.
    – 메인함수 하나로 작성된 10과 20을 더하는 프로그램




   함수는 머리(head)와 몸통(body)으로 구성된다.
o                                      6



g
함수의 머리

o
   함수의 머리에는 세가지 정보를 표현한다.
    – 함수의 기능에 맞는 함수의 이름
    – 함수가 기능을 수행하는 데 필요한 데이터의 개수와 형태
    – 함수가 기능을 수행하고 나서 돌려주는 값의 형태


   10과 20을 더하는 기능을 가진 함수의 예




   메인함수의 머리는 데이터의 개수와 형태가 생략된 것이다.

                int main( )
o                                                7



g
함수의 몸통

o
   함수의 몸통에는 함수가 수행하는 작업을 기술한다.
    –   함수의 머리 다음 줄부터 중괄호를 열어서 시작한다.
    –   실행문장들은 중괄호 안쪽으로 들여쓰기 한다.
    –   실행문장은 한 줄에 한 문장씩 작성하며 문장 끝에 세미콜론을 붙인다.
    –   함수 내에서 실행문장은 위에서부터 차례로 실행된다.
    –   함수를 끝내기 전에 return문을 사용하여 정수값을 돌려준다.




                               실행문장은 위에서 아래로
                               하나씩 실행된다.
o                                  8



g
프로그램을 작성할 때 꼭 필요한 내용들

o



    프로그램을 작성할 때는 합리적 순서를 따라야 한다.

    관례에 따라 코딩 형식을 지켜야 한다.

   주석은 선택이 아니다 필수다.

   식별자는 의미를 부여하게 만든다.
o                                           9



g
프로그램을 작성하는 순서

o
   데이터를 입력하기 전에 반드시 입력할 데이터를 저장할 기억공간이 있
    어야 한다. 즉, 변수선언이 입력문 전에 있어야 한다.

   일반적인 프로그램 작성의 순서
o                                                10



g
코딩형식

o
   프로그램의 문장을 구분하는 것은 세미콜론(;)이다.
    – 한 줄에 여러 문장을 작성해도 되고 한 문장을 여러 줄에 작성해도 된다.




   프로그램은 알아보기 쉽게 관례에 따라 형식을 지킨다.
o                                                          11



g
주석문 -1

o


    주석문은 프로그램의 가독성을 높인다.
    한 줄 주석문(//)
    – 주석기호 이후 그 줄 끝까지 모두 주석처리 된다.


       // **********************************************
       // 제 목 : 태권브이의 인공지능 프로그램
       // 날 짜 : 2080년 가을
       // 작성자 : 김박사
       // **********************************************

       #include <stdio.h>

       int main()
       {
          int left_fire;   // 왼쪽 주먹 발사명령을 저장하기 위한 변수
          ………
o                                    12



g
주석문 -2

o
   여러 줄 주석문(/* 주석*/)
    – 여러 줄을 한꺼번에 묶어서 주석처리 할 수 있다.
    – “/*”로 시작하여 “*/”로 끝을 표시한다.


        // 메인함수가 전부 주석인 프로그램

        #include <stdio.h>

        /*                   주석 시작
        int main()
        {
           int left_fire;
           ………
        }
        */                   주석 끝
o                                                            13



g
식별자 -1

o


    식별자(identifier)는 변수명, 함수명 등으로 사용된다.
    식별자를 만드는 규칙
    – 알파벳 대문자 A~Z, 소문자 a~z, 숫자 0~9, 밑줄_(underline)으로 구성된다.
    – 첫 문자에는 숫자가 올 수 없다.
    – 대문자와 소문자는 서로 다른 식별자다.


                  식별자                    식별자가 아님

           result                   2002WorldCup
           Hong_gil_dong            Ha-eun
           _p__q_
                                    Good_morning~
           num77
                                    Doctor Kim
           Korea
                                    int (예약어)
           Eun_Ha_Cheol_Do_999
o                                                                14



g
식별자 -2

o
   예약어(reserved word)는 식별자로 사용할 수 없다.
    – 예약어는 컴파일러와 그 의미가 약속되어 있는 단어이다.
    – C문법을 배우는 것은 예약어의 기능을 익히는 것이다.


   예약어 목록

                    void char short int long float double
        자료형
                    unsigned struct union enum const
      기억클래스               auto static extern register
        제어문     if else switch case break continue return goto
        반복문                      for while do
        기타                      sizeof typedef
o                                        15



g
화면출력

o



    데이터를 화면에 출력할 때는 printf() 함수를 사용한다.

    문자열 출력

   정수값 출력

   문자열과 정수값을 함께 출력

   줄 바꾸어 출력
o                                                16



g
printf() 함수의 기본 형태

o
   기본적인 printf() 함수 사용법
    – 모니터 상에 따옴표 안의 내용을 출력




    – 서식에 따라 다른 출력 결과




                                 문자 100 (일 영영)

                                    숫자 100




       • %d : 정수(decimal)를 의미
       • 서식의 개수와 따옴표 뒤에 나오는 숫자의 개수는 같아야 함
o                                                    17



g
화면에 문자열 출력

o


    문자열은 큰따옴표(“ ”)를 사용하여 표현한다.
    출력할 문자열을 printf 함수의 괄호 안에 넣어서 호출한다.




   printf 함수를 사용하기 위해서 stdio.h 헤더 파일을 include 한다.
      #include <stdio.h>

      int main()                        perfect-C
      {                          화면출력
          printf(“perfect-C”);
          return 0;
      }
o                                                         18



g
화면에 정수값 출력 -1

o
   정수값을 출력할 때는 변환문자열 %d를 사용한다.
    - printf 함수는 기본적으로 문자열만을 출력하므로 정수값을 출력할 때는 문자열로 변환시
    키는
     과정이 필요하다.

                               화면출력      10




     – 여러 개의 정수값을 출력할 때는 변환문자열을 그 수만큼 사용한다.

                               화면출력     10 20
o                                       19



g
화면에 정수값 출력 -2

o– 수식의 결과 값을 바로 출력할 수 있다.


                                   30
                            화면출력
o                                             20



g
화면에 문자열과 정수값을 한번에 출력

o
   출력할 문자열 안에 변환문자열을 넣어 함께 사용한다.


                          화면출력     은하철도 999




   정수값이 여러 개라면 변환문자열도 그 개수에 맞게 사용한다.




      화면출력     10과 20의 합은 30입니다.
o                                       21



g
화면에 줄 바꾸어 출력

o
   Printf 함수를 세 번 사용해도 줄이 바뀌지는 않는다.




   줄을 바꾸기 위해서는 줄바꿈 서식문자 n을 사용해야 한다.
o                                                  22



g
[기본예제 2-1] printf() 함수 사용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
                                   모두 글자
05        printf("100+100");
06        printf("n");
07        printf("%d", 100+100);   계산 결과를 숫자로 출력
08        printf("n");
09 }
o                                                          23



g
[기본예제 2-2] printf() 함수 사용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05        printf("%d", 100, 200);        %d는 하나, 숫자는 두 개

06        printf("n");
07        printf("%d %d", 100);          %d는 두 개, 숫자는 하나
08        printf("n");
                                    수정
09 }

         서식의 개수와 숫자의 개수가
            맞지 않는 경우
o                    24



g
printf() 함수의 기본 형태

o
o                                                                      25



g
[기본예제 2-3] 서식을 사용한 출력 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05        printf("%d / %d = %d", 100, 200, 0.5);   %d 세 개와 숫자 세 개 사용

06        printf("n");
07 }
o                    26



g
printf() 함수의 서식 지정

o
   서식과 숫자의 불일치 상황
o                                                                          27



g
printf() 함수의 서식 지정

o
   자주 사용되는 서식

        서식              값의 예                           설명
      %d, %X, %o      10, 100, 1234            정수(10진수, 16진수, 8진수)

      %f 또는 %lf       0.5 , 1.0 , 3.14           실수(소수점이 붙은 수)

         %c             ‘a‟, „b‟, „F‟     문자. 꼭 한 글자여야 하고, „ ‟로 싸여 있어야 함

         %s        “안녕”, “abcdefg”, “a”   문자열. 한 글자 이상이며, “ ”로 싸여 있어야 함
o                                                                                      28



g
[기본예제 2-4] 서식을 사용한 출력 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05        printf("%d / [ ① ] = [ ②%f 100, 200, 0.5) ;
                          %d         ] n",                         정수 두개와 실수 한 개 출력
06                  ③]
          printf("[ %c %c n", 'a', 'K') ;              문자 두 개 출력
07        printf("%s %s n", "안녕", "C 언어");             문자열 두 개 출력
08 }
o                       29



g
printf() 함수의 서식 지정 -1

o
   자릿수를 맞춘 출력(정수형)
o                       30



g
printf() 함수의 서식 지정 -2

o
   자릿수를 맞춘 출력(실수형)
o                       31



g
printf() 함수의 서식 지정 -3

o
   자릿수를 맞춘 출력(문자형)
o                                                    32



g
[기본예제 2-5] 다양한 서식 활용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05
06        printf("%dn", 123);           정수형 서식 활용

07        printf("%5dn", 123);
08        printf("%05dn", 123);
09
10        printf("%fn", 123.45);        실수형 서식 활용
11        printf("%7.1fn", 123.45);
12        printf("%7.3fn", 123.45);
13
14        printf("%sn", "Basic-C");
                                         문자형 서식 활용
15        printf("%10sn", "Basic-C");
16 }
o                                               33



g
printf() 함수의 서식 지정

o
   다양한 기능의 서식 문자

      서식       값의 예              설명

       n    새로운 줄로 이동      Enter 키를 누른 효과

       t    다음 탭으로 이동      Tab 키를 누른 효과

       b    뒤로 한 칸 이동    Back Space 키를 누른 효과

       r   줄의 맨 앞으로 이동     Home 키를 누른 효과

       a    „삑’ 소리를 냄

             를 출력

       '      '를 출력

       "      "를 출력
o                                           34



g
[기본예제 2-6] 다양한 서식 활용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05
06        printf("n줄바꿈n연습 n");
07        printf("t탭키t연습 n");
08        printf("이것을r덮어씁니다 n");
09        printf("aaa삐소리 3번 n");
10        printf("글자가 "강조"되는 효과 n");
11        printf(" 역슬래쉬 세개 출력 n");
12 }
o                               35



g
데이터의 저장

o



    값을 저장하기 위해서는 변수를 사용해야 한다.

    변수의 선언

   대입문(변수에 값을 저장)

   초기화(변수의 선언과 동시에 값을 저장)
o                                    36



g
변수의 선언

o




    변수는 데이터를 저장할 수 있는 메모리의 기억공간이다.

    컴파일러에게 형태와 이름을 알려준다.
    – 변수의 형태 : 변수가 저장할 수 있는 값의 종류
    – 변수의 이름 : 사용할 메모리 기억공간의 이름


   정수값을 저장하기 위해서는 int 예약어를 사용한다.




   같은 형태의 변수는 한번에 선언할 수 있다.
o                                     37



g
변수의 이해 -1

o
   변수
    – 프로그램을 작성하려면 변수 선언이 먼저 선행되어야 함
    – 소수점이 없는 값과 소수점이 있는 값을 담는 변수
    – 데이터 형식에 따라 그릇의 크기가 다름



             int a;      float b;
o                                                                  38



g
변수의 이해 -2

o
   다양한 변수 선언 방식

                     int a;
                               =     int a, b;
                     int b;



   변수 선언 예
          ① 가능                ② 가능               ③ 불가능
          int a;              int a, c;          int a, float b;
          float b;            float b, d;        int c, float d;
          int c;
          float d;
o                                                      39



g
변수의 이해 -3

o
   변수에 값을 넣는 방법
    – 변수 a에 정수 100을 대입
    – 변수 b에 실수 123.45를 대입




    – 선언


           int a;
           float b;          int a = 100;
           a = 100;
                         =   float b = 123.45;
           b = 123.45;


       • 예) a와 b가 모두 정수라면      int a = 100, b = 200;
o                                                   40



g
변수에 값을 저장 [대입문] -1

o
   변수에 값을 저장할 때는 대입연산자(=)를 사용한다.
    – 대입연산자는 오른쪽의 값을 왼쪽의 변수에 저장한다.




    – 대입연산자 왼쪽에는 값을 저장할 기억공간(변수)이 와야 한다.
    – 대입 연산자 오른쪽에 변수가 올 때는 그 값을 왼쪽의 변수에 복사하는 것이다.
o                                   41



g
변수에 값을 저장 [대입문] -2

o– 변수를 사용하여 10과 20을 더해서 출력하는 프로그램




          #include <stdio.h>
          int main()
          {
             int hap;
              hap = 10 + 20;
              printf(“%d”, hap);
              return 0;
          }
o                                                          42



g
초기화

o
   변수를 선언하여 할당된 기억공간에는 쓰레기값(garbage)이 있다.
     #include <stdio.h>
     int main()
     {                                 쓰레기값 : -858993460
        int num;
         printf(“쓰레기값 : %dn”, num);
         return 0;
     }



   초기화는 변수의 선언과 동시에 값을 저장하는 것이다.
o                                                         43



g
[기본예제 2-7] 변수에 값 대입하기

o
01 #include <stdio.h>
02
03 int main()
04 {
05        int a;                          정수형 변수 선언
06        float b;                        실수형 변수 선언
07
08        a = 123.45;                     정수형 변수에 실수 대입

09        b = 200;                        실수형 변수에 정수 대입
10
11        printf ("a의 값 ==> %d n", a);
12        printf ("b의 값 ==> %f n", b);
13 }
o                          44



g
변수의 이해 -1

o
   지정된 데이터 형식을 무시한 값 대입
    – 8행




    – 9행
o                                                             45



g
[응용예제 2-8] 서식을 사용한 출력 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05        int a , b;                            정수 변수 a, b
06        float c, d;                           정수 변수 c, d
07
08        a = 100;                              a에 100 대입
09        [ ①
         b = a;]                                b에 a 값 대입
10
11        c = 111.1;                            c에 111.1 대입
12        [ ②
         d = c;]                                d에 c 값 대입
13
14        printf ("a, b의 값 ==> %d, %d n", a, b);
15        printf ("c, d의 값 ==> %5.1f, %5.1f n", c, d);
16 }
o                                  46



g
변수의 이해 -2

o
   변수에 변수를 대입하는 예 (1)
    – 8행~9행 : a = 100;
              b = a;




        • 변수 a의 값 100이 변수 b에 들어감
        • 결국 변수 a와 b의 값이 같아짐
o                                                                            47



g
[응용예제 2-9] 변수에 변수를 대입하는 예 -1

o
01 #include <stdio.h>
02
03 int main()
04 {
05        int a , b , c , d ;
06
07        a = 100 + 100 ;                        a에 계산 결과 대입

08        b = a + 100;                           b에 a+100 결과 대입

09        c = a + b - 100 ;                      c에 a+b-100 결과 대입
          ①
10 [ d = a + ]b + c;                             d에 a+b+c 결과 대입
11        printf ("a, b , c , d의 값 ==> %d , %d , %d , %d n", a, b, c, d);
12
         ②
13 [ a = b =] c = d = 100;                       a, b, c, d에 모두 100을 대입

14        printf ("a, b , c , d의 값 ==> %d , %d , %d , %d n", a, b, c, d);
15
o                                                        48



g
[응용예제 3-9] 변수에 변수를 대입하는 예 -2

o
16
17
18
       a = 100;
       a = a + 200;
       printf ("a의 값 ==> %d n", a);
                                       a에 100 대입

                                       a에 a 값 + 200 대입


19 }
o                           49



g
변수의 이해 -3

o
   변수에 변수를 대입하는 예 (2)
    – 7행 : a = 100 + 100;




    – 8행 : b = a + 100;
o                                              50



g
변수의 이해 -4

o– 9행, 10행도 이와 같은 과정을 거침

 – 13행 : a = b = c = d = 100;
                                    d = 100;
                                    c = d;
      a = b = c = d = 100;      =
                                    b = c;
                                    a = b;
o                               51



g
변수의 이해 -5

o



     ×
    대입 연산자와 변수의 위치
         10 = 100;   a = 100;
o                                         52



g
데이터 형식 -1

o
   비트
    – 컴퓨터에서 표현하는 가장 작은 단위
    – 전기 스위치와 같은 개념으로 0(On)과 1(Off)만 존재
         • 하나의 비트로 표현할 수 있는 가짓수는 2가지
o                                                     53



g
데이터 형식 -2

o
   진수
    – 2진수 : 표현 가능한 숫자 0, 1
    – 10진수 : 표현 가능한 숫자 0~9
                                  십진수
                                  00
                                  01
                                        2진수
                                        0000
                                        0001
                                               16진수
                                                0
                                                1

    – 16진수 : 표현 가능한 숫자 0~9, A~F   02    0010    2
                                  03    0011    3

    – 진수를 구분하여 표기하는 방법            04    0100    4

         • 2진수 : 102              05    0101    5

         • 10진수 : 1010            06    0110    6
                                  07    0111    7
         • 16진수 : 1016
                                  08    1000    8
                                  09    1001    9
                                  10    1010    A
                                  11    1011    B
                                  12    1100    C
                                  13    1101    D
                                  14    1110    E
                                  15    1111    F
o                                                                                    54



g
데이터 형식 -3

o
   바이트
    – 8개의 비트가 합쳐진 단위


    비트수   바이트수      개수                    2진수            10진수           16진수

      1    -        21 = 2      0 ~1                      0~1            0~1

      2    -        22 = 4      0 ~11                     0~3            0~4

      4    -       24 = 16      0 ~1111                   0 ~ 15         0~F

      8    1       28 = 256     0 ~11111111              0 ~ 255        0 ~ FF

     16    2     216 = 65,536   0 ~11111111 11111111    0 ~ 63,355     0 ~ FFFF

     32    4     232 = 약 42억    0~ …                   0 ~ 약 42억     0 ~ FFFF FFFF

     64    8       264 = …      0~ ……                  0 ~ 아주 큰 수      0~……
o                                                         55



g
데이터 형식 -4

o
   진수의 변환 연습
    – 2진수  10진수
       • 2진수의 맨 뒤에서부터 각 자리에 해당하는 가중치(20, 21, 22,…)를 곱한다
       • 각 자리의 결과를 모두 합한다
o                                                   56



g
데이터 형식 -5

o– 2진수  16진수  10진수
    • 2진수의 네 자리는 16진수의 한 자리에 해당
    • 16진수를 10진수로 바꾸려면 각 자리의 가중치(160, 161,…)를 곱한다
    • 각 자리의 결과를 모두 합한다
o                                      57



g
데이터 형식 -6

o– 10진수  2진수
    • 10진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.
o                                      58



g
데이터 형식 -7

o– 16진수  2진수
    • 16진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.
o                                           59



g
데이터 형식 -8

o
                              16진수   2진수
 – 16진수  2진수 간편 변환            0     0000
    • 16진수 1자리 = 2진수 4자리 해당    1     0001
                               2     0010
                               3     0011
                               4     0100
                               5     0101
                               6     0110
                               7     0111
                               8     1000
                               9     1001
                               A     1010
                               B     1011
                               C     1100
                               D     1101
                               E     1110
                               F     1111
o                                      60



g
데이터 형식 -9

o– 16진수  2진수 간편 변환
    • 16진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.
o                                                                            61



g
데이터 형식 -10

o
   숫자형 데이터 형식
    – 소수점이 없는 정수형

        데이터 형식             의미        크기                값의 범위

           short         작은 정수형      2byte    -215 (-32768)~ 215 -1(32767)

      unsigned short   부호없는 작은 정수형   2byte         0~ 216 -1(65535)

            int           정수형        4byte   -231 (약 -21억)~ 231 -1(약 21억)

       unsigned int     부호없는 정수형     4byte         0~ 232 -1(약 42억)

          long int        큰 정수형      4byte            -231~ 231 -1

       unsigned long    부호없는 정수형     4byte             0~ 232 -1
o                                                           62



g
[기본예제 2-10] 소수점이 없는 정수형

o
01 #include <stdio.h>
02
03 int main()
04 {
05        int a=100 , b=200;          정수형 변수 a, b에 값 지정

06        float result ;              실수형 변수 result 선언
07
08        result = a / b ;            a/b를 실수형 변수 result에
                                      대입 (0.5를 예상함)
09
10        printf ("%f n", result);
11 }
o             63



g
데이터 형식 -11

o– 정수형의 나눗셈
o                                                              64



g
데이터 형식 -12

o– 소수점이 있는 정수형


    데이터 형식         의미     크기              값의 범위

       float      실수형     4byte    약 -3.4×1038 ~ 약 3.4×1038

      double      큰 실수형   8byte   약 -1.79×1038 ~ 약 1.79×1038

    long double   큰 실수형   8byte   약 -1.79×1038 ~ 약 1.79×1038
o                                                                              65



g
[기본예제 2-11] 소수점이 있는 정수형

o
01 #include <stdio.h>
02
03 int main()
04 {
05        float a = 0.1234567890123456789012345;    float형 변수 a에 정밀도 25자리 입력

06        double b = 0.1234567890123456789012345;   double형 변수 b에 정밀도 25자리
                                                    입력
07
08        printf("%30.25f n", a);
09        printf("%30.25f n", b);
10 }
o                                                                                 66



g
데이터 형식 -13

o
   문자형 데이터 형식
    – 아스키 코드
         데이터 형식              의미                           크기
            0~9             48 ~ 57                    0x30 ~ 0x39

            A~Z             65 ~ 90                    0x41 ~ 0x5A

            a~z            97 ~ 122                    0x61 ~ 0x7A

      • 예

        char ch = „a‟;      =         char ch = 97;

    – 한 글자를 뜻하는 문자형

         데이터 형식              의미                 크기                     크기
            char         문자형 또는 정수형            2byte                 -128 ~ 127

        unsigned char    문자형 또는 정수형            2byte                  0 ~ 255
o                                                    67



g
[기본예제 2-12] 문자형 변수 사용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05        char a, b, c;         문자형 변수 3개 선언
06
07        a = 'A';              문자형 변수 a에‘A’대입
08        printf("%c n", a);   문자형 변수 a를 문자형과
09        printf("%d n", a);   정수형으로 출력

10
11        b = 'a';              b에‘a’ 대입
12        c = b + 5;            c에 b+5 결과 대입
13        printf("%c n", b);
14        printf("%c n", c);
15
16        c = 90;               문자형 변수 c에 숫자 90 대입

17        printf("%c n", c);
18 }
o                      68



g
데이터 형식 -14

o– 서식에 따라 달라지는 출력 결과
o                                                                             69



g
[응용예제 2-13] 문자형 변수 사용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05         int a, b;
06         char c, d;
07
08         a = 0x41;                        정수형 변수 a에 16진수 0x41 대입
09         b = 0x50;                        정수형 변수 b에 16진수 0x50 대입
10
11         [       ①      ]
         printf("%c n", b);                정수형 변수 b를 문자형으로 출력
12
13         c = a;                           문자형 변수 c에 정수형 변수 a 값 대입
14         [      ②
         printf("%c n", ]
                         c);                문자형 변수 c를 문자형으로 출력
15
16         d = '#';                         문자형 변수 d에 문자 대입
17         printf("%c의 ASCII 값은 %d 입니다 n", d, d);       문자형 변수 d를 두 가지 형태로
18 }                                                     출력
o                               70



g
데이터 형식 -15

o
   문자열의 기본 형식
    – 문자열은 문자를 여러 개 모아 연결한 형태
        • Hanbit 이라는 문자열 저장




    – 널(null) 문자 : 0
        • 문자열의 끝을 알려주는 역할
        • 화면에 출력되지 않음

    – 문자열은 문자 배열을 사용
o                           71



g
데이터 형식 -16

o
   문자열의 대입과 출력
    – strcpy() 함수로 문자열 대입




    – 문자열 출력
o                                                                        72



g
[기본예제 2-14] 문자열 형식 사용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05        char str1[10];                    문자형 배열 str1, str2 선언
06        char str2[10];
07        char str3[10] = "CookBook";       문자형 배열 str3의 선언과 문자열
                                            대입
08
09        strcpy(str1, "Basic-C");          str1에 문자열 대입

10        strcpy(str2, str3);               str3을 str2에 대입
11
12        printf("str1 ==> %s n", str1);   문자형 배열 str1, str2, str3 출력
13        printf("str2 ==> %s n", str2);
14        printf("str3 ==> %s n", str3);
15 }
o                           73



g
데이터 형식 -17

o– [기본예제 3-14]의 문자열 선언 상태
o                                                                             74



g
[응용예제 2-15] 문자열 형식 사용 예

o
01 #include <stdio.h>
02
03 int main()
04 {
05          char str[10] = "0123456789";             str 배열 10자리에 10글자 대입
06
07          printf("str ==> %s n", str);
08
09          str[0] = 'I';
                                                     str 배열에 글자 입력
10          str[1] = 'T';
11          str[2] = 'C';
12          str[3] = 'o';
13          str[4] = 'o';
14          str[5] = 'k';
15          str[6] = '0';
16
17          printf("str ==> %s n", str);                   str 배열 출력
18
19          printf("str[7] ==> %c n", [ ①str[7]
                                            ] );            str[7]의 내용만 출력
20
21          printf("str[50] ==> %c n", [ ② ] );
                                           str[50]          str[50]의 내용만 출력
22 }
o                               75



g
데이터 형식 -18

o– 5행
    • str 배열을 선언하면서 문자열 대입
    • 널 문자가 없기 때문에 출력 시 문제 발생
o                          76



g
데이터 형식 -19

o– 9행~15행을 실행한 후의 str 배열
o                                      77



g
키보드 입력

o



    데이터를 키보드에서 입력할 때는 scanf함수를 사용한다.

    정수값 하나 입력

   여러 개의 정수값 입력

   scanf함수 사용시 주의할 점
o                                               78



g
정수값 입력 -1

o
   키보드에서 입력하는 것은 모두 문자열이다.
    - 키보드에서 10을 입력하면 문자1과 문자0이 붙어 있는 문자열이 된다.
    - 따라서 키보드 입력을 수치값으로 변환하여 변수에 저장한다.

   정수값을 입력 받을 때는 %d 변환 문자열을 사용한다.
o                                                                        79



g
정수값 입력 -2

o
   키보드로부터 변수에 정수값을 입력 받아 출력하는 예
     #include <stdio.h>
     int main()
     {
        int num;

         printf(“정수값 하나를 입력하세요 : ”);
         scanf(“%d”, &num);
         printf(“입력 받은 정수값은 %d입니다.n”, num);
         return 0;
     }


                   정수값 하나를 입력하세요 : _           정수값 하나를 입력하세요 : 10 (엔터)




                   정수값 하나를 입력하세요 : 10
                   입력 받은 정수값은 10입니다.
o                                                      80



g
정수값 입력 -3

o
   여러 개의 변수에 값을 한번에 입력 받을 수 있다.
    - 이 때는 변수의 개수에 맞게 변환문자열을 사용한다.




    – 두 정수값을 입력할 때는 두 값 사이에 공백, 탭, 엔터키를 쳐서 두 값을 구분해야 한다.

         정수값 두 개를 입력하세요 : 10    20 (엔터)


                                  여기에서 하나 이상의
                                 공백, 탭, 엔터키를 친다.
o                                               81



g
scanf 함수 사용시 주의할 점

o
   변환문자열과 함께 불필요한 문자열을 사용하지 않는다.




      출력과 입력을     printf(“정수값 하나를 입력하세요 : ”);
     구분하여 작성한다.   scanf(“%d”, &num);
o                                            82



g
[예제모음_01] 정수형을 출력하는 프로그램

o 예제설명
  ① 정수형 숫자를 하나 입력받고, 10진수, 16진수, 8진수로 출력하는
    프로그램을 작성해보자.




  실행결과
o                                                            83



g
[예제모음_01] 소스

o
01 #include <stdio.h>
02
03 int main()
04 {
05        int data;                         정수형 변수 선언
06
07        printf("정수를 입력하세요 ==> ");
08        scanf("%d", &data);               키보드로 정수를 입력 받음

09
10        printf("10진수 ==> %d n", data);   10진수 출력

11        printf("16진수 ==> %X n", data);   16진수 출력
12        printf("8진수 ==> %o n", data);    8진수 출력
13 }
o                                             84



g
[예제모음_02] 입력하는 정수의 진수 결정

o  예제설명
   ① 10진수, 16진수, 8진수 중 어떤 진수의 값을 입력할지 결정하고,
     해당 숫자를 입력한 후에 그것이 10진수, 16진수, 8진수로 어떤
     숫자일지를 출력하는 프로그램이다.




   실행결과
o                                                                    85



g
[예제모음_02] 소스

o
01 #include <stdio.h>
02
03 int main()
04 {
05        int type, data;
06
07        printf("입력진수 결정 <1>10 <2>16 <3>8 : ");
08        scanf("%d", &type);                  키보드로 숫자를 입력받음

09
10        printf("값 입력 : ");
11
12        if(type == 1)                        입력값이 1이면 10진수를 입력받음
13        { scanf("%d", &data); }
14
15        if(type == 2)
16        { scanf("%x", &data); }              입력값이 2이면 16진수를 입력받음
o                                                                    86



g
[예제모음_02] 소스

o
17
18
19
       if(type == 3)
       { scanf("%o", &data); }
                                         입력값이 3이면 8진수를 입력받음


20
21     printf("10진수 ==> %d n", data);
                                         입력받은 data 값을 8, 10, 16진수로
22     printf("16진수 ==> %X n", data);   변환하여 출력
23     printf("8진수 ==> %o n", data);
24 }
o                                          87



g
[예제모음_03] 데이터형의 크기 확인

o  예제설명
   ① sizeof( ) 함수를 사용해서 각 데이터형의 크기를 확인하는
     프로그램이다.




   실행결과
o                                                                                   88



g
[예제모음_03] 소스

o
01 #include <stdio.h>
02
03 int main()
04 {                                                   sizeof() 함수로 각 데이터형의 크기 출력

05 printf("int형의 크기 ==> %dn", sizeof(int));
06 printf("unsigned int형의 크기 ==> %dn", sizeof(unsigned int));
07 printf("short형의 크기 ==> %dn", sizeof(short));
08 printf("unsigned short형의 크기 ==> %dn", sizeof(unsigned short));
09 printf("long int형의 크기 ==> %dn", sizeof(long int));
10 printf("unsigned long int형의 크기 ==> %dn", sizeof(unsigned long int));
11 printf("float형의 크기 ==> %dn", sizeof(float));
12 printf("double형의 크기 ==> %dn", sizeof(double));
13 printf("long double형의 크기 ==> %dn", sizeof(long double));
14 printf("char형의 크기 ==> %dn", sizeof(char));
15 printf("unsigned char형의 크기 ==> %dn", sizeof(unsigned char));
16 }
o                                                                       89



g
요약
o
printf() 함수
               ① 모니터에 뭔가를 출력하는 역할
               ② printf(“서식”, 인자들…) 사용
               ③ 정수 : %d, 실수 : %f, 문자: %c, 문자열: %s 사용

               ① ‘%5d‟ 서식을 사용하면5자리로 정수를 출력한다.
printf() 함수의   ② ‘%7.3f‟ 서식을 사용하면 전체7자리에 소수점 아래 3자리 실수를
     서식           출력한다.
               ③ 기타 서식 : ‘n‟(새로운 줄로 이동), „t‟(다음 탭으로 이동), „‟( 출력)



               ① 왼편에는 반드시 변수가 와야 한다
  변수에 값        ② 오른쪽은 상수, 변수, 계산값 등 무엇이 오든 상관없다.
   대입

               ①   컴퓨터에서는 2진수를 사용, 2진수 4자리를 묶은 것이 16진수
 데이터 형식        ②   정수 데이터 형식 : short, int, long
               ③   부호없이 사용하려면 앞에 unsigned를 붙임
               ④   실수 데이텨 형식 : float, double
               ⑤   문자 하나를 저장하는 형식 : char
               ⑥   여러 글자를 저장하는 데이터 형식은 문자열 배열 사용
               ⑦   문자열 길이 : 실제 문자열 길이 + 1(널 문자)

More Related Content

What's hot

[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
Chris Ohk
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
Chris Ohk
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
MinGeun Park
 
2. c언어의 기본
2. c언어의 기본2. c언어의 기본
2. c언어의 기본
SeonMan Kim
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
Chris Ohk
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
Gwangwhi Mah
 
[Why Programs Fail] Deducing Errors, 오류 연역
[Why Programs Fail] Deducing Errors, 오류 연역[Why Programs Fail] Deducing Errors, 오류 연역
[Why Programs Fail] Deducing Errors, 오류 연역종빈 오
 
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
Chris Ohk
 
C++11
C++11C++11
C++11
선협 이
 
Lua 문법 -함수
Lua 문법 -함수Lua 문법 -함수
Lua 문법 -함수
Jaehoon Lee
 
Lua 문법
Lua 문법Lua 문법
Lua 문법
Jaehoon Lee
 
6장 표현식 및 문장
6장 표현식 및 문장6장 표현식 및 문장
6장 표현식 및 문장재정 이
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
Huey Park
 
C++정리 스마트포인터
C++정리 스마트포인터C++정리 스마트포인터
C++정리 스마트포인터fefe7270
 
배열과 포인터
배열과 포인터배열과 포인터
배열과 포인터
영기 김
 
(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3guestc0587d1
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심흥배 최
 
포인터와 배열
포인터와 배열포인터와 배열
포인터와 배열Kim YoSep
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
흥배 최
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
Jongwook Choi
 

What's hot (20)

[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary[C++ Korea 2nd Seminar] C++17 Key Features Summary
[C++ Korea 2nd Seminar] C++17 Key Features Summary
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
2. c언어의 기본
2. c언어의 기본2. c언어의 기본
2. c언어의 기본
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
[Why Programs Fail] Deducing Errors, 오류 연역
[Why Programs Fail] Deducing Errors, 오류 연역[Why Programs Fail] Deducing Errors, 오류 연역
[Why Programs Fail] Deducing Errors, 오류 연역
 
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3[C++ Korea] Effective Modern C++ Study, Item 1 - 3
[C++ Korea] Effective Modern C++ Study, Item 1 - 3
 
C++11
C++11C++11
C++11
 
Lua 문법 -함수
Lua 문법 -함수Lua 문법 -함수
Lua 문법 -함수
 
Lua 문법
Lua 문법Lua 문법
Lua 문법
 
6장 표현식 및 문장
6장 표현식 및 문장6장 표현식 및 문장
6장 표현식 및 문장
 
C++ 타입 추론
C++ 타입 추론C++ 타입 추론
C++ 타입 추론
 
C++정리 스마트포인터
C++정리 스마트포인터C++정리 스마트포인터
C++정리 스마트포인터
 
배열과 포인터
배열과 포인터배열과 포인터
배열과 포인터
 
(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3(학생용)+프로그래밍+및+실습 Chap4 3
(학생용)+프로그래밍+및+실습 Chap4 3
 
Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심Modern C++ 프로그래머를 위한 CPP11/14 핵심
Modern C++ 프로그래머를 위한 CPP11/14 핵심
 
포인터와 배열
포인터와 배열포인터와 배열
포인터와 배열
 
C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발C#을 사용한 빠른 툴 개발
C#을 사용한 빠른 툴 개발
 
프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기프로그래밍 대회: C++11 이야기
프로그래밍 대회: C++11 이야기
 

Viewers also liked

프로그래밍 및 실습 Chap0
프로그래밍 및 실습 Chap0프로그래밍 및 실습 Chap0
프로그래밍 및 실습 Chap0dktm
 
[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,reference[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,referenceMinGeun Park
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍MinGeun Park
 
[C++ lab] 2. hello world
[C++ lab] 2. hello world[C++ lab] 2. hello world
[C++ lab] 2. hello worldMinGeun Park
 
Woonghee Lee Real Escape in Korea proposal
Woonghee Lee Real Escape in Korea proposalWoonghee Lee Real Escape in Korea proposal
Woonghee Lee Real Escape in Korea proposal
Woonghee Lee
 
Project proposal
Project proposalProject proposal
Project proposal주웅 배
 
Why Hong Kong? Expanding Your Business to Asia.
Why Hong Kong? Expanding Your Business to Asia.Why Hong Kong? Expanding Your Business to Asia.
Why Hong Kong? Expanding Your Business to Asia.
Josh Steimle
 
Everything You're Doing Wrong With Your Pitch & How To Fix It
Everything You're Doing Wrong With Your Pitch & How To Fix ItEverything You're Doing Wrong With Your Pitch & How To Fix It
Everything You're Doing Wrong With Your Pitch & How To Fix It
Clark Van Der Beken
 
8 Things Your VC Won’t Tell You
8 Things Your VC Won’t Tell You8 Things Your VC Won’t Tell You
8 Things Your VC Won’t Tell You
Abhishek Shah
 
Design for Startups - Build Better Products, Not More Features
Design for Startups - Build Better Products, Not More FeaturesDesign for Startups - Build Better Products, Not More Features
Design for Startups - Build Better Products, Not More Features
Vitaly Golomb
 
SXSW 2016: The Need To Knows
SXSW 2016: The Need To KnowsSXSW 2016: The Need To Knows
SXSW 2016: The Need To Knows
Ogilvy Consulting
 
8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung
Edith Yeung
 
The Physical Interface
The Physical InterfaceThe Physical Interface
The Physical Interface
Josh Clark
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
Seth Familian
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
Natasha Murashev
 

Viewers also liked (15)

프로그래밍 및 실습 Chap0
프로그래밍 및 실습 Chap0프로그래밍 및 실습 Chap0
프로그래밍 및 실습 Chap0
 
[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,reference[C++ lab] 6. value,pointer,reference
[C++ lab] 6. value,pointer,reference
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍
 
[C++ lab] 2. hello world
[C++ lab] 2. hello world[C++ lab] 2. hello world
[C++ lab] 2. hello world
 
Woonghee Lee Real Escape in Korea proposal
Woonghee Lee Real Escape in Korea proposalWoonghee Lee Real Escape in Korea proposal
Woonghee Lee Real Escape in Korea proposal
 
Project proposal
Project proposalProject proposal
Project proposal
 
Why Hong Kong? Expanding Your Business to Asia.
Why Hong Kong? Expanding Your Business to Asia.Why Hong Kong? Expanding Your Business to Asia.
Why Hong Kong? Expanding Your Business to Asia.
 
Everything You're Doing Wrong With Your Pitch & How To Fix It
Everything You're Doing Wrong With Your Pitch & How To Fix ItEverything You're Doing Wrong With Your Pitch & How To Fix It
Everything You're Doing Wrong With Your Pitch & How To Fix It
 
8 Things Your VC Won’t Tell You
8 Things Your VC Won’t Tell You8 Things Your VC Won’t Tell You
8 Things Your VC Won’t Tell You
 
Design for Startups - Build Better Products, Not More Features
Design for Startups - Build Better Products, Not More FeaturesDesign for Startups - Build Better Products, Not More Features
Design for Startups - Build Better Products, Not More Features
 
SXSW 2016: The Need To Knows
SXSW 2016: The Need To KnowsSXSW 2016: The Need To Knows
SXSW 2016: The Need To Knows
 
8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung8 Tips for Scaling Mobile Users in China by Edith Yeung
8 Tips for Scaling Mobile Users in China by Edith Yeung
 
The Physical Interface
The Physical InterfaceThe Physical Interface
The Physical Interface
 
Visual Design with Data
Visual Design with DataVisual Design with Data
Visual Design with Data
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 

Similar to 프로그래밍 및 실습 Chap2

HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
Jae-yeol Lee
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
Yeonah Ki
 
C수업자료
C수업자료C수업자료
C수업자료
koominsu
 
C수업자료
C수업자료C수업자료
C수업자료koominsu
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
Sang Don Kim
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
준혁 이
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수
SeungHyun Lee
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01seonhyung
 
C Language I
C Language IC Language I
C Language ISuho Kwon
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
Kwangyoun Jung
 
이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7pkok15
 
14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿
유석 남
 
Windosw via c 스터디2장
Windosw via c 스터디2장Windosw via c 스터디2장
Windosw via c 스터디2장
HolyTak
 
파이선 실전공략-1
파이선 실전공략-1파이선 실전공략-1
파이선 실전공략-1
Nomota Hiongun KIM
 
Go
GoGo
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
Chris Ohk
 

Similar to 프로그래밍 및 실습 Chap2 (20)

HI-ARC PS 101
HI-ARC PS 101HI-ARC PS 101
HI-ARC PS 101
 
06장 함수
06장 함수06장 함수
06장 함수
 
C review
C  reviewC  review
C review
 
게임프로그래밍입문 3주차
게임프로그래밍입문 3주차게임프로그래밍입문 3주차
게임프로그래밍입문 3주차
 
6 function
6 function6 function
6 function
 
C수업자료
C수업자료C수업자료
C수업자료
 
C수업자료
C수업자료C수업자료
C수업자료
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 
C Language I
C Language IC Language I
C Language I
 
튜터링 #9 20120409
튜터링 #9 20120409튜터링 #9 20120409
튜터링 #9 20120409
 
문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의문과생 대상 파이썬을 활용한 데이터 분석 강의
문과생 대상 파이썬을 활용한 데이터 분석 강의
 
이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7
 
14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿14장 - 15장 예외처리, 템플릿
14장 - 15장 예외처리, 템플릿
 
Windosw via c 스터디2장
Windosw via c 스터디2장Windosw via c 스터디2장
Windosw via c 스터디2장
 
파이선 실전공략-1
파이선 실전공략-1파이선 실전공략-1
파이선 실전공략-1
 
Go
GoGo
Go
 
2013 C++ Study For Students #1
2013 C++ Study For Students #12013 C++ Study For Students #1
2013 C++ Study For Students #1
 

프로그래밍 및 실습 Chap2

  • 1. 2013년 1학기 프로그래밍 및 실습 Chap. 2 C 프로그래밍 기초 Bo-Kug Seo (sbk8941@mms.ssu.ac.kr) Soongsil Univ. MMS Lab.
  • 2. o 2 g 이 장에서 다룰 내용 o   프로그램을 작성할 때 꼭 필요한 내용들 printf() 함수의 기본 형태  printf() 함수의 서식 지정  scanf() 함수의 사용  변수의 이해  데이터 형식과 배열
  • 3. o 3 g 프로그램 작성 순서 복습 o  프로그래밍 작성 순서 요약 – 프로젝트 만들기 : 소스 파일보다 프로젝트를 먼저 생성해야 함 – 코딩 : C 컴파일러가 알아들을 수 있는 형식으로 문서 작성 – 빌드 : 컴파일과 링크를 합친 개념 • 컴파일 : 소스를 컴퓨터가 이해하는 오브젝트 파일로 변환 • 링크 : 여러 개의 오브젝트 파일을 하나의 실행파일로 묶음 – 실행 : 빌드의 결과인 .exe 파일을 작동
  • 4. o 4 g 프로그램의 구성과 실행과정 o  프로그램은 함수들로 만들어진다. – 함수는 입력되는 데이터를 가공하여 특별한 출력을 만들어내는 단위코드이 다.  메인함수가 다른 함수들을 호출하여 실행된다. – 세 개의 함수로 구성된 프로그램 (10과 20을 더하여 화면에 출력).
  • 5. o 5 g 메인함수 o  프로그램에는 반드시 하나의 메인함수가 있어야 한다. – 메인함수 하나로 작성된 10과 20을 더하는 프로그램  함수는 머리(head)와 몸통(body)으로 구성된다.
  • 6. o 6 g 함수의 머리 o  함수의 머리에는 세가지 정보를 표현한다. – 함수의 기능에 맞는 함수의 이름 – 함수가 기능을 수행하는 데 필요한 데이터의 개수와 형태 – 함수가 기능을 수행하고 나서 돌려주는 값의 형태  10과 20을 더하는 기능을 가진 함수의 예  메인함수의 머리는 데이터의 개수와 형태가 생략된 것이다. int main( )
  • 7. o 7 g 함수의 몸통 o  함수의 몸통에는 함수가 수행하는 작업을 기술한다. – 함수의 머리 다음 줄부터 중괄호를 열어서 시작한다. – 실행문장들은 중괄호 안쪽으로 들여쓰기 한다. – 실행문장은 한 줄에 한 문장씩 작성하며 문장 끝에 세미콜론을 붙인다. – 함수 내에서 실행문장은 위에서부터 차례로 실행된다. – 함수를 끝내기 전에 return문을 사용하여 정수값을 돌려준다. 실행문장은 위에서 아래로 하나씩 실행된다.
  • 8. o 8 g 프로그램을 작성할 때 꼭 필요한 내용들 o   프로그램을 작성할 때는 합리적 순서를 따라야 한다. 관례에 따라 코딩 형식을 지켜야 한다.  주석은 선택이 아니다 필수다.  식별자는 의미를 부여하게 만든다.
  • 9. o 9 g 프로그램을 작성하는 순서 o  데이터를 입력하기 전에 반드시 입력할 데이터를 저장할 기억공간이 있 어야 한다. 즉, 변수선언이 입력문 전에 있어야 한다.  일반적인 프로그램 작성의 순서
  • 10. o 10 g 코딩형식 o  프로그램의 문장을 구분하는 것은 세미콜론(;)이다. – 한 줄에 여러 문장을 작성해도 되고 한 문장을 여러 줄에 작성해도 된다.  프로그램은 알아보기 쉽게 관례에 따라 형식을 지킨다.
  • 11. o 11 g 주석문 -1 o   주석문은 프로그램의 가독성을 높인다. 한 줄 주석문(//) – 주석기호 이후 그 줄 끝까지 모두 주석처리 된다. // ********************************************** // 제 목 : 태권브이의 인공지능 프로그램 // 날 짜 : 2080년 가을 // 작성자 : 김박사 // ********************************************** #include <stdio.h> int main() { int left_fire; // 왼쪽 주먹 발사명령을 저장하기 위한 변수 ………
  • 12. o 12 g 주석문 -2 o  여러 줄 주석문(/* 주석*/) – 여러 줄을 한꺼번에 묶어서 주석처리 할 수 있다. – “/*”로 시작하여 “*/”로 끝을 표시한다. // 메인함수가 전부 주석인 프로그램 #include <stdio.h> /* 주석 시작 int main() { int left_fire; ……… } */ 주석 끝
  • 13. o 13 g 식별자 -1 o   식별자(identifier)는 변수명, 함수명 등으로 사용된다. 식별자를 만드는 규칙 – 알파벳 대문자 A~Z, 소문자 a~z, 숫자 0~9, 밑줄_(underline)으로 구성된다. – 첫 문자에는 숫자가 올 수 없다. – 대문자와 소문자는 서로 다른 식별자다. 식별자 식별자가 아님 result 2002WorldCup Hong_gil_dong Ha-eun _p__q_ Good_morning~ num77 Doctor Kim Korea int (예약어) Eun_Ha_Cheol_Do_999
  • 14. o 14 g 식별자 -2 o  예약어(reserved word)는 식별자로 사용할 수 없다. – 예약어는 컴파일러와 그 의미가 약속되어 있는 단어이다. – C문법을 배우는 것은 예약어의 기능을 익히는 것이다.  예약어 목록 void char short int long float double 자료형 unsigned struct union enum const 기억클래스 auto static extern register 제어문 if else switch case break continue return goto 반복문 for while do 기타 sizeof typedef
  • 15. o 15 g 화면출력 o   데이터를 화면에 출력할 때는 printf() 함수를 사용한다. 문자열 출력  정수값 출력  문자열과 정수값을 함께 출력  줄 바꾸어 출력
  • 16. o 16 g printf() 함수의 기본 형태 o  기본적인 printf() 함수 사용법 – 모니터 상에 따옴표 안의 내용을 출력 – 서식에 따라 다른 출력 결과 문자 100 (일 영영) 숫자 100 • %d : 정수(decimal)를 의미 • 서식의 개수와 따옴표 뒤에 나오는 숫자의 개수는 같아야 함
  • 17. o 17 g 화면에 문자열 출력 o   문자열은 큰따옴표(“ ”)를 사용하여 표현한다. 출력할 문자열을 printf 함수의 괄호 안에 넣어서 호출한다.  printf 함수를 사용하기 위해서 stdio.h 헤더 파일을 include 한다. #include <stdio.h> int main() perfect-C { 화면출력 printf(“perfect-C”); return 0; }
  • 18. o 18 g 화면에 정수값 출력 -1 o  정수값을 출력할 때는 변환문자열 %d를 사용한다. - printf 함수는 기본적으로 문자열만을 출력하므로 정수값을 출력할 때는 문자열로 변환시 키는 과정이 필요하다. 화면출력 10 – 여러 개의 정수값을 출력할 때는 변환문자열을 그 수만큼 사용한다. 화면출력 10 20
  • 19. o 19 g 화면에 정수값 출력 -2 o– 수식의 결과 값을 바로 출력할 수 있다. 30 화면출력
  • 20. o 20 g 화면에 문자열과 정수값을 한번에 출력 o  출력할 문자열 안에 변환문자열을 넣어 함께 사용한다. 화면출력 은하철도 999  정수값이 여러 개라면 변환문자열도 그 개수에 맞게 사용한다. 화면출력 10과 20의 합은 30입니다.
  • 21. o 21 g 화면에 줄 바꾸어 출력 o  Printf 함수를 세 번 사용해도 줄이 바뀌지는 않는다.  줄을 바꾸기 위해서는 줄바꿈 서식문자 n을 사용해야 한다.
  • 22. o 22 g [기본예제 2-1] printf() 함수 사용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 모두 글자 05 printf("100+100"); 06 printf("n"); 07 printf("%d", 100+100); 계산 결과를 숫자로 출력 08 printf("n"); 09 }
  • 23. o 23 g [기본예제 2-2] printf() 함수 사용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 printf("%d", 100, 200); %d는 하나, 숫자는 두 개 06 printf("n"); 07 printf("%d %d", 100); %d는 두 개, 숫자는 하나 08 printf("n"); 수정 09 } 서식의 개수와 숫자의 개수가 맞지 않는 경우
  • 24. o 24 g printf() 함수의 기본 형태 o
  • 25. o 25 g [기본예제 2-3] 서식을 사용한 출력 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 printf("%d / %d = %d", 100, 200, 0.5); %d 세 개와 숫자 세 개 사용 06 printf("n"); 07 }
  • 26. o 26 g printf() 함수의 서식 지정 o  서식과 숫자의 불일치 상황
  • 27. o 27 g printf() 함수의 서식 지정 o  자주 사용되는 서식 서식 값의 예 설명 %d, %X, %o 10, 100, 1234 정수(10진수, 16진수, 8진수) %f 또는 %lf 0.5 , 1.0 , 3.14 실수(소수점이 붙은 수) %c ‘a‟, „b‟, „F‟ 문자. 꼭 한 글자여야 하고, „ ‟로 싸여 있어야 함 %s “안녕”, “abcdefg”, “a” 문자열. 한 글자 이상이며, “ ”로 싸여 있어야 함
  • 28. o 28 g [기본예제 2-4] 서식을 사용한 출력 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 printf("%d / [ ① ] = [ ②%f 100, 200, 0.5) ; %d ] n", 정수 두개와 실수 한 개 출력 06 ③] printf("[ %c %c n", 'a', 'K') ; 문자 두 개 출력 07 printf("%s %s n", "안녕", "C 언어"); 문자열 두 개 출력 08 }
  • 29. o 29 g printf() 함수의 서식 지정 -1 o  자릿수를 맞춘 출력(정수형)
  • 30. o 30 g printf() 함수의 서식 지정 -2 o  자릿수를 맞춘 출력(실수형)
  • 31. o 31 g printf() 함수의 서식 지정 -3 o  자릿수를 맞춘 출력(문자형)
  • 32. o 32 g [기본예제 2-5] 다양한 서식 활용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 06 printf("%dn", 123); 정수형 서식 활용 07 printf("%5dn", 123); 08 printf("%05dn", 123); 09 10 printf("%fn", 123.45); 실수형 서식 활용 11 printf("%7.1fn", 123.45); 12 printf("%7.3fn", 123.45); 13 14 printf("%sn", "Basic-C"); 문자형 서식 활용 15 printf("%10sn", "Basic-C"); 16 }
  • 33. o 33 g printf() 함수의 서식 지정 o  다양한 기능의 서식 문자 서식 값의 예 설명 n 새로운 줄로 이동 Enter 키를 누른 효과 t 다음 탭으로 이동 Tab 키를 누른 효과 b 뒤로 한 칸 이동 Back Space 키를 누른 효과 r 줄의 맨 앞으로 이동 Home 키를 누른 효과 a „삑’ 소리를 냄 를 출력 ' '를 출력 " "를 출력
  • 34. o 34 g [기본예제 2-6] 다양한 서식 활용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 06 printf("n줄바꿈n연습 n"); 07 printf("t탭키t연습 n"); 08 printf("이것을r덮어씁니다 n"); 09 printf("aaa삐소리 3번 n"); 10 printf("글자가 "강조"되는 효과 n"); 11 printf(" 역슬래쉬 세개 출력 n"); 12 }
  • 35. o 35 g 데이터의 저장 o   값을 저장하기 위해서는 변수를 사용해야 한다. 변수의 선언  대입문(변수에 값을 저장)  초기화(변수의 선언과 동시에 값을 저장)
  • 36. o 36 g 변수의 선언 o   변수는 데이터를 저장할 수 있는 메모리의 기억공간이다. 컴파일러에게 형태와 이름을 알려준다. – 변수의 형태 : 변수가 저장할 수 있는 값의 종류 – 변수의 이름 : 사용할 메모리 기억공간의 이름  정수값을 저장하기 위해서는 int 예약어를 사용한다.  같은 형태의 변수는 한번에 선언할 수 있다.
  • 37. o 37 g 변수의 이해 -1 o  변수 – 프로그램을 작성하려면 변수 선언이 먼저 선행되어야 함 – 소수점이 없는 값과 소수점이 있는 값을 담는 변수 – 데이터 형식에 따라 그릇의 크기가 다름 int a; float b;
  • 38. o 38 g 변수의 이해 -2 o  다양한 변수 선언 방식 int a; = int a, b; int b;  변수 선언 예 ① 가능 ② 가능 ③ 불가능 int a; int a, c; int a, float b; float b; float b, d; int c, float d; int c; float d;
  • 39. o 39 g 변수의 이해 -3 o  변수에 값을 넣는 방법 – 변수 a에 정수 100을 대입 – 변수 b에 실수 123.45를 대입 – 선언 int a; float b; int a = 100; a = 100; = float b = 123.45; b = 123.45; • 예) a와 b가 모두 정수라면 int a = 100, b = 200;
  • 40. o 40 g 변수에 값을 저장 [대입문] -1 o  변수에 값을 저장할 때는 대입연산자(=)를 사용한다. – 대입연산자는 오른쪽의 값을 왼쪽의 변수에 저장한다. – 대입연산자 왼쪽에는 값을 저장할 기억공간(변수)이 와야 한다. – 대입 연산자 오른쪽에 변수가 올 때는 그 값을 왼쪽의 변수에 복사하는 것이다.
  • 41. o 41 g 변수에 값을 저장 [대입문] -2 o– 변수를 사용하여 10과 20을 더해서 출력하는 프로그램 #include <stdio.h> int main() { int hap; hap = 10 + 20; printf(“%d”, hap); return 0; }
  • 42. o 42 g 초기화 o  변수를 선언하여 할당된 기억공간에는 쓰레기값(garbage)이 있다. #include <stdio.h> int main() { 쓰레기값 : -858993460 int num; printf(“쓰레기값 : %dn”, num); return 0; }  초기화는 변수의 선언과 동시에 값을 저장하는 것이다.
  • 43. o 43 g [기본예제 2-7] 변수에 값 대입하기 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int a; 정수형 변수 선언 06 float b; 실수형 변수 선언 07 08 a = 123.45; 정수형 변수에 실수 대입 09 b = 200; 실수형 변수에 정수 대입 10 11 printf ("a의 값 ==> %d n", a); 12 printf ("b의 값 ==> %f n", b); 13 }
  • 44. o 44 g 변수의 이해 -1 o  지정된 데이터 형식을 무시한 값 대입 – 8행 – 9행
  • 45. o 45 g [응용예제 2-8] 서식을 사용한 출력 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int a , b; 정수 변수 a, b 06 float c, d; 정수 변수 c, d 07 08 a = 100; a에 100 대입 09 [ ① b = a;] b에 a 값 대입 10 11 c = 111.1; c에 111.1 대입 12 [ ② d = c;] d에 c 값 대입 13 14 printf ("a, b의 값 ==> %d, %d n", a, b); 15 printf ("c, d의 값 ==> %5.1f, %5.1f n", c, d); 16 }
  • 46. o 46 g 변수의 이해 -2 o  변수에 변수를 대입하는 예 (1) – 8행~9행 : a = 100; b = a; • 변수 a의 값 100이 변수 b에 들어감 • 결국 변수 a와 b의 값이 같아짐
  • 47. o 47 g [응용예제 2-9] 변수에 변수를 대입하는 예 -1 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int a , b , c , d ; 06 07 a = 100 + 100 ; a에 계산 결과 대입 08 b = a + 100; b에 a+100 결과 대입 09 c = a + b - 100 ; c에 a+b-100 결과 대입 ① 10 [ d = a + ]b + c; d에 a+b+c 결과 대입 11 printf ("a, b , c , d의 값 ==> %d , %d , %d , %d n", a, b, c, d); 12 ② 13 [ a = b =] c = d = 100; a, b, c, d에 모두 100을 대입 14 printf ("a, b , c , d의 값 ==> %d , %d , %d , %d n", a, b, c, d); 15
  • 48. o 48 g [응용예제 3-9] 변수에 변수를 대입하는 예 -2 o 16 17 18 a = 100; a = a + 200; printf ("a의 값 ==> %d n", a); a에 100 대입 a에 a 값 + 200 대입 19 }
  • 49. o 49 g 변수의 이해 -3 o  변수에 변수를 대입하는 예 (2) – 7행 : a = 100 + 100; – 8행 : b = a + 100;
  • 50. o 50 g 변수의 이해 -4 o– 9행, 10행도 이와 같은 과정을 거침 – 13행 : a = b = c = d = 100; d = 100; c = d; a = b = c = d = 100; = b = c; a = b;
  • 51. o 51 g 변수의 이해 -5 o  × 대입 연산자와 변수의 위치 10 = 100; a = 100;
  • 52. o 52 g 데이터 형식 -1 o  비트 – 컴퓨터에서 표현하는 가장 작은 단위 – 전기 스위치와 같은 개념으로 0(On)과 1(Off)만 존재 • 하나의 비트로 표현할 수 있는 가짓수는 2가지
  • 53. o 53 g 데이터 형식 -2 o  진수 – 2진수 : 표현 가능한 숫자 0, 1 – 10진수 : 표현 가능한 숫자 0~9 십진수 00 01 2진수 0000 0001 16진수 0 1 – 16진수 : 표현 가능한 숫자 0~9, A~F 02 0010 2 03 0011 3 – 진수를 구분하여 표기하는 방법 04 0100 4 • 2진수 : 102 05 0101 5 • 10진수 : 1010 06 0110 6 07 0111 7 • 16진수 : 1016 08 1000 8 09 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F
  • 54. o 54 g 데이터 형식 -3 o  바이트 – 8개의 비트가 합쳐진 단위 비트수 바이트수 개수 2진수 10진수 16진수 1 - 21 = 2 0 ~1 0~1 0~1 2 - 22 = 4 0 ~11 0~3 0~4 4 - 24 = 16 0 ~1111 0 ~ 15 0~F 8 1 28 = 256 0 ~11111111 0 ~ 255 0 ~ FF 16 2 216 = 65,536 0 ~11111111 11111111 0 ~ 63,355 0 ~ FFFF 32 4 232 = 약 42억 0~ … 0 ~ 약 42억 0 ~ FFFF FFFF 64 8 264 = … 0~ …… 0 ~ 아주 큰 수 0~……
  • 55. o 55 g 데이터 형식 -4 o  진수의 변환 연습 – 2진수  10진수 • 2진수의 맨 뒤에서부터 각 자리에 해당하는 가중치(20, 21, 22,…)를 곱한다 • 각 자리의 결과를 모두 합한다
  • 56. o 56 g 데이터 형식 -5 o– 2진수  16진수  10진수 • 2진수의 네 자리는 16진수의 한 자리에 해당 • 16진수를 10진수로 바꾸려면 각 자리의 가중치(160, 161,…)를 곱한다 • 각 자리의 결과를 모두 합한다
  • 57. o 57 g 데이터 형식 -6 o– 10진수  2진수 • 10진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.
  • 58. o 58 g 데이터 형식 -7 o– 16진수  2진수 • 16진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.
  • 59. o 59 g 데이터 형식 -8 o 16진수 2진수 – 16진수  2진수 간편 변환 0 0000 • 16진수 1자리 = 2진수 4자리 해당 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
  • 60. o 60 g 데이터 형식 -9 o– 16진수  2진수 간편 변환 • 16진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.
  • 61. o 61 g 데이터 형식 -10 o  숫자형 데이터 형식 – 소수점이 없는 정수형 데이터 형식 의미 크기 값의 범위 short 작은 정수형 2byte -215 (-32768)~ 215 -1(32767) unsigned short 부호없는 작은 정수형 2byte 0~ 216 -1(65535) int 정수형 4byte -231 (약 -21억)~ 231 -1(약 21억) unsigned int 부호없는 정수형 4byte 0~ 232 -1(약 42억) long int 큰 정수형 4byte -231~ 231 -1 unsigned long 부호없는 정수형 4byte 0~ 232 -1
  • 62. o 62 g [기본예제 2-10] 소수점이 없는 정수형 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int a=100 , b=200; 정수형 변수 a, b에 값 지정 06 float result ; 실수형 변수 result 선언 07 08 result = a / b ; a/b를 실수형 변수 result에 대입 (0.5를 예상함) 09 10 printf ("%f n", result); 11 }
  • 63. o 63 g 데이터 형식 -11 o– 정수형의 나눗셈
  • 64. o 64 g 데이터 형식 -12 o– 소수점이 있는 정수형 데이터 형식 의미 크기 값의 범위 float 실수형 4byte 약 -3.4×1038 ~ 약 3.4×1038 double 큰 실수형 8byte 약 -1.79×1038 ~ 약 1.79×1038 long double 큰 실수형 8byte 약 -1.79×1038 ~ 약 1.79×1038
  • 65. o 65 g [기본예제 2-11] 소수점이 있는 정수형 o 01 #include <stdio.h> 02 03 int main() 04 { 05 float a = 0.1234567890123456789012345; float형 변수 a에 정밀도 25자리 입력 06 double b = 0.1234567890123456789012345; double형 변수 b에 정밀도 25자리 입력 07 08 printf("%30.25f n", a); 09 printf("%30.25f n", b); 10 }
  • 66. o 66 g 데이터 형식 -13 o  문자형 데이터 형식 – 아스키 코드 데이터 형식 의미 크기 0~9 48 ~ 57 0x30 ~ 0x39 A~Z 65 ~ 90 0x41 ~ 0x5A a~z 97 ~ 122 0x61 ~ 0x7A • 예 char ch = „a‟; = char ch = 97; – 한 글자를 뜻하는 문자형 데이터 형식 의미 크기 크기 char 문자형 또는 정수형 2byte -128 ~ 127 unsigned char 문자형 또는 정수형 2byte 0 ~ 255
  • 67. o 67 g [기본예제 2-12] 문자형 변수 사용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 char a, b, c; 문자형 변수 3개 선언 06 07 a = 'A'; 문자형 변수 a에‘A’대입 08 printf("%c n", a); 문자형 변수 a를 문자형과 09 printf("%d n", a); 정수형으로 출력 10 11 b = 'a'; b에‘a’ 대입 12 c = b + 5; c에 b+5 결과 대입 13 printf("%c n", b); 14 printf("%c n", c); 15 16 c = 90; 문자형 변수 c에 숫자 90 대입 17 printf("%c n", c); 18 }
  • 68. o 68 g 데이터 형식 -14 o– 서식에 따라 달라지는 출력 결과
  • 69. o 69 g [응용예제 2-13] 문자형 변수 사용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int a, b; 06 char c, d; 07 08 a = 0x41; 정수형 변수 a에 16진수 0x41 대입 09 b = 0x50; 정수형 변수 b에 16진수 0x50 대입 10 11 [ ① ] printf("%c n", b); 정수형 변수 b를 문자형으로 출력 12 13 c = a; 문자형 변수 c에 정수형 변수 a 값 대입 14 [ ② printf("%c n", ] c); 문자형 변수 c를 문자형으로 출력 15 16 d = '#'; 문자형 변수 d에 문자 대입 17 printf("%c의 ASCII 값은 %d 입니다 n", d, d); 문자형 변수 d를 두 가지 형태로 18 } 출력
  • 70. o 70 g 데이터 형식 -15 o  문자열의 기본 형식 – 문자열은 문자를 여러 개 모아 연결한 형태 • Hanbit 이라는 문자열 저장 – 널(null) 문자 : 0 • 문자열의 끝을 알려주는 역할 • 화면에 출력되지 않음 – 문자열은 문자 배열을 사용
  • 71. o 71 g 데이터 형식 -16 o  문자열의 대입과 출력 – strcpy() 함수로 문자열 대입 – 문자열 출력
  • 72. o 72 g [기본예제 2-14] 문자열 형식 사용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 char str1[10]; 문자형 배열 str1, str2 선언 06 char str2[10]; 07 char str3[10] = "CookBook"; 문자형 배열 str3의 선언과 문자열 대입 08 09 strcpy(str1, "Basic-C"); str1에 문자열 대입 10 strcpy(str2, str3); str3을 str2에 대입 11 12 printf("str1 ==> %s n", str1); 문자형 배열 str1, str2, str3 출력 13 printf("str2 ==> %s n", str2); 14 printf("str3 ==> %s n", str3); 15 }
  • 73. o 73 g 데이터 형식 -17 o– [기본예제 3-14]의 문자열 선언 상태
  • 74. o 74 g [응용예제 2-15] 문자열 형식 사용 예 o 01 #include <stdio.h> 02 03 int main() 04 { 05 char str[10] = "0123456789"; str 배열 10자리에 10글자 대입 06 07 printf("str ==> %s n", str); 08 09 str[0] = 'I'; str 배열에 글자 입력 10 str[1] = 'T'; 11 str[2] = 'C'; 12 str[3] = 'o'; 13 str[4] = 'o'; 14 str[5] = 'k'; 15 str[6] = '0'; 16 17 printf("str ==> %s n", str); str 배열 출력 18 19 printf("str[7] ==> %c n", [ ①str[7] ] ); str[7]의 내용만 출력 20 21 printf("str[50] ==> %c n", [ ② ] ); str[50] str[50]의 내용만 출력 22 }
  • 75. o 75 g 데이터 형식 -18 o– 5행 • str 배열을 선언하면서 문자열 대입 • 널 문자가 없기 때문에 출력 시 문제 발생
  • 76. o 76 g 데이터 형식 -19 o– 9행~15행을 실행한 후의 str 배열
  • 77. o 77 g 키보드 입력 o   데이터를 키보드에서 입력할 때는 scanf함수를 사용한다. 정수값 하나 입력  여러 개의 정수값 입력  scanf함수 사용시 주의할 점
  • 78. o 78 g 정수값 입력 -1 o  키보드에서 입력하는 것은 모두 문자열이다. - 키보드에서 10을 입력하면 문자1과 문자0이 붙어 있는 문자열이 된다. - 따라서 키보드 입력을 수치값으로 변환하여 변수에 저장한다.  정수값을 입력 받을 때는 %d 변환 문자열을 사용한다.
  • 79. o 79 g 정수값 입력 -2 o  키보드로부터 변수에 정수값을 입력 받아 출력하는 예 #include <stdio.h> int main() { int num; printf(“정수값 하나를 입력하세요 : ”); scanf(“%d”, &num); printf(“입력 받은 정수값은 %d입니다.n”, num); return 0; } 정수값 하나를 입력하세요 : _ 정수값 하나를 입력하세요 : 10 (엔터) 정수값 하나를 입력하세요 : 10 입력 받은 정수값은 10입니다.
  • 80. o 80 g 정수값 입력 -3 o  여러 개의 변수에 값을 한번에 입력 받을 수 있다. - 이 때는 변수의 개수에 맞게 변환문자열을 사용한다. – 두 정수값을 입력할 때는 두 값 사이에 공백, 탭, 엔터키를 쳐서 두 값을 구분해야 한다. 정수값 두 개를 입력하세요 : 10 20 (엔터) 여기에서 하나 이상의 공백, 탭, 엔터키를 친다.
  • 81. o 81 g scanf 함수 사용시 주의할 점 o  변환문자열과 함께 불필요한 문자열을 사용하지 않는다. 출력과 입력을 printf(“정수값 하나를 입력하세요 : ”); 구분하여 작성한다. scanf(“%d”, &num);
  • 82. o 82 g [예제모음_01] 정수형을 출력하는 프로그램 o 예제설명 ① 정수형 숫자를 하나 입력받고, 10진수, 16진수, 8진수로 출력하는 프로그램을 작성해보자. 실행결과
  • 83. o 83 g [예제모음_01] 소스 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int data; 정수형 변수 선언 06 07 printf("정수를 입력하세요 ==> "); 08 scanf("%d", &data); 키보드로 정수를 입력 받음 09 10 printf("10진수 ==> %d n", data); 10진수 출력 11 printf("16진수 ==> %X n", data); 16진수 출력 12 printf("8진수 ==> %o n", data); 8진수 출력 13 }
  • 84. o 84 g [예제모음_02] 입력하는 정수의 진수 결정 o 예제설명 ① 10진수, 16진수, 8진수 중 어떤 진수의 값을 입력할지 결정하고, 해당 숫자를 입력한 후에 그것이 10진수, 16진수, 8진수로 어떤 숫자일지를 출력하는 프로그램이다. 실행결과
  • 85. o 85 g [예제모음_02] 소스 o 01 #include <stdio.h> 02 03 int main() 04 { 05 int type, data; 06 07 printf("입력진수 결정 <1>10 <2>16 <3>8 : "); 08 scanf("%d", &type); 키보드로 숫자를 입력받음 09 10 printf("값 입력 : "); 11 12 if(type == 1) 입력값이 1이면 10진수를 입력받음 13 { scanf("%d", &data); } 14 15 if(type == 2) 16 { scanf("%x", &data); } 입력값이 2이면 16진수를 입력받음
  • 86. o 86 g [예제모음_02] 소스 o 17 18 19 if(type == 3) { scanf("%o", &data); } 입력값이 3이면 8진수를 입력받음 20 21 printf("10진수 ==> %d n", data); 입력받은 data 값을 8, 10, 16진수로 22 printf("16진수 ==> %X n", data); 변환하여 출력 23 printf("8진수 ==> %o n", data); 24 }
  • 87. o 87 g [예제모음_03] 데이터형의 크기 확인 o 예제설명 ① sizeof( ) 함수를 사용해서 각 데이터형의 크기를 확인하는 프로그램이다. 실행결과
  • 88. o 88 g [예제모음_03] 소스 o 01 #include <stdio.h> 02 03 int main() 04 { sizeof() 함수로 각 데이터형의 크기 출력 05 printf("int형의 크기 ==> %dn", sizeof(int)); 06 printf("unsigned int형의 크기 ==> %dn", sizeof(unsigned int)); 07 printf("short형의 크기 ==> %dn", sizeof(short)); 08 printf("unsigned short형의 크기 ==> %dn", sizeof(unsigned short)); 09 printf("long int형의 크기 ==> %dn", sizeof(long int)); 10 printf("unsigned long int형의 크기 ==> %dn", sizeof(unsigned long int)); 11 printf("float형의 크기 ==> %dn", sizeof(float)); 12 printf("double형의 크기 ==> %dn", sizeof(double)); 13 printf("long double형의 크기 ==> %dn", sizeof(long double)); 14 printf("char형의 크기 ==> %dn", sizeof(char)); 15 printf("unsigned char형의 크기 ==> %dn", sizeof(unsigned char)); 16 }
  • 89. o 89 g 요약 o printf() 함수 ① 모니터에 뭔가를 출력하는 역할 ② printf(“서식”, 인자들…) 사용 ③ 정수 : %d, 실수 : %f, 문자: %c, 문자열: %s 사용 ① ‘%5d‟ 서식을 사용하면5자리로 정수를 출력한다. printf() 함수의 ② ‘%7.3f‟ 서식을 사용하면 전체7자리에 소수점 아래 3자리 실수를 서식 출력한다. ③ 기타 서식 : ‘n‟(새로운 줄로 이동), „t‟(다음 탭으로 이동), „‟( 출력) ① 왼편에는 반드시 변수가 와야 한다 변수에 값 ② 오른쪽은 상수, 변수, 계산값 등 무엇이 오든 상관없다. 대입 ① 컴퓨터에서는 2진수를 사용, 2진수 4자리를 묶은 것이 16진수 데이터 형식 ② 정수 데이터 형식 : short, int, long ③ 부호없이 사용하려면 앞에 unsigned를 붙임 ④ 실수 데이텨 형식 : float, double ⑤ 문자 하나를 저장하는 형식 : char ⑥ 여러 글자를 저장하는 데이터 형식은 문자열 배열 사용 ⑦ 문자열 길이 : 실제 문자열 길이 + 1(널 문자)