You are on page 1of 26

Review

1. C 에서 참과 거짓은 ______ 과 _____ 로 표시된다 .

2. if 문 안의 조건식으로 많이 사용되는 수식의 종류는 _______ 과 ________ 이다 .

3. 조건에 따라서 실행되어야 하는 문장이 두 개 이상이면 어떻게 하여야 하는가 ? __________

4. switch~case 문의 블록을 벗어나기 위하여 사용되는 문장은 ?_____________

5. 관계 연산 결과값의 자료형은 ? 결과값으로 가능한 값들을 나열하라 ._____________

6. 논리 연산 결과값의 자료형은 ? 결과값으로 가능한 값들을 나열하라 ._____________

7. switch 문의 제어식의 결과값은 어떤 자료형이어야 하는가 ? __________

8. switch 문에서 제어식과 일치하는 case 절을 찾지 못하였을 경우 , 실행되는 코드에 붙여야

할 키워드는 ________ 이다 .

9. if 문의 조건식으로는 관계식과 논리식만이 가능하다 . ( 참 , 거짓 )

10. switch 문의 case 절에 문자열을 사용할 수 있다 . ( 참 , 거짓 )

11. switch 문에 반드시 default 가 필요하다 .( 참 , 거짓 )


조건문 Q&A
Q. 음수는 참인가 거짓인가 ?
A. 거짓은 0, 0 이 아닌 다른 모든 값은 참이다 .

Q. 연속된 if-else 와 switch 중에서 어떤 것을 사용하는 것이 좋은


가?
A. 프로그래머 자유 .
변수가 가실 수 있는 값의 개수가 3 개 이상이라면 switch 문이
바람직하다 . 코드가 더 읽기 쉬워지기 때문 .

Q. case 절에 정수 상수가 아닌 변수나 수식을 사용할 수 있는가 ?


