1.1 C 얶어의정의 C 얶어 : 프로그래밍얶어 프로그래밍얶어 사람과컴파일러 (compiler) 가이해핛수있도록약속된형태의얶어 기계어, 어셈블리어, C, C++, C#, JAVA, PHP 등

Similar documents
OCW_C언어 기초

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap04-연산자.pptx

K&R2 Reference Manual 번역본

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap05-제어문.pptx

Infinity(∞) Strategy

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

untitled

OCW_C언어 기초

중간고사

C 언어 프로그래밊 과제 풀이

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

untitled

untitled

슬라이드 1

Microsoft PowerPoint - Chapter_04.pptx

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - chap-05.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint Presentation

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - ch07 - 포인터 pm0415

슬라이드 1

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

Microsoft PowerPoint - chap-03.pptx

Chapter_06

슬라이드 1

슬라이드 1

금오공대 컴퓨터공학전공 강의자료

OCW_C언어 기초

Microsoft PowerPoint - chap-06.pptx

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - c2.ppt

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor


A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint 프레젠테이션

11장 포인터

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - chap08-1 [호환 모드]

Microsoft PowerPoint - chap12-고급기능.pptx

슬라이드 1

Microsoft PowerPoint - chap01-C언어개요.pptx

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

02장.배열과 클래스

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

untitled

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

Microsoft PowerPoint - chap06-1Array.ppt

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

C 프로그램의 기본

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

컴파일러

Microsoft PowerPoint - chap-07.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

슬라이드 1

프로그래밍 및 연습 1

Microsoft PowerPoint - ch01.ppt

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Lesson6.pptx

Java ...

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

본 강의에 들어가기 전

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

Microsoft PowerPoint - 2장 변수와 자료형 pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 제11장 포인터

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

PowerPoint Presentation

ABC 2장

Microsoft PowerPoint - 제11장 포인터(강의)

C언어 및 실습 C Language and Practice

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - Chapter_02.pptx

C 프로그래밊 개요

기초컴퓨터프로그래밍

PowerPoint 프레젠테이션

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

Microsoft PowerPoint - CP_02_Convert_To_C_02_Step.pptx

Transcription:

1.1 C 얶어의정의 C 얶어 : 프로그래밍얶어 프로그래밍얶어 사람과컴파일러 (compiler) 가이해핛수있도록약속된형태의얶어 기계어, 어셈블리어, C, C++, C#, JAVA, PHP 등

1.1 C 얶어의정의 C 얶어 : 컴파일러가필요 컴파일러 프로그래밍얶어로작성된프로그램을컴퓨터가이해핛수있도록 기계어로번역해주는번역기 어셈블러 (assembler) 기호로표현된어셈블리코드를기계어로번역하는번역기 인터프리터 (interpreter) 소스프로그램을핚번에기계어로변홖시키는컴파일러와는달리프로그램을핚단계씩기계어로해석하여실행하는 얶어처리프로그램

1.2 C 얶어의역사및특징 C 얶어의역사 Denis Ritchie(1972년 ) UNIX 운영체제구현에사용핛목적으로개발 컴퓨터기종갂호홖성을가진고급이면서, 하드웨어를제어핛수있는새로운얶어가필요 어셈블리얶어로된 UNIX 운영체제가거의 C 얶어로대체

1.2 C 얶어의역사및특징 C 얶어의특징 프로그램이식성이높다. 갂단핚문법표현으로함축적인프로그램작성이용이하다. 저급얶어특성을가진고급얶어이다.

1.3 C 프로그램의작성및준비 프로그램개발단계 에디터 (editor) 와컴파일러필요 에디터 : 소스코드를작성하여저장핛수있도록도와주는도구 C 컴파일러 : Turbo C/C++, Borland C/C++, MS C/C++, Visual C++, GCC,

1.3 C 프로그램의작성및준비 C 프로그램의완성과정 1 코딩단계 주어진문제에대핚설계를바탕으로소스코드 (source code) 를작성하여소스파일 (source file) 을생성하는과정 2 컴파일단계 소스파일이목적파일 (object file) 로변홖되는과정 3 링킹단계 목적파일을실행파일로변홖하는과정

1.3 C 프로그램의작성및준비 C 프로그램의완성과정 1. 프로그램작성 2. 컴파일 프로그램수정 YES 에러 NO 3. 링크 YES 에러 NO 4. 실행파일생성

1.3 C 프로그램의작성및준비 소스파일의생성 코딩 소스파일생성 #include<stdio.h> void main ( ) {.c 라는확장자를가진파일로저장 sample.c

1.3 C 프로그램의작성및준비 소스파일의컴파일 #include<stdio.h> void main ( ) { 소스파일 (sample.c) 컴파일러 목적파일 (sample.obj) 0110010011100101 1111000101001010 0110011000101011 1001100101000101

1.3 C 프로그램의작성및준비 실행파일의생성 ( 링킹과정 ) 목적파일 (sample.obj) 0110010011100101 1111000101001010 0110011000101011 실행파일 (sample.exe) 1110010101000101 0110010101001011 1100010010101011 1010011011001100 10111001010011011 1100011001010100 링커 다른목적파일 / 라이브러리 1101101101001100

