《C語言程序設計:現代方法(第2版)》第6章 循環

第6章 循環

沒有循環和結構化變量的程序不值得編寫。

第5章介紹了C語言的選擇語句:if語句和switch語句。本章將介紹C語言的重複語句,這種語句允許用戶設置循環。

循環(loop)是重複執行其他語句(循環體)的一種語句。在C語言中,每個循環都有一個控制表達式(controlling expression)。每次執行循環體(循環重複一次)時都要對控制表達式求值。如果表達式爲真(即值不爲零),那麼繼續執行循環。

C語言提供了3種重複語句,即while語句、do語句和for語句,我們將在6.1節、6.2節和6.3節分別進行介紹。while循環在循環體執行之前測試控制表達式,do循環在循環體執行之後測試控制表達式,for語句則非常適合那些遞增或遞減計數變量的循環。6.3節還介紹了主要用於for語句的逗號運算符。

本章最後兩節致力於討論與循環相關的C語言特性。6.4節描述了break語句、continue語句和goto語句。break語句用來跳出循環並把程序控制傳遞到循環後的下一條語句,continue語句用來跳過本次循環的剩餘部分,而goto語句則可以調到函數內的任何語句上。6.5節介紹空語句,它可以用於構造循環體爲空的循環。

6.1 while 語句

程序:顯示平方表

/**
 * Prints a table of squares using a while statement
 */
#include <stdio.h>

int main() {
    int i, n;

    printf("This program prints a table of squares.\n");
    printf("Enter number of entries in table:");
    scanf("%d", &n);

    i = 1;
    while (i <= n) {
        printf("%10d%10d\n", i, i * i);
        i++;
    }

    return 0;
}

程序:數列求和

/**
 * Sums a series of numbers
 */
#include <stdio.h>

int main() {
    int n,sum=0;

    printf("This program sums a series of integers.\n");
    printf("Enter integers (0 to terminate):");

    scanf("%d",&n);
    while (n!=0){
        sum+=n;
        scanf("%d",&n);
    }
    printf("The sum is: %d\n",sum);
    
    return 0;
}

6.2 語句

do語句和while語句關係緊密。事實上,do語句本質上就是while語句,只不過其控制表達式是在每次執行完循環體之後進行判定的。

/**
 * Calculates the number of digits in an integer
 */
#include <stdio.h>

int main() {
    int digits = 0, n;

    printf("Enter a nonnegative integer:");
    scanf("%d", &n);

    do {
        n /= 10;
        digits++;
    } while (n > 0);

    printf("The number has %d digit(s).\n", digits);
    
    return 0;
}

6.3 for語句

現在開始介紹C語言循環中最後一種循環,也是功能最強大的一種循環:for語句。

程序:顯示平方表(改進版)

/**
 * Prints a table of squares using a for statement
 */
#include <stdio.h>

int main() {
    int i, n;

    printf("This program prints a table of squares.\n");
    printf("Enter number of entries in table:");
    scanf("%d", &n);

    for (i = 1; i <= n; i++) {
        printf("%10d%10d\n", i, i * i);
    }
    
    return 0;
}

利用這個程序可以說明關於for語句的一個要點:C語言對控制循環行爲的三個表達式沒有加任何限制。雖然這些表達式通常對同一個變量進行初始化、判定和更新,但是沒有要求它們之間以任何方式進行相互關聯。看一下同一個程序的另一個版本。

/**
 * Prints a table of squares using an odd method
 */
#include <stdio.h>

int main() {
    int i, n, odd, square;

    printf("This program prints a table of squares.\n");
    printf("Enter number of entries in table:");
    scanf("%d", &n);

    i = 1;
    odd = 3;
    for (square = 1; i <= n; odd += 2) {
        printf("%10d%10d\n", i, square);
        ++i;
        square += odd;
    }

    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章