Today
Total
Recent Posts
Link
반응형
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
관리 메뉴

아임'준

[C언어 기초] 반복문 : for, while, do-while, 이중반복 및 제어문 + 지역,전역변수 본문

[C]/[C : 개념]

[C언어 기초] 반복문 : for, while, do-while, 이중반복 및 제어문 + 지역,전역변수

아임'준 2021. 1. 1. 22:53
반응형

C언어 / 반복문 / for / while / do-while

 

*해당 글에 있는 코드들은 모두 복사해서 사용할 수 있게끔 만들어두었습니다. 주석만 보고 이해하려고 하지 말고 코드를 복사해서 직접 실행하며 그 결과를 통해 이해하고자 하면 더 도움이 될 것입니다. 물론 그냥 복사 붙여 넣기 하는 것보다 본인이 직접 코드를 타이핑하는 것이 이해와 후에 사용할 때에 더 큰 도움이 될 것이니 이 점 명심하고 공부해주시기 바랍니다.

 

코드를 작성할 때 특정 문자열을 여러 번 출력하고 싶다거나 어떤 행동을 특정 횟수만큼 이행하고 프로그램을 끝마치고 싶은 경우가 있다. 이를 가능하게 해주는 것이 바로 반복문이다. 

 

반복문은 for문, while문, do-while문 3개로 나눌 수 있겠다.

 

 

 

가장 먼저 살펴볼 for문은 다음과 같은 형식으로 이루어져 있다.

for(초기식 ; 조건식 ; 변화식;){
    (반복할 구문들)
}

for문이 실행되는 순서는 다음과 같다. 먼저 초기식에서부터 시작하여 조건식을 만족하는지 검사를 한다. 검사를 해서 조건식을 만족할 경우 (반복할 구문들)에 해당하는 구문들이 실행이 되고 변화식이 실행된다. 변화식에 따라 변한 상태를 조건식을 만족하는지 검사를 한 후 이 과정을 반복하여 조건식에 만족할 때까지 반복을 할 수 있도록 하는 것이다. 

 

우리에게 가장 익숙한 문자열 Hello World를 100번 출력하는 for문을 작성하면 다음과 같다.

#include <stdio.h>

int main(){

    int i;
    
    for(i=0;i<100;i++){
        printf("Hello World!\n");
    }
}

ㄴ 위는 i를 따로 선언한 경우 (1)

 

#include <stdio.h>

int main(){
    
    for(int i=0;i<100;i++){
        printf("Hello World!\n");
    }
}

ㄴ 위는 i를 for문과 함께 선언한 경우이다. (2)

 

(1)과 (2)의 차이는 i를 어디에 선언하였는가이다. 반복문을 설명하기에 앞서 이 부분에 대해서 간단하게 설명하고 넘어가도록 하겠다.

더보기

본래 이 부분은 0.1에서 설명하면 더 좋았을 터지만 그때는 아직 블록이라는 개념을 설명하기에 부족한 개념 상태였기에 반복문에서 설명하도록 하겠다. 변수를 선언할 때 그 변수를 사용할 수 있는 범위는 그 변수가 선언된 블록이 최대이다. 다음과 같은 경우 오류가 난다는 것이다.

#include <stdio.h>

int main(){

    for(int i=0;i<100;i++){
        int count = 0;
        printf("%d\n",count);
        count++;
    }
    printf("count = %d ", count); //오류
}

count라는 이름의 변수의 경우 for문 안에서 선언이 된 변수이다. 그러므로 이 count라는 변수를 사용할 수 있는 범위는 for문안에 새로운 블록을 만들 경우 그 블록에는 사용이 가능하나 for문을 벗어날 경우 사용이 불가능하다는 것이다. 이를 지역변수라고 한다. 위와 같이 코드를 짰을 경우 count를 for문을 벗어난 main함수의 블록 내에서 가져와 쓰려고 하였으나 for문에 해당하는 블록을 이미 나왔으므로(종료되었으므로) main은 count라는 변수를 알지 못한다. 이러한 내용은 나중에 함수를 우리가 직접 만들 때도 잘 숙지하고 있어야 하는 점이다. 그럼 count를 모든 범위에서 사용하려면 어떻게 해야 할까?

 

#include <stdio.h>

int count = 0;

int main(){

    for(int i=0;i<100;i++){
        printf("%d\n",count);
        count++;
    }
    printf("count = %d ", count);
}

