Presentation is loading. Please wait.

Presentation is loading. Please wait.

3. printf()와 데이터 형식.

Similar presentations


Presentation on theme: "3. printf()와 데이터 형식."— Presentation transcript:

1 3. printf()와 데이터 형식

2 이 장에서 다룰 내용 printf() 함수의 기본 형태 1. 2. printf() 함수의 서식 지정 변수의 이해 3. 4. 데이터 형식과 배열

3 01_printf() 함수의 기본 형태 기본적인 printf() 함수 사용법 모니터 상에 따옴표 출력
서식에 따라 다른 출력 결과 %d : 정수(decimal)를 의미 서식의 개수와 따옴표 뒤에 나오는 숫자의 개수는 같아야 함 문자 100 (일 영영) 숫자 100

4 [기본예제 3-1] printf() 함수 사용 예 ①
01 #include <stdio.h> 02 03 int main() 04 { 05 printf(" "); 06 printf("\n"); 07 printf("%d", ); 08 printf("\n"); 09 } 모두 글자 계산 결과를 숫자로 출력

5 [기본예제 3-2] printf() 함수 사용 예 ②
01 #include <stdio.h> 02 03 int main() 04 { 05 printf("%d", 100, 200); 06 printf("\n"); 07 printf("%d %d", 100); 08 printf("\n"); 09 } %d는 하나, 숫자는 두 개 %d는 두 개, 숫자는 하나 수정 서식의 개수와 숫자의 개수가 맞지 않는 경우

6 [기본예제 3-3] 서식을 사용한 출력 예 ① 01 #include <stdio.h> 02 03 int main()
04 { 05 printf("%d / %d = %d", 100, 200, 0.5); 06 printf("\n"); 07 } %d 세 개와 숫자 세 개 사용

7 02_printf() 함수의 서식 지정 서식과 숫자의 불일치 상황

8 02_printf() 함수의 서식 지정 자주 사용되는 서식 서식 값의 예 설명 %d, %X, %o 10, 100, 1234
정수(10진수, 16진수, 8진수) %f 또는 %lf 0.5 , 1.0 , 3.14 실수(소수점이 붙은 수) %c ‘a’, ‘b’, ‘F’ 문자. 꼭 한 글자여야 하고, ‘ ’로 싸여 있어야 함 %s “안녕”, “abcdefg”, “a” 문자열. 한 글자 이상이며, “ ”로 싸여 있어야 함

9 [기본예제 3-4] 서식을 사용한 출력 예 ② 01 #include <stdio.h> 02 03 int main()
04 { 05 printf("%d / [ ① ] = [ ② ] \n", 100, 200, 0.5) ; 06 printf("[ ③ ] %c \n", 'a', 'K') ; 07 printf("%s %s \n", "안녕", "C 언어"); 08 } %d %f 정수 두개와 실수 한 개 출력 %c 문자 두 개 출력 문자열 두 개 출력

10 02_printf() 함수의 서식 지정 자릿수를 맞춘 출력(정수형)

11 02_printf() 함수의 서식 지정 자릿수를 맞춘 출력(실수형)

12 02_printf() 함수의 서식 지정 자릿수를 맞춘 출력(문자형)

13 [기본예제 3-5] 다양한 서식 활용 예 ① 01 #include <stdio.h> 02 03 int main()
04 { 05 06 printf("%d\n", 123); 07 printf("%5d\n", 123); 08 printf("%05d\n", 123); 09 10 printf("%f\n", ); 11 printf("%7.1f\n", ); 12 printf("%7.3f\n", ); 13 14 printf("%s\n", "Basic-C"); 15 printf("%10s\n", "Basic-C"); 16 } 정수형 서식 활용 실수형 서식 활용 문자형 서식 활용