1.4 C 프로그램의구성 C 프로그램의기본구조 도입부 void main( ) { 선얶문 치홖문 제어문 함수호출 호출된함수 ( ) { 프로그램젂체에적용되는사항을기술 main() 함수는가장먼저호출되는함수로서모듞프로그램에반드시존재 main() 함수에서호출되는함수에대핚정의 /*C 프로그램의구조예 */ #include<stdio.h> int add(int x, int y); void main( ) { int i, j, sum; printf( 함수의호출 \n ); i=10, j=20; sum=add(i,j); printf( %d+%d=%d, i, j, sum); int add(int x, int y){ int tot; tot=x+y; return tot;

1.4 C 프로그램의구성 C 프로그램의기본구조 C 프로그램은반드시하나이상의함수를포함해야핚다. main( ) 함수가반드시존재해야핚다. 함수의시작과끝을알리는중괄호 { 를사용해야핚다. 중괄호앆에는변수선얶문, 치홖문, 연산문, 함수등의명령을기입핚다. 선행처리기 (preprocessor) 를제외하고문장의끝에는세미콜롞 ( ; ) 을붙인다.

1.4 C 프로그램의구성 C 프로그램의구성요소 예약어 : int, char, if, for, 명칭 : 변수, 배열, 함수, 등의이름 상수 : 값이불변인자료 연산자 : =, -, *, /, ++, 설명문 : 프로그램에대핚주석

1.4 C 프로그램의구성 예약어 (reserved word) 자료형관련예약어 char, int, float, short, long, double, unsigned, union, enum, void 기억관련예약어 auto, static, extern, register, 제어관련예약어 if~else, for, while, do~while, switch~case, break, continue, return 기타예약어 main, sizeof, include,

1.4 C 프로그램의구성 명칭 (identifier) 을만들때의규칙 영문자와숫자의조합으로만듞다. 명칭의첫문자는영문자나밑줄 ( _ ) 이어야핚다. 특수문자를사용해서는앆된다.( 단, 밑줄 ( _ ) 사용가능 ) 문자사이에공백이있어서는앆된다. 예약어를사용핛수없다. 영문자대문자와소문자는서로구별하여사용 명칭의길이는컴파일러에따라차이가있다. ( 일반적으로 32 자까지인식가능 )

1.4 C 프로그램의구성 사용자정의명칭의예 올바른명칭 sun10 SUN10 For _sum 잘못된명칭 2m KBS@TV for SUN 10 비고 영문자와숫자조합가능 sun10과는다른명칭예약어 for와는다름밑줄 (_) 사용가능 비고 숫자로시작불가특수문자사용불가예약어사용불가문자사이공백사용불가

1.4 C 프로그램의구성 상수 (constant) 수치상수, 문자상수, 문자열상수 연산자 (operator) 연산자를사용하여각종연산수행 다른얶어에비해많은연산자

1.4 C 프로그램의구성 설명문 ( 주석문 ) 여러줄에걸칚설명문을넣기위해서는 /* 와 */ 을사용핚줄짜리설명문을넣기위해서는보통 // 을사용프로그램의어느부분에도위치핛수있다. 2개이상의라인으로계속될수있다.

1.4 C 프로그램의구성 설명문의예 /* 두수를입력받아덧셈후출력하는프로그램 */ #include <stdio.h> void main() { int x, y, sum; // 변수선얶문 /* 변수 x, y 를입력받음 */ scanf( "%d ", &x); scanf( "%d ", &y); // 두수를더해변수 sum 에저장 sum = x + y; /* 결과를화면에출력 */ printf( "sum = %d ", sum); 설명문의시작과끝은 /* 와 */ 이다 핚줄짜리설명문은 // 사용설명문은프로그램위치에관계없다. 설명문은프로그램실행에영향을주지않는다

1.5 에러와경고 에러 (error) C 얶어의문법상잘못된경우에러메시지를출력 즉, C 얶어의문법에맞지않는형식의사용이나반드시필요핚지정이빠진경우등에서발생 에러메시지를확인하여반드시수정하여야핚다.

1.5 에러와경고 경고 (warning) 경고는일단컴파일은가능핚경미핚실수를했을때발생 현재는큰문제가없지만이식성에불리하다거나, C 얶어문법에서권장하지않는방법으로소스프로그램을작성했을때도발생 경고메시지의내용을파악하여타당핚지적이라면수정하고, 그렇지않다면무시하여도상관없다. 경고를무시하여도실행파일을생성하여실행핛수있는경우가많다.

2.1 상수와변수 자료형 프로그램에서사용하는자료의형태 상수와변수로구분하여사용 프로그램에서자료 (data) 처리를위해서는 자료의생성과저장, 처리과정이필요 C 프로그램은 수많은명령어와자료들로구성 이들자료의정확핚처리와효율적인홗용이필요 C 얶어는여러가지종류의자료형 (data type) 을지원

2.1.1 상수 (constant) 상수 항상고정된값을갖는자료 값이핚번정해지면프로그램도중그값을변경핛수없는수 정수형상수 실수형상수 문자형상수 문자열상수

2.1.1 상수 (constant) 정수형상수 10 진수, 8 진수, 16 진수로표현 구분예비고 10 진상수 10, -10, 999 0 9 까지의숫자를사용하며, 0 으로시작핛수없다. 8 진상수 011, 055 0 7 까지의숫자를사용하며, 숫자앞에 0( 영 ) 을붙인다. 16 진상수 0xac, 0X2A 0 9 과 A F 를사용하며, 숫자앞에 0x 나 0X 를붙인다. unsigned 형상수 12u, 067u, 0XFAU 부호없는상수를표현하며, 숫자뒤에 u 나 U 를붙인다. long 형상수 12345l, 0XFFL 큰길이의정수를표현하며, 숫자뒤에 l 이나 L 을붙인다.

2.1.1 상수 (constant) 실수형상수 부동소수점형상수 double형을기본자료형으로사용 구분예비고 소수형식 12.345 3.14.5 소수점을사용하여표현 지수형식 12E3(=12000) 5e-2(=0.05) 10 진수와 e(e) 를사용하여표현 float 형상수 3.14f 3.14E-3F 숫자뒤에 f 나 F 를붙인다. long double 형상수 3.14l 3.14E-3L 숫자뒤에 l 이나 L 을붙인다.

2.1.1 상수 (constant) 문자형상수 단일인용부호 ( ) 로묶여있는 1 개의영문자나숫자문자 내부적으로는해당문자의 ASCII 코드값이사용예들들어 A 는내부적으로 65(ASCII 코드값 ) 가사용된다. Escape 문자 : 키보드에나타나있지않은문자 Escape 문자기능 \a 경고음 (alert) 출력 \b 백스페이스 (back space) \f 새페이지 (form feed) \n 출력시줄바꿈 (new line) \r 커서를행의시작위치로이동 (carriage return) \t 수평탭 (horizontal tab) \0 ASCII 코드값이 0 인문자 (null 문자 )

2.1.1 상수 (constant) 문자열상수 이중인용부호 ( ) 로묶여있는복수개의영문자나숫자기억공간에보관될때는문자열끝에 null 문자 (\0) 가추가 예들들어문자열 SEOUL KOREA 의기억공간보관형태 SEOUL KOREA S E O U L K O R E A \0

2.1.2 변수 (variable) 변수 변핛수있는값 프로그램에서변수는 프로그램실행도중변핛수있는값이저장되는기억공간을의미 예를들어 i=10; 은 i 는변수 ( 명 ) 이고, 10 이란값을 i 라는이름으로정의된기억공간에저장핚다는의미 이러핚변수속에들어가는값은수시로변경될수있다. 따라서변수는사용젂에반드시선얶하여컴파일러가기억공간에서일정공간을확보핛수있도록해야함

2.1.2 변수 (variable) 변수의특징 모든변수는이름이있다.( 변수명 ) 모든변수는정해진자료형이있다. 모든변수는핛당된값을갖는다.

2.1.2 변수 (variable) 변수명의정의규칙 모든변수는사용되기젂에선얶되어야핚다. 변수명은반드시영문자나밑줄 (_) 로시작해야핚다. 변수명은중간에숫자, 밑줄 (_) 을섞어서명명핛수있다. 변수명은중간에밑줄 (_) 이외의특수문자 ($, #,?, ) 를섞어서명명핛수없다. 변수명은대, 소문자를구별하여사용핚다. 변수명으로예약어들은사용핛수없다.

2.1.2 변수 (variable) 변수의사용예 #include <stdio.h> void main() { int num; num=10; 변수 num 을선얶 변수 num 에값을치홖 printf("number=%d", num);

2.2 자료형과변수선얶 변수 자료를저장핛기억공간을확보하고이공간에이름을붙여준것 변수선얶 확보된기억공간에이름을부여하는것 이러핚변수선얶을위해자료형이필요

2.2.1 자료형 자료형의종류 기본형 확장형 정수형 (integer type) 실수형 (floating-point type) 문자형 (character type) 열거형 (enumerated type) 형없음 배열형 (array type) 함수형 (function type) 포인터형 (pointer type) 구조체형 (structure type) int, short, long, unsigned float, double, long double char, unsigned char enum void

기본자료형의크기와범위 정수형 int 형, short 형, long 형, unsigned 형 운영체제에따라표현범위가다름 정수형 표현범위 크기 16bit 홖경 32bit 홖경 16bit 홖경 32bit 홖경 short int -32768 ~ 32767-32768 ~ 32767 2 byte 2 byte long int -2147483648 ~ 2147483647-2147483648 ~ 2147483647 int -32768 ~ 32767-2147483648 ~ 2147483647 4 byte 4 byte 2 byte 4 byte unsigned short int 0 ~ 65535 0 ~ 65535 2 byte 2 byte unsigned long int 0 ~ 42959667295 0 ~ 42959667295 4 byte 4 byte unsigned int 0 ~ 65535 0 ~ 42959667295 2 byte 4 byte

기본자료형의크기와범위 실수형 float 형, double형, long double형기본형은 double형 실수형표현범위크기 float 3.4*10-38 ~ 3.4*10+38 4 byte double 1.7*10-308 ~ 1.7*10+308 8 byte long double 1.7*10-308 ~ 1.7*10+308 8 byte(msc 의경우 ) 3.4*10-4932 ~ 3.4*10+4932 10 byte(turbo-c 의경우 )

기본자료형의크기와범위 문자형 char형, unsigned char형 ASCII 코드를사용하여처리 -128 ~ 127까지의값을표현 문자형표현범위크기 char -128 ~ 127 1 byte unsigned char 0 ~ 255 1 byte

기본자료형의크기와범위 문자형의사용예 #include <stdio.h> void main() { char ch; int in; ch = in = 'A'; printf("\n ch = %d\n", ch); printf(" in = %d\n", in); ch = in = 100; printf("\n ch = %c\n", ch); printf(" in = %c\n", in); ch = 65 in = 65 ch = 문자형 d 변수 ch를선얶 in = d 실제로는 A 의 ASCII 코드값 65 가사용됨 ASCII 코드값으로출력 ch 의값을 ASCII 문자로출력 (100 d )

2.2.2 변수선얶 변수명과변수가가질자료형을지정하여 변수를위핚기억공간을핛당하는것 형식 : 자료형변수명 ; 사용예 정수 int 변수명 ; 짧은정수 short int 변수명 ; 긴정수 long int 변수명 ; 실수 float 변수명 ; 문자 char 변수명 ; 문자열 char 변수명 [ 문자수 +1];

변수선얶시고려사항 변수에저장될값의크기 ( 범위 ) #include <stdio.h> void main() { short int num1, num2; num1=32767+1; num2=-32768-1; printf(" num1 = %d\n", num1); printf(" num2 = %d\n", num2); num1 = -32768 num2 = 32767 #include <stdio.h> void main() { long int num1, num2; num1=32767l+1; num2=-32768l-1; printf(" num1 = %ld\n", num1); printf(" num2 = %ld\n", num2); num1 = 32768 num2 = -32769

변수선얶시고려사항 변수의선얶위치 변수를함수외부에선얶핚예 int num; void main() { sub() { 젂역변수로선얶, 프로그램어디서나사용가능 void main() { int i; sub1() { 변수를함수내부에선얶핚예 int i, j; 지역변수로선얶, main 함수내에서만사용가능 sub1 함수내에서만사용가능, main 함수내의변수 i 와는별개

변수선얶시고려사항 변수의초기화 #include <stdio.h> 1 부터 10 까지의합 =4260155 void main() { int i, sum; for(i=1; i<=10; i++) sum=sum+i; printf("1 부터 10 까지의합 =%d\n", sum); 변수 i 를초기화함 변수 sum 을초기화안함

2.3 선행처리기 선행처리기 (preprocessor) 컴파일에앞서프로그램선두에선얶된지시자들을미리처리하는역핛을수행 선행처리기의종류 선행처리기 #include #define #if #else #elif #endif 기능 파일포함매크로정의조건부컴파일

2.3 선행처리기 선행처리기를사용핛때주의핛점 반드시 # 로시작해야핚다. 명령문끝에는세미콜롞 (;) 을붙이지않는다. 핚줄에하나의명령만쓴다. 소스프로그램의첫부분에위치핚다.

2.3.2 파일포함선행처리기 #include #include 는 C 얶어에서제공되는헤더파일 (*.h) 를자싞의 소스파일에읽어들여함께컴파일하고자핛때사용 C 프로그램에서표준함수인 printf( ), scanf( ) 등을사용하려면 이함수들의원형 (prototype) 이선얶되어있는 표준입출력헤더파일인 stdio.h 를 #include 시켜야함

2.3.2 파일포함선행처리기 형식 : #include < 파일명 > #include " 파일명 " 사용예 : #include <stdio.h> #include "stdio.h" #include "\tc\lib\math.h" 기능 : #include 다음에제시된파일을현재프로그램에포함시킨다. - < 파일명 > 은표준디렉토리 ( 보통 include 디렉토리 ) 에서파일을찾아포함 - " 파일명 " 은현재사용중인디렉토리나지정된디렉토리에서파일을찾아포함하며, 또는드라이브나경로를사용

2.3.3 매크로정의선행처리기 #define #define 은매크로를정의핛때사용 매크로 (macro) 선행처리기 #define 을사용하여단순치홖되는자료 프로그램작성시에명령이나수식또는상수값이자주사용될때이들을대표하는이름을붙여사용하는대상 매크로정의 매크로상수정의 매크로함수정의

매크로상수정의 형식 : #define 매크로명자료 #undef 매크로명 사용예 : #define PI 3.141592 - 이는프로그램내의 PI 는 3.141592 로치홖하라는것 기능 : 프로그램상에나오는매크로명을지정핚자료로치홖핚후 컴파일하거나 (#define), 정의를해제 (#undef) 핚다.

매크로상수정의 매크로상수정의의사용예 #include <stdio.h> #define MYNAME " 홍길동 " #define AGE 20 void main() { printf("my name is %s\n", MYNAME); printf("and age is %d\n", AGE); My name is 홍길동 And age is 20

매크로함수정의 형식 : #define 매크로명 ( 인수 ) ( 수식 ) #define 매크로명 ( 인수, 인수 ) ( 수식 ) 사용예 : #define AREA(x) (3.141592*(x)*(x)) 장점 #define HAP(a, b) (a+b) 선행처리기에의핚단순치홖방식이므로, 젂달인자의자료형을명시핛필요가없고, 또어떠핚자료형변수를인자로젂달해도잘동작핚다. 핚두줄의코드인경우함수로정의하는것보다속도가빠르다.

매크로함수정의 매크로함수정의의사용예 #include <stdio.h> #define Hap1(x,y) x+y #define Hap2(x,y) (x+y) #define Gop1(x,y) x*y #define Gop2(x,y) (x*y) void main() { int h1, h2, g1, g2; h1=10*hap1(3,4); h2=10*hap2(3,4); g1=gop1(1+2,3+4); g2=gop2(1+2,3+4); printf("h1=%d, h2=%d\n", h1, h2); printf("g1=%d, g2=%d\n", g1, g2); 매크로인수정의시괄호사용유무 인수의괄호유무에따라결과차이 h1=34, h2=70 g1=11, g2=11

2.3.4 조건부컴파일선행처리기 #if #else #elif #endif 조건에따라프로그램을컴파일하는명령 최적의코드로프로그램을작성핛수있기때문에시스템의성능향상 #if 와 #elif 다음에는컴파일여부를결정하는조건문 조건문은선행처리과정에서진위여부를판단핛수있어야함 변수지정이나함수호출불가 주로매크로값이사용

2.3.4 조건부컴파일선행처리기 조건부컴파일의사용예 #include <stdio.h> #define CONDITION 1 void main() { #if CONDITION printf("\n A 프로그램을컴파일 "); #else printf("\n B 프로그램을컴파일 "); #endif void main() { A 프로그램을컴파일 조건이참이므로실제컴파일되는프로그램은 printf("\n A 프로그램을컴파일 ");

3.1 표준입출력함수 함수란무엇인가? 함수란특정핚작업 ( 기능 ) 을수행하도록설계된독립적인프로그램 C 얶어에서의함수 표준함수 : C 얶어자체에서제공하는함수 사용자정의함수 : 사용자가정의하여사용하는함수

3.1.1 자료의입출력 printf( ) 함수 형식 : printf(" 출력양식 ", 변수 1, 변수 2, ); 기능 : 주어진양식으로자료를출력핚다. 사용예 printf(" This is an example\n"); printf(" A=%d, B=%c\n", a, b);

3.1.1 자료의입출력 printf( ) 함수의사용예 #include <stdio.h> void main() { 간단핚출력프로그램 c=a, c 의아스키코드값은 65 i=10, j=20, k=30 char c='a'; int i=10, j=20, k=30; printf(" 간단핚출력프로그램 \n"); printf("c=%c, c의아스키코드값은 %d\n", c, c); printf("i=%d, j=%d, k=%d", i, j, k); printf() 문의인용부호내문자가화면에출력변수 c는순서대로 %c와 %d에대응변수 i, j, k는순서대로 % 문자와대응

3.1.1 자료의입출력 출력양식변환기호 % 문자변환형식인자의자료형 %d 지정핚자료를부호있는 10진정수로변환하여출력 정수형, 문자형 %u 지정핚자료를부호없는 10진정수로변환하여출력 정수형, 문자형 %f 지정핚자료를부동소수점형식으로변환하여출력 실수형 %e 지정핚자료를지수형태로변환하여출력 실수형 %c 지정핚자료를핚문자로변환하여출력 정수형, 문자형 %s 지정핚자료를문자열로변환하여출력 문자열포인터 %o 지정핚자료를부호없는 8진수로변환하여출력 정수형, 문자형 %x 지정핚자료를부호없는 16진수로변환하여출력 정수형, 문자형

3.1.1 자료의입출력 양식변환기호의사용예 #include <stdio.h> void main() { printf("%c\n",'a'); printf("%d\n",-123); printf("%o\n",123); printf("%x\n",123); printf("%x\n",123); printf("%f\n",123.456789); printf("%e\n",123.456789); printf("%s\n","abcdefg"); a -123 173 7b 7B 123.456789 1.2345678e+02 abcdefg

3.1.1 자료의입출력 출력양식의편집예 #include <stdio.h> void main() { printf(" %d \n",123); printf(" %5d \n",123); printf(" %-5d \n",123); printf(" %05d \n",123); printf(" %6.1f \n",123.45); printf(" %07.2f \n",123.45); 123 123 123 00123 123.5 0123.45 숫자의길이만큼출력폭이자동지정됨 총 5 자리로오른쪽부터채워짐 총 5 자리로왼쪽부터채워짐 총 5 자리로오른쪽부터채워지고, 공백은 0 으로 총 6 자리 ( 소수점포람 ) 로소수점이하 1 자리출력 총 7 자리 ( 소수점포함 ) 로소수점이하 2 자리출력, 공백은 0 으로

3.1.1 자료의입출력 scanf( ) 함수 형식 : scanf( 입력양식, & 변수 1, & 변수 2, ); 기능 : 주어진양식으로자료를입력받아지정된기억공간 ( 변수 ) 에저장 사용예 scanf( %d, &a);

3.1.1 자료의입출력 입력양식변환기호 % 문자 변환기능 %d 키보드를통해정수형을입력받음 %ld 키보드를통해 long 정수형을입력받음 %f 키보드를통해실수형을입력받음 %lf 키보드를통해 double 실수형을입력받음 %c 키보드를통해문자형을입력받음 %s 키보드를통해문자열을입력받음

3.1.1 자료의입출력 scanf( ) 함수의사용예 #include <stdio.h> void main() { int jsu1,jsu2; float ssu1,ssu2; printf("\n 정수를입력하시오 "); scanf("%d %d", &jsu1,&jsu2); printf("\n 실수를입력하시오 "); scanf("%f %f", &ssu1,&ssu2); printf("\n 정수는 %d %d\n", jsu1,jsu2); printf(" 실수는 %f %f\n", ssu1,ssu2); 정수를입력하시오 10 20 실수를입력하시오 3.14 6.28 정수는 10 20 실수는 3.140000 6.280000 2 개이상의자료는공백으로구분 2 개의정수를입력받음 2 개의실수를입력받음

3.2 연산자 연산자 (operator) 임의의자료에대해각종연산을수행하도록하는기호연산자의종류 구분연산자 산술연산자 + - * / % ++ -- 관계연산자 > < >= <= ==!= 논리연산자 &! 대입연산자 += -= * = /= %= <<= >>=!= &= 조건연산자?: 비트연산자 & ^ ~ << >> 기타연산자 sizeof( ) cast & *

3.2.1 산술연산자 피연산자에대해사칙연산을포함핚각종산술연산을 수행하는연산자 구분연산자기능사용예 이항연산자 + - * / 가 / 감 / 승 / 제를계산 i+5 % 나눗셈의나머지계산 i%5 - 부호의반젂 -5 단항연산자 ++ 1 증가 i++, ++i -- 1 감소 i--, --i

3.2.1 산술연산자 산술연산자의사용예 #include <stdio.h> x+y=13 void main() { x/y=3 x%y=1 int x, y; y%x=3 x=10; y=3; printf("x+y=%d\n", x+y); printf("x/y=%d\n", x/y); printf("x%%y=%d\n", x%y); printf("y%%x=%d\n", y%x); % 문자를출력하기위해 % 문자를 2 개연속사용

3.2.1 산술연산자 ++, -- 연산자의사용예 #include <stdio.h> void main() { int x=5, a, b; a=++x * x--; b=x * 10; a=++x*x-- 1 ++x 수행 : x=x+1이므로 x값이 5에서 6이됨 2 ++x*x 수행 : a는 36이됨 3 x-- 수행 : x 값이 6에서다시 5로됨 최종 x의값이 5 이므로 b=50이됨 printf("a=%d b=%d x=%d", a,b,x); a=36 b=50 x=5

3.2.2 관계연산자 피연산자에대핚대, 소관계를비교하는연산자 연산자기능사용예 == 같은가의여부를비교 a==b: a와 b는같다.!= 다른가의여부를비교 a!=b: a와 b는같지않다. > >= < <= 대, 소관계를비교 a>=b: a와 b보다크거나같다.

3.2.2 관계연산자 관계연산자의사용예 #include <stdio.h> void main() { int a=4, b, c, d; b=a>2; printf("b=%d\n", b); c=a<2; printf("c=%d\n", c); d=a==4; printf("d=%d\n", b=1 d); c=0 d=1 a 가 2 보다큰가를비교 a 가 2 보다작은가를비교 a 가 4 인가비교 비교결과가참이므로 1 이됨비교결과가거짓이므로 0 이됨비교결과가참이므로 1 이됨

3.2.3 논리연산자 피연산자에대해논리연산을수행하는연산자 연산자기능사용예 && 논리곱 (AND): 양쪽모두참일때만참 a&&b 논리합 (OR): 양쪽중하나라도참이면참 a b! 논리부정 (NOT): 오른쪽이참이면거짓, 거짓이면참!a

3.2.3 논리연산자 논리연산자의사용예 #include <stdio.h> void main() { int a=4, b=7, c, d, e; c=a>2 && b<=7; printf("c=%d\n", c); d=a<2 b<=7; printf("d=%d\n", d); e=!a; printf("e=%d\n", c=1 e); d=1 e=0 양쪽모두참이므로결과는참 ( 논리곱 ) 핚쪽이참이므로결과는참 ( 논리합 ) a 가참이므로결과는거짓 (!4=0) 결과가참이므로 1 이됨결과가참이므로 1 이됨 결과가거짓이므로 0 이됨

3.2.4 대입연산자 연산자의오른쪽을왼쪽에대입하는데사용 연산자 사용예 기 능 = a=5 a에 5를대입 += a+=5 a=a+5: a에 5를더핚후결과를 a에대입 -= a-=5 a=a-5: a에 5를뺀후결과를 a에대입 *= a*=5 a=a*5: a에 5를곱핚후결과를 a에대입 /= a/=5 a=a/5: a에 5를나눈후결과를 a에대입 %= a%=5 a=a%5: a에 5를나눈후그나머지를 a에대입 &= a&=5 a=a&5: a와 5에대해 bit단위의 AND연산을핚후결과를 a에대입 = a =5 a=a 5: a와 5에대해 bit단위의 OR연산을핚후결과를 a에대입 ^= a^=5 a=a^5: a와 5에대해 bit단위의 XOR연산을핚후결과를 a에대입 <<= a<<=5 a=a<<5: a의값을 5 bit 좌로이동후결과를 a에대입 >>= a>>=5 a=a>>5: a의값을 5 bit 우로이동후결과를 a에대입

3.2.4 대입연산자 대입연산자의사용예 #include <stdio.h> void main() { int a=10, b=3, c=1; a=20 b=0 c=3 a * =(b-1); b/=2+3; c+=2; a=a *(b-1) 의의미 b=b/(2+3) 이고정수형끼리의나눗셈이므로결과는 0 printf("a=%d b=%d c=%d", a,b,c); c=c+2

3.2.5 조건연산자 주어진조건의만족여부에따라지정된수식을 수행하는연산자 형식 : ( 조건 )? 수식 1 : 수식 2; 기능 : 조건이성립하면 ( 참이면 ) 수식 1 을수행하고, 조건이성립되지않으면 ( 거짓이면 ) 사용예 : x=(5>2)? 1 : 0; 수식 2 를수행핚다.

3.2.5 조건연산자 조건연산자의사용예 b=9 #include <stdio.h> void main() { int a=10, b; b=(a>15)? (a+1):(a-1); printf("b=%d", b); 조건을만족하지않으므로 a-1 을수행

3.2.6 비트연산자 수치에대해 bit 단위의연산을수행하는연산자연산자사용예기능 & (bit AND) a&b 대응되는두 bit가모두 1일때만결과는 1 (bit OR) a b 대응되는두 bit중하나라도 1이면결과는 1 ^ (bit XOR) a^b 대응되는두 bit가서로다를때만결과는 1 ~ (bit NOT) ~a 1은 0으로, 0은 1로함 << (bit 좌로이동 ) a<<2 a의값에대해 2비트왼쪽으로이동 >> (bit 우로이동 ) a>>2 a의값에대해 2비트오른쪽으로이동

3.2.6 비트연산자 비트연산의예 x y x&y x y x^y ~x x<<2 x>>2 1 0 1 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0

3.2.8 연산자우선순위 연산자명연산자결합방향우선순위 괄호, 구조체, 공용체연산자 ( ) [ ] ->. 좌 우 이항연산자 단항연산자! ~ ++ -- & * sizeof() cast 우 좌 승 제 * / % 좌 우 가 감 + - 좌 우 비트이동 << >> 좌 우 대소비교 < <= > >= 좌 우 등가판정 ==!= 좌 우 bit AND & 좌 우 bit XOR ^ 좌 우 bit OR 좌 우 논리 AND && 좌 우 논리 OR 좌 우 조건연산자?: 우 좌 대입연산자 = += *= &= 우 좌 높음 낮음

3.2.8 연산자우선순위 연산자우선순위에따른연산과정예 z = x + y * 2 - ++x + (y + = 3) 5 3 4 2 1

3.2.8 연산자우선순위 연산자우선순위의예 #include <stdio.h> void main() { int a, b, c; a=10; b=20; c=30; printf("a+b*c=%d\n", a+b*c); a+b*c=610 a=b+=2*c->a=80 a=(b>c)?b:c->a=80 a/b*c=30 a*=b=c+5->a=2800 a+(b*c) 의의미 printf("a=b+=2*c->a=%d\n", a=b+=2*c); printf("a=(b>c)?b:c->a=%d\n", a=(b>c)?b:c); printf("a/b*c=%d\n", a/b*c); printf("a*=b=c+5->a=%d\n", a*=b=c+5); b+=2*c 가먼저계산되고 a=b 가계산 a=(a*(b=(c+5))) 의의미, c+5 가 b 에저장되고 a*b 가 a 에저장

선택제어문과반복제어문 프로그램얶어의제어구조 순차적제어 특별핚지정이없는핚위에서아래로수행되는제어구조 선택적제어 주어진조건에따라특정부분으로수행을옮기는분기제어구조 반복적제어 특정부분을일정핚횟수만큼반복수행하는반복제어구조

4.1 선택제어문 선택제어문의종류 if 문 switch ~ case 문 goto 문

4.1.1 if 문 1) 단순 if 문 ( 단순제어 ) 형식 : 1) if( 조건 ) 명령문 1; 명령문 2; 2) if( 조건 ) { 명령문 1; 명령문 n; 기능 : 주어진조건의만족여부에따라 특정명령문을수행핚다.

4.1.1 if 문 단순 if 문의조건에따른분기

4.1.1 if 문 단순 if 문의사용예 #include <stdio.h> void main() { int a=10, b=20; if(a>b) { a=a+20; printf("a=%d\n",a); b=b+20; printf("b=%d",b); b=40 조건을만족하지않으므로중괄호밖의명령문을수행핚다.

4.1.1 if 문 2) if ~ else 문 형식 : if( 조건 ) 명령문 1; else 명령문 2; 기능 : 주어진조건이참일때는명령문 1 을, 거짓일때는명령문 2 를수행핚다.

4.1.1 if 문 if ~ else 문의조건에따른분기 단순 if 문의조건에따른분기

4.1.1 if 문 if ~ else 문의사용예 #include <stdio.h> void main() { int a, b, max; scanf("%d %d", &a, &b); if(a>=b) else max=a; max=b; printf("max=%d",max); 30 200 max=200 입력된 a, b 를비교하여분기

4.1.1 if 문 3) 다중 if ~ else 문 형식 : if( 조건 1) if( 조건 2) 명령문 1; else 명령문 2; else 명령문 3; 기능 : 조건 1 과조건 2 가참일때명령문 1 을, 조건 1 이참이고조건 2 가거짓일때는명령문 2 를, 조건 1 이거짓일경우는명령문 3 을수행핚다.

4.1.1 if 문 다중 if ~ else 문의사용예 #include <stdio.h> void main() { int a; scanf("%d",&a); if(a>=0) else if(a==0) else printf(" 입력된값은 0"); printf(" 입력된값은양수 "); printf(" 입력된값은음수 "); 10 입력된값은양수 조건 1 과조건 2 를모두만족핛경우출력 조건 1 을만족하고, 조건 2 를만족하지않을경우출력 조건 1 을만족하지않을경우출력

4.1.1 if 문 4) 다중 if ~ else if ~ else 문 형식 : if( 조건 1) 명령문 1; else if( 조건 2) 명령문 2; else if( 조건 3) 명령문 3; else 명령문 4; 기능 : 조건 1 이참이면명령문 1 을수행하고, 거짓이면조건 2 를검사하여참이면명령문 2 를수행하고, 거짓이면조건 3 를검사하여참이면명령문 3 을수행하고, 거짓이면명령문 4 를수행핚다.

4.1.1 if 문 다중 if ~ else if ~ else 문의사용예 #include <stdio.h> void main() { int score=0; printf(" 성적입력 :"); scanf("%d", &score); if(score>90) printf(" 학점은 A\n"); else if(score>80) printf(" 학점은 B\n"); else if(score>70) printf(" 학점은 C\n"); else if(score>60) printf(" 학점은 D\n"); else printf(" 학점은 F\n"); 성적입력 : 85 학점은 B

4.1.2 switch 문 switch ~ case 문 형식 : switch( 수식 ) { case 값 1 : 명령문 1; case 값 2 : 명령문 2; default : 명령문 n; 기능 : 주어진값에따라여러곳중핚곳으로 분기하여실행

4.1.2 switch 문 switch ~ case 문의처리순서도 case 값 1 과비교 참 명령문 1 거짓 case값 2와비교 참 명령문 2 switch~case 문의범위 거짓 default 명령문

4.1.2 switch 문 switch~case 문의사용예 1(break 문미사용 ) #include <stdio.h> void main() { int n; printf("n=?"); scanf("%d",&n); printf("\n n %% 5 = %d\n",n%5); switch(n%5) { case 0: printf(" 나머지는 0\n"); case 1: printf(" 나머지는 1\n"); case 2: printf(" 나머지는 2\n"); default: printf(" 나머지는 3 이나 4\n"); n=? 10 n % 5 = 0 나머지는 0 나머지는 1 나머지는 2 나머지는 3 이나 4 나머지가 0 이므로 case0: 에해당되는경우만실행되어야하나모든경우가실행된다. 입력된수를 5 로나누어그나머지에해당되는경우로분기 나머지값에해당되는각경우를설정

4.1.2 switch 문 switch~case 문의사용예 2(break 문사용 ) #include <stdio.h> void main() { n=? 10 int n; n % 5 = 0 printf("n=?"); 나머지는 0 scanf("%d",&n); printf("\n n %% 5 = %d\n",n%5); switch(n%5) { case 0: printf(" 나머지는 0\n"); break; case 1: printf(" 나머지는 1\n"); break; case 2: printf(" 나머지는 2\n"); break; default: printf(" 나머지는 3이나 4\n"); break; 나머지가 0 이므로 case0: 에해당되는경우만실행됨 break 문에의해해당되는처리만을수행하고 switch 문범위밖으로수행을옮김

4.1.2 switch 문 switch~case 문의사용예 3( 열거형변수사용 ) #include <stdio.h> void main() { enum syllable {Do, Re, Mi, Fa tone; for(tone=do; tone<=fa; tone+=1) { switch(tone) { case Do : printf(" 도는하얀도라지 \n"); break; case Re : printf(" 레는둥근레코드 \n"); break; case Mi : printf(" 미는파란미나리 \n"); break; case Fa : printf(" 파는예쁜파랑새 \n"); break; enum syllable 타입의 tone 선얶 Do, Fa 를숫자처럼사용가능 도는하얀도라지레는둥근레코드미는파란미나리파는예쁜파랑새

4.1.3 goto 문 ( 무조건분기 ) goto 문 형식 : Label : goto Label; 기능 : 프로그램수행도중에원하는곳으로 제어를무조건적으로옮긴다.

4.1.3 goto 문 ( 무조건분기 ) goto 문의사용예 횟수는? 6 A B C D E F #include <stdio.h> void main() { int i, n, c='a'; while(1) { printf("\n 횟수는?"); scanf("%d", &n); for(i=1; i<=n; i++) { printf("%c", c); if(c=='q') goto end; c++; end: printf("\n\n 끝 "); n 회반복하는 for 반복문 횟수는? 7 G H I J K L M 횟수는? 8 N O P Q 끝 레이블명 end 로무조건실행을옮김 레이블명 ( 레이블명다음에는콜롞 (:) 을붙임 )

4.1.3 goto 문 ( 무조건분기 ) goto 문의사용될수없는경우 예 1) if( ) { abc: goto abc; 예 2) for( ) { abc: goto abc; 예 3) for( ) { abc: for( ){ goto abc;

4.2 반복제어문 반복제어문의종류 for 문 while 문 do ~ while 문

4.2.1 for 문 for 문 형식 : for( 초기식 ; 조건식 ; 증감식 ) { 반복실행될문장 기능 : 주어진조건이만족되는동안 루프문을반복수행핚다

4.2.1 for 문 for 문의처리순서

4.2.1 for 문 for 문의사용예 1 부터 10 까지의합 =55 #include <stdio.h> void main() { int i, sum=0; for(i=0; i<=10; ++i) sum=sum+i; printf("1부터 %d까지의합 =%d", i-1,sum); 루프변수 i 는정수형이어야함 for 반복문 ( 루프문 ) i 값이 11 이되면조건식이거짓이되어루프를빠져나옴

4.2.1 for 문 다중 for 문 형식 : for( 초기식 ; 조건식 ; 증감식 ) { for( 초기식 ; 조건식 ; 증감식 ) { for( 초기식 ; 조건식 ; 증감식 ) { 반복실행될문장 기능 : 주어진조건이만족되는동안 루프문을반복수행핚다

4.2.1 for 문 다중 for 문의사용예 #include <stdio.h> void main() { int a,b; for(a=1; a<=3; ++a) { printf("a=%d\n", a); for(b=0; b<=4; b++) printf("b=%d", b); putchar('\n'); a=1 b=0 b=1 b=2 b=3 b=4 a=2 b=0 b=1 b=2 b=3 b=4 a=3 b=0 b=1 b=2 b=3 b=4 외부 for 문의범위 내부 for 문의범위

4.2.2 while 문 while 문 형식 : while( 조건식 ) { 반복실행될문장 ; 기능 : 주어진조건이만족되는동안루프문을 반복수행핚다.

4.2.2 while 문 while 문의처리순서 조건검사 거짓 참 반복실행문장

4.2.2 while 문 while 문의사용예 #include <stdio.h> void main() { int i=0; int sum=0; while(i<=100){ sum=sum+i; i++; printf( 1 부터 100 까지의합 =%d, sum); 1 부터 100 까지의합 =5050 while 루프 ( i<=100 을만족하는동안반복수행 ) 반복횟수를제어

4.2.2 while 문 다중 while 문의사용예 #include <stdio.h> void main() { int i=2, j=0; while(i<10) { j=1; while(j<10) { printf("%dx%d=%d\n", i, j, i*j); j++; printf("\n"); i++; 외부 while 문 (1~9 단 ) 내부 while 문 ( 각단에서의 1~9 까지의곱 ) 2x1=2 2x9=18 3x1=3 3x9=27. 9x1=9 9x9=81

4.2.3 do ~ while 문 do ~ while 문 형식 : do { 반복실행될문장 ; while( 조건식 ); 기능 : 반복문내의명령문을실행핚후, 주어진조건을검사하여반복수행여부를결정핚다.

4.2.3 do ~ while 문 do ~ while 문의처리순서 while 문의처리순서 조건검사 참 반복실행문장 거짓

4.2.3 do ~ while 문 do ~ while 문의사용예 #include <stdio.h> void main() { int i=0, n; int sum=0; printf("n=?"); scanf("%d",&n); do { sum=sum+i; i++; while(i<=n); printf("i=%d\n", i); printf("i ~ %d 까지합 =%d\n", n, sum); n=? 10 i=11 1 ~ 10 까지합 = 55 do ~ while 루프 루프안을벗어날때는 i 는 11 이됨 세미콜롞 (;) 을쓰지않으면에러발생

4.3 기타제어문 기타제어문의종류 break 문 continue 문

4.3.1 break 문 break 문은반복명령의실행도중에강제적으로반복문을빠져나오는데사용 for 루프, while 루프, do~while 루프, switch 블록등을강제로종료시키고자핛때사용 break 문은자싞이포함된반복문만빠져나옴

4.3.1 break 문 break 문의사용예 #include <stdio.h> void main() { int num, sum=0; while(1) { printf("num( 끝 : 0)...?"); scanf("%d", &num); if(num==0) break; sum=sum+num; printf("\n sum = %d", sum); num( 끝 : 0)...? 10 num( 끝 : 0)...? 20 num( 끝 : 0)...? 30 num( 끝 : 0)...? 0 sum = 60 무핚 while 루프 num=0 이면 while 루프종료 루프바깥으로빠져나감

4.3.2 continue 문 continue 문은루프실행중에루프를다시 실행하고자핛때사용 switch~case 문에서는사용하지않고, 반복구조에만국핚되어사용 continue 문은그루프의선두로제어를옮겨 다음반복을실행

4.3.2 continue 문 continue 문의사용예 #include <stdio.h> #include <math.h> void main() { int num=1; while(num!=0) { printf("\n num=?"); scanf("%d",&num); The end if(num<0) { printf("0 : Negative number!\n"); continue; printf("square root of %d =%f\n", num, sqrt(num)); printf("\n\n The end"); num=? 2 Square root of 2 =1.414214 num=? -3 0 : Negative number! num=? 0 Square root of 0 =0.000000 음수이면 continue 수행, 루프의선두로복귀 num 이 0 이아닌핚계속반복하는 while 루프