본문 바로가기

Study_C, C++/홍정모의 따라하며 배우는 C언어

[홍정모의 따라하며 배우는 C언어] 6.13 탈출조건 루프 do while ~ 6.15 중첩된 루프들

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

 

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com