第一C程序基礎(chǔ)_第1頁
第一C程序基礎(chǔ)_第2頁
第一C程序基礎(chǔ)_第3頁
第一C程序基礎(chǔ)_第4頁
第一C程序基礎(chǔ)_第5頁
已閱讀5頁,還剩61頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第一章第一章 C程序基礎(chǔ)程序基礎(chǔ)2/67第一章第一章 C程序基礎(chǔ)程序基礎(chǔ)n1.1 C語言程序的基本結(jié)構(gòu)語言程序的基本結(jié)構(gòu)n1.2 C程序運(yùn)行過程程序運(yùn)行過程n1.3 編寫簡單的編寫簡單的C語言程序語言程序n1.4 C語言基本語法成分語言基本語法成分n1.5 C語言數(shù)據(jù)類型語言數(shù)據(jù)類型n1.6 數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入與輸出n1.7 算法算法n1.8 C語言的產(chǎn)生、發(fā)展及特點(diǎn)語言的產(chǎn)生、發(fā)展及特點(diǎn)3/67回憶回憶計(jì)算機(jī)系統(tǒng)組成計(jì)算機(jī)系統(tǒng)組成運(yùn)算器運(yùn)算器硬件系統(tǒng)硬件系統(tǒng)控制器控制器軟件系統(tǒng)軟件系統(tǒng)存儲(chǔ)器存儲(chǔ)器輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備系統(tǒng)軟件系統(tǒng)軟件應(yīng)用軟件應(yīng)用軟件 用戶為解決具體問題而開

2、發(fā)的軟件用戶為解決具體問題而開發(fā)的軟件操作系統(tǒng)操作系統(tǒng)語言及其處理程序語言及其處理程序數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)系統(tǒng)支撐軟件系統(tǒng)支撐軟件面向過程:面向過程:C語言語言等等機(jī)器語言、匯編語言機(jī)器語言、匯編語言面向?qū)ο螅好嫦驅(qū)ο螅篊等等4/671.1 C語言程序的基本結(jié)構(gòu)語言程序的基本結(jié)構(gòu)1.1.1 認(rèn)識(shí)認(rèn)識(shí)C語言程序語言程序n例例1、一個(gè)最簡單的、一個(gè)最簡單的C程序程序void main() 每個(gè)每個(gè)C程序必須有主函數(shù)程序必須有主函數(shù)main。main是函數(shù)是函數(shù)名,名,main后的后的圓括號(hào)圓括號(hào)不能省略,不能省略,void是一種是一種數(shù)據(jù)類型,說明該函數(shù)沒有返回值。數(shù)據(jù)類型,說明該函數(shù)沒有

3、返回值。5/67n例例2、在屏幕上顯示、在屏幕上顯示This is my first C program!#include void main()printf(“This is my first C program!”);主函數(shù)主函數(shù)輸出函數(shù)輸出函數(shù)語句結(jié)束語句結(jié)束預(yù)處理命令預(yù)處理命令EG101.C6/67n例、在屏幕上顯示例、在屏幕上顯示This is my first C program! And I am very happy!#include void main()printf(“This is my first C program!n”);printf(“And I am very

4、happy!”);7/67n例、計(jì)算兩個(gè)數(shù)的和并顯示結(jié)果例、計(jì)算兩個(gè)數(shù)的和并顯示結(jié)果#include void main()int value1, value2, sum;value1=3;value2=5;sum=value1+value2;printf(“The sum is :%dn”, sum);變量定義變量定義變量使用變量使用輸出結(jié)果輸出結(jié)果如果想顯示為如果想顯示為應(yīng)該怎么寫?應(yīng)該怎么寫?EG102.C8/67n例、輸入兩個(gè)數(shù),求和并顯示例、輸入兩個(gè)數(shù),求和并顯示#include void main()int value1, value2, sum;scanf(“%d%d”, &am

5、p;value1, &value2);sum=value1+value2;printf(“%d+%d=%dn”, value1, value2, sum);輸入輸入2個(gè)數(shù)個(gè)數(shù)程序運(yùn)行起來是程序運(yùn)行起來是黑屏,不好理解,黑屏,不好理解,怎么做更好一些?怎么做更好一些?printf(“Input two numbers:n”);EG103.C9/67n例例6、輸入兩個(gè)數(shù),求兩數(shù)中較大的數(shù)并輸出、輸入兩個(gè)數(shù),求兩數(shù)中較大的數(shù)并輸出#include void main( ) int a, b, c; scanf(%d%d, &a, &b); c=max(a,b); /*調(diào)用調(diào)用

6、max函數(shù)計(jì)算較大的值函數(shù)計(jì)算較大的值*/ printf(max=%dn, c); /*main函數(shù)結(jié)束函數(shù)結(jié)束*/int max(int x, int y) int z; if (xy) z=x; else z=y; return(z);EG104.c10/671.1.2 C語言程序的基本結(jié)構(gòu)語言程序的基本結(jié)構(gòu)編譯預(yù)處理命令編譯預(yù)處理命令/*目前只接觸了目前只接觸了#include*/void main ( )/*主函數(shù),必有主函數(shù),必有*/ /*一對(duì)花括弧為函數(shù)體一對(duì)花括弧為函數(shù)體*/ 聲明部分聲明部分/*包括變量的聲明和函數(shù)的聲明包括變量的聲明和函數(shù)的聲明*/ 執(zhí)行部分執(zhí)行部分/*C語句

7、語句*/其他函數(shù)定義其他函數(shù)定義 聲明部分聲明部分 執(zhí)行部分執(zhí)行部分11/67通過以上例子可以看出:通過以上例子可以看出:n1、函數(shù)是程序的基本單位、函數(shù)是程序的基本單位q一個(gè)一個(gè)C源程序一般由一個(gè)主函數(shù)和若干其他函數(shù)構(gòu)成,源程序一般由一個(gè)主函數(shù)和若干其他函數(shù)構(gòu)成,注意一個(gè)注意一個(gè)C程序程序必須包含且只能包含一個(gè)必須包含且只能包含一個(gè)main函數(shù)。函數(shù)。q C程序程序從從main函數(shù)開始執(zhí)行函數(shù)開始執(zhí)行,調(diào)用其他函數(shù)后再返回,調(diào)用其他函數(shù)后再返回到到main 函數(shù)。函數(shù)。main函數(shù)可以調(diào)用其他函數(shù),其他函數(shù)函數(shù)可以調(diào)用其他函數(shù),其他函數(shù)之間也可以互相調(diào)用之間也可以互相調(diào)用, 注意其他函數(shù)不能

8、調(diào)用注意其他函數(shù)不能調(diào)用main函數(shù)。函數(shù)。qC函數(shù)分為函數(shù)分為標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)和和用戶自定義函數(shù)用戶自定義函數(shù)兩種形式。兩種形式。n在調(diào)用標(biāo)準(zhǔn)函數(shù)時(shí),要注意加文件包含命令;在調(diào)用標(biāo)準(zhǔn)函數(shù)時(shí),要注意加文件包含命令;n用戶自定義函數(shù)是用戶根據(jù)程序需要,自己編寫的函數(shù)用戶自定義函數(shù)是用戶根據(jù)程序需要,自己編寫的函數(shù)12/67n2、函數(shù)的基本結(jié)構(gòu)、函數(shù)的基本結(jié)構(gòu)int max(int x, int y) int z; if (xy) z=x; else z=y; return(z); 函數(shù)首部函數(shù)首部 返回值類型返回值類型 函數(shù)名函數(shù)名( (參數(shù)列表參數(shù)列表) ) 函數(shù)體函數(shù)體函數(shù)首部下面用一對(duì)函數(shù)

