본문 바로가기

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

[홍정모의 따라하며 배우는 C언어] 7.8 단어 세기 예제 ~ 7.10 루프 도우미 continue와 break

728x90

7.8 단어 세기 예제

 

  • 문장을 입력받으면 문장의 글자 수, 단어 수, 그리고 줄 수를 출력하는 프로그램을 작성하라. ' . '(마침표)로 입력의 끝을 표시한다

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

int main() {
    
    char ch;
    int cha = 0, word = 0, line = 0;
    bool word_flag = false;             // false : 새로운 단어가 시작하지 않았다
    bool line_flag = false;             // false : 새로운 줄이 시작하지 않았다

    printf("Enter text : ");

    while ((ch = getchar()) != '.') {
        if (!isspace(ch)) {
            cha++;
            if (!word_flag) {           // !word_flag == word_flag가 true가 아니라면 (false라면)
                word++;
                word_flag = true;       // 새로운 단어가 시작됨을 표현
            }
            if (!line_flag) {
                line++;
                line_flag = true;       // 새로운 줄이 시작됨을 표현
            }    
        }
           
        if (ch == '\n')
            line_flag = false;

        if (isspace(ch))
            word_flag = false;          // 지금까지 입력받던 단어가 입력이 끝났다
    }
    printf("Characters : %d, Words : %d, Lines : %d\n", cha, word, line);

    return 0;
}

 

  • 위 코드에선 새로운 단어와 줄의 입력을 
    1. 첫 입력이 첫 줄이므로 line을 1 증가시키고 '\n'이 나타나기 전까지 라인 수를 세지 않기 위해 line_flag를 true로 바꿔놓음 (line 수를 세는 아래의 조건문에 들어가지 않기 위해)
      if (!line_flag) {
          line++;
          line_flag = true;       
      }
    2. '\n'이 입력되면 새로운 줄의 시작이므로 line_flag를 false로 바꿈

강의 질문 답변중

  • isspace( ) = 인자로 받은 문자가 white space character인지 아닌지 판별. White space character가 아니면 0 반환
    • White Space Characters in C

 

7.9 조건 연산자 (Conditional Operator)

 

(expression) ? statement1 : statement2
// expression이 참이면 statement1 실행, 거짓이면 statement2 실행
// ternary operator (3개의 피연산자)

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

int main() {
		
    int temp;					
    temp = true ? 1024 : 7;     
    printf("%d\n", temp);       

    temp = false ? 1024 : 7;
    printf("%d\n", temp);

    return 0;
}

 

Output : 
1024
7

 

 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

int main() {

    int number;
    scanf("%d", &number);

    bool is_even = (number % 2 == 0) ? true : false;

    if (is_even)
        printf("Even\n");
    else
        printf("Ood\n");

    return 0;
}

 

Output : 
1) 5 입력
Ood
2) 6 입력
Even

 

(number % 2 == 0) ? printf("Even\n") : printf("Ood\n");

위처럼 한 줄으로도 조건에 따른 동작 설정이 가능하다

 

 

 

7.10 루프 도우미 continue와 break

 

#include <stdio.h>

int main() {

    for (int i = 0; i < 10; i++) {
        if (i == 5)                 
            continue;               
            
        printf("%d ", i);
    }
    
    return 0;
}
  • continue문은 아래의 문장을 실행시키지 않고 조건문으로 다시 돌아감 (5는 출력하지 않음)
Output :
0 1 2 3 4 6 7 8 9

 

 

#include <stdio.h>

int main() {

    for (int i = 0; i < 10; i++) {
        if (i == 5)               
            break;
        
        printf("%d ", i);
    }
    
    return 0;
}
  • break문은 자신이 포함되어 있는 loop를 빠져나옴
Output : 
0 1 2 3 4

 

 

#include <stdio.h>

int main() {

    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            if (j == 5)
                break;                

            printf("(%d %d)", i, j);
        }
        printf("\n");
    }
    return 0;
}
  • break는 자기가 포함되어있는 단일 loop 하나만 빠져나옴
Output : 
(0 0)(0 1)(0 2)(0 3)(0 4)
(1 0)(1 1)(1 2)(1 3)(1 4)
(2 0)(2 1)(2 2)(2 3)(2 4)
(3 0)(3 1)(3 2)(3 3)(3 4)
(4 0)(4 1)(4 2)(4 3)(4 4)
(5 0)(5 1)(5 2)(5 3)(5 4)
(6 0)(6 1)(6 2)(6 3)(6 4)
(7 0)(7 1)(7 2)(7 3)(7 4)
(8 0)(8 1)(8 2)(8 3)(8 4)
(9 0)(9 1)(9 2)(9 3)(9 4)

 

break문이 없을 때의 Output : 
(0 0)(0 1)(0 2)(0 3)(0 4)(0 5)(0 6)(0 7)(0 8)(0 9)
(1 0)(1 1)(1 2)(1 3)(1 4)(1 5)(1 6)(1 7)(1 8)(1 9)
(2 0)(2 1)(2 2)(2 3)(2 4)(2 5)(2 6)(2 7)(2 8)(2 9)
(3 0)(3 1)(3 2)(3 3)(3 4)(3 5)(3 6)(3 7)(3 8)(3 9)
(4 0)(4 1)(4 2)(4 3)(4 4)(4 5)(4 6)(4 7)(4 8)(4 9)
(5 0)(5 1)(5 2)(5 3)(5 4)(5 5)(5 6)(5 7)(5 8)(5 9)
(6 0)(6 1)(6 2)(6 3)(6 4)(6 5)(6 6)(6 7)(6 8)(6 9)
(7 0)(7 1)(7 2)(7 3)(7 4)(7 5)(7 6)(7 7)(7 8)(7 9)
(8 0)(8 1)(8 2)(8 3)(8 4)(8 5)(8 6)(8 7)(8 8)(8 9)
(9 0)(9 1)(9 2)(9 3)(9 4)(9 5)(9 6)(9 7)(9 8)(9 9)

 

 

 

 

 

 


강의 출처 : https://www.inflearn.com/course/following-c/dashboard

 

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

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

www.inflearn.com