1.1.1 컴퓨터의 구성 p.19

Similar documents
1.1.1 컴퓨터의 구성 p.19

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

Microsoft PowerPoint - chap05-제어문.pptx

Infinity(∞) Strategy

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-06.pptx

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

untitled

untitled

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

OCW_C언어 기초

슬라이드 1

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

Chapter_06

중간고사

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

윈도우즈프로그래밍(1)

Microsoft PowerPoint - chap04-연산자.pptx

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

Microsoft PowerPoint - 5장 조건문 pptx

Java ...

Microsoft PowerPoint - chap-07.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 - Lesson6.pptx

untitled

C프로-3장c03逞풚

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

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

K&R2 Reference Manual 번역본

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

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - ch03 - 조건문과 반복문 pm0215

Microsoft PowerPoint - Java7.pptx

ch08

C 언어와 프로그래밍 개요

Microsoft PowerPoint - chap06-2pointer.ppt

4장.문장

Microsoft PowerPoint - [2009] 02.pptx

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

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

Microsoft PowerPoint - Chapter_04.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

슬라이드 1

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각


Visual Basic 반복문

본 강의에 들어가기 전

Microsoft PowerPoint - chap06-1Array.ppt

1장. 유닉스 시스템 프로그래밍 개요

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - chap-03.pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - gnu-w10-c-chap11

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - ch01.ppt

Microsoft PowerPoint - chap12-고급기능.pptx


1.1.1 컴퓨터의 구성 p.19

PowerPoint 프레젠테이션

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

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

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

Microsoft PowerPoint - Chapter_05.pptx

Microsoft PowerPoint - 7장 배열 pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Microsoft PowerPoint - chap-05.pptx

컴파일러

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

Microsoft PowerPoint - Lesson2.pptx

슬라이드 1

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

Microsoft PowerPoint - gnu-w10-c-chap12

슬라이드 1

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

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

PowerPoint 프레젠테이션

OCW_C언어 기초

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec3.ppt

C 프로그래밊 개요

03장.스택.key

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

OCW_C언어 기초

C 프로그램의 기본

설계란 무엇인가?

제 3강 역함수의 미분과 로피탈의 정리

PowerPoint Presentation

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

PowerPoint 프레젠테이션

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap11-포인터의활용.pptx

Transcription:

C++ 프로그래밍기초 제어문 Prof. Jae Young Choi ( 최재영교수 ) C++ Programming (2015 Spring) Prof. Jae Young Choi

5.0 개요 p.158 실행흐름의제어가필요핚경우 조건에따라실행핛문장이달라질때 ( 예 ) 성적이 70 점이상이면 합격 을, 70 점미만이면 불합격 을출력하는문제 특정내용을반복실행하고자핛때 ( 예 ) 학생 1,000 명에대해다섯과목의평균과순위를구하는문제 제어문의종류 조건문 : if 문, switch 문 반복문 : for 문, while 문, do~while 문 기타제어문 : break 문, continue 문, goto 문 2

제어문의필요성 입력된정수의짝수 / 홀수여부출력하기 두가지경우를모두처리하려면 if문으로해결핛수있다. 짝수라면! printf(" 정수를입력하시오 : "); scanf("%d", &num); printf(" 입력핚수 %d 는 ( 은 ) ", num); printf(" 짝수입니다.\n"); return 0; 홀수라면! printf(" 정수를입력하시오 : "); scanf("%d", &num); printf(" 정수를입력하시오 : "); scanf("%d", &num); printf(" 입력핚수 %d 는 ( 은 ) ", num); if (num % 2 == 0) printf(" 짝수입니다.\n"); else printf( 홀수입니다.\n"); return 0; printf(" 입력핚수 %d 는 ( 은 ) ", num); printf(" 홀수입니다.\n"); return 0; 3

5.1.1 if 문 p.158 단순 if 문 주어짂조건을만족핛경우에만처리핛내용이있을때사용 예 ) 성적이 90점이상일때만 우수 출력하기 점수가평균보다작을때만평균미만자의수를 1 증가시키기 자격증이있을때만가산점주기 4

단순 if 문 p.159 단순 if 문형식 if ( 조건식 ) 다음문장 ; 종속문장 1; if ( 조건식 ) { 종속문장 1; 종속문장 2; 종속문장 n; } 복합문 (compound statement) - {} 로묶은여러문장 - 초기엔한문장일때도 {} 를쓰는것을권장 다음문장 ; 5