9、首部下面用一對(duì) 括起來的部分。括起來的部分。函數(shù)體一般包括函數(shù)體一般包括聲明部分聲明部分和和執(zhí)行部分執(zhí)行部分。聲明部分聲明部分: :定義本函數(shù)中所使用的變量。定義本函數(shù)中所使用的變量。執(zhí)行部分執(zhí)行部分: :由若干條語句組成。由若干條語句組成。n3、一個(gè)可執(zhí)行的一個(gè)可執(zhí)行的C語言程序總是從語言程序總是從main函數(shù)開函數(shù)開始執(zhí)行,而不論其在整個(gè)程序中的位置如何。始執(zhí)行,而不論其在整個(gè)程序中的位置如何。13/67n4、每條語句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)每條語句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào);。 說明說明:在以下三種情況下不允許有分號(hào):在以下三種情況下不允許有分號(hào): 的的 a. 定義函數(shù)時(shí),函數(shù)

10、定義函數(shù)時(shí),函數(shù)名稱后面不使用分號(hào);名稱后面不使用分號(hào); b. 在右花括號(hào)在右花括號(hào)“”后面不使用分號(hào);后面不使用分號(hào); c. 預(yù)處理語句后面不使用分號(hào)。預(yù)處理語句后面不使用分號(hào)。#include ;void main( );printf(“This is my first C program!n”);14/67n5、C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句,程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語句,一個(gè)語句也可以分寫在多行上。一個(gè)語句也可以分寫在多行上。n6、可用、可用/*/對(duì)對(duì)C程序中的任何部分作注釋,注釋程序中的任何部分作注釋,注釋可以寫在程序的任何位置上,可以寫在程序的任何位置上,“/*

11、”與與“*/”也可不在也可不在同一行上,同一行上,但但/和和*之間不能有空格之間不能有空格。n7、在、在C語言中,大小寫字母是有區(qū)別的。(語言中,大小寫字母是有區(qū)別的。(C語言習(xí)語言習(xí)慣用小寫字母)。慣用小寫字母)。n8、書寫程序時(shí),最好使用縮進(jìn)格式的形式。、書寫程序時(shí),最好使用縮進(jìn)格式的形式。15/671.1.3 語言的表達(dá)式和語句語言的表達(dá)式和語句n表達(dá)式語句的一般形式:表達(dá)式語句的一般形式:表達(dá)式表達(dá)式;常見的表達(dá)式語句有:常見的表達(dá)式語句有:1、賦值語句賦值語句:由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成,是:由賦值表達(dá)式加上一個(gè)分號(hào)構(gòu)成,是程序中使用最多的語句之一。程序中使用最多的語句之一。 q其

12、一般形式為:其一般形式為: 變量變量 = 表達(dá)式表達(dá)式;q=是賦值運(yùn)算符,功能是將是賦值運(yùn)算符,功能是將=右邊表達(dá)式的值賦給左右邊表達(dá)式的值賦給左邊的一個(gè)變量,不是算術(shù)中的相等(邊的一個(gè)變量,不是算術(shù)中的相等(=)n例:例:x=9;y=a;i=i+1;q賦值運(yùn)算符具有右結(jié)合性。賦值運(yùn)算符具有右結(jié)合性。n例:例:a=b=3+8;n先做先做3+8,然后將,然后將11賦給賦給b,再將,再將b的值的值11賦給賦給a。16/67n變量賦值的特點(diǎn):變量賦值的特點(diǎn):q變量必須先定義,后使用變量必須先定義,后使用n例:例:int x, y; x=6; y=23; z=y-x;q變量被賦值前,值是不確定的。變量

13、被賦值前,值是不確定的。n例例: int i; if(i0) printf(“i是負(fù)數(shù)是負(fù)數(shù)”); q對(duì)變量的賦值過程是對(duì)變量的賦值過程是“覆蓋覆蓋”過程,即用新值去替換舊過程,即用新值去替換舊值值。n例例: int x; x=1; x=x+1; i沒有賦值沒有賦值, 這時(shí)變量這時(shí)變量i具有隨機(jī)值具有隨機(jī)值出錯(cuò)出錯(cuò)! 因?yàn)闆]有定義變量因?yàn)闆]有定義變量zx現(xiàn)在的值為現(xiàn)在的值為17/672、函數(shù)調(diào)用語句函數(shù)調(diào)用語句:由函數(shù)調(diào)用表達(dá)式加一個(gè)分號(hào)構(gòu):由函數(shù)調(diào)用表達(dá)式加一個(gè)分號(hào)構(gòu)成成 。q例:例: scanf(%d%d, &a, &b); printf(“This is my first

14、 C program);3、空語句空語句:只有一個(gè)分號(hào)的語句,它什么也不做。:只有一個(gè)分號(hào)的語句,它什么也不做。q例:例:; n除上述表達(dá)式語句之外,語句還有:除上述表達(dá)式語句之外,語句還有:4、復(fù)合語句復(fù)合語句:用:用 把一些語句括起來成為復(fù)合語句。把一些語句括起來成為復(fù)合語句。q例:例: z=x+y; t=z/100; printf(“t=%dn”, t);18/675、控制語句控制語句:完成一定的控制功能,只有種。:完成一定的控制功能,只有種。q條件判斷語句條件判斷語句nif() else (條件語句條件語句)nswitch (多分支選擇語句多分支選擇語句)q循環(huán)執(zhí)行語句循環(huán)執(zhí)行語句nf

15、or()(循環(huán)語句循環(huán)語句)nwhile()(循環(huán)語句循環(huán)語句)ndo while()(循環(huán)語句循環(huán)語句)q轉(zhuǎn)向語句轉(zhuǎn)向語句nbreak (中止執(zhí)行中止執(zhí)行switch或循環(huán)語句或循環(huán)語句)ncontinue (結(jié)束本次循環(huán)語句結(jié)束本次循環(huán)語句)ngoto (轉(zhuǎn)向語句轉(zhuǎn)向語句)nreturn (從函數(shù)返回語句從函數(shù)返回語句)19/671.2 C程序運(yùn)行過程程序運(yùn)行過程-幾個(gè)基本概念幾個(gè)基本概念n 程序程序:一組計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令,每一條指:一組計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令,每一條指令使計(jì)算機(jī)執(zhí)行特定的操作。令使計(jì)算機(jī)執(zhí)行特定的操作。n 源程序源程序:用高級(jí)語言或匯編語言編寫的程序稱為源程

