[c言語] さっと復習(4) ループ

c の繰り返し処理は forwhile

for

条件を満たすまで繰り返す。

#include <stdio.h>
int main(void) {
int i;
printf("from 1 to 9\n");
for (i = 1; i < 10; i++) {
printf("%d ", i);
if (i == 9) {
printf("\n");
}
}
printf("from 1 to 9 increasing by 2\n");
for (i = 1; i < 10; i += 2) {
printf("%d ", i);
if (i == 9) {
printf("\n");
}
}
return 0;
}
#include <stdio.h> int main(void) { int i; printf("from 1 to 9\n"); for (i = 1; i < 10; i++) { printf("%d ", i); if (i == 9) { printf("\n"); } } printf("from 1 to 9 increasing by 2\n"); for (i = 1; i < 10; i += 2) { printf("%d ", i); if (i == 9) { printf("\n"); } } return 0; }
#include <stdio.h>

int main(void) {
    int i;
    
    printf("from 1 to 9\n");
    for (i = 1; i < 10; i++) {
        printf("%d ", i);
        if (i == 9) {
            printf("\n");
        }
    }

    printf("from 1 to 9 increasing by 2\n");
    for (i = 1; i < 10; i += 2) {
        printf("%d ", i);
        if (i == 9) {
            printf("\n");
        }
    }

    return 0;
}

単独で使っている分には、

i++++ii += 1と同じ。

i----ii -= 1 と同じ。

前置と後置は、式の一部として使用される場合は気をつける。

・ ++i の作用は式の値として、i + 1 の値を返す事、副作用は i に i + 1 の結果が代入される。

・ i++ の作用は式の値として、i の値を返す事、副作用はその後 i に i + 1 の結果が代入される。

for文におけるiのインクリメントの前置と後置の違いがわかりません

2重ループ

for をネストしてループを作る。

#include <stdio.h>
int main(void) {
int i, j;
printf("Times Table from 1 to 9\n");
for (i = 1; i < 10; i++) {
for (j = 1; j < 10; j++){
printf("%d * %d = %d\n", i, j, i*j);
}
}
return 0;
}
#include <stdio.h> int main(void) { int i, j; printf("Times Table from 1 to 9\n"); for (i = 1; i < 10; i++) { for (j = 1; j < 10; j++){ printf("%d * %d = %d\n", i, j, i*j); } } return 0; }
#include <stdio.h>

int main(void) {
    int i, j;
    
    printf("Times Table from 1 to 9\n");
    for (i = 1; i < 10; i++) {
        for (j = 1; j < 10; j++){
            printf("%d * %d = %d\n", i, j, i*j);
        }
    }

    return 0;
}

while

for と同じく条件を満たすまで繰り返す。

#include <stdio.h>
int main(void){
int i = 0;
while (i < 10) {
printf("%d ", i);
if ( i == 9) {
printf("\n");
}
i++;
}
return 0;
}
#include <stdio.h> int main(void){ int i = 0; while (i < 10) { printf("%d ", i); if ( i == 9) { printf("\n"); } i++; } return 0; }
#include <stdio.h>

int main(void){
    int i = 0;

    while (i < 10) {
        printf("%d ", i);
        
        if ( i == 9) {
            printf("\n");
        }

        i++;
    }

    return 0;
}

do while

do whiledo {} を一度実行してから条件判定を行うので、条件を最初から満たさない場合はwhileと挙動が異なる。

#include <stdio.h>
int main(void) {
int i = 0;
do {
printf("%d ", i);
i++;
} while (i <10);
printf("\n");
}
#include <stdio.h> int main(void) { int i = 0; do { printf("%d ", i); i++; } while (i <10); printf("\n"); }
#include <stdio.h>

int main(void) {
    int i = 0;
    
    do {
        printf("%d ", i);
        i++;
    } while (i <10);
    printf("\n"); 
}

無限ループ

while (1) で無限ループを作り、break で無限ループを抜ける。

#include <stdio.h>
int main(void) {
int i;
printf("If negative, exit loop.\n");
while (1) {
printf("Please input Integer: ");
scanf("%d", &i);
if (i < 0) {
printf("Negative!!! end loop.\n");
break;
}
}
}
#include <stdio.h> int main(void) { int i; printf("If negative, exit loop.\n"); while (1) { printf("Please input Integer: "); scanf("%d", &i); if (i < 0) { printf("Negative!!! end loop.\n"); break; } } }
#include <stdio.h>

int main(void) {
    int i;

    printf("If negative, exit loop.\n");
    while (1) {
        printf("Please input Integer: ");
        scanf("%d", &i);
        if (i < 0) {
            printf("Negative!!! end loop.\n");
            break;
        }
    }
}