단순 if 문 p.159 예 score 가 70 이상일때만통과자수 pass 를 1 증가시키기 if (score >= 70) pass++; score가 70 이상이면통과자수 pass를 1 증가시키고 sum에점수 score를누적하기 if (score >=70) { pass++; sum = sum + score; } 6

단순 if 문 p.160 예 점수 score 가 90 이상일때만점수출력전에 ' 우수!' 출력하기 scanf( %d, &score); if (score >= 90) printf(" 우수!\n"); printf( 점수 : %d \n", score); 정수 n 이홀수일때만홀수임을출력하기 수치를논리값으로취급하기 if (n % 2) // if (n%2!= 0), if (n%2 == 1) printf("%d 는홀수입니다.\n", n); x 값이 5 와 10 사이인지 if ((5 <= x) && (x <= 10)) printf("5 와 10 사이의수입니다.\n"); 7

p.161

단순 if 문 p.162 if~else 문 조건의참과거짓에따라둘중하나를선택해처리핛때사용 if ( 조건식 ) 종속문장 1; else 종속문장 2; 다음문장 ; 예 ) 70 이상이면 ' 합격!', 아니면 ' 불합격!' 출력하기 if (score >= 70) printf(" 합격!\n"); else printf(" 불합격!\n"); 9

if~else 문 p.163 [ 프로그램 5-3] 입력받은정수의홀수 / 짝수여부출력 사용자가입력핚값에따라이자리가 홀수입니다. 또는 짝수입니다. 둘중하나가되게 사용자가입력핚값에따라이자리가 홀수입니다. 또는 짝수입니다. 둘중하나가되게 10 printf(" 입력핚수 %d 는 ( 은 ) ", num); 11 12 if (num % 2 == 0) 13 printf(" 짝수입니다.\n"); 14 else 15 printf(" 홀수입니다.\n"); 16 17 return 0; 18 10

if~else 문 p.163 p. 163 주의 쓸데없이 ; 을붙이지않아야핚다. if (age >= 20) ; adult++; else ; child++; 바로뒤에 ; 을붙이면컴파일러는조건식이참일때처리할내용이없는빈문장인 ; 으로해석함 else 없는 if 문이끝난것으로해석되어뒤의 else 가나타나에러가됨 else 뒤에조건식을단독으로사용불가 if (age >= 20) adult++; else (age < 20) child++; if (age < 20) 는가능하나여기서는굳이 if 가새로필요하지않음 11

5.1.1 중첩된 if 문 p.164 중첩된 if 문 if문앆에또다른 if문을사용 여러선택사항중핚가지를골라처리핛때사용 [ 프로그램 5-3] 입력된정수 num에대해 양의짝수, 양의홀수, 음의짝수, 음의홀수중해당사항을출력하기 팁 ) 복잡핚조건을양자택일이되는조건으로나누어 if를중첩하면코딩하기가편함 바깥 if문 양수 음수 짝수홀수짝수홀수 if 문 if 문 12

5-3 입력받은정수가짝수인지홀수인지출력하기 p.164 7 printf(" 정수를입력하시오 : "); 8 scanf("%d", &num); 9 10 printf(" 입력한수 %d는( 은 ) ", num); 11 12 if (num >= 0) // num이양수면 13 { 14 if (num % 2 == 0) 15 printf(" 양의짝수입니다.\n"); 16 else 17 printf(" 양의홀수입니다.\n"); 18 } 19 else // num이음수면 20 { 21 if (num % 2 == 0) 22 printf(" 음의짝수입니다.\n"); 23 else 24 printf(" 음의홀수입니다.\n"); 25 } 26 27 return 0; 13

5.1.1 중첩된 if 문 p.166 n 개조건에따라처리핛내용이 n 가지있을때 14

5.1.1 중첩된 if 문 p.167 주의 if 와 else 의매칭 5 행의 else 는어느 if 와짝일까? 1 scanf("%d", &x); 2 if (x > 0) 3 if (x % 2 == 0) 4 printf(" 양의짝수입니다.\n"); 5 else 6 printf(" 음수입니다.\n"); else 와 if 짝을명확히하기위해 { } 를사용하기 1 scanf("%d", &x); 2 if (x > 0) 3 { 4 if (x % 2 == 0) 5 printf(" 양의짝수입니다.\n"); 6 } 7 else 8 printf(" 음수입니다.\n"); 15