16、:用高級(jí)語言或匯編語言編寫的程序稱為源程序,以序,以ASCII碼形式存儲(chǔ)。碼形式存儲(chǔ)。C源程序的擴(kuò)展名為源程序的擴(kuò)展名為“.C”。n 目標(biāo)程序目標(biāo)程序:源程序經(jīng)過:源程序經(jīng)過“編譯程序編譯程序”翻譯所得到的二翻譯所得到的二進(jìn)制代碼稱為目標(biāo)程序。目標(biāo)程序的擴(kuò)展名為進(jìn)制代碼稱為目標(biāo)程序。目標(biāo)程序的擴(kuò)展名為“.OBJ”。n 可執(zhí)行程序可執(zhí)行程序:目標(biāo)程序與庫函數(shù)連接,形成完整的可:目標(biāo)程序與庫函數(shù)連接,形成完整的可在操作系統(tǒng)下獨(dú)立執(zhí)行的程序??蓤?zhí)行程序的擴(kuò)展名在操作系統(tǒng)下獨(dú)立執(zhí)行的程序??蓤?zhí)行程序的擴(kuò)展名為為“.EXE” 。20/67C程序上機(jī)步驟程序上機(jī)步驟n編輯編輯:將源程序輸入計(jì)算機(jī)內(nèi)存中將源

17、程序輸入計(jì)算機(jī)內(nèi)存中修改源程序修改源程序?qū)⒏恼蟮脑闯绦虮4鏋榇疟P文件。改正后的源程序保存為磁盤文件。以以ASCII碼形碼形式輸入和存儲(chǔ)式輸入和存儲(chǔ)-擴(kuò)展名為擴(kuò)展名為.c(源程序)(源程序)n編譯編譯:先:先進(jìn)行語法檢查,并將無語法錯(cuò)誤的源程序翻進(jìn)行語法檢查,并將無語法錯(cuò)誤的源程序翻譯成二進(jìn)制形式的目標(biāo)代碼譯成二進(jìn)制形式的目標(biāo)代碼-擴(kuò)展名為擴(kuò)展名為.obj(目標(biāo)程(目標(biāo)程序)序)n鏈接鏈接:將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊連將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊連接,得到一個(gè)可執(zhí)行文件接,得到一個(gè)可執(zhí)行文件-擴(kuò)展名為擴(kuò)展名為.exe(可執(zhí)行(可執(zhí)行程序)程序)n執(zhí)行執(zhí)行:執(zhí)行經(jīng)過編譯和

18、連接的可執(zhí)行目標(biāo)文件。執(zhí)行經(jīng)過編譯和連接的可執(zhí)行目標(biāo)文件。21/67編輯源程序編輯源程序編譯編譯連接連接test.ctest.objtest.exe結(jié)果結(jié)果運(yùn)行運(yùn)行22/67Turbo C 2.0上機(jī)步驟上機(jī)步驟1、啟動(dòng)、啟動(dòng)Turbo C、啟動(dòng):、啟動(dòng):DOS、Windows、工作窗口、工作窗口: 菜單窗口、編輯窗口、信息窗口、功能鍵提示行菜單窗口、編輯窗口、信息窗口、功能鍵提示行2、在編輯狀態(tài)下輸入或修改源文件、在編輯狀態(tài)下輸入或修改源文件、編輯新文件、編輯新文件編輯新文件:編輯新文件:FileNew保存文件:保存文件:FileSave 或或 F2、編輯已存在的文件、編輯已存在的文件打開文

19、件:打開文件:FileLoad 或或 F3保存文件:保存文件:FileSave 或或 F2另存文件:另存文件:FileWrite to23/673 3、編譯源程序、編譯源程序CompileCompileCompileCompile to to OBJOBJ 或或 Alt+F9Alt+F9編譯時(shí)如提示錯(cuò)誤,則按編譯時(shí)如提示錯(cuò)誤,則按F6F6鍵在源程序和錯(cuò)誤提示鍵在源程序和錯(cuò)誤提示之間進(jìn)行切換,并修改;修改完畢再重新編譯,直到無之間進(jìn)行切換,并修改;修改完畢再重新編譯,直到無任何錯(cuò)誤編譯成功。任何錯(cuò)誤編譯成功。注意:編譯成功只能說明程序無語法錯(cuò)誤,不一定注意:編譯成功只能說明程序無語法錯(cuò)誤,不一定

20、代表算法正確或運(yùn)行結(jié)果正確。代表算法正確或運(yùn)行結(jié)果正確。4 4、運(yùn)行源程序、運(yùn)行源程序RunRunRunRun 或或 Ctrl+F9Ctrl+F9查看結(jié)果:查看結(jié)果:RunUserRunUser ScreenScreen 或或 Alt+F5Alt+F55 5、退出、退出FileQuitFileQuit 或或 Alt+xAlt+x24/67VC+ 6.0VC+ 6.0上機(jī)步驟上機(jī)步驟25/6726/671.3 編寫簡單的語言程序編寫簡單的語言程序n三種不同的程序設(shè)計(jì)結(jié)構(gòu)三種不同的程序設(shè)計(jì)結(jié)構(gòu)q順序結(jié)構(gòu)順序結(jié)構(gòu)q選擇結(jié)構(gòu)(分支結(jié)構(gòu))選擇結(jié)構(gòu)(分支結(jié)構(gòu))q循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)其中,順序結(jié)構(gòu)是最基本、最簡

21、單的程序結(jié)構(gòu)。其中,順序結(jié)構(gòu)是最基本、最簡單的程序結(jié)構(gòu)。在順序結(jié)構(gòu)程序中,各語句是按照位置的先后次序,在順序結(jié)構(gòu)程序中,各語句是按照位置的先后次序,順序執(zhí)行的,且每個(gè)語句都會(huì)被執(zhí)行到。順序執(zhí)行的,且每個(gè)語句都會(huì)被執(zhí)行到。27/67n例、已知例、已知a=5,b=10,試交換,試交換a、b的值。的值。 分析:交換兩個(gè)變量的值,就像一個(gè)瓶裝醬油,一個(gè)瓶分析:交換兩個(gè)變量的值,就像一個(gè)瓶裝醬油,一個(gè)瓶 裝醋,要交換內(nèi)容需要借助第三個(gè)空瓶一樣。交裝醋,要交換內(nèi)容需要借助第三個(gè)空瓶一樣。交 換兩個(gè)數(shù)也需要借助第三個(gè)變量。換兩個(gè)數(shù)也需要借助第三個(gè)變量。 #include void main( ) int a

22、=5, b=10, temp; temp=a; a=b; b=temp; printf(a=%d, b=%d n, a, b);EG105.C28/67n例例8、求任意三個(gè)整數(shù)的平均值。、求任意三個(gè)整數(shù)的平均值。 n編程思路編程思路: q首先要有首先要有3個(gè)整數(shù),這個(gè)整數(shù),這3個(gè)數(shù)可以用個(gè)數(shù)可以用a、b、c 三個(gè)整型變量存放三個(gè)整型變量存放 q其次平均值應(yīng)該用一個(gè)變量保存,該變量應(yīng)該是實(shí)數(shù)類型其次平均值應(yīng)該用一個(gè)變量保存,該變量應(yīng)該是實(shí)數(shù)類型q求任意求任意3個(gè)整數(shù)的平均值,所以這個(gè)整數(shù)的平均值,所以這3個(gè)數(shù)應(yīng)該從鍵盤輸入個(gè)數(shù)應(yīng)該從鍵盤輸入q計(jì)算平均值:計(jì)算平均值:(a+b+c)/3.0,因?yàn)椋?/p>