다음과 같이 코드를 짤 경우 count는 어느 함수에도 속하지 않는 형태의 변수가 된다. 저렇게 될 경우 count는 해당 코드 전체를 블록으로 삼게 되는 것이나 마찬가지이므로 어느 함수에서든 count라는 변수를 사용할 수 있다(count에 저장된 값이 같다는 뜻). 이를 전역 변수라고 한다. 전역 변수를 사용할 때는 조심해야 하는데 방금 말했다시피 어느 함수에서는 count에 손을 댈 수 있기 때문에 count의 값이 변하는 것에 민감하게 생각하고 코드를 작성해야 한다는 것이다.

 

더보기에서 알 수 있듯이 i가 for문의 괄호 내에서 선언되었으면(2의 경우) 이 i가 살아있을 수 있는 범위는 for문 내로 한정되나 for문 전에 선언이 되었을 경우 (1의 경우) for문이 끝나고 나서도 for문을 탈출하였을 당시의 i값을 저장한 i라는 변수를 그대로 사용할 수 있다.

 

반복문을 사용할 때는 주로 i, j, k 순으로 많이 사용한다. 후에 서술하겠지만 이중 for문 등을 사용할 때 i와 j로 각각의 for문을 사용한다. 꼭 i, j, k를 사용하라는 것은 아니며 본인이 어떤 횟수만큼 반복하고 싶은지를 확인하고 싶어서 선언한 변수를 통해 for문을 작성할 수 있겠다. 또 예시를 들다 보니 ++만 사용하였지만 이 외에 i+=2  i--등 본인이 원하는 모든 변화식을 사용할 수 있으니 참고하길 바란다. 조건식 또한 i가 뭐보다 큰 동안 i가 뭐보다 작은 동안 혹은 i가 뭐와 같지 않을 동안 등 많은 조건식을 작성할 수 있다.

 

다음 코드들을 보자.

#include <stdio.h>

int main(){

    int i;
    
    for(i=0;i<100;i++){
        printf("%d\n",i);
    }
    printf("last i = %d ", i);
}

위처럼 i를 통해 반복문을 수행하며 i를 출력하면 0부터 99까지 반복문을 통해 출력이 되며 for문 순서에 따라 i가 100까지 증가하고 조건식을 만족하지 않고 나왔을 터이니 last i = 100이라고 출력되는 코드를 확인할 수 있겠다.

 

 

 

다음으로 배울 반복문은 while 문이다.

 

while은 ~동안이라는 뜻으로 해석할 수 있겠다. while문을 사용하기 위해서는 다음과 같은 형태로 코드를 작성하면 된다.

while(조건식){
    (반복할 구문들) + 변화식(없으면 한번 들어오면 무한루프)
}

for와 마찬가지로 while 옆의 괄호 안에 있는 조건식이 참일 동안 블록 안의 구문들을 반복한다. for와 다른 점은 조건식과 함께 초기식과 변화식을 적는 부분이 없는 것이라고 할 수 있겠다. 어떤 조건식을 사용하고 어떤 변화식을 반복하는지에 따라 무한 루프가 생성될 수도 있으니 이를 주의하여 while문을 작성하여야 한다.

 

예를 들어 내가 a가 양수일 때만 반복하는 코드를 작성하고 싶다고 해보자.

#include <stdio.h>

int main(){

    int a=10;
    while(a>0){
        printf("나는 아직 양수다!\n");
        a--;
    }
    printf("윽 이제 아니다...");
    
}

다음과 같이 작성할 경우 a의 증감식 또한 반복마다 실행되므로 언젠가 a가 양수가 아니게 되면서(0이 되면서) while문의 조건식을 만족하지 않게 된다. 그러므로 a를 선언할 때 내가 원하는 횟수만큼을 초기화해준다면 쉽게 사용할 수 있다. 만약 변화식을 적어주지 않으면 어떻게 될까?

 

#include <stdio.h>

int main(){
    
    int a=10;
    while(a>0){
        printf("나는 아직 양수다!\n");
    }
    printf("윽 이제 아니다...");
    
}

이제 위 코드는 무한 루프에 빠질 것이다. 당신은 프로그램이 종료될 때 출력될 "윽 이제 아니다..."라는 문자열을 볼 수 없을 것이다. 다른 예시를 알아보자.

 

#include <stdio.h>

int main(){
    
    int a=100;
    while(a>0){
        a=10;
        printf("나는 아직 양수다!\n");
        a--;
    }
    printf("윽 이제 아니다...");
    
}

