Upload
dktm
View
375
Download
2
Embed Size (px)
Citation preview
2013 년 1 학기 프로그래밍 및 실습Chap. 2 C 프로그래밍 기초
Bo-Kug Seo ([email protected])Soongsil Univ. MMS Lab.
Logo
2
이 장에서 다룰 내용
프로그램을 작성할 때 꼭 필요한 내용들
printf() 함수의 기본 형태
printf() 함수의 서식 지정
scanf() 함수의 사용
변수의 이해
데이터 형식과 배열
Logo프로그램 작성 순서 복습 프로그래밍 작성 순서 요약
– 프로젝트 만들기 : 소스 파일보다 프로젝트를 먼저 생성해야 함
– 코딩 : C 컴파일러가 알아들을 수 있는 형식으로 문서 작성
– 빌드 : 컴파일과 링크를 합친 개념• 컴파일 : 소스를 컴퓨터가 이해하는 오브젝트 파일로 변환• 링크 : 여러 개의 오브젝트 파일을 하나의 실행파일로 묶음
– 실행 : 빌드의 결과인 .exe 파일을 작동
3
Logo프로그램의 구성과 실행과정 프로그램은 함수들로 만들어진다 .
– 함수는 입력되는 데이터를 가공하여 특별한 출력을 만들어내는 단위코드이다 .
메인함수가 다른 함수들을 호출하여 실행된다 .– 세 개의 함수로 구성된 프로그램 (10 과 20 을 더하여 화면에 출력 ).
4
Logo메인함수 프로그램에는 반드시 하나의 메인함수가 있어야 한다 .
– 메인함수 하나로 작성된 10 과 20 을 더하는 프로그램
함수는 머리 (head) 와 몸통 (body) 으로 구성된다 .
5
Logo함수의 머리 함수의 머리에는 세가지 정보를 표현한다 .
– 함수의 기능에 맞는 함수의 이름– 함수가 기능을 수행하는 데 필요한 데이터의 개수와 형태– 함수가 기능을 수행하고 나서 돌려주는 값의 형태
10 과 20 을 더하는 기능을 가진 함수의 예
메인함수의 머리는 데이터의 개수와 형태가 생략된 것이다 .
6
int main( )
Logo함수의 몸통 함수의 몸통에는 함수가 수행하는 작업을 기술한다 .
– 함수의 머리 다음 줄부터 중괄호를 열어서 시작한다 .– 실행문장들은 중괄호 안쪽으로 들여쓰기 한다 .– 실행문장은 한 줄에 한 문장씩 작성하며 문장 끝에 세미콜론을 붙인다 .– 함수 내에서 실행문장은 위에서부터 차례로 실행된다 .– 함수를 끝내기 전에 return 문을 사용하여 정수값을 돌려준다 .
7
실행문장은 위에서 아래로하나씩 실행된다 .
Logo
8
프로그램을 작성할 때 꼭 필요한 내용들
프로그램을 작성할 때는 합리적 순서를 따라야 한다 .
관례에 따라 코딩 형식을 지켜야 한다 .
주석은 선택이 아니다 필수다 .
식별자는 의미를 부여하게 만든다 .
Logo
9
프로그램을 작성하는 순서 데이터를 입력하기 전에 반드시 입력할 데이터를 저장할 기억공간이
있어야 한다 . 즉 , 변수선언이 입력문 전에 있어야 한다 .
일반적인 프로그램 작성의 순서
Logo
10
코딩형식 프로그램의 문장을 구분하는 것은 세미콜론 (;) 이다 .
– 한 줄에 여러 문장을 작성해도 되고 한 문장을 여러 줄에 작성해도 된다 .
프로그램은 알아보기 쉽게 관례에 따라 형식을 지킨다 .
Logo
11
주석문 -1
주석문은 프로그램의 가독성을 높인다 . 한 줄 주석문 (//)
– 주석기호 이후 그 줄 끝까지 모두 주석처리 된다 .
// **********************************************// 제 목 : 태권브이의 인공지능 프로그램// 날 짜 : 2080 년 가을// 작성자 : 김박사// **********************************************
#include <stdio.h>
int main(){ int left_fire; // 왼쪽 주먹 발사명령을 저장하기 위한 변수 ………
Logo
12
주석문 -2
여러 줄 주석문 (/* 주석 */)– 여러 줄을 한꺼번에 묶어서 주석처리 할 수 있다 .– “/*” 로 시작하여 “ */” 로 끝을 표시한다 .
// 메인함수가 전부 주석인 프로그램
#include <stdio.h>
/*int main(){ int left_fire; ………}*/
주석 시작
주석 끝
Logo
13
식별자 -1 식별자 (identifier) 는 변수명 , 함수명 등으로 사용된다 . 식별자를 만드는 규칙
– 알파벳 대문자 A~Z, 소문자 a~z, 숫자 0~9, 밑줄 _(underline) 으로 구성된다 .– 첫 문자에는 숫자가 올 수 없다 .– 대문자와 소문자는 서로 다른 식별자다 .
result Hong_gil_dong _p__q_num77KoreaEun_Ha_Cheol_Do_999
2002WorldCup
Ha-eun
Good_morning~
Doctor Kim
int ( 예약어 )
식별자 식별자가 아님
Logo
14
식별자 -2
예약어 (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
Logo
15
화면출력
데이터를 화면에 출력할 때는 printf() 함수를 사용한다 .
문자열 출력
정수값 출력
문자열과 정수값을 함께 출력
줄 바꾸어 출력
Logo
16
printf() 함수의 기본 형태 기본적인 printf() 함수 사용법
– 모니터 상에 따옴표 안의 내용을 출력
– 서식에 따라 다른 출력 결과
• %d : 정수 (decimal) 를 의미• 서식의 개수와 따옴표 뒤에 나오는 숫자의 개수는 같아야 함
문자 100 ( 일 영영 )
숫자 100
Logo
17
화면에 문자열 출력 문자열은 큰따옴표 (“ ”) 를 사용하여 표현한다 . 출력할 문자열을 printf 함수의 괄호 안에 넣어서 호출한다 .
printf 함수를 사용하기 위해서 stdio.h 헤더 파일을 include 한다 .
#include <stdio.h>
int main(){ printf(“perfect-C”); return 0;}
perfect-C화면출력
Logo
18
화면에 정수값 출력 -1
정수값을 출력할 때는 변환문자열 %d 를 사용한다 .
- printf 함수는 기본적으로 문자열만을 출력하므로 정수값을 출력할 때는 문자열로
변환시키는
과정이 필요하다 .
– 여러 개의 정수값을 출력할 때는 변환문자열을 그 수만큼 사용한다 .
10화면출력
10 20화면출력
Logo
19
화면에 정수값 출력 -2
– 수식의 결과 값을 바로 출력할 수 있다 .
30화면출력
Logo
20
화면에 문자열과 정수값을 한번에 출력 출력할 문자열 안에 변환문자열을 넣어 함께 사용한다 .
정수값이 여러 개라면 변환문자열도 그 개수에 맞게 사용한다 .
은하철도 999화면출력
10 과 20 의 합은 30 입니다 .화면출력
Logo
21
화면에 줄 바꾸어 출력 Printf 함수를 세 번 사용해도 줄이 바뀌지는 않는다 .
줄을 바꾸기 위해서는 줄바꿈 서식문자 \n 을 사용해야 한다 .
Logo
22
[ 기본예제 2-1] printf() 함수 사용 예01 #include <stdio.h>0203 int main()04 {05 printf("100+100");06 printf("\n");07 printf("%d", 100+100);08 printf("\n");09 }
모두 글자
계산 결과를 숫자로 출력
Logo
23
[ 기본예제 2-2] printf() 함수 사용 예01 #include <stdio.h>0203 int main()04 {05 printf("%d", 100, 200);06 printf("\n");07 printf("%d %d", 100);08 printf("\n");09 }
%d 는 하나 , 숫자는 두 개
%d 는 두 개 , 숫자는 하나
서식의 개수와 숫자의 개수가 맞지 않는 경우
수정
Logo
24
printf() 함수의 기본 형태
Logo
25
[ 기본예제 2-3] 서식을 사용한 출력 예01 #include <stdio.h>0203 int main()04 {05 printf("%d / %d = %d", 100, 200, 0.5);06 printf("\n");07 }
%d 세 개와 숫자 세 개 사용
Logo
26
printf() 함수의 서식 지정 서식과 숫자의 불일치 상황
Logo
27
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” 문자열 . 한 글자 이상이며 , “ ” 로 싸여 있어야
함
Logo
28
[ 기본예제 2-4] 서식을 사용한 출력 예01 #include <stdio.h>0203 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%c
%f문자 두 개 출력
문자열 두 개 출력
Logo
29
printf() 함수의 서식 지정 -1
자릿수를 맞춘 출력 ( 정수형 )
Logo
30
printf() 함수의 서식 지정 -2
자릿수를 맞춘 출력 ( 실수형 )
Logo
31
printf() 함수의 서식 지정 -3
자릿수를 맞춘 출력 ( 문자형 )
Logo
32
[ 기본예제 2-5] 다양한 서식 활용 예01 #include <stdio.h>0203 int main()04 {0506 printf("%d\n", 123);07 printf("%5d\n", 123);08 printf("%05d\n", 123);0910 printf("%f\n", 123.45);11 printf("%7.1f\n", 123.45);12 printf("%7.3f\n", 123.45);1314 printf("%s\n", "Basic-C");15 printf("%10s\n", "Basic-C");16 }
정수형 서식 활용
실수형 서식 활용
문자형 서식 활용
Logo
33
printf() 함수의 서식 지정 다양한 기능의 서식 문자
서식 값의 예 설명
\n 새로운 줄로 이동 Enter 키를 누른 효과
\t 다음 탭으로 이동 Tab 키를 누른 효과
\b 뒤로 한 칸 이동 Back Space 키를 누른 효과
\r 줄의 맨 앞으로 이동 Home 키를 누른 효과
\a ‘ 삑’ 소리를 냄
\\ \ 를 출력
\' ' 를 출력
\" " 를 출력
Logo
34
[ 기본예제 2-6] 다양한 서식 활용 예 01 #include <stdio.h>0203 int main()04 {0506 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 }
Logo
35
데이터의 저장
값을 저장하기 위해서는 변수를 사용해야 한다 .
변수의 선언
대입문 ( 변수에 값을 저장 )
초기화 ( 변수의 선언과 동시에 값을 저장 )
Logo
36
변수의 선언 변수는 데이터를 저장할 수 있는 메모리의 기억공간이다 .
컴파일러에게 형태와 이름을 알려준다 .– 변수의 형태 : 변수가 저장할 수 있는 값의 종류– 변수의 이름 : 사용할 메모리 기억공간의 이름
정수값을 저장하기 위해서는 int 예약어를 사용한다 .
같은 형태의 변수는 한번에 선언할 수 있다 .
Logo
37
변수의 이해 -1
변수– 프로그램을 작성하려면 변수 선언이 먼저 선행되어야 함– 소수점이 없는 값과 소수점이 있는 값을 담는 변수– 데이터 형식에 따라 그릇의 크기가 다름
int a; float b;
Logo
38
변수의 이해 -2
다양한 변수 선언 방식
변수 선언 예
int a;int b;
int a, b;=
int a;float b;int c;float d;
int a, c;float b, d;
int a, float b;int c, float d;
① 가능 ② 가능
③ 불가능
Logo
39
변수의 이해 -3
변수에 값을 넣는 방법– 변수 a 에 정수 100 을 대입– 변수 b 에 실수 123.45 를 대입
– 선언
• 예 ) a 와 b 가 모두 정수라면
int a;float b;a = 100;b = 123.45;
int a = 100;float b = 123.45;=
int a = 100, b = 200;
Logo
40
변수에 값을 저장 [ 대입문 ] -1 변수에 값을 저장할 때는 대입연산자 (=) 를 사용한다 .
– 대입연산자는 오른쪽의 값을 왼쪽의 변수에 저장한다 .
– 대입연산자 왼쪽에는 값을 저장할 기억공간 ( 변수 ) 이 와야 한다 .– 대입 연산자 오른쪽에 변수가 올 때는 그 값을 왼쪽의 변수에 복사하는 것이다 .
Logo
41
변수에 값을 저장 [ 대입문 ] -2– 변수를 사용하여 10 과 20 을 더해서 출력하는 프로그램
#include <stdio.h>
int main(){ int hap;
hap = 10 + 20; printf(“%d”, hap); return 0;}
Logo
42
초기화 변수를 선언하여 할당된 기억공간에는 쓰레기값 (garbage) 이 있다 .
초기화는 변수의 선언과 동시에 값을 저장하는 것이다 .
#include <stdio.h>
int main(){ int num;
printf(“ 쓰레기값 : %d\n”,
num); return 0;}
쓰레기값 : -858993460
Logo
43
[ 기본예제 2-7] 변수에 값 대입하기01 #include <stdio.h>0203 int main()04 {05 int a;06 float b;0708 a = 123.45;09 b = 200;1011 printf ("a 의 값 ==> %d \n", a);12 printf ("b 의 값 ==> %f \n", b);13 }
정수형 변수 선언
실수형 변수 선언
정수형 변수에 실수 대입
실수형 변수에 정수 대입
Logo
44
변수의 이해 -1
지정된 데이터 형식을 무시한 값 대입– 8 행
– 9 행
Logo
45
[응용예제 2-8] 서식을 사용한 출력 예01 #include <stdio.h>0203 int main()04 {05 int a , b;06 float c, d;0708 a = 100;09 [ ① ] 1011 c = 111.1;12 [ ② ]1314 printf ("a, b 의 값 ==> %d, %d \n", a, b);15 printf ("c, d 의 값 ==> %5.1f, %5.1f \n", c, d);16 }
정수 변수 a, b
b = a;
d = c;
정수 변수 c, d
a 에 100 대입
b 에 a 값 대입
c 에 111.1 대입
d 에 c 값 대입
Logo
46
변수의 이해 -2
변수에 변수를 대입하는 예 (1)– 8 행 ~9 행 : a = 100;
b = a;
• 변수 a 의 값 100 이 변수 b 에 들어감• 결국 변수 a 와 b 의 값이 같아짐
Logo
47
[응용예제 2-9] 변수에 변수를 대입하는 예 -101 #include <stdio.h>0203 int main()04 {05 int a , b , c , d ;0607 a = 100 + 100 ;08 b = a + 100;09 c = a + b - 100 ;10 [ ① ] 11 printf ("a, b , c , d 의 값 ==> %d , %d , %d , %d \n", a, b, c, d);1213 [ ② ] 14 printf ("a, b , c , d 의 값 ==> %d , %d , %d , %d \n", a, b, c, d);15
a 에 계산 결과 대입
d = a + b + c;
b 에 a+100 결과 대입
c 에 a+b-100 결과 대입
d 에 a+b+c 결과 대입
a = b = c = d = 100;
a, b, c, d 에 모두 100 을 대입
Logo
48
[응용예제 3-9] 변수에 변수를 대입하는 예 -216 a = 100;17 a = a + 200;18 printf ("a 의 값 ==> %d \n", a);19 }
a 에 100 대입
a 에 a 값 + 200 대입
Logo
49
변수의 이해 -3
변수에 변수를 대입하는 예 (2)– 7 행 : a = 100 + 100;
– 8 행 : b = a + 100;
Logo
50
변수의 이해 -4
– 9 행 , 10 행도 이와 같은 과정을 거침
– 13 행 : a = b = c = d = 100;
a = b = c = d = 100;
d = 100;c = d;b = c;a = b;
=
Logo
51
×변수의 이해 -5
대입 연산자와 변수의 위치
10 = 100; a = 100;
Logo
52
데이터 형식 -1
비트– 컴퓨터에서 표현하는 가장 작은 단위– 전기 스위치와 같은 개념으로 0(On) 과 1(Off) 만 존재
• 하나의 비트로 표현할 수 있는 가짓수는 2 가지
Logo
53
데이터 형식 -2
진수– 2 진수 : 표현 가능한 숫자 0, 1– 10 진수 : 표현 가능한 숫자 0~9– 16 진수 : 표현 가능한 숫자 0~9, A~F
– 진수를 구분하여 표기하는 방법• 2 진수 : 102
• 10 진수 : 1010
• 16 진수 : 1016
십진수 2 진수 16 진수
00 0000 0
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
Logo
54
데이터 형식 -3
바이트– 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 4232 = 약 42
억0 ~ … 0 ~ 약 42 억 0 ~ FFFF FFFF
64 8 264 = … 0 ~ … …0 ~ 아주 큰
수 0 ~ … …
Logo
55
데이터 형식 -4
진수의 변환 연습– 2 진수 10 진수
• 2 진수의 맨 뒤에서부터 각 자리에 해당하는 가중치 (20, 21, 22,…) 를 곱한다• 각 자리의 결과를 모두 합한다
Logo
56
데이터 형식 -5
– 2 진수 16 진수 10 진수• 2 진수의 네 자리는 16 진수의 한 자리에 해당• 16 진수를 10 진수로 바꾸려면 각 자리의 가중치 (160, 161,…) 를 곱한다• 각 자리의 결과를 모두 합한다
Logo
57
데이터 형식 -6
– 10 진수 2 진수• 10 진수를 계속 2 로 나눠가면서 몫과 나머지를 구한다 .
Logo
58
데이터 형식 -7 – 16 진수 2 진수
• 16 진수를 계속 2 로 나눠가면서 몫과 나머지를 구한다 .
Logo
59
데이터 형식 -8
– 16 진수 2 진수 간편 변환• 16 진수 1 자리 = 2 진수 4 자리 해당
16 진수 2 진수
0 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
Logo
60
데이터 형식 -9
– 16 진수 2 진수 간편 변환• 16 진수를 계속 2 로 나눠가면서 몫과 나머지를 구한다 .
Logo
61
데이터 형식 -10
숫자형 데이터 형식– 소수점이 없는 정수형
데이터 형식 의미 크기 값의 범위
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
Logo
62
[ 기본예제 2-10] 소수점이 없는 정수형01 #include <stdio.h>0203 int main()04 {05 int a=100 , b=200;06 float result ;0708 result = a / b ;0910 printf ("%f \n", result);11 }
정수형 변수 a, b 에 값 지정
실수형 변수 result 선언
a/b 를 실수형 변수 result에 대입 (0.5 를 예상함 )
Logo
63
데이터 형식 -11
– 정수형의 나눗셈
Logo
64
데이터 형식 -12
– 소수점이 있는 정수형
데이터 형식 의미 크기 값의 범위
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
Logo
65
[ 기본예제 2-11] 소수점이 있는 정수형01 #include <stdio.h>0203 int main()04 {05 float a = 0.1234567890123456789012345;06 double b = 0.1234567890123456789012345;0708 printf("%30.25f \n", a);09 printf("%30.25f \n", b);10 }
float 형 변수 a 에 정밀도 25 자리 입력double 형 변수 b 에 정밀도 25자리 입력
Logo
66
데이터 형식 -13
문자형 데이터 형식– 아스키 코드
• 예
– 한 글자를 뜻하는 문자형
데이터 형식 의미 크기
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
Logo
67
[ 기본예제 2-12] 문자형 변수 사용 예 01 #include <stdio.h>0203 int main()04 {05 char a, b, c;0607 a = 'A';08 printf("%c \n", a);09 printf("%d \n", a);1011 b = 'a';12 c = b + 5;13 printf("%c \n", b);14 printf("%c \n", c);1516 c = 90;17 printf("%c \n", c);18 }
문자형 변수 3 개 선언
문자형 변수 a 에‘ A’ 대입
문자형 변수 a 를 문자형과정수형으로 출력
b 에‘ a’ 대입
c 에 b+5 결과 대입
문자형 변수 c 에 숫자 90 대입
Logo
68
데이터 형식 -14
– 서식에 따라 달라지는 출력 결과
Logo
69
[응용예제 2-13] 문자형 변수 사용 예 01 #include <stdio.h>0203 int main()04 {05 int a, b;06 char c, d;0708 a = 0x41;09 b = 0x50;1011 [ ① ] 1213 c = a;14 [ ② ] 1516 d = '#';17 printf("%c 의 ASCII 값은 %d 입니다 \n", d, d);18 }
정수형 변수 a 에 16 진수 0x41 대입
printf("%c \n", b);
정수형 변수 b 에 16 진수 0x50 대입
문자형 변수 c 에 정수형 변수 a 값 대입
정수형 변수 b 를 문자형으로 출력
printf("%c \n", c); 문자형 변수 c 를 문자형으로 출력
문자형 변수 d 에 문자 대입
문자형 변수 d 를 두 가지 형태로 출력
Logo
70
데이터 형식 -15
문자열의 기본 형식– 문자열은 문자를 여러 개 모아 연결한 형태
• Hanbit 이라는 문자열 저장
– 널 (null) 문자 : \0• 문자열의 끝을 알려주는 역할• 화면에 출력되지 않음
– 문자열은 문자 배열을 사용
Logo
71
데이터 형식 -16
문자열의 대입과 출력– strcpy() 함수로 문자열 대입
– 문자열 출력
Logo
72
[ 기본예제 2-14] 문자열 형식 사용 예01 #include <stdio.h>0203 int main()04 {05 char str1[10];06 char str2[10];07 char str3[10] = "CookBook";0809 strcpy(str1, "Basic-C");10 strcpy(str2, str3);1112 printf("str1 ==> %s \n", str1);13 printf("str2 ==> %s \n", str2);14 printf("str3 ==> %s \n", str3);15 }
문자형 배열 str1, str2 선언
str1 에 문자열 대입
str3 을 str2 에 대입
문자형 배열 str1, str2, str3 출력
문자형 배열 str3 의 선언과 문자열 대입
Logo
73
데이터 형식 -17– [ 기본예제 3-14] 의 문자열 선언 상태
Logo
74
[응용예제 2-15] 문자열 형식 사용 예01 #include <stdio.h>0203 int main()04 {05 char str[10] = "0123456789";0607 printf("str ==> %s \n", str);0809 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';1617 printf("str ==> %s \n", str);1819 printf("str[7] ==> %c \n", [ ① ] );2021 printf("str[50] ==> %c \n", [ ② ] );22 }
str 배열 10 자리에 10 글자 대입
str[7]
str 배열에 글자 입력
str 배열 출력
str[7] 의 내용만 출력
str[50] 의 내용만 출력str[50]
Logo
75
데이터 형식 -18
– 5 행• str 배열을 선언하면서 문자열 대입• 널 문자가 없기 때문에 출력 시 문제 발생
Logo
76
데이터 형식 -19
– 9 행 ~15 행을 실행한 후의 str 배열
Logo
77
키보드 입력
데이터를 키보드에서 입력할 때는 scanf 함수를 사용한다 .
정수값 하나 입력
여러 개의 정수값 입력
scanf 함수 사용시 주의할 점
Logo
78
정수값 입력 -1
키보드에서 입력하는 것은 모두 문자열이다 .
- 키보드에서 10 을 입력하면 문자 1 과 문자 0 이 붙어 있는 문자열이 된다 . - 따라서 키보드 입력을 수치값으로 변환하여 변수에 저장한다 .
정수값을 입력 받을 때는 %d 변환 문자열을 사용한다 .
Logo
79
정수값 입력 -2
키보드로부터 변수에 정수값을 입력 받아 출력하는 예#include <stdio.h>
int main(){ int num;
printf(“ 정수값 하나를 입력하세요 : ”); scanf(“%d”, &num); printf(“ 입력 받은 정수값은 %d 입니다 .\n”, num); return 0;}
정수값 하나를 입력하세요 : _ 정수값 하나를 입력하세요 : 10 (엔터 )
정수값 하나를 입력하세요 : 10
입력 받은 정수값은 10 입니다 .
Logo
80
정수값 입력 -3 여러 개의 변수에 값을 한번에 입력 받을 수 있다 .
- 이 때는 변수의 개수에 맞게 변환문자열을 사용한다 .
– 두 정수값을 입력할 때는 두 값 사이에 공백 , 탭 , 엔터키를 쳐서 두 값을 구분해야
한다 .정수값 두 개를 입력하세요 : 10 20 (엔터 )
여기에서 하나 이상의 공백 , 탭 , 엔터키를 친다 .
Logo
81
scanf 함수 사용시 주의할 점 변환문자열과 함께 불필요한 문자열을 사용하지 않는다 .
printf(“ 정수값 하나를 입력하세요 : ”);
scanf(“%d”, &num);
출력과 입력을 구분하여 작성한다 .
Logo
82
[ 예제모음 _01] 정수형을 출력하는 프로그램
실행결과
예제설명
① 정수형 숫자를 하나 입력받고 , 10 진수 , 16 진수 , 8 진수로 출력하는 프로그램을 작성해보자 .
Logo
83
[ 예제모음 _01] 소스01 #include <stdio.h>0203 int main()04 {05 int data;0607 printf(" 정수를 입력하세요 ==> ");08 scanf("%d", &data);0910 printf("10 진수 ==> %d \n", data);11 printf("16 진수 ==> %X \n", data);12 printf("8 진수 ==> %o \n", data);13 }
정수형 변수 선언
키보드로 정수를 입력 받음
10 진수 출력
16 진수 출력
8 진수 출력
Logo
84
[ 예제모음 _02] 입력하는 정수의 진수 결정
실행결과
예제설명
① 10 진수 , 16 진수 , 8 진수 중 어떤 진수의 값을 입력할지 결정하고 , 해당 숫자를 입력한 후에 그것이 10 진수 , 16 진수 , 8 진수로 어떤 숫자일지를 출력하는 프로그램이다 .
Logo
85
[ 예제모음 _02] 소스01 #include <stdio.h>0203 int main()04 {05 int type, data;0607 printf(" 입력진수 결정 <1>10 <2>16 <3>8 : ");08 scanf("%d", &type);0910 printf(" 값 입력 : ");1112 if(type == 1)13 { scanf("%d", &data); }1415 if(type == 2)16 { scanf("%x", &data); }
키보드로 숫자를 입력받음
입력값이 1 이면 10 진수를 입력받음
입력값이 2 이면 16 진수를 입력받음
Logo
86
[ 예제모음 _02] 소스1718 if(type == 3)19 { scanf("%o", &data); }2021 printf("10 진수 ==> %d \n", data);22 printf("16 진수 ==> %X \n", data);23 printf("8 진수 ==> %o \n", data);24 }
입력값이 3 이면 8 진수를 입력받음
입력받은 data 값을 8, 10, 16진수로 변환하여 출력
Logo
87
[ 예제모음 _03] 데이터형의 크기 확인
실행결과
예제설명
① sizeof( ) 함수를 사용해서 각 데이터형의 크기를 확인하는 프로그램이다 .
Logo
88
[ 예제모음 _03] 소스01 #include <stdio.h>0203 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() 함수로 각 데이터형의 크기 출력
Logo
89
요약① 모니터에 뭔가를 출력하는 역할② 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(널 문자 )
데이터 형식