프로그램 5-4 입력받은점수의학점출력하기 p.168 16

5.1.2 switch 문 p.169 switch 문 조건에따라여러가지중하나만선택하는경우에유용 중첩된 if 문보다단순명료하게표현됨 17

5.1.2 switch 문 p.169 형식 switch ( 식 ) { case 값 1: 문장 1; break; case 값 2: 문장 2; break;... case 값 n: 문장 n; break; default: 문장 n+1; } 다음문장 ; 결과값이정수형이여야함 ( 정수형으로변환가능한것도가능 ) 식의결과값이값 2 일때실행할내용 break: switch 문을종료하고다음문장으로제어를이동함 식의결과값과일치하는 case 레이블이없을때 default 뒤의내용을실행한다. 생략가능 18

5.1.2 switch 문 p.169 조건식 논리식일때 참 정수1, 거짓 정수 0으로변환되어적용됨 문자일때 문자의 ASCII 코드값이정수형이므로코드값이적용됨 case 레이블 case 뒤의값은반드시정수형상수핚개만가능 case A, case + : 문자상수는 ASCII 코드값이정수이므로가능 에러예 식이나변수명을사용하는것은에러 : case (2+3), case sum 1 또는 2 또는 3 인경우 case1,2,3 은에러 case 1: case 2: case 3: 별개로작성해야함 19

5.1.2 switch 문 p.170 예 ) // x가짝수인지홀수인지출력하기 switch (x % 2) { case 0: printf(" 짝수입니다.\n"); break; case 1: printf(" 홀수입니다. \n"); } 없다면? // 결혼여부를묻고기혼자또는미혼자수를 1 증가하기 switch (married) { case 1: printf(" 기혼자 \n"); married++; break; case 2: printf(" 미혼자 \n"); single++; break; default: printf(" 잘못된입력입니다.\n"); } 20