14 02_printf() 함수의 서식 지정 다양한 기능의 서식 문자 서식 값의 예 설명 \n 새로운 줄로 이동
Enter 키를 누른 효과 \t 다음 탭으로 이동 Tab 키를 누른 효과 \b 뒤로 한 칸 이동 Back Space 키를 누른 효과 \r 줄의 맨 앞으로 이동 Home 키를 누른 효과 \a ‘삑’ 소리를 냄 \\ \를 출력 \' '를 출력 \" "를 출력

15 [기본예제 3-6] 다양한 서식 활용 예 ② 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("\a\a\a삐소리 3번 \n"); 10 printf("글자가 \"강조\"되는 효과 \n"); 11 printf("\\\\\\ 역슬래쉬 세개 출력 \n"); 12 }

16 03_변수의 이해 변수 프로그램을 작성하려면 변수 선언이 먼저 선행되어야 함 소수점이 없는 값과 소수점이 있는 값을 담는 변수
데이터 형식에 따라 그릇의 크기가 다름 int a; float b;

17 03_변수의 이해 다양한 변수 선언 방식 변수 선언 예 = int a; int b; int a, b; int a;
① 가능 ② 가능 ③ 불가능 int a; float b; int c; float d; int a, c; float b, d; int a, float b; int c, float d;

18 03_변수의 이해 변수에 값을 넣는 방법 = 변수 a에 정수 100을 대입 변수 b에 실수 123.45를 대입 선언
int a; float b; a = 100; b = ; int a = 100; float b = ; = int a = 100, b = 200;

19 [기본예제 3-7] 변수에 값 대입하기 01 #include <stdio.h> 02 03 int main()
04 { 05 int a; 06 float b; 07 08 a = ; 09 b = 200; 10 11 printf ("a의 값 ==> %d \n", a); 12 printf ("b의 값 ==> %f \n", b); 13 } 정수형 변수 선언 실수형 변수 선언 정수형 변수에 실수 대입 실수형 변수에 정수 대입

20 03_변수의 이해 지정된 데이터 형식을 무시한 값 대입 8행 9행

21 [응용예제 3-8] 서식을 사용한 출력 예 ① 01 #include <stdio.h> 02 03 int main()
04 { 05 int a , b; 06 float c, d; 07 08 a = 100; 09 [ ① ] 10 11 c = 111.1; 12 [ ② ] 13 14 printf ("a, b의 값 ==> %d, %d \n", a, b); 15 printf ("c, d의 값 ==> %5.1f, %5.1f \n", c, d); 16 } 정수 변수 a, b 정수 변수 c, d a에 100 대입 b = a; b에 a 값 대입 c에 대입 d = c; d에 c 값 대입

22 03_변수의 이해 변수에 변수를 대입하는 예 (1) 8행~9행 : a = 100; b = a;

23 [응용예제 3-9] 변수에 변수를 대입하는 예 ② 01 #include <stdio.h> 02
03 int main() 04 { 05 int a , b , c , d ; 06 07 a = ; 08 b = a + 100; 09 c = a + b ; 10 [ ① ] 11 printf ("a, b , c , d의 값 ==> %d , %d , %d , %d \n", a, b, c, d); 12 13 [ ② ] 14 printf ("a, b , c , d의 값 ==> %d , %d , %d , %d \n", a, b, c, d); 15 a에 계산 결과 대입 b에 a+100 결과 대입 c에 a+b-100 결과 대입 d = a + b + c; d에 a+b+c 결과 대입 a = b = c = d = 100; a, b, c, d에 모두 100을 대입

24 [응용예제 3-9] 변수에 변수를 대입하는 예 ② 16 a = 100; 17 a = a + 200;
18 printf ("a의 값 ==> %d \n", a); 19 } a에 100 대입 a에 a 값 대입

25 03_변수의 이해 변수에 변수를 대입하는 예 (2) 7행 : a = ; 8행 : b = a + 100;

26 03_변수의 이해 = 9행, 10행도 이와 같은 과정을 거침 13행 : a = b = c = d = 100; d = 100;

27 03_변수의 이해 대입 연산자와 변수의 위치 × 10 = 100; a = 100;