23、因?yàn)镃語言中兩個(gè)整數(shù)相除得到的結(jié)語言中兩個(gè)整數(shù)相除得到的結(jié)果也是整數(shù)(去掉小數(shù)部分),為保證結(jié)果正確必須用實(shí)數(shù)果也是整數(shù)(去掉小數(shù)部分),為保證結(jié)果正確必須用實(shí)數(shù)3.0#include void main( ) int a ,b ,c; float ave; scanf(%d%d%d, &a, &b, &c); ave=(a+b+c)/3.0; printf(ave=%fn, ave); EG106.C29/67思考:兩個(gè)數(shù)相除如何才能得到實(shí)數(shù)?如思考:兩個(gè)數(shù)相除如何才能得到實(shí)數(shù)?如0.33int a=1, b=3, c;c=a/b;c=?0方法一:方法一: float

24、 a=1, b=3, c;c=a/b;c=?0.333333將變量定義為實(shí)型將變量定義為實(shí)型方法二:方法二: int a=1, b=3;float c;c=1.0*a/b;c=?0.333333方法三:方法三: 強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換,格式:,格式:(類型類型)變量變量 或或 (類型類型)(表達(dá)式表達(dá)式)int a=1, b=3;float c;c=(float)a/b;c=? 0.333333int a=1, b=3;float c;c=(float)(a)/b;int a=1, b=3;float c;c=(float)(a/b);c=0.030/67n例例9、輸入三角形的三邊長,求三角

25、形的面積。、輸入三角形的三邊長,求三角形的面積。設(shè)三邊長設(shè)三邊長a、b、c構(gòu)成三角形,則構(gòu)成三角形,則Area=#include #include /*因?yàn)橐{(diào)用因?yàn)橐{(diào)用sqrt,所以包含此頭文件,所以包含此頭文件*/void main () float a, b, c, s, area; printf(“Input 3 numbers:n”); scanf (%f%f%f, &a, &b, &c); s = 1.0 / 2 * (a + b + c); area = sqrt (s * (s - a) * (s - b) * (s - c); printf (a=%

26、f, b=%f, c=%f, s=%fn, a, b, c, s); printf (area=%7.2fn, area);c)-b)(s-a)(s-s(sEG107.C31/671.4 C語言基本語法成分語言基本語法成分n語言字符集語言字符集q字符是字符是C語言最基本的元素,語言最基本的元素,C語言字符集由字母、數(shù)字、語言字符集由字母、數(shù)字、空白符、標(biāo)點(diǎn)符號(hào)和特殊字符組成空白符、標(biāo)點(diǎn)符號(hào)和特殊字符組成q在在C程序是用下列字符所組成的字符集寫成的:程序是用下列字符所組成的字符集寫成的:n字母字母: A-Z,a-zn數(shù)字?jǐn)?shù)字: 0-9n標(biāo)點(diǎn)符號(hào)、特殊字符標(biāo)點(diǎn)符號(hào)、特殊字符(28個(gè)個(gè)): ! #

27、% & + - * / = | . , ; : ? “ ( ) n空白符:空格,制表符空白符:空格,制表符(Tab跳格健跳格健),換行符的總稱??瞻追嗽谧?,換行符的總稱??瞻追嗽谧址⒆址杏幸饬x外,在程序中只起間隔作用,編譯系統(tǒng)會(huì)忽略其符、字符串中有意義外,在程序中只起間隔作用,編譯系統(tǒng)會(huì)忽略其它位置的空白符。它位置的空白符。32/67n標(biāo)識(shí)符標(biāo)識(shí)符q標(biāo)識(shí)符是給程序中的標(biāo)識(shí)符是給程序中的實(shí)體實(shí)體所起的名字所起的名字這些實(shí)體指:變量,常量,函數(shù),數(shù)組,類型這些實(shí)體指:變量,常量,函數(shù),數(shù)組,類型q標(biāo)識(shí)符的命名規(guī)則標(biāo)識(shí)符的命名規(guī)則n由字母,數(shù)字和下劃線組成,必須以字母或下劃線開

28、頭由字母,數(shù)字和下劃線組成,必須以字母或下劃線開頭 n標(biāo)識(shí)符不能與標(biāo)識(shí)符不能與C語言的語言的關(guān)鍵字關(guān)鍵字重名重名n建議用戶定義標(biāo)識(shí)符時(shí)盡量建議用戶定義標(biāo)識(shí)符時(shí)盡量不用不用下劃線開頭下劃線開頭n注意標(biāo)識(shí)符的有效長度,不同的編譯系統(tǒng)有不同的限制,一般注意標(biāo)識(shí)符的有效長度,不同的編譯系統(tǒng)有不同的限制,一般不超過不超過32個(gè)字符個(gè)字符n標(biāo)識(shí)符中區(qū)分大小寫字母標(biāo)識(shí)符中區(qū)分大小寫字母 (如(如: sum 和和 SUM 是不同的標(biāo)識(shí)符)是不同的標(biāo)識(shí)符)q定義標(biāo)識(shí)符應(yīng)遵循的原則定義標(biāo)識(shí)符應(yīng)遵循的原則n盡量做到見名知義盡量做到見名知義n一般習(xí)慣上變量名、函數(shù)名用小寫,而一般習(xí)慣上變量名、函數(shù)名用小寫,而符號(hào)常量

29、符號(hào)常量用大寫用大寫n應(yīng)盡量避免使用容易認(rèn)錯(cuò)的字符應(yīng)盡量避免使用容易認(rèn)錯(cuò)的字符 如:數(shù)字如:數(shù)字1和小寫字母和小寫字母l 下面哪些標(biāo)識(shí)符合法?下面哪些標(biāo)識(shí)符合法?a str20 area student Line TABLE go2map_good hello_world god_ 3th =xy“m+n”hello worldint 33/67n關(guān)鍵字關(guān)鍵字q關(guān)鍵字是關(guān)鍵字是C語言預(yù)先定義的、具有特定意義的標(biāo)識(shí)語言預(yù)先定義的、具有特定意義的標(biāo)識(shí)符,也稱為保留字。符,也稱為保留字。C語言包括語言包括32個(gè)關(guān)鍵字個(gè)關(guān)鍵字: q注意:注意:C語言的關(guān)鍵字都是小寫,不能重新定義關(guān)語言的關(guān)鍵字都是小寫

30、,不能重新定義關(guān)鍵字鍵字 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile34/67n運(yùn)算符運(yùn)算符q運(yùn)算符是用于描述某種運(yùn)算功能的符號(hào),如運(yùn)算符是用于描述某種運(yùn)算功能的符號(hào),如+ - * / 等等q運(yùn)算符可以由一個(gè)或多個(gè)字符組成運(yùn)算符可以由一個(gè)或多個(gè)字符組成q根據(jù)參與運(yùn)算的操作數(shù)個(gè)數(shù),可分為:單目運(yùn)算符、根據(jù)參與運(yùn)

