728x90
6.13 탈출조건 루프 do while
- while : 진입 조건을 판단
- do while : loop의 탈출 조건을 판단
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
const int secret_code = 337;
int guess = 0;
/*
printf("enter secret code : ");
scanf("%d", &guess);
while (guess != secret_code) {
printf("enter secret code : "); // 동일한 기능을 하는 코드들이 중복
scanf("%d", &guess);
}
*/
do {
printf("enter secret code : ");
scanf("%d", &guess);
} while (guess != secret_code); // do while문은 while문의 조건식 뒤에 ; 필요
// do while문은 비교 전 무조건 한번은 실행
printf("good!\n");
return 0;
}
Output :
Enter secret code : (123 입력)
Enter secret code : (000 입력)
Enter secret code : (337 입력)
good!
6.14 어떤 루프를 사용할까?
- 진입조건 : for, while
- 탈출조건 : do while
- for문과 while문은 서로 호환 가능
- for문은 횟수 제한이 있으나, while문은 없음 -> while문은 어떤 프로그램을 계속 작동시켜야 할 때 사용
6.15 중첩된 루프들
- 여러 개의 반복문 중첩 가능
#include <stdio.h>
#define NUM_ROWS 5
#define FIRST_CHAR 'A'
#define LAST_CHAR 'K'
// 지정된 범위의 문자들을 반복하여 출력
int main()
{
int r; // row loop
int c; // character loop
for (r = 0; r < NUM_ROWS; ++r) { // outer row loop
for (c = FIRST_CHAR; c <= LAST_CHAR; ++c) // inner character loop
printf("%c ", c);
printf("\n");
}
return 0;
}
Output :
A B C D E F G H I J K
A B C D E F G H I J K
A B C D E F G H I J K
A B C D E F G H I J K
A B C D E F G H I J K
#include <stdio.h>
#define NUM_ROWS 10
#define FIRST_CHAR 'A'
// 지정된 범위의 문자들을 1개부터 하나씩 늘려가며 출력
int main()
{
int r, c;
for (r = 0; r < NUM_ROWS; ++r) {
for (c = FIRST_CHAR; c <= FIRST_CHAR + r; ++c)
printf("%c ", c);
printf("\n");
}
return 0;
}
Output :
A
A B
A B C
A B C D
A B C D E
A B C D E F
A B C D E F G
A B C D E F G H
A B C D E F G H I
A B C D E F G H I J
#include <stdio.h>
#define NUM_ROWS 12
#define FIRST_CHAR 'A'
#define LAST_CHAR 'L'
// 지정된 범위의 문자들을 최대 갯수에서 앞에서부터 하나씩 줄여가며 출력
int main()
{
int r, c;
for (r = 0; r < NUM_ROWS; ++r) {
for (c = FIRST_CHAR + r; c <= LAST_CHAR; ++c) // 첫번째 char를 1씩 증가
printf("%c ", c);
printf("\n");
}
return 0;
}
Output :
A B C D E F G H I J K L
B C D E F G H I J K L
C D E F G H I J K L
D E F G H I J K L
E F G H I J K L
F G H I J K L
G H I J K L
H I J K L
I J K L
J K L
K L
L
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NUM_ROWS 12
#define FIRST_CHAR 'A'
int main()
{
int r, c;
char last_char;
printf("Enter last char : ");
scanf("%c", &last_char); // 마지막 char를 사용자가 입력
for (r = 0; r <= last_char - FIRST_CHAR; ++r) {
for (c = FIRST_CHAR + r; c <= last_char; ++c)
printf("%c ", c);
printf("\n");
}
return 0;
}
Output :
Enter last char : (G 입력)
A B C D E F G
B C D E F G
C D E F G
D E F G
E F G
F G
G
강의 출처 : https://www.inflearn.com/course/following-c/dashboard
'Study_C, C++ > 홍정모의 따라하며 배우는 C언어' 카테고리의 다른 글
[홍정모의 따라하며 배우는 C언어] 6.17 for 루프를 배열과 함께 사용하기 (0) | 2021.10.11 |
---|---|
[홍정모의 따라하며 배우는 C언어] 6.16 배열과 런타임 에러 (0) | 2021.09.25 |
[홍정모의 따라하며 배우는 C언어] 6.10 다양한 대입 연산자들 (그리고 어셈블리 코드 확인법) ~ 6.12 제논의 역설 시뮬레이션 예제 (0) | 2021.09.07 |
[홍정모의 따라하며 배우는 C언어] 6.5 사실과 거짓 ~ 6.9 for는 유연해요 (0) | 2021.09.05 |
[홍정모의 따라하며 배우는 C언어] 6.1 while 반복 루프에서 scanf()의 반환값 사용하기 ~ 6.4 관계 연산자 (Relational Operators) (0) | 2021.09.02 |