28 04_데이터 형식 비트 컴퓨터에서 표현하는 가장 작은 단위 전기 스위치와 같은 개념으로 0(On)과 1(Off)만 존재
하나의 비트로 표현할 수 있는 가짓수는

29 04_데이터 형식 진수 2진수 : 표현 가능한 숫자 0, 1 10진수 : 표현 가능한 숫자 0~9
16진수 : 표현 가능한 숫자 0~9, A~F 진수를 구분하여 표기하는 방법 2진수 : 102 10진수 : 1010 16진수 : 1016 십진수 2진수 16진수 00 0000 01 0001 1 02 0010 2 03 0011 3 04 0100 4 05 0101 5 06 0110 6 07 0111 7 08 1000 8 09 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F

30 04_데이터 형식 바이트 8개의 비트가 합쳐진 단위 비트수 바이트수 개수 2진수 10진수 16진수 1 - 21 = 2 0 ~1
0 ~ 1 2 22 = 4 0 ~11 0 ~ 3 0 ~ 4 4 24 = 16 0 ~1111 0 ~ 15 0 ~ F 8 28 = 256 0 ~ 0 ~ 255 0 ~ FF 16 216 = 65,536 0 ~ 0 ~ 63,355 0 ~ FFFF 32 232 = 약 42억 0 ~ … 0 ~ 약 42억 0 ~ FFFF FFFF 64 264 = … 0 ~ … … 0 ~ 아주 큰 수 0 ~ … …

31 04_데이터 형식 진수의 변환 연습 2진수  10진수 2진수의 맨 뒤에서부터 각 자리에 해당하는 가중치(20, 21, 22,…)를 곱한다 각 자리의 결과를 모두 합한다

32 04_데이터 형식 2진수  16진수  10진수 2진수의 네 자리는 16진수의 한 자리에 해당
16진수를 10진수로 바꾸려면 각 자리의 가중치(160, 161,…)를 곱한다 각 자리의 결과를 모두 합한다

33 04_데이터 형식 10진수  2진수 10진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.

34 04_데이터 형식 16진수  2진수 16진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.

35 04_데이터 형식 16진수  2진수 간편 변환 16진수 1자리 = 2진수 4자리 해당 16진수 2진수 0000 1 0001
0000 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

36 04_데이터 형식 16진수  2진수 간편 변환 16진수를 계속 2로 나눠가면서 몫과 나머지를 구한다.

37 04_데이터 형식 숫자형 데이터 형식 소수점이 없는 정수형 데이터 형식 의미 크기 값의 범위 short 작은 정수형 2byte
-215 (-32768)~ (32767) unsigned short 부호없는 작은 정수형 0~ (65535) int 정수형 4byte -231 (약 -21억)~ (약 21억) unsigned int 부호없는 정수형 0~ (약 42억) long int 큰 정수형 -231~ unsigned long 0~

38 [기본예제 3-10] 소수점이 없는 정수형 01 #include <stdio.h> 02 03 int main()
04 { 05 int a=100 , b=200; 06 float result ; 07 08 result = a / b ; 09 10 printf ("%f \n", result); 11 } 정수형 변수 a, b에 값 지정 실수형 변수 result 선언 a/b를 실수형 변수 result에 대입 (0.5를 예상함)

39 04_데이터 형식 정수형의 나눗셈

40 04_데이터 형식 소수점이 있는 정수형 데이터 형식 의미 크기 값의 범위 float 실수형 4byte
약 -3.4×1038 ~ 약 3.4×1038 double 큰 실수형 8byte 약 -1.79×1038 ~ 약 1.79×1038 long double

41 [기본예제 3-11] 소수점이 있는 정수형 01 #include <stdio.h> 02 03 int main()
04 { 05 float a = ; 06 double b = ; 07 08 printf("%30.25f \n", a); 09 printf("%30.25f \n", b); 10 } float형 변수 a에 정밀도 25자리 입력 double형 변수 b에 정밀도 25자리 입력