다음 코드를 보았을 때 while문 안의 반복되는 부분에 a를 다른 값으로 설정해주는 식이 들어가 있다고 생각해보자. 이럴 경우 while문은 빠져나오지 못하게 된다. 반복문이 처음 시작될 때 10이라는 값을 a에 저장하고 뒤에 a--를 통해 9로 a의 값을 바꿔봤자 다시 반복문을 시작하며 a의 값을 10으로 바꿔주기 때문이다. 이러한 점을 주의하면서 사용하면 될 것이다.

 

 

 

다음으로 공부할 것은 do-while문이다.

 

이건 해석하면 해라 ~동안이라고 대충 해석할 수 있는데 while문과 사용하는 방법은 비슷하다.

do{
    (반복할 구문들)
}while(조건식);

while문의 while 자리에 do라고 적는 대신 while(조건식) 부분을 맨 뒤로 옮겼으며 세미콜론이 붙었다. 그럼 이제 while과 do while이 무엇이 다른지 궁금할 것이다. while의 경우 반복문을 실행하기 위해서는 먼저 조건식이 참인지를 확인할 것이다. 이 뜻은 조건식이 처음부터 거짓이면 반복은 일어나지 않고 그냥 다음 코드로 넘어간다는 뜻이 되겠다. 하지만 do-while문은 조금 다르다. 조건식을 확인하는 부분이 뒤에 있기 때문에 조건식에 만족하지 않을지라도 반복문 블록 안의 코드들이 적어도 한 번은 실행된다. 이 점 유의하고 상황에 맞게 while문과 do-while문을 사용하기를 바란다.

 

 

그럼 이제 무한루프가 무엇이고 이를 어떻게 만들며 어떤 때에 사용하는지 배워보자.

 

무한루프는 말 그대로 계속 루프가 유지되는 것이다. 3가지 유형의 무한루프를 만드는 방법은 다음과 같다.

#include <stdio.h>

int main(){
    
    int count=1;
    for(;;){
        printf("끝이 없어요 %d\n",count++);
    }
}

for문은 초기식, 조건식, 변화식 부분을 비워두면 무한루프가 완성이 된다(세미콜론만 남은 상태). 참고로 비워두는 것에 관한 부분은 코딩으로 다른 곳에 설정만 잘해둔다면 세 가지 식을 모두 작성하여도 일부만 작성하여도 혹은 모두 작성하지 않아도 사용할 수 있다.(자세한 설명은 밑의 더보기 클릭)

더보기

위의 코드와 아래 두 코드는 사실 같다.

#include <stdio.h>

int main(){
    
    for(int count=1;;){
        printf("끝이 없어요 %d\n",count++);
    }
}

ㄴ초기식만 작성 / 변화식은 printf문 안에

#include <stdio.h>

int main(){
    
    for(int count=1;;count++){
        printf("끝이 없어요 %d\n",count);
    }
}

 ㄴ초기식과 변화식만 작성

while문과 do-while문의 경우 무한루프를 만들기 위해서는 그저 조건식에 참인 값을 변하지 않게만 해주면 된다. 가장 대표적인 참을 뜻하는 1을 괄호 안에 넣어보겠다.

#include <stdio.h>

int main(){
    
    int count = 1;
    while(1){
        printf("끝이 없어요 %d\n",count++);
    }
}
#include <stdio.h>

int main(){
    
    int count = 1;
    do{
        printf("끝이 없어요 %d\n",count++);
    }while(1);
}

1 말고도 참인 조건식을 괄호 안에 넣을 경우 무한루프 문이 완성된다.

 

 

지금까지는 반복문의 가장 껍데기 즉 하나의 반복문에 대해서만 설명했다. 하지만 반복문은 여러개가 겹쳐 이중, 삼중 반복문이 될 수도 있다. 물론 반복문이 여러개 겹칠수록 사용하기 어렵다. 가장 대표적으로 사용하는 이중 반복문 중 하나만 설명하고 넘어가도록 하겠다. 이중 반복문은 주로 이차원 평면에 어떤것을 나타내고 싶을 때 쓸 수 있다.

for(i=0;i<n;i++){
    for(j=0;j<n;j++){
    
    }
}

위의 코드가 이중 반복문이다. 천천히 살펴보자