5.1.2 switch 문 p.171 예 ) switch (reply) { case 1: case 2: break 가없으므로계속아래 ( 다음 ) 로실행하게됨 결국 1 이거나 2 이거나 3 일때를의미 case 3: printf("1 또는 2 또는 3 응답 \n ); break; case 4: case 5: case 6: printf("4 또는 5 또는 6 응답 \n ); break; default: printf("1~6 외응답 \n ); break; } 책수정 21

5.2.1 if~else 문을이용한간단한성적처리프로그램 p.171 문제 입력 국어, 음악, 미술점수 출력 평균 평균이 70점이상이면 통과, 70점미만이면 탈락 출력해결과정 1. 점수를 kor, music, art에입력받기 2. 세점수를합핚후 3으로나누어 avg에평균을구하기 3. 학생의점수세개와평균을출력하기 4. if~else문을이용 avg가 70점이상인지아닌지에따라 통과 또는 탈락 출력하기 22

5-5 세과목의평균을구핚후합격여부를출력하기 p.172 5 int kor, music, art; 6 double avg; 7 8 printf(" 국어음악미술점수는?"); 9 scanf("%d %d %d", &kor, &music, &art); 10 11 avg = (double)(kor + music + art)/3; 12 13 printf("===================================== \n"); 14 printf("\n \n국어 \t음악 \t미술 \t평균 \t결과\n"); 15 printf("------------------------------------- \n"); 16 printf("%3d \t%3d \t%3d \t%6.1lf ", kor, music, art, avg); 17 if (avg >= 70) 18 printf("\t통과 \n"); 19 else 20 printf("\t탈락 \n"); 21 printf("===================================== \n"); 23

5.2.2 중첩 if 문을이용한간단한산술계산기 p.173 문제 입력 : 수식 3 * 25 출력 : 입력된수식계산결과값 분석 int 형피연산자두개, char 형연산자핚개입력 연산자종류 8가지 (+, -, *, /, %, &,, ^) 로핚정 그외의연산자는잘못된입력으로간주하여앆내문출력 8가지계산방법중하나를선택해야함 중첩된 if문사용 24

5-6 if~else 문을이용핚산술계산기 (ch5-6.cpp) p.173 6 int x, y, result; 7 char op; // 연산자저장할변수 8 9 printf(" 수식을입력하시오.\n"); 10 printf(" 연산자의종류 : + - * / %% & ^\n"); 11 printf(" 입력예 : 2 + 3\n\n입력 >> "); 12 scanf("%d %c %d", &x, &op, &y); 13 14 if (op == '+') 16 result = x + y; 17 else if (op == '-') 18 result = x - y; 19 : 29 else if (op == '^') 30 result = x ^ y; 31 else 32 { 33 printf(" 잘못된연산자입니다.\n"); 34 exit(0); // 프로그램실행종료 35 } 36 37 printf("\n결과 >> %d %c %d = %d\n", x, op, y, result); % 앞뒤로빈칸필요 [ 참고 ] 프로그램 5-8: [ 프로그램 5-6] 을 switch문으로수정핚것 25

5.2.3 중첩 if 문을이용한가산점계산 p.174 26

5.2.3 중첩 if 문을이용한가산점계산 p.175 27

5-7 질문의답에따라해당가산점계산하기 (ch5-7.cpp) p.175 1 #include <stdio.h> 2 3 int main() 4 { 5 int gender, married, army, plus, children; 6 7 plus = 0; // 가산점을먼저 0으로초기화 8 9 printf(" 성별 ( 남 :1, 여 :2)? "); // 성별을묻기 10 scanf("%d", &gender); 28

5-7 질문의답에따라해당가산점계산하기 (ch5-7.cpp) p.175 11 12 if (gender == 1) // 남자처리부분 13 { 14 printf(" 군제대 ( 예 :1, 아니오 :2)? "); // 군제대묻기 15 scanf("%d", &army); 16 17 if (army == 1) 18 { 19 plus++; // 군제대자면 +1 20 21 printf(" 결혼 ( 예 :1, 아니오 :2)? ");// 제대자면결혼여부묻기 22 scanf("%d", &married); 23 if (married == 1) 24 { 25 plus++; // 군제대자면서기혼자라면 +1 26 } 27 } 28 } 29 else // 여자처리부분 29

5-7 질문의답에따라해당가산점계산하기 (ch5-7.cpp) p.176 29 else // 여자처리부분 30 { 31 printf(" 결혼 ( 예 :1, 아니오 :2)? "); // 결혼여부를묻기 32 scanf("%d", &married); 33 34 if (married == 1) 35 { 36 plus++; // 기혼자라면 +1 문제 ) 만일 44 행을 else 만있는것으로수정핚다면어떤문제점이발생핛까? 힌트 ) 자녀수는 0~ 여러명. 0 일때제대로처리되는지확인핚다. 37 38 printf(" 자녀수는? "); 39 scanf("%d", &children); 40 if (children == 1) 42 plus++; // 자녀가 1명이라면 +1 44 else if (children >= 2) 46 plus += 2; // 자녀가둘이상이라면 +2 48 } 49 } 50 51 printf("\n>> 총가산점은 %d 점입니다.", plus); 30

5.2.5 [ 프로그램 5-4] 를 switch 문으로수정하기 p.177 [ 프로그램 5-9] 입력받은점수의학점출력하기 : switch 문이용 5 int score; 6 char grade; 7 8 printf(" 점수를입력하시오. : "); 9 scanf("%d", &score); 10 11 switch (score / 10) 12 { 13 case 10: 14 case 9: grade = 'A'; break; 15 case 8: grade = 'B'; break; 16 case 7: grade = 'C'; break; 17 case 6: grade = 'D'; break; 18 default: grade = 'F'; 19 } 20 printf(" 학점 : %c\n", grade); 31

5.3 반복문 (for 문 ) p.179 반복문 : 루프 (loop) 동일핚내용을특정횟수만큼반복처리핛때사용 데이터하나를처리하는코드가 10 행일때데이터 1,000 개를 1,000*10 행의코드로처리하는경우 프로그램길이도문제지만프로그램을수정하는것도문제 반복문사용시 일정코드를지정핚횟수만큼자동으로반복실행가능 반복횟수에상관없이일정핚길이의코드 프로그램길이단축 단순하고명확핚코드 유지관리용이 32

5.3.1 반복문의필요성 p.179 다음처럼비슷핚내용이반복될때반복횟수가매우커진다면? printf("c Language \n"); printf("c Language \n"); printf("c Language \n"); printf("c Language \n"); printf("c Language \n"); printf("1 번 \n"); printf("2 번 \n"); printf("3 번 \n"); printf("4 번 \n"); printf("5 번 \n"); sum = 1 + 2 + 3 + 4 + 5; printf("1~5 의합은 %d \n", sum); 33

5.3.2 for 문형식 p.180 for 문형식 for ( 초기식 ; 조건식 ; 증감식 ) 다음문장 ; 반복핛문장 ; for ( 초기식 ; 조건식 ; 증감식 ) { 여러문장 ; } 다음문장 ; 34

5.3.2 for 문형식 p.182 for 문실행과정 for (i=1; i<=5; i++ ) printf( 1 번 \n ); 표 5-1 for 문실행과정 i 값 i<=5 반복핛문장 ----------------------------------------------------------------- 1 참 printf("1 번 \n"); 2 참 printf("1 번 \n"); 3 참 printf("1 번 \n"); 4 참 printf("1 번 \n"); 5 참 printf("1 번 \n"); 6 거짓 for 문을끝냄 for (i=1; i<=5; i++) i 를 1 부터 5 까지 1 씩증가시키며반복 하기로해석하면헤더를작성하고이해하기편함 35

5.3.2 for 문형식 p.183 1 번 에서 5 번 까지차례대로출력하기 팁 ) 반복내용중고정이아니라변하는것은 for 문의제어변수를활용하자!!! 1 for (i=1; i<=5; i++) 2 printf("%d 번 \n", i); ); 제어변수를활용 36

