【C語言基礎01】算法的組成要素、C語句概述、數據的輸入輸出等

目錄

 

3.1 算法的組成要素

3.1.2 算法的表示方法

3.1.3 自頂向下、逐步細化的設計過程

3.2 C語句概述

3.2.1 控制語句

3.2.2 表達式語句

3.3 數據的輸入和輸出

3.3.1 數據的輸出函數

3.3.2 刷新輸出

3.3.3 scanf函數

3.4 getchar函數與putchar函數


3.1 算法的組成要素

1. 算法的特徵

     有窮性,確定性,有0個或多個輸入,有1個或多個輸出,有效性;

     算法的組成要素=操作+結構控制。

     三種基本結構=順序結構+選擇結構+循環結構

3.1.2 算法的表示方法

自然語言表示算法;流程圖表示算法,N-S流程圖表示算法,僞代碼表示算法

1. 流程圖:起止框(開始/結束)+處理框(處理步驟)+判斷框(判斷條件,一入兩出)+輸出輸入框+流程線

     整個算法的結構是由上而下地將各個基本結構順序排列起來

     特點:只有一個入口,不能從結構外隨意轉入結構中某點;

     只有一個出口,不能從結構內某位置隨意轉出(跳出);

     結構中每一部分都有機會被執行到(無死語句);

     結構內部不存在死循環

2. N-S流程圖:

     當型循環:當條件P成立是,反覆執行A操作,直到P條件不成立才結束。先做判斷,再決定是否執行循環體,在條件P一次都不滿足時,循環體A一次都不執行。

     直到型循環:當條件P不成立時,反覆執行A操作,直到P條件成立才結束。先執行循環體,再判斷條件P,循環體至少被執行一次。

3.1.3 自頂向下、逐步細化的設計過程

   自頂向下、逐步細化的設計過程,包括如下方面:

    將一個複雜的問題的解法分解和細化由若干個模塊組成的層次結構;將一個模塊的功能逐步分解細化爲一系列的處理步驟,直到某種程序設計語言的語句和某種機器指令。

    優點:提高設計效率;層次結構清晰。

    例:在3個數中取最大數算法。

    例:百錢百雞的問題

3.2 C語句概述

    C語句分爲控制語句、表達式語句、複合語句

3.2.1 控制語句

    9種控制語句,用於控制程序流程。

    條件語句:if-else

    循環語句:for、while、do-while、

    結束本次循環語句:continue

    終止執行switch或循環語句:break

    多分支選擇語句:switch

    轉向語句:goto

    函數返回語句:return

3.2.2 表達式語句

    最後加上一個;所組成的語句。

    表達式與表達式語句的區別:

    常見的語句形式:

    賦值語句、函數調用語句、空語句、複合語句

3.3 數據的輸入和輸出

3.3.1 數據的輸出函數

    數據的輸出函數:

    格式輸出函數基本形式:

    ① 原樣輸出格式

    printf("要輸出的字符串");

    ② 輸出變量的值

    按格式控制字符串輸出表列的值,調用的一般形式,

    printf("格式控制字符串",輸出表列);

    輸出表列:輸出的變量、常量、表達式等,個數是1個到若干個;前後須匹配。

 

    格式控制字符串:

    非格式字符:原樣輸出

    格式說明符:由%和轉換字符組成,如%d、%f等,將輸出的數據轉換爲指定的格式輸出。

    1)%d格式字符:

    ① %d:整數的實際位數輸出一個整數

    ② %md:在m列的位置上以數據右對齊的方式輸出一個整數,m大於整數的寬度時,多餘的位數空格留在數據前面,小於整數的寬度時m不起作用

    ③ %-md:左對齊輸出一個整數,m大於整數的寬度時多餘位數的空格留在數據後面,m小於整數的寬度時m不起作用

    ④ %0md:左對齊輸出一個整數,m大於整數的寬度時多餘的位數在數據前面補0,m小於整數的寬度時m不起作用

    2)%o格式字符:八進制整型數據格式

    3)%x格式字符:十六進制整數型數據格式

    4)%u格式字符:十進制無符號整數數據格式

    5)%c格式字符:字符型數據格式

    6)%s格式字符:字符串數據格式

    ① %s:原樣輸出

    ② %ms:按給定的寬度m輸出;小於m,則在左側用空格補足(右對齊);大於m則輸出全部

    ③ %-ms:給定寬度m輸出;小於m,則在右側用空格補足(左對齊輸出);大於m則輸出全部

    ④ %m.ns:在m列的位置上輸出一個字符串的前n個字符;

    若m>n,則在左側用空格補足(右對齊輸出);

    若m<n;則輸出n個字符;

    若n大於字符串長度,則輸出整個字符串

    ⑤ %-m.ns:在m列的位置上輸出一個字符串的前n個字符;

    若m>n,則在右側用空格補足(左對齊輸出);

    若m<n,則輸出n個字符;

    若n大於字符串長度,則輸出整個字符串

    7)%f格式字符:實型數據(單精度和雙精度)格式

    ① %f:系統默認輸出,整數全部輸出,小數輸出6位;單精度7位有效數字,雙精度16位有效數字

    ② %m.nf:在m列的位置上輸出一個實數,保留n位小數,系統自動對數據進行四捨五入處理。

    m>實數總寬度時,多餘的位數空格留在數據前面

    m<實數總寬度時,m不起作用,系統正確輸出

    ③ %-m.nf:在m列的位置上輸出一個實數,保留n位小數,系統自動對數據進行四捨五入。

    m>實數總寬度時,多餘的位數空格保留在數據後面;

    m<實數總寬度時,m不起作用,系統正確輸出該數

    例:

    printf("%25f\n",x); 右對齊;

    printf("%.2f\n",x); 兩位小數,左對齊

    8)%e格式字符:實型數據指數形式格式

    ① %e:按規範的指數形式輸出,即小數點前1位非0數字,小數點後6位小數,指數部分佔5位,再加上小數點共13位,如1.123456e+007

    ② %m.ne:給定寬度m輸出,包括n位小數和5位指數;

    數據長度小於指定寬度m,左側用空格補足

    數據長度大於指定寬度m,實際長度輸出

    ③ %-m.ne:給定寬度m輸出,包括n位小數和5位指數

    數據長度小於指定寬度,右側用空格補足;

    數據長度大於指定寬度m,實際輸出

    9)%g格式字符:以實型數形式輸出,根據數值大小自動選用%f或%e格式以來輸出寬段較小,且不輸出無意義的零