i가 0일 때 j 또한 0부터 시작된다. j 안에 있는 반복문들이 다 처리가 된 후(j<n) i를 사용한 for문이 끝난다

i는 1이 증가하여 1이 된다. 이때에도 j는 0부터 시작한다. 그렇게 j가 또 for문에 의해 처리된다.

i는 계속 증가하여 n이 되기 전까지 반복하며 그때마다 j는 0부터 n이 되기 전까지 총 n번을 실행한다.

 

이러한 이차원 배열의 특성을 이용해 가로, 세로를 통해 나타내는 2차원 정보를 표현해낼 수 있다.

프로그래밍을 배울 때 가장 많이 예시로 드는 별 피라미드 만들기를 해보겠다. 내가 원하는 출력은 다음과 같다.

*
**
***
****
*****

해당 피라미드를 보았을 때 1번째 줄에는 별이 1개 ~5번째 줄에는 별이 5개 있는 것을 알 수 있다. 이를 보아 n번째 라인에 n개의 별이 있어야 한다는 것을 알 수 있다. 그럼 n번째 라인에 있다는 것을 내가 어떻게 알 수 있을까? 아래의 코드를 보자

#include <stdio.h>

int main(){
    
    for(int i=1;i<=5;i++){
        for(int j=1;j<=i;j++){
            printf("*");
        }
        printf("\n");
    }
}

우리가 어떤 것을 출력할 때 그 줄을 지나서 다음 줄로 이동한 후 다시 아까 줄로 돌아가고 싶다고 해도 지금의 우리는 돌아갈 방법이 없다(사실 이 부분에 대해서는 나도 그런 방법이 있는지 모른다). 그렇기에 우리는 위에 줄부터 차근차근 완성하면서 내려와야 한다. 내가 몇번째 줄에 있는지를 알기 위해i라는 변수를 이용한다. i는 현재 내가 몇번째 줄에 있는지(세로)를 처리해주기 위한 것이다. 이 세로줄에 도달했을 때 해당 세로줄에서 원하는 만큼 가로로 출력을 해야하기 때문이다. 그렇게 가로로 별을 원하는만큼 반복해서 출력을 하기 위해 사용하는 것이 바로 두번째 반복문의 j인 것이다.

 

이번 문제같은 경우 나는 n번째 라인에 있어서 n번의 별을 출력하고 싶다. 그렇기에  for문에 j가 i(n번째 줄의 n과 같은 값)보다 같거나 작을 때라는 범위로 설정돼 있는것을 알 수 있다. 그리고 안쪽 반복문이 끝나면 줄바꿈을 통해 다음 세로 줄로 넘어갈 수 있도록 해주었다. 이런 식을 반복하여 원하는 피라미드를 출력해냈다.

 

그럼 이제 내가 문제를 내겠다.

*****

 ****

  ***

   **

    *

와 같은 출력을 이중 for문을 통해 만들어보길 바란다. 힌트를 주자면 위에는 i를 라인이라는 개념으로 설명했지만 라인이라는 개념으로 받아들이지 않아도 된다. 가령 i를 5부터 시작해서 내려온다던가... 방법은 많다! 생각보다 어려울 수 있다. 꼭 본인 손으로 해봐야 하며 답안을 보게 되더라도 그 답안이 어떤 뜻인지 다 이해를 하고 본인 손으로 보지 않고 다시 짜봐야 한다.

 

코드 답안:

더보기

답 (1)

#include <stdio.h>

int main(){
    
    for(int i=5;i>=1;i--){
        for(int j=5-i;j>0;j--){
            printf(" ");
        }
        for(int j=1;j<=i;j++){
            printf("*");
        }
        printf("\n");
    }
}

 

답 (2)

#include <stdio.h>

int main(){
    
    for(int i=1;i<=5;i++){
        for(int j=1;j<i;j++){
            printf(" ");
        }
        for(int j=5-i;j>=0;j--){
            printf("*");
        }
        printf("\n");
    }
}

 

 

 

이제 반복문을 break와 continue로 제어하는 방법에 대해서 알아보겠다.

 

break문은 지난번에도 소개된 적이 있다. switch-case문을 설명하면서 소개되었었는데 그때 한 블록을 벗어난다고 말을 하였다.

continue는 조금 다르다. 반복문에서 사용할 때 continue 밑의 반복될 구문들을 전부 패스한다는 개념으로 받아들이면 된다.

 

다음 예시를 보자

#include <stdio.h>

