第四章

18.1.1~18.1.2

[TOC]

第四章:C程序控制

for循環(huán)語句

for循環(huán)語句的標(biāo)準(zhǔn)格式是:

for(表達(dá)式1; 表達(dá)式2; 表達(dá)式3)
    語句
  • 其中,表達(dá)式1用于對循環(huán)控制變量初始化,表達(dá)式2是循環(huán)繼續(xù)條件,表達(dá)式3用于對循環(huán)控制變量進(jìn)行增值;

  • 很多情況下,表達(dá)式1和表達(dá)式3是用逗號運(yùn)算符分隔的表達(dá)式組,組中各個表達(dá)式一次從左向右求值;

  • 在for循環(huán)語句的初始化和增量部分,只編寫與循環(huán)控制變量有關(guān)的表達(dá)式;

  • for循環(huán)語句的三個表達(dá)式可以選擇省略,但分號 ; 需保留。

//計算存款利息
#include <stdio.h>
#include <math.h>
int main(void)
{
    double principal=1000, amount, rate=0.05;
    int year = 1;
    
    printf("%4s%21s\n", "Year", "Amount on deposit");           //制表

    for (; year <= 10; year++)
        printf("%4d%21.2f\n", year, amount = principal * pow(1.0 + rate, year));
    return 0;
}
  • double 為雙精度浮點(diǎn)數(shù)類型,變量比 float 更大,精度也更高;
  • pow(x,y) 函數(shù)能夠求得x的y次冪,它接收兩個 double 型實(shí)參,返回一個 double 型結(jié)果。使用 pow 函數(shù)前,需在源程序中包含頭文件 math.h;
  • 轉(zhuǎn)換說明符 %21.2f 表明這個變量占用的域?qū)挒?1,保留的精度為2;
  • 若顯示出的數(shù)碼個數(shù)小于域?qū)?,將會自動向右對齊。在 % 與域?qū)捴g插入減號 - 能實(shí)現(xiàn)左對齊。

Switch多重選擇語句

switch多重選擇語句由一系列case從句和一個可選的default從句組成,每個case只能測試一個整型常量表達(dá)式。

#include <stdio.h>
int main(void)
{
    int grade;
    int aCount = 0;
    int bCount = 0;
    int cCount = 0;

    while ((grade = getchar()) != EOF) {
        switch (grade) {

        case'A':
        case'a':
            ++aCount;
            break;

        case'B':
        case'b':
            ++bCount;
            break;

        case'C':
        case'c':
            ++cCount;
            break;

        case'\n':                               //對換行或空白符處理
        case'\t':
        case' ':
            break;

        default:
            printf("Incorrect letter. Enter a new letter/n");
            break;
        }                                   //end switch
    }                                       //end while

    printf("A:%d\n", aCount);
    printf("B:%d\n", bCount);
    printf("C:%d\n", cCount);

    return 0;
}
  • getchar 函數(shù)表示從鍵盤讀入一個字符,類型為char的整數(shù);除了使用getchar從鍵盤錄入字符外,還可使用scanf_s,通過轉(zhuǎn)換說明符%c來輸入字符;
  • EOF 意為“End Of File”,為符號常量,windows中通過Ctrl + Z 實(shí)現(xiàn)輸入;
  • 每個case標(biāo)簽下可有多個操作語句而不需要使用花括號括起;
  • 當(dāng)每次只需要一個字符時,需要對輸入流中的換行或其他空白符進(jìn)行處理;
  • 除了intchar外,C語言中還有short(-32768 ~ +32768)、long(-2147483648 ~ +2147483648),int取值范圍至少與short相當(dāng)?shù)怀?code>long,數(shù)據(jù)類型signed char可表示范圍在-128 ~ +127之間的整數(shù)或計算機(jī)字符中的任意字符;
  • 字符常量用單引號 '' 括起來的特定字符表示。

do...while循環(huán)語句

執(zhí)行do...while循環(huán)語句時,首先執(zhí)行循環(huán)體,然后再進(jìn)行循環(huán)條件的測試,因此,do...while循環(huán)語句的循環(huán)體至少被執(zhí)行一次。應(yīng)當(dāng)使用花括號括起循環(huán)體,以避免與while循環(huán)語句的混淆。