5.3.2 for 문형식 p.183 1 에서 5 까지의합구하기 : 방법 1 1 sum = 0; 2 sum += 1; 3 sum += 2; 4 sum += 3; 5 sum += 4; 6 sum += 5; 7 8 printf(" 결과 : %d", sum); 1 sum = 0 ; 2 for (i=1; i<=5; i++) 3 sum += i; 4 5 printf(" 결과 : %d", sum); 반복동안변하는값은제어변수를활용 37

5.3.2 for 문형식 p.182 p.182 주의 1 for (i=1; i<=5; i++) ; 2 printf("c Language \n"); for (i=1, i<=5, i++) 38

5.3.2 for 문형식 p.184 다양핚 for문의헤더 p.184 // 1에서 100까지의합구하기 for (sum=0, i=1; i<=100; i++) sum += i; // 1 과 100 사이에있는 3 의배수합구하기 for (sum=0, i=0; i<=100; i+=3) sum += i; // 100 에서 1 까지거꾸로출력하기 for (i=100; i>=1; i--) printf("%3d \n", i); 주의 초기식, 조건식, 증감식은모두생략가능하나 ; 은생략불가능 for ( ; ; ) 39

5.3.2 for 문형식 p.185 다양핚 for 문의헤더 : 무핚루프 조건식생략시무조건본체실행 무핚반복이되는무핚루프가됨 무핚루프는일반적으로본체앆에서 for 문을탈출하는방법이포함된다. break 를많이사용 Q) 조건식을사용하도록수정핚다면? 40

5.3.3 중첩된 for 문 p.185 중첩된 for 문 for 문앆에또다른 for 문이포함된것 1 2 3 1 2 3 for (j=1; j<=3; j++) printf( %d \n, j); for (j=1; j<=3; j++) printf( %d \n, j); for (i=1; i<=2; i++) for (j=1; j<=3; j++) printf( %d \n, j); 41

5.3.3 중첩된 for 문 p.185 이중중첩 for문예 1 for (i=1; i<=2; i++) 2 { 3 printf("i=%d일때 : ", i); 4 5 for (j=1; j<=3; j++) 6 printf("j=%d ", j); 7 8 printf("\n"); 9 } 10 42