int main(){
    
    int sum=0;
    int i;
    
    for(i=1;i<=100;i++){
        if(i%2==0){
            break;
        }
        printf("i = %d \n",i);
        sum += i;
    }
    printf("i = %d \n",i);
    printf("sum = %d \n",sum);
}

 

다음과 같이 코드를 작성할 경우 for문 안을 보면 i가 2로 나누었을 때 나머지가 0이면 (=짝수이면) break 문을 실행하였다. 그 결과 1부터 시작한 i가 짝수인 2가 되자 반복문을 탈출하였다. 반복문 밖의 최종 출력 결과는 i=2 그리고 sum=1이다. break는 이렇듯이 현재 있는 블록을 탈출해버린다.

 

반면 위의 코드에서 break문을 continue로 고치면 다음과 같다.

#include <stdio.h>

int main(){
    
    int sum=0;
    int i;
    
    for(i=1;i<=100;i++){
        if(i%2==0){
            continue;
        }
        printf("i = %d \n",i);
        sum += i;
    }
    printf("i = %d \n",i);
    printf("sum = %d \n",sum);
}

해당 코드를 실행할 경우 위와는 다른 결과를 볼 수 있다. 위의 코드가 i가 짝수일 때 반복문을 탈출하는 것이었다면 해당 코드는 i가 짝수일 때 그냥 다음 i로 넘어가게 된다. 그 결과 반복문 안에 i = %d 출력으로 볼 수 있는 수들은 모두 홀수이며 sum에는 1부터 100까지 홀수만을 더한 값이 저장되어 출력될 것이다. (물론 처음부터 반복문 안에 if문을 넣지 않고 i+=2 라는 식을 통해 i를 2씩 증가시키며 sum을 구해도 같은 결과를 얻을 수 있다)

 

break와 continue는 다음과 같이 그 쓰임새가 다르며 써야 하는 상황도 다르니 이를 잘 생각하고 쓴다면 코드를 제어하기 더 편할 것이다. 또한 무한루프를 사용하여도 break문을 잘 처리해준다면 원하는 결과를 얻을 수 있다. 다중 루프에서 break를 사용할 경우 break가 포함된 가장 안쪽 루프 하나만을 탈출하니 이를 잘 알고 사용하도록 하자.

#include <stdio.h>

int main(){
    
    for(int i=1;i<=5;i++){
        for(int j=1;j<=5;j++){
            if(i+1==j){
                break;
            }
            printf("*");
        }
        printf("\n");
    }
}

ㄴ 가장 처음 별 문제를 break를 통해 해결한 코드

*

**

***

****

*****

 

다음으로 설명할 것은 goto문이다. goto문은 간단하게 코드의 흐름을 바꿀 수 있다. 간단한데 강력하기까지 하다. 하지만 goto문을 남용하는 것은 후에 프로그램을 고칠 때 굉장히 힘들게 하며 여러 goto문이 섞여서 말썽을 일으킬 수 있다. 그러니 여러분은 웬만해서는 goto문을 사용하지 않는 것을 추천한다. 물론 goto문을 잘 사용만 한다면 훨씬 보기 좋고 이해하기 쉬운 코드로 만드는 것도 가능하니 무조건 나쁘다는 말은 아니다!

 

goto문을 사용하는 방법은 다음과 같다. goto 옆에 적는 것을 레이블이라 한다. 밑에서는 대충 이름이라는 단어를 적어놓았는데 실제로는 여러분이 원하는 단어를 적으면 된다. end, sit1 ... 등 그냥 표시해주기 위함이다.

goto 이름;

(어떠어떠한 코드1)

이름: 
(어떠어떠한 코드2)

다음과 같이 작성된 코드가 있다고 할 때 프로그램이 goto를 만나면 옆에 있는 레이블을 확인하고 해당 레이블이 의미하는 곳으로 이동한다.

위의 작성 예시를 보면 goto 이름;을 만났으니 밑의 이름: 뒤의 코드로 이동할 것이다. 그렇게 되면 (어떠어떠한 코드1)은 건너뛰고 (어떠어떠한 코드2)로 이동하게 되는것이다.

 

또한 다음도 가능하다.

start:;
printf("안녕!\n");
    
goto start;

다음을 보면 이번에는 레이블이 goto문보다 위에 있다. 이런 경우에도 goto start;를 만나면 start 레이블로 이동하고 결국 위의 코드는 죽어라 안녕! 만 출력하는 코드가 될 것이다. goto문을 사용하는 방법은 이제 다 배웠다.

 

