for迴圈的例項分析

NAGISB發表於2024-11-01

for迴圈

  • for(定義或初始化; 條件表示式; 調整表示式){}
  • while和if的結合體: 迴圈判斷執行迴圈體; 有些語言還可以配合to語句

三個表示式可以按需要省略, ;卻不能省略。for( ; ; ) == while(1/True); --程式可讀性

///: C:for迴圈巢狀
// 分析內部作為整體再外部迴圈,分步乘法
// 執行順序為:一層外部所有的內部到二層外部
#include <stdio.h>

int main() {
    int i,j;

    for(i=0; i<10; i++) {
        for(j=0; j<10; j++) {
            printf("i= %d, j= %d\n", i, j); // 10*10 次迴圈
        }
    }
}
///: C:for迴圈條件調整表示式
// 將for作為if-while迴圈分析
#include <stdio.h>

int main() {
    int i;

    for(i=1; i<100; i++) {
        // Equivalent: int=1;while(i<100) {i++;}
        break; //Not-break; i= 100;
    }
    printf("i= %d\n", i); //i= 1
}
///: C:for實時變數
// 實時變數;在需要的地方定義的變數
// 允許定義和初始化-std=C99, -std=gnu99, 作為實時變數調整作用域只在for程式塊
#include <stdio.h>

    int main() {
    for(int i=0, j=10; i<j; i++,j--) {
        printf("%d\n", i);
    }
    // 外部無法訪問
}

gcc -std=c99 C\for實時變數.c

///: C:for迴圈與while的Equivalent Differences
// 計數器在for語句對比while優先順序大
#include <stdio.h>

int main() {
    int i;

    i=0;
    while(i<100) {
        if(i % 2) {
            continue;
        }  
        i++; // 在continue下計數器並不會執行
    }
    // for(i=0; i<100; i++) {
    //     if(i % 2) {
    //         continue;
    //     }
    // }

    return 0;
}
///: C:for遍歷/接收陣列
// i=0; 下階不越界。 i+1, 定義數對應下階
#include <stdio.h>

#define NUM 10

int main() {
    int s[NUM];
    int i, sum=0;

        for(i=0; i<10; i++) {
            printf("請輸入第%i位同學的成績: ", i+1);
            scanf("%d", &s[i]);
            sum += s[i];
        }

        printf("成績錄入完成, 該次考試的平均分是: %2.f\n", (double)sum / NUM);

    return 0;
}

相關文章