42 04_데이터 형식 문자형 데이터 형식 = 아스키 코드 한 글자를 뜻하는 문자형 예 char ch = ‘a’;
의미 크기 0 ~ 9 48 ~ 47 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 0 ~ 255

43 [기본예제 3-12] 문자형 변수 사용 예 ① 01 #include <stdio.h> 02 03 int main()
04 { 05 char a, b, c; 06 07 a = 'A'; 08 printf("%c \n", a); 09 printf("%d \n", a); 10 11 b = 'a'; 12 c = b + 5; 13 printf("%c \n", b); 14 printf("%c \n", c); 15 16 c = 90; 17 printf("%c \n", c); 18 } 문자형 변수 3개 선언 문자형 변수 a에‘A’대입 문자형 변수 a를 문자형과 정수형으로 출력 b에‘a’ 대입 c에 b+5 결과 대입 문자형 변수 c에 숫자 90 대입

44 04_데이터 형식 서식에 따라 달라지는 출력 결과

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

46 04_데이터 형식 문자열의 기본 형식 문자열은 문자를 여러 개 모아 연결한 형태 널(null) 문자 : \0
Hanbit 이라는 문자열 저장 널(null) 문자 : \0 문자열의 끝을 알려주는 역할 화면에 출력되지 않음 문자열은 문자 배열을 사용

47 04_데이터 형식 문자열의 대입과 출력 strcpy() 함수로 문자열 대입 문자열 출력

48 [기본예제 3-14] 문자열 형식 사용 예 ① 01 #include <stdio.h> 02 03 int main()
04 { 05 char str1[10]; 06 char str2[10]; 07 char str3[10] = "CookBook"; 08 09 strcpy(str1, "Basic-C"); 10 strcpy(str2, str3); 11 12 printf("str1 ==> %s \n", str1); 13 printf("str2 ==> %s \n", str2); 14 printf("str3 ==> %s \n", str3); 15 } 문자형 배열 str1, str2 선언 문자형 배열 str3의 선언과 문자열 대입 str1에 문자열 대입 str3을 str2에 대입 문자형 배열 str1, str2, str3 출력

49 04_데이터 형식 [기본예제 3-14]의 문자열 선언 상태

50 [응용예제 3-15] 문자열 형식 사용 예 ② 01 #include <stdio.h> 02 03 int main()
04 { 05 char str[10] = " "; 06 07 printf("str ==> %s \n", str); 08 09 str[0] = 'I'; 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); 18 19 printf("str[7] ==> %c \n", [ ① ] ); 20 21 printf("str[50] ==> %c \n", [ ② ] ); 22 } str 배열 10자리에 10글자 대입 str 배열에 글자 입력 str 배열 출력 str[7] str[7]의 내용만 출력 str[50] str[50]의 내용만 출력

51 04_데이터 형식 5행 str 배열을 선언하면서 문자열 대입 널 문자가 없기 때문에 출력 시 문제 발생

52 04_데이터 형식 9행~15행을 실행한 후의 str 배열

53 [예제모음_03] 정수형을 출력하는 프로그램 실행결과 예제설명
정수형 숫자를 하나 입력받고, 10진수, 16진수, 8진수로 출력하는 프로그램을 작성해보자. 실행결과

54 예제모음_03 소스 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); 11 printf("16진수 ==> %X \n", data); 12 printf("8진수 ==> %o \n", data); 13 } 정수형 변수 선언 키보드로 정수를 입력받음 10진수 출력 16진수 출력 8진수 출력

55 [예제모음_04] 입력하는 정수의 진수 결정 실행결과 예제설명
10진수, 16진수, 8진수 중 어떤 진수의 값을 입력할지 결정하고, 해당 숫자를 입력한 후에 그것이 10진수, 16진수, 8진수로 어떤 숫자일지를 출력하는 프로그램이다. 실행결과

56 예제모음_04 소스 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) 13 { scanf("%d", &data); } 14 15 if(type == 2) 16 { scanf("%x", &data); } 키보드로 숫자를 입력받음 입력값이 1이면 10진수를 입력받음 입력값이 2이면 16진수를 입력받음