31、算的操作數(shù)個(gè)數(shù),可分為:單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符雙目運(yùn)算符和三目運(yùn)算符C語言運(yùn)算符分為以下幾類:語言運(yùn)算符分為以下幾類: 算術(shù)運(yùn)算符:算術(shù)運(yùn)算符:+、-、*、/、% 關(guān)系運(yùn)算符:關(guān)系運(yùn)算符:、=、= =、!= 邏輯運(yùn)算符:邏輯運(yùn)算符:!、&、| 位運(yùn)算符:位運(yùn)算符:、|、& 賦值運(yùn)算符:賦值運(yùn)算符:=及擴(kuò)展賦值運(yùn)算符及擴(kuò)展賦值運(yùn)算符 條件運(yùn)算符:條件運(yùn)算符:? : 逗號(hào)運(yùn)算符:逗號(hào)運(yùn)算符: , 指針和地址運(yùn)算符:指針和地址運(yùn)算符:*、& 求字節(jié)運(yùn)算符:求字節(jié)運(yùn)算符:sizeof 分量運(yùn)算符:分量運(yùn)算符:.、- 下標(biāo)運(yùn)算符:下標(biāo)運(yùn)算符: 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:強(qiáng)制

32、類型轉(zhuǎn)換運(yùn)算符:(類型類型) 其他:如函數(shù)調(diào)用運(yùn)算符其他:如函數(shù)調(diào)用運(yùn)算符( )35/67需要注意的問題:需要注意的問題:、參加操作的數(shù)據(jù)類型參加操作的數(shù)據(jù)類型:、要求運(yùn)算量的個(gè)數(shù)要求運(yùn)算量的個(gè)數(shù):一元(單目)、二元(雙目)或三元(三目)運(yùn)算符一元(單目)、二元(雙目)或三元(三目)運(yùn)算符、優(yōu)先級(jí)優(yōu)先級(jí)操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級(jí)別不同時(shí),則先執(zhí)行操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級(jí)別不同時(shí),則先執(zhí)行“優(yōu)先級(jí)優(yōu)先級(jí)”高的運(yùn)算。如:高的運(yùn)算。如:3+53+5* *6 6、結(jié)合性結(jié)合性操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級(jí)別相同時(shí),則按結(jié)合方向處理操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級(jí)別相同時(shí),則按結(jié)合方向處理(左結(jié)合性左結(jié)合性、右結(jié)合性右

33、結(jié)合性)。如:)。如:3 3* *5/65/6、結(jié)果的取值及類型結(jié)果的取值及類型語言中的語言中的所有表達(dá)式都具有確定的值所有表達(dá)式都具有確定的值。當(dāng)不同類型的數(shù)。當(dāng)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),注意結(jié)果的值及類型。據(jù)進(jìn)行運(yùn)算時(shí),注意結(jié)果的值及類型。36/67各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算 一、自動(dòng)類型轉(zhuǎn)換一、自動(dòng)類型轉(zhuǎn)換語言允許不同數(shù)據(jù)類型之間的各種運(yùn)算。如語言允許不同數(shù)據(jù)類型之間的各種運(yùn)算。如1.5+2*a-1.23456789;在運(yùn)算中,系統(tǒng)自動(dòng)將不同類;在運(yùn)算中,系統(tǒng)自動(dòng)將不同類型的數(shù)據(jù)先轉(zhuǎn)換成同一類型,然后再運(yùn)算。型的數(shù)據(jù)先轉(zhuǎn)換成同一類型,然后再運(yùn)算。轉(zhuǎn)換規(guī)則如圖:轉(zhuǎn)

34、換規(guī)則如圖:doublefloatlongunsignedintchar,short低低高高向左的箭頭表示必定向左的箭頭表示必定的轉(zhuǎn)換,縱向的箭頭表示的轉(zhuǎn)換,縱向的箭頭表示當(dāng)運(yùn)算對(duì)象為不同類型時(shí)當(dāng)運(yùn)算對(duì)象為不同類型時(shí)轉(zhuǎn)換的方向(箭頭只表示轉(zhuǎn)換的方向(箭頭只表示數(shù)據(jù)類型級(jí)別的高低,由數(shù)據(jù)類型級(jí)別的高低,由低向高轉(zhuǎn)換)。低向高轉(zhuǎn)換)。37/67二、強(qiáng)制類型轉(zhuǎn)換二、強(qiáng)制類型轉(zhuǎn)換語言允許用戶使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)語言允許用戶使用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符將一個(gè)表達(dá)式的值轉(zhuǎn)換成所需的數(shù)據(jù)類型。表達(dá)式的值轉(zhuǎn)換成所需的數(shù)據(jù)類型。形式:形式:(類型名類型名)(表達(dá)式表達(dá)式 )x = (double)a;z =

35、(int)(x+y);y = (float)(5%3);注意注意 : (1) 為避免出錯(cuò),應(yīng)將表達(dá)式用括號(hào)括起來。為避免出錯(cuò),應(yīng)將表達(dá)式用括號(hào)括起來。(2) 對(duì)一個(gè)變量進(jìn)行強(qiáng)制轉(zhuǎn)換后,得到一個(gè)所需類型的對(duì)一個(gè)變量進(jìn)行強(qiáng)制轉(zhuǎn)換后,得到一個(gè)所需類型的中間變量,原來變量的類型和值不發(fā)生變化。中間變量,原來變量的類型和值不發(fā)生變化。 38/67算術(shù)運(yùn)算符算術(shù)運(yùn)算符n+ - * / %n注意:注意:q兩個(gè)整數(shù)相除舍去小數(shù)部分,結(jié)果為整數(shù)。如兩個(gè)整數(shù)相除舍去小數(shù)部分,結(jié)果為整數(shù)。如5/3=1。但在有負(fù)數(shù)操作數(shù)的情況下,整數(shù)除法截。但在有負(fù)數(shù)操作數(shù)的情況下,整數(shù)除法截取的方向及取模運(yùn)算結(jié)果的符號(hào)取決于具體機(jī)

36、器的取的方向及取模運(yùn)算結(jié)果的符號(hào)取決于具體機(jī)器的實(shí)現(xiàn)。整數(shù)除法一般靠實(shí)現(xiàn)。整數(shù)除法一般靠0截取,如果兩數(shù)符號(hào)不同,截取,如果兩數(shù)符號(hào)不同,則運(yùn)算結(jié)果的符號(hào)與被除數(shù)符號(hào)相同。則運(yùn)算結(jié)果的符號(hào)與被除數(shù)符號(hào)相同。q兩個(gè)數(shù)中有一個(gè)為實(shí)數(shù),則運(yùn)算結(jié)果為兩個(gè)數(shù)中有一個(gè)為實(shí)數(shù),則運(yùn)算結(jié)果為double型,型,即即1.0/3=0.333333,但,但1/3=0。q要求要求“%”兩側(cè)必須為整數(shù),如兩側(cè)必須為整數(shù),如7%3=1。39/67算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性算術(shù)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性n當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),按各運(yùn)算當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符時(shí),按各運(yùn)算符的優(yōu)先級(jí)和結(jié)合性確定各運(yùn)算符的計(jì)算順序。符