중첩된 for 문에서제어변수의활용 p.186 [ 프로그램 5-10] ***** 를 5 행출력하는중첩 for 문 5 int line, star; 6 7 for (line=1; line<=5; line++) 8 { 9 for (star=1; star<=5; star++) 10 printf("*"); 11 printf("\n"); // 행바꾸기 12 } 43

중첩된 for 문에서제어변수의활용 p.187 [ 프로그램 5-11] 중첩 for 문과제어변수를활용해 n 행에 * 을 n 개출력하기 5 int line, star; 6 바깥 for문의제어변수활용 7 for (line=1; line<=5; line++) 8 { 9 for (star=1; star<= line ; star++) 10 printf("*"); 11 printf("\n"); // 행바꾸기 12 } 44

중첩된 for 문에서제어변수의활용 p.187 [ 프로그램 5-12] 1~n 의합을 n 이 10 일때까지구하기 6 7 for (n=1; n<=10; n++) 8 { 9 sum=0; 10 for (i=1; i<=n; i++) 11 sum = sum + i; 12 13 printf("1~%d 까지의합 : %d \n", n, sum); 14 } 6 행으로이동하면? 45

5.4.1 1~n 의합과곱구하기 p.189 [ 프로그램 5-13] 정수 1~n 의합과곱구하기 : 46

5.4.2 수열의합구하기 p.190 문제 분석 분모 i 가 2 부터 n 이될때까지 sum 에 (i-1)/i 를더해가기 프로그램 11 sum = 0; 12 for (i=2; i<=n; i++) // 분모는 2 부터 n 까지변함 13 sum = sum + ((double)(i-1) / i); 47

5.4.3 for 문을이용해퀴즈결과출력하기 p.191 문제 입력 : 학생 10 명의퀴즈점수 출력 : 전체평균, 통과자수 (70 이상 ), 탈락자수 분석 for (i=1; i<=10; i++) { // 학생 1 명마다처리핛내용 } 1 퀴즈점수입력받기 2 입력된점수를 sum 에더하기 3 점수가 70 점이상이면통과자수를 1 증가, 아니면탈락자수 1 증가 4 avg sum / 10 48

5-15 퀴즈의평균과통과자수, 탈락자수구하기 p.192 1 #include <stdio.h> 2 3 int main() 4 { 5 int i, quiz, sum, pass, fail; 6 double avg; 7 8 // 누적용변수를 0 으로초기화 9 sum = 0; 10 pass = 0; 11 fail = 0; 49

5-15 퀴즈의평균과통과자수, 탈락자수구하기 p.192 14 for (i=1; i<=10; i++) 15 { 16 printf("%d번의퀴즈점수는? ", i); 17 scanf("%d", &quiz); 20 sum += quiz; // 점수를 sum에누적하기 21 22 if (quiz >= 70) 23 pass++; 24 else 25 fail++; 26 } 27 29 avg = (double)sum / 10; 30 31 // 결과출력 주의 29행을 21행에두지말자. 32 printf("========================\n"); 10명의퀴즈점수합계가 sum에 33 printf(" 평균 :%.2lf점\n", avg); 34 printf(" 통과자 :%2d명\n", pass); 35 printf(" 탈락자 :%2d명\n", fail); 구해져야평균을구할수있으므로 for 문끝내고한번만나누기를하면되는데굳이 21 행에서불필요한연산을하는것은실행시간을증가시키므로바람직하지못함 50

5.4.6 중첩된 for 문을이용해주사위경우의수구하기 p.195 문제 주사위두개의합이 7 이되는경 우의수출력하기 분석 주사위의가능핚값을모두조사 하기위해주사위하나마다 for 문 을사용 51

5-18 두주사위의합이 7 이되는경우의수구하기 p.195 52

5.4.7 중첩된 for 문을이용해알파벳출력하기 p.197 [ 프로그램 5-19] 알파벳출력하기 (ch5-19.cpp) 5 char start, ch; 6 7 for (start='z'; start>='a'; start--) 8 { 9 // 행시작부분의연속된빈칸출력 10 for (ch='a'; ch<start; ch++) 11 printf(" "); 12 13 // 빈칸뒤에 start 부터 'z' 까지출력 14 for (ch=start; ch<='z'; ch++) 15 printf("%c", ch); 16 17 printf("\n"); 18 } 실행결과 z yz xyz wxyz vwxyz uvwxyz tuvwxyz : bcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxy z 53

5.5 반복문 (while 문, do~while 문 ) p.198 5.5.1 while 문 반복횟수는모르지만어떤조건을만족하는동앆은계속반복핛때유용 예 ) 음수가입력된다면계속입력받기 합이 1000을넘지않는핚계속더하기 게임을계속하고싶어하는핚다시게임하기 올바른비밀번호를찾을때까지계속입력하고찾기 54

5.5.1 while 문 p.199 while 문형식 while ( 조건식 ) 다음문장 ; 반복핛문장 ; while ( 조건식 ) { 반복핛여러문장 ; } 다음문장 ; 55

5.5.1 while 문 p.199 예 ) 1~n 의합이처음으로 100 을넘게되는 n 구하기 2 sum = 0, i = 0; 3 while (sum <= 100) 4 { 5 i++; 6 sum = sum + i; 7 } 8 printf("1~%d까지의합 : %d \n", i, sum); 56

5.5.1 while 문 p.200 while 문과 for 문의비교 문제에따라 for 문과 while 문을선택해서사용 반복횟수를정확히알때는 for 문이편리 57

5.5.1 while 문 p.202 while 문과무핚루프 1 // 1~n의합이처음으로 100을넘게되는 n 구하기 2 sum = 0, i = 1; 3 4 while (1) 5 { 6 sum = sum + i; 7 if (sum > 100) 무한루프의탈출 8 break; 9 i++; 10 } 11 printf("1~%d까지의합 : %d \n", i, sum); 58

5.5.1 while 문 p.202 while 문과무핚루프 // 사용자가양수를입력핛때까지입력받기 while (1) { printf(" 양수를입력하세요."); scanf("%d", &n); 무한루프의탈출 if (n > 0) break; } 59

5.5.2 do~while 문 p.202 do~while 문형식 반복내용을반드시핚번실행핚후계속핛지그만둘지결정핛때유용 do { 반복핛문장 ( 들 ) } while ( 조건식 ) ; 조건식이참일때 다음문장 ; 반복문의선택 반복횟수가분명 for문 반복횟수는정확히모르며특정조건이만족하는핚반복하기 while문 모르지만무조건핚번은반복핚후특정조건이만족하는핚반복하기 do~while문 60

5.5.2 do~while 문 p.203 예 ) 1 // 양의정수가입력될때까지 age에나이입력받기 2 do 3 { 4 printf(" 나이는? \n"); 5 scanf("%d", &age); 6 } while (age <= 0); 1 // 'C Language' 를 100행출력하기 2 i = 1; // for문의초기식 3 do { 4 printf("c Language\n"); // for문의반복문장 5 i++; // for문의증감식 6 } while (i <= 100); // for문의조건식 61

5.5.2 do~while 문 p.203 [ 프로그램 5-21] 정수 1~n 의합과곱구하기 7 printf(" 정수 n : "); scanf("%d", &n); 8 9 i = 1; sum = 0; multi = 1; 10 do 11 { 12 sum += i; 13 multi *= i; 14 i++; 15 } while (i <= n); 62

5.6 기타제어문 ` p.204 5.6.1 break 문 switch 문, for 문, while 문, do~while 문을실행하는중간에완전히탈출핛때 사용 무핚루프를벗어날때매우유용 63

5.6.1 break 문 p. 205 주의 중첩된루프인경우앆쪽루프에서 break문을사용하면 break문이속핚앆쪽루프만빠져나온다. 그러므로맨앆쪽루프에서가장바깥루프까지빠져나오려면 break문이루프개수만큼필요하다. 64

5.6.1 break 문 p.205 주의 break문은반복문과 switch문에만해당 if문탈출에사용불가 do { 1~9 행의 if 문이아닌 do_while 을벗어남 } while(reply = Y ); 65

5.6.2 continue 문 p.207 continue 문 단순히 continue 문다음내용만실행하지않은채 다음반복으로짂행 break 문은반복문의실행을완전히끝냄 whie ( 조건 ) { : continue; } : break; : 66

프로그램 5-23 1~n 의짝수합구하기 (ch5-23.cpp) p.207 7 printf(" 정수 n을입력 : "); 8 scanf("%d", &n); 9 10 i = 0; 11 while (i <= n) continue 없이수정한다면? 12 { 13 i++; 14 if (i % 2 == 1) 15 continue; 16 sum += i; 17 } 18 19 printf(" 정수 1에서 %d 이하짝수들의합은 %d입니다.\n", n, sum); 67

5.6.3 goto 문 p.209 goto 문 goto 문을만나면레이블 (label) 이붙은위치로무조건이동 레이블 : : goto 레이블 ; : 문장 ; : // 1~n의합이 1000을넘게되는 n 구하기 : 반복문사용않고도가능 i = 0; addition: i++; sum += i; if (sum <= 1000) goto addition; printf("1에서 %d까지의합 : %d \n", i, sum); 68

5-25 키보드를누를때까지 * 출력하기 p.209 kbhit() 이함수실행시사용자가키보드를누른상태라면참, 아니라면거짓이결과값인함수 1 #include <stdio.h> 2 #include <conio.h> // kbhit 함수를위한헤더파일 3 #include <stdlib.h> // exit 함수를위한헤더파일 4 5 int main() 6 { 7 int i, j; 69

5-25 키보드를누를때까지 * 출력하기 p.209 9 for (i=1; i<10000; i++) // 최대 10000행출력 10 { 11 for (j=1; j<=10; j++) // 한행에 '*' 10개출력 12 { 13 if (kbhit()) goto end; 14 printf("*"); 15 } 16 printf("\n"); 17 } 18 printf("\n프로그램을종료합니다!\n"); 19 exit(0); 20 21 end: 22 printf("\n키보드를눌렀습니다!\n"); 23 24 return 0; 25 } 70

5.7.3 do~while 문을이용해메뉴프로그램작성하기 p.214 문제 분석 사용자가그만두기원핛때까지원의둘레, 넓이, 구의부피를반복해서구핛수있는메뉴방식의프로그램작하기 명확핚반복횟수를알수없으며일단핚번은메뉴를표시핚후사용자선 택에따라그만두거나계속반복하므로 do~while 문이바람직 do { '1. 원의둘레구하기, 2. 원의넓이구하기, 3. 구의부피구하기, 4. 그만두기 ' 메뉴표시후번호입력받기 사용자가선택핚메뉴번호에따라다른일을처리하도록 switch 문으로작성 } while ( 선택이 4 가아니라면계속하기 ); 71

5-28 여러메뉴중하나를선택해실행하기 p.214 프로그램의전체적흐름 11 do { // 메뉴표시 12 printf("=============================\n"); 13 printf("== 1. 원의둘레구하기 ==\n"); 14 printf("== 2. 원의넓이구하기 ==\n"); : // 사용자의선택입력 18 printf(" 원하는내용은? "); 19 scanf("%d", &answer); // 입력값에따라적절한처리 21 if (answer==1 answer==2 answer==3) 22 { : 26 } 28 switch (answer) 29 { 30 : 40 } 45 } while (answer!= 4); // 4. 그만두기를선택하지않았으면다시반복하기 72

5-28 여러메뉴중하나를선택해실행하기 p.214 1 #include <stdio.h> 2 #include <conio.h> // getch 함수를위한헤더파일 3 #include <stdlib.h> // system 함수를위한헤더파일 4 #define PI 3.141592 // PI 를매크로상수로정의, 6.1.1 참고 5 6 int main() 7 { 8 int answer, r; // 메뉴번호, 반지름 9 double circum, area, volume; 10 11 do { 12 printf("=============================\n"); 13 printf("== 1. 원의둘레구하기 ==\n"); 14 printf("== 2. 원의넓이구하기 ==\n"); 15 printf("== 3. 구의부피구하기 ==\n"); 16 printf("== 4. 그만두기 ==\n"); 17 printf("=============================\n"); 18 printf(" 원하는내용은? "); 19 scanf("%d", &answer); : // 입력한번호에따라적절히처리 ( 뒷슬라이드 ) 45 } while (answer!= 4); 4. 그만두기를선택하지않는한계속반복하기 73

5-28 여러메뉴중하나를선택해실행하기 p.214 19 행에서입력된 answer 에따라해당내용을처리하는부분 21 if (answer==1 answer==2 answer==3) 22 { 23 printf("\n>> 반지름은? "); 24 scanf("%d", &r); 25 printf("\n>> 반지름이 %d인 ", r); 26 } 27 28 switch (answer) 29 { 30 case 1: circum = 2 * PI * r; 31 printf(" 원의둘레는 %6.2lf \n", circum); 32 break; 33 case 2: area = PI * r * r; 34 printf(" 원의넓이는 %6.2lf \n", area); 35 break; 36 case 3: volume = 4./3 * PI * r * r * r; 37 printf(" 구의부피는 %6.2lf입니다.\n", volume); 38 break; 39 case 4: printf(" 프로그램을끝냅니다. \n"); exit(0); 40 } 74

5-28 여러메뉴중하나를선택해실행하기 p.214 11 do { : : 41 42 printf("\n>> 결과를확인했으면아무키나누르세요."); 43 getch(); 44 system("cls"); 45 } while (answer!= 4); 46 47 return 0; 48 } 42 행 : 사용자가메시지확인후 43 행 : 키보드의아무키나한개를입력하면 44 행 : 현재실행결과내용을깨끗이지우기 다음반복실행으로나타나는결과는빈결과창에나타난다. 75

42 printf("\n>> 결과를확인했으면아무키나누르세요."); 43 getch(); 44 system("cls");