57 예제모음_04 소스 17 18 if(type == 3) 19 { scanf("%o", &data); } 20
21 printf("10진수 ==> %d \n", data); 22 printf("16진수 ==> %X \n", data); 23 printf("8진수 ==> %o \n", data); 24 } 입력값이 3이면 8진수를 입력받음 입력받은 data 값을 8, 10, 16진수로 변환하여 출력

58 [예제모음_05] 데이터형의 크기 확인 실행결과 예제설명
sizeof( ) 함수를 사용해서 각 데이터형의 크기를 확인하는 프로그램이다. 실행결과

59 예제모음_05 소스 01 #include <stdio.h> 02 03 int main() 04 {
05 printf("int형의 크기 ==> %d\n", sizeof(int)); 06 printf("unsigned int형의 크기 ==> %d\n", sizeof(unsigned int)); 07 printf("short형의 크기 ==> %d\n", sizeof(short)); 08 printf("unsigned short형의 크기 ==> %d\n", sizeof(unsigned short)); 09 printf("long int형의 크기 ==> %d\n", sizeof(long int)); 10 printf("unsigned long int형의 크기 ==> %d\n", sizeof(unsigned long int)); 11 printf("float형의 크기 ==> %d\n", sizeof(float)); 12 printf("double형의 크기 ==> %d\n", sizeof(double)); 13 printf("long double형의 크기 ==> %d\n", sizeof(long double)); 14 printf("char형의 크기 ==> %d\n", sizeof(char)); 15 printf("unsigned char형의 크기 ==> %d\n", sizeof(unsigned char)); 16 } sizeof() 함수로 각 데이터형의 크기 출력

60 [예제모음_06] 데이터형의 크기 확인 실행결과 예제설명
10글자 미만의 문자열을 입력받고, 입력받은 문자열의 순서를 거꾸로 출력해보자(아직 배우지 않은 내용이지만, 나중을 위해 미리 살펴보자). 실행결과

61 예제모음_06 소스 01 #include <stdio.h> 02 03 int main() 04 {
05 char str[10] = " "; 06 int i; 07 08 printf("문자열을 입력 ==> "); 09 scanf("%s", str); 10 11 for(i = sizeof(str) - 1 ; i >= 0 ; i--) 12 { 13 printf ("%c", str[i]); 14 } 15 printf("\n"); 16 } str 배열을 공백으로 초기화 str 배열에 문자열 입력 str 배열에 들어있는문자열의 개수만큼 반복하며 한 글자씩 출력

62 요약 printf() 함수 printf() 함수의 서식 변수에 값 대입 데이터 형식 모니터에 뭔가를 출력하는 역할
정수 : %d, 실수 : %f, 문자: %c, 문자열: %s 사용 printf() 함수 ① ‘%5d’ 서식을 사용하면5자리로 정수를 출력한다. ② ‘%7.3f’ 서식을 사용하면 전체7자리에 소수점 아래 3자리 실수를 출력한다. ③ 기타 서식 : ‘\n’(새로운 줄로 이동), ‘\t’(다음 탭으로 이동), ‘\\’(\ 출력) printf() 함수의 서식 왼편에는 반드시 변수가 와야 한다 오른쪽은 상수, 변수, 계산값 등 무엇이 오든 상관없다. 변수에 값 대입 컴퓨터에서는 2진수를 사용, 2진수 4자리를 묶은 것이 16진수 정수 데이터 형식 : short, int, long 부호없이 사용하려면 앞에 unsigned를 붙임 실수 데이텨 형식 : float, double 문자 하나를 저장하는 형식 : char 여러 글자를 저장하는 데이터 형식은 문자열 배열 사용 문자열 길이 : 실제 문자열 길이 + 1(널 문자) 데이터 형식


Download ppt "3. printf()와 데이터 형식."

Similar presentations


Ads by Google