switch(exp)
{
case x: //x 는 변수

A. case 절에는 반드시 정수 상수만을 사용하여야 한다 . 변수나 일
반 수식을 사용할 수 없다 .
조건문 Q&A
Q. 다음과 같이 문자열에 대하여 switch 문을 사용할 수 있는가 ?
switch(str)
{
case “abc”:

A. 직접적으로는 불가능 .
문자열을 정수로 변환시키는 함수 사용하면 가능 .
혹은 다음과 같이 strcmp() 함수를 사용하여 if-else 구문을 사
용한다 .

if(strcmp(string, “apple”)==0){

}else if(strcmp(string, “orange”)==0){
조건문 Q&A

Q. 정수의 범위에 대하여 switch 문을 적용할 수 있는가 ?

A. 정수의 범위에 대해서는 switch 문을 사용할 수 없다 .


switch 문은 컴파일러가 변환하기 쉽게 하기 위하여 정수값으로
한정되었다 .
하나의 문장에 여러 개의 case 문을 붙일 수 있지만 이 경우 ,
범위에 속하는 모든 정수를 나열하여야 한다 .
IT COOKBOOK

chapter 07.
반복문

한빛미디어㈜ -5- ehanbit.net


 반복문의 구성과 종류 IT COOKBOOK

• 반복 작업은 컴퓨터를 통해 누릴 수 있는 가장 큰 해택 .
• 같은 작업을 반복적으로 수행할 필요가 있을 때 반복문을 사용한다 .

• 반복문은 반복할 문장과 반복조건으로 구성된다 .


- 달팽이는 우물을 탈출할 때까지 올라가는 과정을 반복한다 .

• 반복문에는 do~while, while, for 문이 있다 .

한빛미디어㈜ -6- ehanbit.net


 do~while 문 IT COOKBOOK

• do~while 문은 일단 반복할 문장을 수행한 후에 조건을 검사한다 .

• 달팽이가 3m 의 우물을 탈출하는데 걸리는 일 수를 계산하는 예

int height=0; // 달팽이의 현재 높이를 저장할 변수 , 처음엔 0


int days=0; // 일수를 세기 위한 변수

do{
height=height+55; // 한 번 올라갈 때마다 55cm 씩 증가한다 .
days=days+1; // 한 번 반복될 때마다 하루씩 증가한다 .
} while(height<300); // 아직 우물을 탈출하지 못했으면 계속 반복한다 .
printf(“ 달팽이가 우물을 올라가는 데 걸린 일 수 : %d\n”, days);

한빛미디어㈜ -7- ehanbit.net


 do~while 문 IT COOKBOOK

• do~while 문은 일단 반복할 문장을 수행한 후에 조건을 검사한다 .

• 달팽이가 3m 의 우물을 탈출하는데 걸리는 일 수를 계산하는 예

int height=0; // 달팽이의 현재 높이를 저장할 변수 , 처음엔 0


int days=0; // 일수를 세기 위한 변수

do{
height=height+55; // 한 번 올라갈 때마다 55cm 씩 증가한다 .
days=days+1; // 한 번 반복될 때마다 하루씩 증가한다 .
} while(height<300); // 아직 우물을 탈출하지 못했으면 계속 반복한다 .
printf(“ 달팽이가 우물을 올라가는 데 걸린 일 수 : %d\n”, days);

한빛미디어㈜ -8- ehanbit.net


 while 문 IT COOKBOOK

• 반복조건을 먼저 확인하여 조건을 만족하는 경우에 반복한다 .

• 조건을 만족하지 않으면 반복할 문장을 한 번도 수행되지 않는다 .


// depth 는 우물의 깊이를 입력 받을 변수
int height=0, days=0, depth;
printf(“ 우물의 깊이를 입력하세요 (cm) : ”);
scanf(“%d”, &depth); // depth 에 0 이 입력되었다면…
While(height<depth){ // 조건식은 거짓이 되어 반복할 문장은 한번도 실행되지 않는다
height=height+55; .
days=days+1;
}
printf(“ 달팽이가 우물을 올라가는 데 걸린 일 수 : %d\n”, days);

한빛미디어㈜ -9- ehanbit.net


▶ 조건식이 반복문 중간에 있다면 ? IT COOKBOOK

• 달팽이가 미끄러지는 경우는 반복문 중간에 조건을 판단한다 .

• 이 때는 반복되는 규칙을 관찰하여 조건식이 가장 먼저 수행되도


록 반복되는 부분을 결정하고 while 문으로 작성한다 .

한빛미디어㈜ - 10 - ehanbit.net
▶ 조건식이 반복문 중간에 있다면 ? IT COOKBOOK

height=height+55; // 일단 우물을 올라간다 .


while(height<300){ // 우물 안에 있는 동안 반복한다 .
height=height-13; // 벗어나지 못했으면 미끄러진다
days=days+1; .
height=height+55; // 하루를 증가시킨다 .
} // 다음날 또 올라간다 .

한빛미디어㈜ - 11 - ehanbit.net
▶ 몇 번을 반복할 것인가 ? IT COOKBOOK

• 특정 문장을 일정 횟수 반복할 때는 반복제어변수를 사용한다 .


• 변수명은 관례적으로 i, j, k 많이 사용 .
- “ 사랑합니다”를 3 회 출력하는 경우

• 반복 횟수는 초기식 , 조건식 , 증감식이 결정한다 .

한빛미디어㈜ - 12 - ehanbit.net
▶ 제어변수의 활용 IT COOKBOOK

• 제어변수의 값을 반복문 안에서 활용하는 경우는 초기식 , 조건


식 , 증감식을 적절하게 수정한다 .
- 제어변수를 활용하여 구구단을 출력하는 예

한빛미디어㈜ - 13 - ehanbit.net
 증감연산자 IT COOKBOOK
• 반복문의 증감식은 주로 증감연산자를 사용하여 간단히 표현한다 .

• 증감연산자에는 증가연산자 (++) 와 감소연산자 (--) 가 있다 .

• 증감연산자의 피연산자는 변수가 와야 한다 .

• 상수에는 증감연산자를 사용할 수 없다 .


• ++10; (X) --10; (X)
한빛미디어㈜ - 14 - ehanbit.net
▶ 증감연산자의 두 가지 표현법 ( 전위형 , 후위형 ) IT COOKBOOK

• 증감연산자는 사용 위치에 따라서 두 가지 형태로 사용된다 .

• 증감식이 단독으로 사용될 때는 전위형과 후위형의 차이는 없으



다른 연산자와 함께 쓰일 때는 결과값이 달라진다 .
- 변수 a 의 값이 5, b 의 값이 5 일 때

한빛미디어㈜ - 15 - ehanbit.net
▶ 증감연산자의 사용 예 IT COOKBOOK

#include <stdio.h>

int main()
{
int a=0, b=0;

++a; // a 의 값은 0 에서 1 로 증가
b++; // b 의 값도 0 에서 1 로 증가
printf("a=%d, b=%d\n", a, b); // a=1, b=1 출력

b=a++; // a 의 증가되기 전의 값이 b 에 대입
printf("a=%d, b=%d\n", a, b); // a=2, b=1 출력

b=++a; // 증가된 a 의 값이 b 에 대입
printf("a=%d, b=%d\n", a, b); // a=3, b=3 출력

printf("a=%d, b=%d\n", a++, b++);


// a, b 모두 증가되기 전의 값 3 이 출력
printf("a=%d, b=%d\n", a, b); // a, b 는 증가된 4 가 출력

return 0;
}

한빛미디어㈜ - 16 - ehanbit.net
 for 문 IT COOKBOOK
• while 문의 초기식 , 조건식 , 증감식을 한곳에 모아 놓은 것이다 .
• 특정 횟수를 반복하는 경우 사용하기 편하다 .

• for 문이 실행되는 순서

한빛미디어㈜ - 17 - ehanbit.net
▶ 1 부터 10 까지의 합을 구하는 예 IT COOKBOOK

#include <stdio.h>

int main()
{
int i; // 반복제어변수로 사용한 변수
int sum=0; // 합을 누적시킬 변수
// i{가 1 부터 10 까지 변하면서 10 번 반복 for(i=1, sum=0; i<=10; i
for(i=1; i<=10; i++)
sum=sum+i; // i 의 값을 누적시킨다 .
}
printf("1 부터 10 까지의 합은 : %d\n", sum);
return 0;
}

한빛미디어㈜ - 18 - ehanbit.net
▶ 복합대입연산자 IT COOKBOOK

• 두 값을 연산한 결과를 다시 왼쪽의 변수에 대입하는 경우에 복합대입연산


자를 사용할 수 있다 .

• 사칙연산자와 나머지 연산자는 모두 복합대입연산자로 사용할 수 있다 .


복합 대입연산식 연산 방법 일반 연산식
res += val; res 와 val 을 더해서 res 에 저장 res = res + val;

res -= val; res 에서 val 을 뺀 값을 res 에 저장 res = res - val;


res *= val; res 와 val 을 곱해서 res 에 저장 res = res * val;
res /= val; res 를 val 로 나눈 값을 res 에 저장 res = res / val;
res %= val; res 를 val 로 나눈 나머지를 res 에 저 res = res % val;

한빛미디어㈜ - 19 - ehanbit.net
 다중 반복문 IT COOKBOOK

• 반복문안에 실행할 문장이 반복문인 경우 다중 반복문이다 .


- 1 부터 원하는 수까지 반복하는 경우 ( 음수가 입력될 때까지 반복한다 ).

양수를 입력하세요 : 10 ( 엔터 )
1 부터 10 까지의 합은 : 55
양수를 입력하세요 : 60 ( 엔터 )
1 부터 65 까지의 합은 : 2145
양수를 입력하세요 : -1 ( 엔터 ) // 음수가 입력되면 프로그램 종

한빛미디어㈜ - 20 - ehanbit.net
▶ 1 부터 n 까지의 합을 반복하는 프로그램 IT COOKBOOK

#include <stdio.h>

int main()
{
int n; // 양수를 입력 받을 변수
int i; // 반복제어변수
int sum; // 1 부터 n 까지의 합을 누적할 변수

printf(" 양수를 입력하세요 : ");


scanf("%d", &n);

while(n>0){ // 양수일 때만 반복
sum=0; // 누적변수 초기화 : 새로운 양수값이 입력될 때마다 새롭게
for(i=1; i<=n; i++){ 누적되어야 함으로
sum+=i; // i 는 1 부터 n 까지 반복하면서 n 번 반복
} // i 의 값을 sum 에 누적
printf("1 부터 %d 까지의 합은 : %d\n", n, sum);
printf(" 양수를 입력하세요 : "); // 누적된 값 출력
scanf("%d", &n);
} // 반복을 위해 다시 양수를 입력 받는다 .

return 0;
}

한빛미디어㈜ - 21 - ehanbit.net
▶ 2 중 for 문을 사용한 구구단 출력 예 IT COOKBOOK

• 1 개의 단을 출력하는 것은 반복문이다 (2 단만을 출력하는 경우 ).

for(j=1; j<=9; j++){ // j 의 값은 1 부터 9 까지 변하며 9 번 반복


printf(“2 * %d = %d\n”, j, 2*j);
// j 의 값을 사용하여 2 단을 출력한다 .
}

• 8 개의 단 (2 단 ~9 단 ) 을 모두 출력하기 위해 2 중 반복문을 사
용한다 .
for(i=2; i<=9; i++){ // i 의 값이 2 부터 9 까지 변하면서 8 번 반복
for(j=1; j<=9; j++){
printf(“%d * %d = %d\n”, i, j, // 반복 제어변수 i 와 j 를 활용한다 .
i*j);
}
i 가 2 일 때 j 는 1 부터 9 까지 변하면서 2 단을 출력
}
i 가 3 일 때 j 는 1 부터 9 까지 변하면서 3 단을 출력

i 가 9 일 때 j 는 1 부터 9 까지 변하면서 9 단을 출력

한빛미디어㈜ - 22 - ehanbit.net
 무한 반복문 IT COOKBOOK

• 무한 반복문은 조건식이 항상 참이 되도록 작성한다 .

• for 문을 사용한 무한 반복문

for( ; ; ){
printf(“ 뇌를 자극하는 C 프로그래밍… \n”);

한빛미디어㈜ - 23 - ehanbit.net
 반복문 제어 IT COOKBOOK

• 반복문 중간에서 조건에 따라 반복을 종료할 때 break 를 사용한


다.
양수를 입력
-#include 받아 누적하여 출력하는 예 ( 음수값 입력시 종료 ).
<stdio.h>

int main()
{
int sum=0;
int n;

while(1){ // 조건식이 항상 참이므로 무한 반복문


printf("0 또는 양수값을 입력하세요 : ");
scanf("%d", &n); // 변수 n 에 양수값 입력
if(n<0) break; // 입력 받은 값이 음수이면 반복문을 빠져나간다 .
sum+=n; // 그렇지 않으면 입력 받은 값을 sum 에 누적
}

printf(" 그 동안 누적된 값 : %d\n", sum);


return 0;
}

한빛미디어㈜ - 24 - ehanbit.net
▶ break 문을 사용할 때 주의할 점 IT COOKBOOK
• break 문은 자신을 포함하는 가장 가까운 반복문 하나만 빠져나간다 .
• break 문은 반복문이 중첩되어 있을 때 하나만 빠져나간다 .
int i, j, cnt=0;
for(i=1; i<=10; i++){ // i 는 1 부터 10 까지 10 번 반복
for(j=1; j<=10; j++){ // j 는 1 부터 10 까지 10 번 반복
cnt++; // cnt 의 값을 하나씩 증가
if(i+j==12) break;
} for 문 하나만 탈출한다 !
}

• break 문은 반복문의 블록만을 벗어난다 (switch~case 문은 예


외 ).

한빛미디어㈜ - 25 - ehanbit.net
▶ continue 는 반복문의 일부를 건너뛴다 . IT COOKBOOK

• continue 문은 실행위치를 반복문의 블록 끝으로 이동시키므로


continue 문 이후의 문장을 건너뛰는 용도로 사용된다 .
- 1 부터 100 까지의 수 중에서 3 의 배수를 제외한 합을 구하는 예

한빛미디어㈜ - 26 - ehanbit.net

You might also like