Programming Tools/TCPL C Language

[C Language] Chap.3 Control Flow - While, For(While문, For문)

LiDARian 2021. 6. 8. 18:00
반응형

While, For

While문은

while(expression)
    statement

For문은

for(expr1; expr2; expr3)
    statement

이렇게 쓸 수 있고, For문을 While문으로 바꾸면 아래와 같은 형식으로 표현할 수 있다.

expr1;
while(expr2){
    statement
    expr3;
}

expr1과 expr3는 대입 혹은 함수 호출이 가능하고, expr2는 논리 표현식이다.
expr2에 사용되는 i등의 index 변수는 루프 안에서 변경이 가능하고, 루프가 종료됐을 때 그 값을 유지한다.

expr1, expr2, expr3 중 어떤 것도 생략이 가능하다. 그러나 세미콜론 ;는 생략되면 안된다.

for(; ; )
    statement

이렇게 작성하면 statement를 무한히 실행하게 된다.


For문을 이용해서 다음과 같은 함수를 작성할 수 있다.

#include <ctype.h>

int atoi(char s[]){
    int i, n, sign;

    for(i = 0; isspace(s[i]); i++) ;
    sign = (s[i] == '-') ? -1 : 1;
    if(s[i]=='+' || s[i]=='-')
        i++;
    for(n = 0; isdigit(s[i]); i++)
        n = 10 * n + (s[i] - '0');
    return sign * n;
}

For 문을 이용해서 shell sort를 해볼 수도 있다.

#include <ctype.h>

void shellsort(int v[], int n){
    int gap, i, j, temp;

    for(gap = n/2; gap > 0; gap /=2)
        for(i = gap; i < n; i++)
            for(j=i-gap; j>=0 && v[j]>v[j+gap]; j-=gap){
                temp = v[j];
                v[j] = v[j+gap];
                v[j+gap] = temp;
            }
}

Shellsort에 관한 내용은 이 사이트 참고

반응형