37、的優(yōu)先級(jí)和結(jié)合性確定各運(yùn)算符的計(jì)算順序。、*、/、%的優(yōu)先級(jí)相同,的優(yōu)先級(jí)相同,+、-的優(yōu)先級(jí)相同;的優(yōu)先級(jí)相同;但前三種高于后兩種。但前三種高于后兩種。、+ - * / %均為均為左結(jié)合性左結(jié)合性。40/67復(fù)合的賦值運(yùn)算符復(fù)合的賦值運(yùn)算符n在賦值運(yùn)算符在賦值運(yùn)算符“=”之前加上之前加上+、-、*、/、%、&、|等等10種雙目運(yùn)算符,可構(gòu)成種雙目運(yùn)算符,可構(gòu)成復(fù)合的賦值運(yùn)算符。即構(gòu)成復(fù)合的賦值運(yùn)算符。即構(gòu)成+=、-=、*=、/=、%=、=、&=、=、|=10種復(fù)合運(yùn)算種復(fù)合運(yùn)算符。符。n例:例:a += 5;a = a+5;y *= x-2;y = y*(x-2);x %=

38、y/3;x = x%(y/3);41/67自增與自減運(yùn)算符自增與自減運(yùn)算符n+、- 作用:使操作數(shù)遞增作用:使操作數(shù)遞增1或遞減或遞減1n形式:形式:q前綴:前綴:+a; -a;q后綴:后綴:a+; a-; q例:例:int x, a = 5; x = a+; int x, a = 5; x = +a; a的值分別是多少?的值分別是多少? x的值分別是多少?的值分別是多少?a = 6; x = 5;a = 6; x = 6;42/67n注意:注意:q自增、自減運(yùn)算符只能作用于變量,而不能是自增、自減運(yùn)算符只能作用于變量,而不能是常量或表達(dá)式,如:常量或表達(dá)式,如:8+、 (x*y)+ 錯(cuò)錯(cuò)q在

39、不需要使用任何具體值且僅需要遞增變量的在不需要使用任何具體值且僅需要遞增變量的情況下,前綴方式和后綴方式的效果相同。情況下,前綴方式和后綴方式的效果相同。n自增自減運(yùn)算符,優(yōu)先級(jí)高于自增自減運(yùn)算符,優(yōu)先級(jí)高于*、/、%運(yùn)算,結(jié)合運(yùn)算,結(jié)合方向?yàn)榉较驗(yàn)樽杂抑磷笞杂抑磷蟆?3/67逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符n , 優(yōu)先級(jí)最低,結(jié)合性為優(yōu)先級(jí)最低,結(jié)合性為自左至右自左至右n一般形式一般形式 : 表達(dá)式表達(dá)式1 , 表達(dá)式表達(dá)式2 , 表達(dá)式表達(dá)式n ;n執(zhí)行過程執(zhí)行過程 : 從左至右依次求解表達(dá)式從左至右依次求解表達(dá)式1,表達(dá),表達(dá)式式2表達(dá)式表達(dá)式n。逗號(hào)表達(dá)式的值就是表達(dá)。逗號(hào)表達(dá)式的值就是表達(dá)式式n

40、 的值。的值。n例:例:int i=2, j=3, k=4; i+1 , j+4 , k-2; 最后表達(dá)式語句的值為最后表達(dá)式語句的值為2 a=(a=6, a*3, a+3); 最后最后a的值為?的值為?44/67n分隔符分隔符q在在C語言程序中,語言程序中,空格、逗號(hào)、回車空格、逗號(hào)、回車/換行換行等,在不等,在不同的應(yīng)用場(chǎng)合起著分隔符的作用。同的應(yīng)用場(chǎng)合起著分隔符的作用。n例如例如: int x, y ; 中的空格和逗號(hào)都起著分隔符的作用,如中的空格和逗號(hào)都起著分隔符的作用,如果果int和和x之間沒有空格,程序就會(huì)出錯(cuò);而在之間沒有空格,程序就會(huì)出錯(cuò);而在x和和y之間少之間少了逗號(hào),了逗號(hào)