3.3.2 刷新輸出

    printf()語句將輸出傳遞給一個被稱爲緩衝區的中介儲存區域,緩衝區中的內容再不斷地被傳遞給屏幕。

    ① 緩衝區滿

    ② 遇到換行符\n

    ③ 需要輸入的時候

3.3.3 scanf函數

    用於輸入函數。按照格式參數的要求,從終端上把數據傳送到地址參數所指定的內存空間中。

    scanf("格式控制參數",地址1,地址2);

    1.地址參數

    通過對變量名“求地址”運算得到,地址的運算符爲&,得到的是符號地址

    &a、&b爲兩個符號地址

    &a給出的是變量a四字節空間的首地址;&b給出的是變量b四字節空間的首地址

    2.格式控制參數

    scanf函數的個數參數有兩種成分:格式說明項、輸入分隔符

    格式說明項:

    ① 格式字符與printf函數中的使用方式相同,輸入數據分爲整型、字符型、實型

    ② 整型與實型可再加長度修正說明符,短整型h,長整型l

    ③ m用以指定輸入數據的寬度

    輸入分隔符:

    ① 根據格式字符的含義從輸入流中取得數據,當輸入流中數據類型與格式字符要求不符時,認定這一數據項結束。

    ② 根據格式項中指定的域寬分隔出數據項

    ③ 用分隔符。空格、跳空格('\t')、換行符('\n')

3. 抑制字符*:作用是在按格式說明讀入數據後不送給任何變量,即虛讀

    1.scanf的停止與返回

    停止情況:

    格式參數中的格式項用完-正常結束;

    發生格式項與輸入域不匹配時-非正常結束

    2.scanf函數與輸入緩衝區

    輸入數據時,實際上並不是輸入完一個數據項就被讀取給一個變量,而是在鍵入一行字符並按回車鍵之後才被輸入。先放在緩衝區中,再按scanf函數格式的要求從緩衝區中讀數據。

3.4 getchar函數與putchar函數

    只對字符數據進行輸入輸出操作的函數putchar和getchar函數,該函數包含在stdio.h中。

    1.字符輸出函數putchar()

    一般調用格式putchar(ch);

    ch爲字符型變量或整型變量

    功能:將變量ch的值輸出到終端(顯示器)設備上。

    2.字符輸入函數getchar()

    調用格式:getchar();

    該函數爲無參函數,功能:從終端(或指定輸入設備)獲取一個輸入字符。

    執行getchar()函數,雖然是讀入一個字符,但並不是從鍵盤讀,而是輸入完後按回車鍵,將該行的字符輸入緩衝區中。

    例:putchar(getchar()):讀入一個字符,將它輸出到終端

    處理文字數據:輸入若干字符,只要輸入的字符不是#就執行指定的操作。

    if((ch=getchar())!'#')

    或

    while((ch=getchar())!='#')

    {…}

 

 

 

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