//打印1到10
#include <stdio.h>
int main(void)
{
    int counter = 1;

    do {
        printf("%d\n", counter);
    } while (++counter <= 10);

    return 0;
}

break和continue語句

  • while、for、do...whileswitch 語句中,執(zhí)行break語句將導(dǎo)致程序立即從這些語句中退出,轉(zhuǎn)去執(zhí)行緊跟這些語句之后的下一條語句。
  • while、for、do..while循環(huán)結(jié)構(gòu)中,執(zhí)行continue語句會使控制流略過循環(huán)體中剩余語句,重新開始新一輪循環(huán)。在whiledo...while循環(huán)結(jié)構(gòu)中,執(zhí)行continue語句后,將立即開始下一環(huán)節(jié)循環(huán)條件的測試;在for循環(huán)語句中,執(zhí)行continue語句后,將立即開始下一輪環(huán)節(jié)的增量表達(dá)式,然后開始循環(huán)條件測試。
  • 因此使用continue語句時,whilefor循環(huán)結(jié)構(gòu)工作方式不同。

性能提示:對于結(jié)構(gòu)化程序設(shè)計技術(shù),適當(dāng)使用breakcontinue語句有助于程序運(yùn)行速度更快。

邏輯運(yùn)算符

  • 邏輯與運(yùn)算符&&、邏輯或運(yùn)算符||都是二元運(yùn)算符,從左到右結(jié)合;邏輯非!是一元運(yùn)算符,從右向左結(jié)合。
  • 給出目前為止運(yùn)算符優(yōu)先級和結(jié)合律:
運(yùn)算符 結(jié)合律 類型
++(后綴) --(后綴) 從右向左 后綴類
+ - ! () ++(前綴) --(后綴) 從右向左 一元類
* / % 從右向左 乘法類
+ - 從左向右 加減類
< <= > >= 從左向右 關(guān)系類
&& 從左向右 邏輯與運(yùn)算符
` ` 從左向右 邏輯或運(yùn)算符
!= == 從左向右 相等類
?: 從右向左 條件類
= += -= *= /= %= 從右向左 賦值類
, 從左向右 逗號運(yùn)算符

區(qū)分相等運(yùn)算符==和賦值運(yùn)算符=

在一常量一變量中使用相等運(yùn)算符如 x == 7 時,習(xí)慣寫為 7 == x ,即將常量寫在左邊,有助于避免運(yùn)行時發(fā)生的邏輯錯誤。

錯誤預(yù)防提示:程序編寫完成后,用文本搜索器檢索程序中每一個=,檢查其是否使用正確。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • if條件語句: 語法: if( 條件 ){ 條件為真實(shí)運(yùn)行次大括號內(nèi)的語句 } else { 否者運(yùn)行此大括號內(nèi)的...
    Sunshine_YL閱讀 370評論 0 0
  • 如何重復(fù)執(zhí)行一個語句塊,直到滿足某個條件為之,這稱為循環(huán) 4.1 循環(huán) 循環(huán)是帶有比較數(shù)據(jù)項(xiàng)功能的一個基本編程工具...
    全無閱讀 457評論 0 2
  • 一直好喜歡別人那些做菜的博文,我是一名專業(yè)的吃貨,當(dāng)然也是一個做飯愛好者。雖然減肥的我不能吃到自己做的美...
    靠譜同志小賈閱讀 699評論 0 0
  • 工作剛滿一年,然而像是經(jīng)過一個世紀(jì)。 比起讀書的時候更加迷茫、更加不知道自己想要的是什么,反復(fù)問自己:“難道我真的...
    空空淡淡seven閱讀 1,073評論 0 2
  • 工作是生活的一部分,當(dāng)我們忘乎所以的工作,人也就成了一部機(jī)器。行走當(dāng)下,不會曲意逢迎,不會諂媚,耿直的活著。一種人...
    胡十莊主閱讀 654評論 0 51

友情鏈接更多精彩內(nèi)容