41、,xy就會(huì)被認(rèn)為是一個(gè)變量。就會(huì)被認(rèn)為是一個(gè)變量。 n其他符號(hào)其他符號(hào)q花括號(hào)花括號(hào) 通常用于標(biāo)識(shí)函數(shù)體或一個(gè)復(fù)合語句通常用于標(biāo)識(shí)函數(shù)體或一個(gè)復(fù)合語句q/*/構(gòu)成一組注釋符,編譯時(shí)系統(tǒng)將忽略注釋構(gòu)成一組注釋符,編譯時(shí)系統(tǒng)將忽略注釋n注釋在程序中起提示、解釋作用。注釋在程序中起提示、解釋作用。n在程序調(diào)試過程中使用注釋可以暫時(shí)屏蔽一些語句。在程序調(diào)試過程中使用注釋可以暫時(shí)屏蔽一些語句。45/671.5 C語言數(shù)據(jù)類型語言數(shù)據(jù)類型n用程序設(shè)計(jì)語言處理問題最終是對(duì)數(shù)據(jù)的處理,而數(shù)用程序設(shè)計(jì)語言處理問題最終是對(duì)數(shù)據(jù)的處理,而數(shù)據(jù)有不同類型的區(qū)分,這涉及到數(shù)據(jù)類型的概念。據(jù)有不同類型的區(qū)分,這涉及到數(shù)據(jù)

42、類型的概念。n數(shù)據(jù)類型數(shù)據(jù)類型q基本類型基本類型n整型整型(int)n實(shí)型(浮點(diǎn)型)實(shí)型(浮點(diǎn)型)(float double)n字符型字符型(char)n枚舉類型枚舉類型q構(gòu)造類型構(gòu)造類型n數(shù)組、結(jié)構(gòu)體、共用體、文件數(shù)組、結(jié)構(gòu)體、共用體、文件q指針類型指針類型q空類型空類型(void)46/67語言中的數(shù)據(jù)又分常量和變量,現(xiàn)介紹基語言中的數(shù)據(jù)又分常量和變量,現(xiàn)介紹基本數(shù)據(jù)類型中的常量和變量。本數(shù)據(jù)類型中的常量和變量。n 常量常量q在程序執(zhí)行期間其值不發(fā)生變化的量。又可分為在程序執(zhí)行期間其值不發(fā)生變化的量。又可分為直接常量和符號(hào)常量直接常量和符號(hào)常量q直接常量直接常量n例:例:8(整型)(整型)

43、, 2.6(實(shí)型)(實(shí)型), b(字符型)(字符型), “student” (字符串)(字符串)q符號(hào)常量符號(hào)常量n在程序中用在程序中用標(biāo)識(shí)符標(biāo)識(shí)符代表的常數(shù),其值不能被改變,也代表的常數(shù),其值不能被改變,也不能再被賦值。不能再被賦值。定義符號(hào)常量的格式定義符號(hào)常量的格式: #define 標(biāo)識(shí)符標(biāo)識(shí)符 常量表達(dá)式或字符串常量表達(dá)式或字符串47/67n例例10、計(jì)算圓的周長和面積。、計(jì)算圓的周長和面積。#include #define PI 3.14 void main( ) int r; float c, s, v; r=3; c=2*PI*r; s=PI*r*r; printf(“%f,

44、%fn, c, s); 使用符號(hào)常量的優(yōu)點(diǎn):使用符號(hào)常量的優(yōu)點(diǎn):(1) (1) 含義清楚含義清楚(2) (2) 修改方便修改方便特點(diǎn):標(biāo)識(shí)符名一般大寫特點(diǎn):標(biāo)識(shí)符名一般大寫EG108.C48/67n變量變量q在程序執(zhí)行期間值可以變化的量在程序執(zhí)行期間值可以變化的量q變量聲明的格式:變量聲明的格式:數(shù)據(jù)類型數(shù)據(jù)類型 變量名列表變量名列表 ; n例:例:int x; int a, b, c; x = 3;q說明:說明:n進(jìn)行變量聲明后,計(jì)算機(jī)系統(tǒng)會(huì)為聲明的變量分配存儲(chǔ)空進(jìn)行變量聲明后,計(jì)算機(jī)系統(tǒng)會(huì)為聲明的變量分配存儲(chǔ)空間,用以存放數(shù)據(jù)。間,用以存放數(shù)據(jù)。n變量的存儲(chǔ)空間可能由一個(gè)或多個(gè)字節(jié)組成,內(nèi)

45、存中的每變量的存儲(chǔ)空間可能由一個(gè)或多個(gè)字節(jié)組成,內(nèi)存中的每個(gè)字節(jié)都有自己的地址,變量名實(shí)際上是一個(gè)符號(hào)地址。個(gè)字節(jié)都有自己的地址,變量名實(shí)際上是一個(gè)符號(hào)地址。在程序中對(duì)變量的賦值和取值操作實(shí)際上是通過變量名找在程序中對(duì)變量的賦值和取值操作實(shí)際上是通過變量名找到相應(yīng)的內(nèi)存地址,然后從對(duì)應(yīng)的存儲(chǔ)空間中讀取數(shù)據(jù)。到相應(yīng)的內(nèi)存地址,然后從對(duì)應(yīng)的存儲(chǔ)空間中讀取數(shù)據(jù)。q變量的初始化:在聲明變量的同時(shí)對(duì)變量賦初值變量的初始化:在聲明變量的同時(shí)對(duì)變量賦初值n例:例:int x=3; int x=3, y=5; int x, y=3, z;3 3x x變量名變量名變量值變量值存儲(chǔ)空間存儲(chǔ)空間49/671.5.1

46、 整型數(shù)據(jù)整型數(shù)據(jù)n整型常量整型常量q十進(jìn)制整型:十進(jìn)制整型:23, -32, 0q八進(jìn)制整型:以八進(jìn)制整型:以0開頭開頭017, 023q十六進(jìn)制整型:以十六進(jìn)制整型:以0 x(或或0X)開頭開頭0 x17, 0X2en整型變量整型變量q分三種類型:分三種類型:short int、 int、 long int;每種類型又分;每種類型又分signed和和unsigned,缺省為,缺省為signed。q有符號(hào)基本整型有符號(hào)基本整型 signed int (16位位)q無符號(hào)基本整型無符號(hào)基本整型 unsigned int (16位位)q有符號(hào)短整型有符號(hào)短整型 signed short int

47、(16位位) q無符號(hào)短整型無符號(hào)短整型 unsigned short int (16位位)q有符號(hào)長整型有符號(hào)長整型 signed long int (32位位)q無符號(hào)長整型無符號(hào)長整型 unsigned long int (32位位)說明說明: 括起來的為可選項(xiàng),說明變量時(shí)可以省略不寫括起來的為可選項(xiàng),說明變量時(shí)可以省略不寫如何定義整型變量呢?如何定義整型變量呢?例例: int a; int x, y; short a ,b; unsigned long m;如果在如果在整常數(shù)整常數(shù)后面加字母后面加字母U或或u,表示,表示unsigned int型型常量;加字母常量;加字母L或或l表示表

48、示long int型常量型常量。例:例:12U, 432L12U, 432L 50/671.5.2 實(shí)型數(shù)據(jù)實(shí)型數(shù)據(jù)n實(shí)型常量實(shí)型常量q十進(jìn)制形式:由數(shù)字和小數(shù)點(diǎn)組成(必有小數(shù)點(diǎn))十進(jìn)制形式:由數(shù)字和小數(shù)點(diǎn)組成(必有小數(shù)點(diǎn))n例:例:2.8, -3.6, 3. , .75(0可?。┛墒。﹒指數(shù)形式:指數(shù)形式:1.289e3, 31.4E 1n實(shí)型變量實(shí)型變量q分三類:分三類:n單精度型單精度型 float(占占32位,有效數(shù)字位,有效數(shù)字67)n雙精度型雙精度型 double (占占64位,有效數(shù)字位,有效數(shù)字1516)n長雙精度型長雙精度型long double(占占128位,有效數(shù)字位,有

49、效數(shù)字1819)q一個(gè)一個(gè)實(shí)型常數(shù)實(shí)型常數(shù)默認(rèn)為默認(rèn)為double型。要表示型。要表示float型數(shù),型數(shù),則必須在實(shí)數(shù)后加上字母則必須在實(shí)數(shù)后加上字母f或或Fe或或E前面要有數(shù)字,前面要有數(shù)字,且且e或或E后面的數(shù)必須后面的數(shù)必須為整數(shù)。為整數(shù)。51/671.5.3 字符型數(shù)據(jù)字符型數(shù)據(jù)n字符常量字符常量q用一對(duì)單引號(hào)括起來的單個(gè)字符用一對(duì)單引號(hào)括起來的單個(gè)字符n例:例:a, 8, A, *q轉(zhuǎn)義字符:以轉(zhuǎn)義字符:以“”開頭,后跟一些指定字符,以表開頭,后跟一些指定字符,以表示特定的、具有控制功能的字符示特定的、具有控制功能的字符n例:例:n, , ”, , t, ddd, xhhn字符變量

50、字符變量q分兩類:分兩類:n有符號(hào):有符號(hào):signed char(占占8位)位) n無符號(hào):無符號(hào):unsigned char(占占8位)位)q定義形式:定義形式:char 變量列表變量列表;n例:例:char ch1, ch2; ch1=a; ch2 = $;52/67n字符串常量字符串常量q由一對(duì)雙引號(hào)由一對(duì)雙引號(hào)(“ ”)括起來的字符序列。括起來的字符序列。n例:例:Hello、I love China!、How do you do? q為了判斷字符串結(jié)束,為了判斷字符串結(jié)束,C編譯器會(huì)自動(dòng)在字符串的編譯器會(huì)自動(dòng)在字符串的末尾加一個(gè)轉(zhuǎn)義字符末尾加一個(gè)轉(zhuǎn)義字符0,作為字符串常量的結(jié)束,作

51、為字符串常量的結(jié)束標(biāo)志。標(biāo)志。0的的ASCII值為值為0,是不可顯字符,也不,是不可顯字符,也不作任何操作,即作任何操作,即“空操作字符空操作字符”。因此字符串的實(shí)因此字符串的實(shí)際長度為字符個(gè)數(shù)加際長度為字符個(gè)數(shù)加1。q注意注意: a與與a是不同的是不同的 a是字符常量,在內(nèi)存中占是字符常量,在內(nèi)存中占1個(gè)字節(jié)個(gè)字節(jié) “a”是字符串常量,在內(nèi)存中占是字符串常量,在內(nèi)存中占2個(gè)字節(jié)個(gè)字節(jié)aaaa053/67n字符型數(shù)據(jù)與整型數(shù)據(jù)的相互運(yùn)算字符型數(shù)據(jù)與整型數(shù)據(jù)的相互運(yùn)算q字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的字符數(shù)據(jù)在內(nèi)存中以相應(yīng)的ASCII碼存放,實(shí)質(zhì)上碼存放,實(shí)質(zhì)上是二進(jìn)制形式,而整型數(shù)據(jù)也以二進(jìn)制形式存放

52、,是二進(jìn)制形式,而整型數(shù)據(jù)也以二進(jìn)制形式存放,所以它們之間在一定范圍內(nèi)互相通用所以它們之間在一定范圍內(nèi)互相通用#include void main( ) char ch; ch=a; printf(%cn,ch); printf(%dn,ch); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:a 97#include void main( ) char ch; int x; ch=A; x=ch+32; printf(%c,%dn, ch, ch); printf(%c,%dn, x, x);運(yùn)行結(jié)果:運(yùn)行結(jié)果:A, 65 a, 97EG109.C、EG110.C54/671.6 數(shù)據(jù)的輸入與輸出數(shù)據(jù)的輸入與輸出nC語

53、言的輸入語言的輸入/輸出均由函數(shù)來實(shí)現(xiàn),在使用輸輸出均由函數(shù)來實(shí)現(xiàn),在使用輸入輸出函數(shù)時(shí),應(yīng)在程序開頭寫預(yù)編譯命令:入輸出函數(shù)時(shí),應(yīng)在程序開頭寫預(yù)編譯命令:#include n本節(jié)介紹最常用的輸入輸出函數(shù)本節(jié)介紹最常用的輸入輸出函數(shù)q格式輸入輸出函數(shù):格式輸入輸出函數(shù):printf和和 scanfq字符輸入輸出函數(shù):字符輸入輸出函數(shù):putchar和和getchar55/671.6.1 printf( )函數(shù)函數(shù)n一般形式:一般形式: printf(“格式控制格式控制”, 輸出表列輸出表列);q例:例:printf(“hello worldn”); printf(“sum is : %dn”,

54、 sum); printf(“a=%d,b=%dn”, a, b);n格式控制格式控制q普通字符普通字符原樣原樣輸出輸出n普通字母、數(shù)字及符號(hào)普通字母、數(shù)字及符號(hào)n轉(zhuǎn)義字符:轉(zhuǎn)義字符:n, t等等q格式控制說明:由格式控制說明:由%和格式字符及和格式字符及附加格式說明字符附加格式說明字符組成組成n%d:輸出十進(jìn)制整數(shù):輸出十進(jìn)制整數(shù)n%f:輸出十進(jìn)制浮點(diǎn)數(shù):輸出十進(jìn)制浮點(diǎn)數(shù)n%c:輸出單個(gè)字符:輸出單個(gè)字符56/67n格式控制格式控制q附加格式說明符附加格式說明符n放置位置:在和格式字符之間放置位置:在和格式字符之間n如下字符:如下字符:q字母字母l:輸出:輸出long型數(shù)據(jù)或型數(shù)據(jù)或doub

55、le型數(shù)據(jù),如:型數(shù)據(jù),如:%ld,%lf等等qm(正整數(shù)正整數(shù)):數(shù)據(jù)的最小寬度:數(shù)據(jù)的最小寬度qn(正整數(shù)正整數(shù)):對(duì)于實(shí)數(shù),表示輸出:對(duì)于實(shí)數(shù),表示輸出n位小數(shù);對(duì)于字符串,表位小數(shù);對(duì)于字符串,表示截取的字符個(gè)數(shù)示截取的字符個(gè)數(shù)q(負(fù)號(hào)負(fù)號(hào)):輸出的數(shù)據(jù)或字符在域內(nèi)向左對(duì)齊(缺省右對(duì)齊):輸出的數(shù)據(jù)或字符在域內(nèi)向左對(duì)齊(缺省右對(duì)齊)q輸出表列:輸出項(xiàng)可以是常量,變量,表達(dá)式輸出表列:輸出項(xiàng)可以是常量,變量,表達(dá)式例:例:int x=8; 輸出結(jié)果:輸出結(jié)果:printf(x=%8.4fn, 6.85); x=6.8500 printf(x=%dn, x); x=857/67注意:注意:

56、、輸出整數(shù)和實(shí)數(shù)時(shí),、輸出整數(shù)和實(shí)數(shù)時(shí),數(shù)數(shù)0用以用以指定數(shù)字前的空位是否指定數(shù)字前的空位是否補(bǔ)補(bǔ)0;無;無0則補(bǔ)空格。則補(bǔ)空格。float a=1.23;printf(%08.1fn, a);000001.2、如果要輸出、如果要輸出%,則在格式控制字符串中連續(xù)用兩個(gè),則在格式控制字符串中連續(xù)用兩個(gè)%表示。表示。printf(%f%n, 1.0/3);0.333333%、格式控制符的個(gè)數(shù)與后面的參數(shù)個(gè)數(shù)應(yīng)相等,且前格式控制符的個(gè)數(shù)與后面的參數(shù)個(gè)數(shù)應(yīng)相等,且前后位置要一一對(duì)應(yīng)。后位置要一一對(duì)應(yīng)。printf(a=%d, b=%dn, a,b);、格式字符與其對(duì)應(yīng)的輸出項(xiàng)的類型要保持一致,例格式字

57、符與其對(duì)應(yīng)的輸出項(xiàng)的類型要保持一致,例如,不應(yīng)用如,不應(yīng)用%f輸出整數(shù)。輸出整數(shù)。58/67int a=123; float x=12.345;printf(a=%5d ,a);輸出結(jié)果:輸出結(jié)果:a=_ _123printf(a=%2d,a);輸出結(jié)果:輸出結(jié)果:a=123printf(a=%-5X,a);輸出結(jié)果:輸出結(jié)果:a=7B_ _ _printf(x=%7.2f,x);輸出結(jié)果:輸出結(jié)果:x=_ _12.35printf(x=%.2f,x);輸出結(jié)果:輸出結(jié)果:x=12.35printf(x=%10.2e,x);輸出結(jié)果:輸出結(jié)果:x=_1.23e+001printf(x=%2E,

58、x);輸出結(jié)果:輸出結(jié)果:x=1.234500E+001printf(str=%5.3s,Computer);輸出結(jié)果:輸出結(jié)果:str=_ _Comprintf(str=%3s,Computer); 輸出結(jié)果:輸出結(jié)果:str=ComputerEG111.C-EG114.C59/671.6.2 scanf( )函數(shù)函數(shù)n一般形式:一般形式:scanf(“格式控制格式控制”, 地址表列地址表列);q格式控制格式控制n格式控制字符:基本同格式控制字符:基本同printf()相似相似n普通字符普通字符原樣輸入原樣輸入q地址表列地址表列n由變量地址組成:即在變量名前加地址運(yùn)算符由變量地址組成:即在變量名前加地址運(yùn)算符“&”q例:例:scanf(“%d%d”, &a, &b); 要求輸入:要求輸入:5 8 scanf(“%d,%d”,&a, &b); 要求輸入:要求輸入:5,8 scanf(“a=%d,b=%d”, &a, &b); 要求輸入:要求輸入:a=5,b=860/67n注意問題注意問題q用用%c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論