이제 이를 어떻게 응용하는지가 문제이다. if와 함께 어떤 조건을 사용한다면 break와 같은 기능으로 사용할 수도 있다. 반복문들을 탈출할 수 있으며 그 외에도 여러가지 조건에서 마지막에 특정 문자열을 출력해야 한다면 이 또한 goto문으로 묶어줄 수 있다. 하지만 아까도 말했다시피 남용은 금물이다. 레이블이 많아지는 순간 여러가지로 꼬일 수 있기 때문이다. 하지만 레이블 한 두개 정도라면 충분히 더 쉽게 만들어주는 구문이라고 생각한다.

#include <stdio.h>

int main()
{
    int i,j;
    
    for(i=0;i<100;i++){
        for(j=0;j<100;j++){
            if(i==50 && j==10){
                goto end;
            }
        }
    }
    end:
    printf("%d %d",i,j);
}

ㄴ goto와 레이블을 이용하여 break문처럼 사용한 경우

 

 

 

지금까지 배운 내용을 이용하여 간단한 게임을 만들어보겠다.

up&down게임은 한 명이 범위 내의 어떤 숫자를 정해놓고 다른 사람이 숫자를 유추하면 더 큰지 작은 지를 up과 down이라는 말로 알려주며 그 숫자를 맞추는 게임이다. 지금까지 배운 연산자, 반복문, 조건문을 사용하여 맞출 수 있는 기회가 10회인 up&down 게임을 만들어보도록 하겠다. 먼저 여러분이 코드를 짜 보기를 바란다.

 

1. 정답은 코드 작성 때 초기화되도록 한다. (초기화는 int a=2; 와 같이 int a;만 적어주지 않고 초기 값을 넣어주는 것)

2. 반복문을 통해 답을 말할 수 있는 횟수를 10으로 지정해준다.

3. 유추한 답을 말할 때마다 숫자가 큰지 작은지 up과 down이라는 문장을 출력해서 알려준다

4. 10번 답을 말할 때까지 정답을 맞히지 못했을 경우 "실패했네요!"를 출력한다.
5. 이전에 답을 맞혔을 경우 "%d번 만에 맞히셨네요!"를 출력하고 프로그램을 종료한다.

6. 한번 시도할 때마다 몇 번 남았는지 횟수를 알려준다.

 

코드는 여러 방향으로 짤 수 있다. 내가 작성한 코드 외에도 정답은 많으며 이러한 문제를 풀어보는 과정을 거쳐야지 온전히 본인의 지식으로 만들 수 있으므로 꼭 해보고 아래 내가 작성한 코드를 열어보기 바란다.

 

코드 답안:

더보기
#include <stdio.h>

int main(){
    
    int count = 1; // 시도 횟수 점검
    int correct = 0; //맞았는지 틀렸는지 확인시켜줄 변수;
    
    int ans = 72; // 저는 답을 72로 하겠습니다
    int u_ans; //user_answer;
    
    printf("up & down 게임입니다. 수를 맞혀주세요!");
    
    while(count <= 10){
        scanf("%d",&u_ans);
        if(u_ans == ans){ //정답을 맞혔을 때
            correct = 1;
            break;
        }
        else if(u_ans>ans){ //정답이 말한 값보다 클 때
            printf("down ");
        }
        else{ // 그 외(정답이 말한 값보다 작을 때)
            printf("up ");
        }
        
        printf("%d번 남았습니다.\n",10 - count++);
    }
    
    if(correct==1){ //correct==1이므로 정답을 맞히고 break문을 통해 나왔을 경우
        printf("%d번만에 맞히셨네요! 축하합니다!",count);
    }
    else{ //그 외(correct==0) 정답을 맞히지 못했을 경우
        printf("실패했네요!");
    }
}

 

사실 정답을 코드 작성 때 초기화하도록 하는 것은 별로 재미가 없다. 내가 답을 모를 때 해야지 재밌는데 언제까지 출제만 할 수는 없지 않은가? 후에 컴퓨터가 우리도 모르는 랜덤 숫자를 선언하게 해주는 랜덤 함수를 설명할 테니 그때 다시 한번 이 코드를 만날 수 있을 것이다.

 

다음 시간에는 배열을 공부해보도록 하겠다.

질문, 오타 지적, 오류 지적 등은 댓글로 환영합니다.

Comments