C語言程序設計課件_第1頁
C語言程序設計課件_第2頁
C語言程序設計課件_第3頁
C語言程序設計課件_第4頁
C語言程序設計課件_第5頁
已閱讀5頁,還剩558頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

返回本書目錄

C語言緒論返回本章目錄1.1.2C程式的開發(fā)過程1.1.3VisualC++6.0集成環(huán)境1.1.1C程式實例1.1VisualC++6.0環(huán)境運行的C程式實例返回本節(jié)目錄2.C程式實例(2)3.C程式實例(3)1.C程式實例(1)1.1.1C程式實例1.1.1C程式實例(1)返回本節(jié)目錄1.C程式實例1【例1.1】輸出一行資訊:ThiseisaCprogram.程式名為l1_1.cpp。#include"stdio.h" /*檔包含*/main() /*主函數(shù)*/{printf("ThisisaCprogram.\n"); /*輸出資訊*/}程式輸出結(jié)果:ThisisaCprogram.程式演示[例1.1]程式演示單擊運行輸入根源程式彈出運行結(jié)果窗口運行結(jié)果返回例題返回本節(jié)目錄1.1.1C程式實例(2)2.C程式實例2【例1.2】輸入兩個整數(shù),輸出它們的和。程式名為l1_2.cpp。#include"stdio.h" /*檔包含*/main() /*主函數(shù)*/{inta,b,c; /*聲明定義變數(shù)a,b和c*/

scanf("%d%d",&a,&b); /*輸入變數(shù)a和b的值*/c=a+b; /*計算c等於a與b的和值*/

printf("c=%d\n",c); /*輸出變數(shù)c的值*/}運行程式輸入:90<CR>7<CR>程式結(jié)果:C=97返回本節(jié)目錄程式演示[例1.2]程式演示單擊運行輸入根源程式彈出運行結(jié)果窗口運行結(jié)果輸入90和7,並以回車作分隔符號和輸入結(jié)束符。返回例題返回本節(jié)目錄1.1.1C程式實例(3)3.C程式實例3【例1.3】輸入兩個整數(shù),通過調(diào)用函數(shù)計算它們的和,然後輸出和值。程式名為l1_3.cpp。#include"stdio.h" /*檔包含*/intsum(intx,inty) /*定義sum函數(shù)*/{intz; /*聲明定義變數(shù)z*/z=x+y; /*計算z等於x與y的和值*/return(z); /*將z的值返回,通過sum帶回調(diào)用處*/}main() /*主函數(shù)*/{inta,b,c; /*聲明定義變數(shù)a,b和c*/

scanf("%d%d",&a,&b); /*輸入變數(shù)a和b的值*/c=sum(a,b); /*調(diào)用sum函數(shù),將得到的值賦給c*/

printf("c=%d\n",c); /*輸出變數(shù)c的值*/}運行程式輸入:907<CR>程式結(jié)果:C=97返回本節(jié)目錄程式演示[例1.3]程式演示單擊運行輸入根源程式彈出運行結(jié)果窗口返回例題運行結(jié)果輸入90和7,並以空格作間隔符,以回車作輸入結(jié)束符。返回本節(jié)目錄1.1.2C程式的開發(fā)過程返回本節(jié)目錄1.編輯2.編譯

(1)編輯指編輯創(chuàng)建根源程式是將編寫好的C語言根源程式代碼錄入到電腦中,形成根源程式檔。(2)本書用VisualC++6.0環(huán)境提供的全螢幕編輯器。在附錄3仲介紹TurboC2.0的環(huán)境情況。(3)在VC6.0環(huán)境中的根源程式檔,其擴展名為.cpp,而在TurboC2.0環(huán)境中的根源程式檔的擴展名為.c。(1)編譯根源程式就是由C系統(tǒng)提供的編譯器將根源程式檔的源代碼轉(zhuǎn)換成目標代碼的過程。(2)編譯過程主要進行詞法分析和語法分析,在分析過程中如果發(fā)現(xiàn)錯誤,將錯誤資訊顯示在螢幕上通知用戶。經(jīng)過編譯後的目標檔的擴展名為.obj。

1.1.2C程式的開發(fā)過程返回本節(jié)目錄3.連接4.運行

(1)連接過程是將編譯過程中生成的目標代碼進行連接處理,生成可執(zhí)行程式檔的過程。(2)在連接過程中,時常還要加入一些系統(tǒng)提供的庫檔代碼。經(jīng)過連接後生成的可執(zhí)行檔的擴展名為.exe。

運行可執(zhí)行檔的方法很多,可在C系統(tǒng)下執(zhí)行“運行”命令。也可以在操作系統(tǒng)下直接執(zhí)行可執(zhí)行檔??蓤?zhí)行的程式檔運行後,將在螢幕上顯示程式執(zhí)行的結(jié)果。1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄1.啟動VisualC++6.0環(huán)境2.

編輯根源程式檔3.編譯和連接4.執(zhí)行

利用VisualC++6.0集成環(huán)境開發(fā)C程式的過程如下:1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄1.啟動VisualC++6.0環(huán)境

方法:單擊“開始”-“程式”-“MicrosoftVisualstudio6.0”-“MicrosoftVisualC++6.0”命令,啟動VisualC++,VC6主窗口如下:菜單欄專案工作區(qū)標題欄輸出區(qū)工具欄狀態(tài)欄檔編輯區(qū)返回1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄2.

編輯根源程式檔(1)建立新工程專案①單擊“檔”-“新建”,彈出“新建”對話框。②單擊“工程”選項卡;單擊“Win32ConsoleApplication”選項;“工程”檔框中輸入項目名,如“gc1”和“位置”框輸入或選擇新專案所在位置,單擊“確定”按鈕。彈出“Win32ConsoleApplicationStep1of1”對話框。③單擊“Anemptyproject”按鈕和“完成”按鈕。系統(tǒng)顯示“新建工程資訊”對話框。單擊“確定”按鈕。

單擊“工程”單擊“Win32ConsoleApplication”輸入專案名選擇新專案位置單擊“確定”單擊該選項單擊“完成”單擊“確定”返回1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄2.

編輯根源程式檔(2)建立新專案中的檔①單擊“檔”-“新建”,彈出“新建”對話框。②

選擇“檔”選項卡。單擊“C++SourceFile”選項,在“檔”檔框中輸入檔案名,單擊“確定”按鈕。系統(tǒng)自動返回VC6主窗口。③顯示檔編輯區(qū)窗口,在檔編輯區(qū)窗口輸入根源程式檔。單擊“檔”輸入檔案名單擊“C++Sourcefile”單擊“確定”選擇“添加工程”輸入根源程式返回1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄3.

編譯和連接

方法一:選擇主窗口菜單欄中“編譯”菜單項;系統(tǒng)彈出下拉菜單,選擇“構(gòu)件”菜單命令。

方法二:單擊主窗口編譯工具欄上的“Build”按鈕進行編譯和連接。單擊“編譯”

(1)系統(tǒng)對程式檔進行編譯和連接,生成以專案名稱命名的可執(zhí)行目標代碼檔.exe。(2)編譯連接過程中,系統(tǒng)如發(fā)現(xiàn)程式有語法錯誤,則在輸出區(qū)窗口中顯示錯誤資訊,給出錯誤的性質(zhì)、出現(xiàn)位置和錯誤的原因等。如果雙擊某條錯誤,編輯區(qū)窗口右側(cè)出現(xiàn)一個箭頭,指示再現(xiàn)錯誤的程式行。用戶據(jù)此對根源程式進行相應的修改,並重新編譯和連接,直到通過為止。

單擊“Build”返回1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄4.

執(zhí)行方法一:單擊“編譯”菜單中“執(zhí)行”命令。方法二:單擊主窗口編譯工具欄上的“BuildExecute”按鈕來執(zhí)行編譯連接後的程式。運行成功,螢幕上輸出執(zhí)行結(jié)果,並提示資訊:“Pressanykeytocontinue”。此時按任意鍵系統(tǒng)都將返回VC6主窗口。

在執(zhí)行程式過程中出現(xiàn)運行錯誤。用戶要修改根源程式檔並且重新編譯、連接和執(zhí)行。單擊“編譯”單擊“BuildExecute”返回返回本章目錄1.2.2C程式的書寫格式1.2.1C程式的結(jié)構(gòu)特點1.2C程式的基本結(jié)構(gòu)1.2.1C程式的結(jié)構(gòu)特點返回本節(jié)目錄

任何函數(shù)(包括主函數(shù)main())都是由函數(shù)說明和函數(shù)體兩部分組成。其一般結(jié)構(gòu)如下:[函數(shù)類型]函數(shù)名(函數(shù)參數(shù)表)

/*函數(shù)說明部分*/

{說明語句部分;

/*函數(shù)體部分*/

執(zhí)行語句部分;

}1.2.1C程式的結(jié)構(gòu)特點1.C程式是由函數(shù)構(gòu)成的。2.

函數(shù)由函數(shù)說明和函數(shù)體組成。3.C程式總是從main函數(shù)開始執(zhí)行。4.C程式語句和數(shù)據(jù)定義必須以分號“;”結(jié)束。5.C語言嚴格區(qū)分大小寫。6.C語言數(shù)據(jù)輸入和輸出是由庫函數(shù)實現(xiàn)的。7.C語言用/*注釋內(nèi)容*/形式進行程式注釋。

一個C根源程式可由一個main函數(shù)和若干個其他函數(shù)組成,其中必須有一個且只能有一個main函數(shù)。

函數(shù)說明部分包括函數(shù)名、函數(shù)返回值類型、函數(shù)的形式參數(shù)(形參)名、形式參數(shù)類型。函數(shù)體即函數(shù)說明部分下麵的用一對大括弧括起來的部分{……}。返回本節(jié)目錄

main函數(shù)始終是C程式執(zhí)行時入口處。

C語言中,分號是程式語句的結(jié)束標誌,也是C語句的必要組成部分。

如變數(shù)a和變數(shù)A系統(tǒng)認定為兩個不同的變數(shù)。

C語言本身沒有輸入輸出語句。輸入和輸入操作是由庫函數(shù)scanf和printf等函數(shù)來實現(xiàn)的。

在“/*”和“*/”之間的所有字元都為注釋符,C系統(tǒng)不對注釋符進行編譯。1.2.2C程式的書寫格式返回本節(jié)目錄1.C程式書寫格式自由。2.C程式書寫採用縮進格式。3.程式中適當使用注釋資訊。

根據(jù)語句的從屬關(guān)係,程式書寫時採用縮進格式,使程式語句的層次結(jié)構(gòu)清晰,提高程式的可讀性。同一層次語句要左對齊,不同層次的語句要縮進若干個字元,這樣程式層次清楚,便於閱讀和理解。

在書寫程式時,適當?shù)丶尤胱⑨屚瑯涌稍黾映淌降目勺x性。

對於短語句可以多條語句書寫在同一行,也可以將長語句分寫在多行。但需要注意,分行時不能將一個單詞分開,也不能將雙引號引起來的字串分開。我們提倡一行一條語句的風格。

返回本章目錄1.3.2C語言的詞法

1.3.1C語言的字元集

1.3C語言的詞法1.3.1C語言的字元集

C語言的字元集是由ASCII字元集組成(1)26個小寫字母:a—z。返回本節(jié)目錄(2)26個大寫字母:A—Z。(3)10個數(shù)字:0—9。(4)其他符號:+、-、*、/、=、,、.、_、)、(、&、^、%、$、#、@、!、~、<、>、?、’、;、:、”、)、[、]、{、}、-、\、空格。

1.3.2C語言的詞法

返回本節(jié)目錄C語言使用一組字元來構(gòu)造具有特殊意義的符號,我們稱之為詞法符號。主要有關(guān)鍵字、識別字、運算符、分隔符號、常量及注釋符等。1.關(guān)鍵字

關(guān)鍵字是系統(tǒng)預定義的詞法符號,具有特定的含義。ANSIC規(guī)定有32個關(guān)鍵字,C++又補充了29個關(guān)鍵字。C和C++均不允許對關(guān)鍵字重新定義,即程式員不能用這樣關(guān)鍵字再定義其他含義。

關(guān)鍵字舉例:

intcharfloatlongifelseforwhile

sizeofstaticstruct

注釋符前面已經(jīng)介紹。運算符是對數(shù)據(jù)進行某種操作的單詞,是系統(tǒng)預定義的函數(shù),具體內(nèi)容將在第2章詳細介紹。常量是程式中由書寫形式?jīng)Q定類型和值的數(shù)據(jù)。C語言常量有數(shù)字常量、字元常量和字串常量。將在第2章中做詳細介紹。

1.3.2C語言的詞法

返回本節(jié)目錄

2.識別字

3.分隔符號

4.其他

識別字是指用來標識程式中用到的變數(shù)名、函數(shù)名、類型名、數(shù)組名、檔案名以及符號常量名的有效字元序列。

C語言識別字命名必須符合語法規(guī)定:識別字是以字母或下劃線開始,由字母、數(shù)字和下劃線組成的符號串。

分隔符號是程式中的標點符號,用來分隔單詞或程式正文。(1)空格:作為單詞之間的分隔符號。(2)逗號:作為變數(shù)之間或函數(shù)的多個參數(shù)之間的分隔符號。(3)冒號:作為語句標號與語句間的分隔符號以及switch語句中case與語句序列之間的分隔符號。(4)大括?。鹤鳛楹瘮?shù)體、複合語句等定界。

返回本章目錄1.4.2C語言字元數(shù)據(jù)輸入/輸出1.4.3C++的輸入輸出流1.4.1C語言格式輸入/輸出1.4C語言數(shù)據(jù)輸入和輸出1.4.1C語言格式輸入/輸出

標準函數(shù)庫中定義了一些輸入輸出函數(shù),程式在調(diào)用這些庫函數(shù)時,必須在原始檔案的開始處加上頭檔的“包含命令”,格式如下:

#include<庫函數(shù)頭檔案名>或#include"庫函數(shù)頭檔案名"

1.格式輸出函數(shù)printf()

printf()函數(shù)的作用:向電腦系統(tǒng)默認的輸出設備(一般指終端或顯示器)輸出一個或多個任意類型的數(shù)據(jù)。

printf()函數(shù)的一般格式如下:

printf(“格式字串”[,輸出項表]);(1)“輸出項列表”是需要輸出的一些數(shù)據(jù)。數(shù)據(jù)可以有0項、1項或多個輸出項,多個輸出項之間用“,”分隔,並且輸出項應與格式控制相匹配。(2)“格式控制”是用雙引號括起來的一串字元,也稱格式控制字串,包括格式說明、普通字元和轉(zhuǎn)義字元3種。格式控制字串的功能是指定輸出數(shù)據(jù)的格式和類型。下麵均以【例1.2】和【例1.3】中的printf("c=%d\n",c);進行說明。其中,“c=”是普通字元,“%d”是格式說明,’\n’是轉(zhuǎn)義字元,而c是輸出項。返回本節(jié)目錄1.4.1C語言格式輸入/輸出

(1)普通字元:普通字元內(nèi)容按照原樣向輸出設備輸出。如“c=”在螢幕上輸出結(jié)果就是:c=返回本節(jié)目錄下麵分別對“格式控制”的3種形式進行說明(2)格式說明:格式說明是以字元“%”開頭,加上格式字元組成,表示對數(shù)據(jù)輸出格式的控制,它與後面的數(shù)據(jù)輸出項對應。格式說明與數(shù)據(jù)輸出項的數(shù)據(jù)個數(shù)、數(shù)據(jù)類型及數(shù)據(jù)排放次序相匹配對應。如,格式說明“%d”與輸出項“c”對應,即控制數(shù)據(jù)輸出項c按格式說明"%d"規(guī)定的格式(十進位整數(shù)形式)輸出。因此,據(jù)c值為97,輸出結(jié)果是:97

如果,格式說明“%d”改為“%c”,則輸出項c的值將按“%c”規(guī)定的格式(字元型數(shù)據(jù))輸出。因此,據(jù)c值為97,輸出結(jié)果是:a

‘a(chǎn)’為97對應的ASCII字元。常用的格式字元情況如教材表1-1所示。(3)轉(zhuǎn)義字元:轉(zhuǎn)義字元是以’\’開頭和其他特殊字元組合而成的具有一定含義的字元。如’\n’

表示“回車換行”符。

轉(zhuǎn)義字元是ASCII字元中的一種,主要用來控制外部設備。常用的一些轉(zhuǎn)義字元及其含義見教材表1-4所示。1.4.1C語言格式輸入/輸出

2.格式輸入函數(shù)scanf()

格式控制輸入函數(shù)scanf作用是:按指定的格式從標準輸出設備(鍵盤)輸入數(shù)據(jù)。

函數(shù)scanf()的使用格式為:

scanf(“格式控制”,地址列表);

(1)“地址列表”是由接收數(shù)據(jù)變數(shù)的地址組成。求地址運算符為&,如&a,&b分別表示變數(shù)a和變數(shù)b的地址。若接收多個數(shù)據(jù),則變數(shù)地址之間用“,”分隔,並且地址列表與格式控制中的格式說明相匹配。(2)“格式控制”基本同於printf函數(shù)的格式控制。格式控制的功能是規(guī)定輸入數(shù)據(jù)的格式。格式控制包括格式說明和普通字元,一般不包括轉(zhuǎn)義字元。

返回本節(jié)目錄

(1)格式說明之間有普通字元或轉(zhuǎn)義字元時,則數(shù)據(jù)輸入時,必須按它們的原樣輸入這些字元作為數(shù)據(jù)分隔符號。如,scanf("%d,%d",&a,&b);

輸入數(shù)據(jù)時,數(shù)據(jù)之間必須用“,”作為分隔符號。可輸入:90,7<CR>。(2)連續(xù)輸入多個數(shù)值型數(shù)據(jù)時,數(shù)據(jù)之間要用空格、Tab鍵或回車鍵作分隔符號。如【例1.2】和【例1.3】中語句scanf(“%d%d”,&a,&b);輸入數(shù)據(jù)時,數(shù)據(jù)之間可用空格、Tab鍵或回車鍵分隔符號??奢斎?907<CR>。

(3)連續(xù)輸入多個字元數(shù)據(jù)時,各字元間不輸入分隔符號。如,scanf("%c%c",&a,&b);輸入數(shù)據(jù)時,連續(xù)輸入相應的字元??奢斎?AB<CR>。則將‘A’字元輸給了變數(shù)a,將‘B’字元輸給了變數(shù)b。(4)數(shù)據(jù)型數(shù)據(jù)和字元型數(shù)據(jù)交叉輸入時,若字元在前,則字元和數(shù)值型數(shù)據(jù)間可以加入分隔符號(空格、Tab鍵和回車鍵);若數(shù)值在前,則數(shù)值和字元間不可以加分隔符號(空格、Tab鍵和回車鍵)。(5)輸入數(shù)據(jù)時,可以指定數(shù)據(jù)所占列數(shù),系統(tǒng)自動按它截取所需數(shù)據(jù)。如,scanf("%3d%3d",&a,&b);若輸入:12345678<CR>系統(tǒng)自動將123賦給a,456賦給b。

(6)輸入數(shù)據(jù)時不能規(guī)定精度。如,scanf("%5.2f",&a);是不合法的。

1.4.1C語言格式輸入/輸出

注意:格式字元和附加格式字元使用應與輸出項相匹配。返回本節(jié)目錄字元輸入函數(shù)getchar的一般格式為:

getchar()

getchar作用:在標準輸入設備(鍵盤)讀入一個字元。例如,charc;c=getchar();執(zhí)行時,要求輸入一個字元,如輸入:3<CR>,則輸入的字元’3’就賦給了變數(shù)c。1.4.2C語言字元數(shù)據(jù)輸入/輸出

1.字元輸出函數(shù)putchar()2.字元輸入函數(shù)getchar()

字元輸出函數(shù)putchar的一般格式為:

putchar(c)putchar作用:在標準輸出設備(顯示器)上輸出c對應的一個字元。輸出的字元是括弧中c所對應的一個字元。c可以是單字符數(shù)據(jù)、整型數(shù)據(jù)及其運算式。如,charc=’Y’;putchar(c);輸出結(jié)果為Y。如,inta=98;putchar(a+1);輸出結(jié)果為c。返回本節(jié)目錄1.4.3C++的輸入輸出流C++程式中,還增加了特有的輸入/輸出流,由輸入/輸出流庫提供。cin和cout是流庫預定義標準輸入流對象和標準輸出流對象,分別連接鍵盤和顯示器。

頭檔iostream.h包含了操作所有輸入/輸出流所需的基本資訊。因此,大多數(shù)C++程式都將iostream.h頭檔包括到用戶的原始檔案中,即:#include<iostream.h>1.輸出cout輸出流對象cout必須配合插入操作符<<使用。輸出格式為:

cout<<輸出項1<<輸出項2<<……<<輸出項n;功能:首先計算出各輸出項的值,然後將其轉(zhuǎn)換成字元流形式輸出。返回本節(jié)目錄【例1.4】將【例1.1】使用輸出流cout完成數(shù)據(jù)輸出。程式名為l1_4.cpp。#include<iostream.h> /*檔包含*/main() /*主函數(shù)*/{cout<<"ThisisaCprogram.\n"; /*輸出資訊*/}

輸入項還可以是各種控制字元或函數(shù),如回車換行符’\n’等。常用的輸入/輸出流格式控制符見教材表1-5所示。使用格式控制符要包含頭檔iomanip.h,即原始檔案開始應增加檔包含命令#include<iomanip.h>。

【例1.5】將【例1.2】使用輸入流cin和輸出流cout完成。程式名為l1_5.cpp。#include<iostream.h> /*檔包含*/#include<iomanip.h>main() /*主函數(shù)*/{inta,b,c; /*聲明定義變數(shù)a,b和c*/cin>>a>>b; /*輸入變數(shù)a和b的值*/c=a+b; /*計算c等於a與b的和值*/cout<<"c="<<c<<endl; /*輸出變數(shù)c的值*/}1.4.3C++的輸入輸出流返回本節(jié)目錄2.輸入cin輸入流對象cin必須配合提取操作符>>來完成數(shù)據(jù)的輸入。輸入格式為:

cin>>變數(shù)1>>變數(shù)2>>……>>變數(shù)n;功能:讀取用戶輸入的字串,按相應變數(shù)的類型轉(zhuǎn)換成二進位代碼寫入記憶體。執(zhí)行到輸入語句時,用戶按語句中變數(shù)的順序和類型鍵入各變數(shù)的值。輸入多個數(shù)據(jù)時,以空格、Tab鍵和回車鍵作分隔符號。

返回本章目錄1.5.2高級語言與C語言

1.5.1程式與程式設計語言1.5程式設計語言發(fā)展1.5.1程式與程式設計語言返回本節(jié)目錄1.

程式2.程式設計語言

程式是控制電腦完成特定功能的一組有序指令的集合。前面我們見到的各個例題【例1.1】、【例1.2】、【例1.3】和【例1.4】和【例1.5】都是一些小的程式,都能完成一定的功能。

編寫程式所使用的語言稱為程式設計語言,它是人與電腦之間進行資訊交流的工具。前面我們介紹的程式【例1.1】、【例1.2】和【例1.3】是用TurboC程式設計語言編寫的,而【例1.4】和【例1.5】是用VisualC++程式設計語言編寫的。可見,C語言和VisualC++語言是兩種程式設計語言,是程式員編程的工具。返回本章目錄2.1C語言各種運算符和運算式的應用2.C程式實例(2)1.C程式實例(1)【例2.1】關(guān)於常量、變數(shù)及數(shù)據(jù)類型說明的程式實例。程式名為l2_1.cpp。#include"stdio.h"main(){inta=3; /*定義整型變數(shù)a並賦予常量值3*/shortr=6; /*定義短整型變數(shù)r並賦予常量值6*/

charc='a'; /*定義字元變數(shù)c並賦予字元常量值'a'*/

floatpi=3.14; /*定義單精確度實型變數(shù)pi並賦予實型常量值3.14*/doubles; /*定義雙精度實型變數(shù)s*/s=pi*r*r; /*將pi*r*r值賦給s*/

printf("int:%d,short:%d,char:%d,float:%d,double:%d\n",sizeof(a),

sizeof(r),sizeof(c),sizeof(pi),sizeof(s)); /*輸出各變數(shù)占記憶體的位元組數(shù)*/

printf("a=%d,r=%d,c=%c,pi=%f,s=%lf\n",a,r,c,pi,s); /*輸出各變數(shù)的值*/}2.1.1C程式實例(1)返回本節(jié)目錄1.C程式實例1程式結(jié)果[例2.1]程式結(jié)果及分析返回例題返回本節(jié)目錄結(jié)果分析:變數(shù)可以被定義成不同的數(shù)據(jù)類型並賦值,不同類型的數(shù)據(jù)在內(nèi)存中所占的位元組數(shù)不同,通過sizeof()求得數(shù)據(jù)寬度。短整型、整型、字元型、單精確度實型、雙精度實型在內(nèi)存中分別占2位元組、4位元組、1位元組、4位元組和8位元組。同時,這些數(shù)據(jù)在輸出時所使用的輸出格式控制符也不相同,分別為%d、%d、%c、%f和%lf形式。由此可見,數(shù)據(jù)表現(xiàn)為常量或變數(shù),數(shù)據(jù)又具有不同的數(shù)據(jù)類型,不同數(shù)據(jù)類型的數(shù)據(jù)存儲格式不同,數(shù)據(jù)的輸出格式控制也不相同。注意:在TruboC環(huán)境下,整型數(shù)據(jù)存儲時在內(nèi)存中占2位元組。2.1.1C程式實例(2)2.C程式實例2【例2.2】關(guān)於運算符和運算式的程式實例。/*程式名為l2_2.cpp。*/#include"stdio.h"main(){inti=3,a=5,b=7,c,d; /*定義變數(shù)並賦初值*/

printf("i=%d\n",i++); /*輸出i++的值*/

printf("i=%d\n",i); /*輸出i的值*/c=a>b?a:b; /*計算運算式c=a>b?a:b*/

printf("c=%d\n",c); /*輸出c的值*/d=a<=b&&i; /*計算運算式d=a<=b&&i*/

printf("d=%d\n",d); /*輸出d的值*/d=(c,d=c); /*計算運算式d=(c,d=c)*/

printf("d=%d\n",d); /*輸出d的值*/}

返回本節(jié)目錄程式結(jié)果[例2.2]程式結(jié)果及分析返回例題返回本節(jié)目錄結(jié)果分析:由結(jié)果i=3i=4可知printf("i=%d\n",i++);中i++的值仍然為3,而i的值由3增1後變?yōu)?,理解自增運算符++的運算方式。c=a>b?a:b;語句中包括了關(guān)係運算符“>”、條件運算符“?:”、賦值運算符“=”,經(jīng)過各種運算處理後c的值為7。d=a<=b&&i;語句中包括了關(guān)係運算符“<=”、邏輯運算符“&&”、賦值運算符“=”,經(jīng)過各種運算處理後d的值為1。d=(c,d=c);語句中包括了賦值運算符“=”、逗號運算符“,”,經(jīng)過各種運算處理後d的值為7。2.2C語言的數(shù)據(jù)類型返回本節(jié)目錄單精確度實型(float)雙精度實型(double)整型(int)字元型(char)枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型實型基本類型構(gòu)造類型空類型(void)指針類型數(shù)據(jù)類型2.2C語言的數(shù)據(jù)類型2.2.1基本數(shù)據(jù)類型2.2.2常量2.2.3變數(shù)及其類型定義返回本節(jié)目錄2.2.1基本數(shù)據(jù)類型返回本節(jié)目錄1.整型數(shù)據(jù)2.實型數(shù)據(jù)3.字元型數(shù)據(jù)2.2.1基本數(shù)據(jù)類型(一)

1.

整型數(shù)據(jù)整型數(shù)據(jù)分為一般整型(int)、短整型(short)和長整型(long),並且每一種類型又分為帶符號(signed)和無符號(unsigned)兩種類型。整型數(shù)據(jù)的特性見下表:

返回本節(jié)目錄數(shù)據(jù)類型名說明VisualC++6.0環(huán)境TurboC2.0環(huán)境位元組取值範圍位元組取值範圍short[int]短整型2-32768~327672-32768~32767signedshort[int]帶符號短整型2-32768~327672-32768~32767unsignedshort[int]無符號短整型20~6553520~65535int整型4-2147483648~21474836472-32768~32767signed[int]帶符號整型4-2147483648~21474836472-32768~32767unsigned[int]無符號整型40~429496729520~65535long[int]長整型4-2147483648~21474836474-2147483648~2147483647signedlong[int]帶符號長整型4-2147483648~21474836474-2147483648~2147483647unsignedlong[int]無符號長整型40~429496729540~4294967295返回2.2.1基本數(shù)據(jù)類型(二)

2.

實型數(shù)據(jù)實型數(shù)據(jù)分為單精確度實型(float)、雙精度實型(double)和長雙精度實型(longdouble)。具體情況見下表所示

數(shù)據(jù)類型名說明VisualC++6.0環(huán)境TurboC2.0環(huán)境位元組取值範圍有效數(shù)字位元組取值範圍有效數(shù)字float單精確度實型4-3.4×1038~3.4×10386~74-3.4×1038~3.4×10386~7double雙精度實型8-1.7×10308~1.7×1030815~168-1.7×10308~1.7×1030815~16longdouble長雙精度實型16-1.2×104932~1.2×10493218~1910-1.2×104932~1.2×10493218~19返回返回本節(jié)目錄2.2.1基本數(shù)據(jù)類型(三)

3.

字元型數(shù)據(jù)字元型數(shù)據(jù)分為一般字元型(char)、帶符號字元型(signedchar)和無符號字元型(unsignedchar)三種類型。具體情況見下表所示

數(shù)據(jù)類型名說明位元組取值範圍char字元型1-128~127signedchar帶符號字元型1-128~127unsignedchar無符號字元型10~255返回返回本節(jié)目錄2.2.2常量1.整型常量2.實型常量3.字元型常量4.字串常量

返回本節(jié)目錄2.2.2常量(一)1.整型常量(1)十進位整型常量:以數(shù)字1~9開頭,其他位以數(shù)字0~9構(gòu)成十進位整型常量。如12,-38等。(2)八進制整型常量:以數(shù)字0開頭,其他位以數(shù)字0~7構(gòu)成八進制整型常如012,-037等。

在C語言中,整型常量有十進位、八進制、十六進制三種進製錶示方法,並且各種數(shù)制均可有正(+)負(-)之分,正數(shù)的“+”可省略。

(3)十六進制整型常量:以0X或0x開頭(數(shù)字0和大寫或小寫字母x),其他位以數(shù)字0~9或字母a~f或A~F構(gòu)成十六進制整型常量。如0x12,-0Xa9等。

如果在整型常量加上尾碼L或l表示該常量為長整型常量,加上尾碼U或u表示無符號整型常量。返回返回本節(jié)目錄2.2.2常量(二)2.實型常量(1)小數(shù)表示法:它是由數(shù)的符號、數(shù)字和小數(shù)點組成的實型常量(注意:必須有小數(shù)點)。如-2.5、3.0、4.、.34等都是合法的實型小數(shù)形式。

(2)科學計數(shù)法:科學計數(shù)法也稱指數(shù)法。它是由數(shù)的符號、尾數(shù)(整數(shù)或小數(shù))、階碼標示(E或e)、階符和整數(shù)階碼組成的實型常量。尾數(shù)不可缺省,階碼必須為整數(shù)。如-2.5E-3、3e5、34E-3等都是合法的指數(shù)形式。如-2.5E-3表示-2.5×10-3。

實型常量又稱浮型常量。實型常量由整數(shù)部分和小數(shù)部分組成,有兩種表示形式:小數(shù)表示法和科學計數(shù)法。它只能用十進位表示。

實型常量分為單精確度、雙精度和長雙精度三種類型。實型常量如果沒有任何說明,則表示為雙精度常量,實型常量後加上F或f則表示單精確度常量,實型常量後加上L或l則表示長雙精度常量。

返回返回本節(jié)目錄2.2.2常量(三)3.字元型常量(1)一般字元常量:一般字元常量是用單引號括起來的一個普通字元,其值為該字元的ASCII代碼值。ASCII編碼表見附錄1。如’a’、’A’、’0’、’?’等都是一般字元常量,但是’a’和’A’是不同的字元常量,’a’的值為97,而’A’的值為65。

字元型常量是由一對單引號括起來的一個字元。它分為一般字元常量和轉(zhuǎn)義字元。一個字元常量在電腦的存儲中佔據(jù)一個位元組。(2)轉(zhuǎn)義字元:C語言允許用一種特殊形式的字元常量,它是以反斜杠(\)開頭的特定字元序列,表示ASCII字元集中控制字元、某些用於功能定義的字元和其他字元。如’\n’表示回車換行符,’\\’表示字元“\”。常用的轉(zhuǎn)義字元見1.4.1中所敘。

如果在整型常量加上尾碼L或l表示該常量為長整型常量,加上尾碼U或u表示無符號整型常量。返回返回本節(jié)目錄(4)存放的變數(shù)不同。字元常量可存放在字元變數(shù)或整型變數(shù)中,而字串常量需要存放在字元數(shù)組中。字元變數(shù)和字元數(shù)組後續(xù)介紹。

2.2.2常量(四)4.字串常量

字串常量也稱字串,由一對雙引號括起來(“”)的字元序列。字元序列中的字元個數(shù)稱字串長度,沒有字元的字串稱為空串。如“a”、“12+3”等都是合法的字串常量。字串常量中的字元是連續(xù)存儲的,並在最後自動加上字元’\0’(空字元,該字元在ASCII碼值為0,也稱NULL字元)作為字串結(jié)束標誌。如字串“a”在電腦記憶體中占兩個連續(xù)單元,存儲內(nèi)容為字元’a’和’\0’對於字串常量和字元常量的區(qū)別是十分顯著的,主要表現(xiàn)在以下4個方面:

(1)表示形式不同。字元常量以單引號表示,而字串常量以雙引號表示。

(2)存儲所占的記憶體空間不同。字元常量在內(nèi)存中只用1個位元組存放該字元的ASCII碼值。字串常量在內(nèi)存中,除了存儲串中的有效字元的ASCII碼值外,系統(tǒng)還自動在串後加上1個位元組,存放字串結(jié)束標誌’\0’。

返回(3)允許的操作不同。字元常量允許在一定範圍內(nèi)與整數(shù)進行加法或減法運算,如’a’-32合法。字串常量不允許上述運算,如“a”-32非法的。

返回本節(jié)目錄(1)數(shù)據(jù)類型:C語言的合法數(shù)據(jù)類型。如例中的int、short、char、float、double等。

(2)變數(shù)名表:變數(shù)名是C語言合法的識別字。變數(shù)名表可以包含多個變數(shù)名,彼此之間使用逗號分開,表示同時定義若干個具有相同數(shù)據(jù)類型的變數(shù),如:

floata,b;(3)變數(shù)定義語句可以出現(xiàn)在變數(shù)使用之前的任何位置。程式設計時不違背“先定義,後使用”的原則即可。

2.2.3變數(shù)及類型定義返回本節(jié)目錄1.變數(shù)定義變數(shù)定義一般格式:數(shù)據(jù)類型變數(shù)名表;如:inta;對變數(shù)定義說明如下:

變數(shù)是指在程式執(zhí)行過程中其值可以被改變的量。變數(shù)有三個基本要素:變數(shù)名、變數(shù)數(shù)據(jù)類型和變數(shù)的值。在C語言中,任何一個變數(shù)在使用之前都必須首先定義它的名字,並說明它的數(shù)據(jù)類型。也就是說,變數(shù)使用前必須先定義,即指定變數(shù)名,說明變數(shù)數(shù)據(jù)類型。變數(shù)定義的實質(zhì)是按照變數(shù)說明的數(shù)據(jù)類型為變數(shù)分配相應空間的存儲單元,在該存儲單元中存放變數(shù)的值。

C語言中,變數(shù)使用時遵循“先定義,後使用”的原則。2.2.3變數(shù)及類型定義返回本節(jié)目錄2.變數(shù)初始化及賦值

在【例2.1】中“s=pi*r*r;”語句是通過賦值運算符“=”將“pi*r*r”的值賦給變數(shù)s,即該語句實現(xiàn)了給變數(shù)s的賦值。所以,變數(shù)值可以通過初始化取得,也可以在定義後,通過給變數(shù)賦值的方法取得。

在【例2.1】中“inta=3;shortr=6;charc='a';floatpi=3.14;”的“=”是賦值運算符,用來給變數(shù)賦值。所以,以上四條語句都是在定義變數(shù)的同時給變數(shù)賦了值,稱為變數(shù)的初始化。變數(shù)初始化是指定義變數(shù)同時,給變數(shù)一個初始值。2.3.2算術(shù)運算符及算術(shù)運算式

2.3.1運算符和運算式

2.3運算符及運算式

返回本章目錄2.3.3關(guān)係運算符及關(guān)係運算式

2.3.4邏輯運算符及邏輯運算式

2.3.5條件運算符及條件運算式

2.3.6賦值運算符及賦值運算式

2.3.7逗號運算符及逗號運算式

2.3.8求位元組運算符2.3.9類型轉(zhuǎn)換

分類名稱運算符算術(shù)運算符+、-、*、/、%、++、--關(guān)係運算符<、<=、>、>=、==、!=邏輯運算符&&、||、!位運算符<<、>>、~、|、^、&賦值運算符=及其擴展賦值運算符條件運算符?:逗號運算符,指針運算符*、&求位元組數(shù)運算符sizeof強制類型轉(zhuǎn)換運算符(類型)分量運算符.、->下標運算符[]其他函數(shù)運算符()2.3.1運算符和運算式這裏介紹運算符和運算式的概念以及運算符的優(yōu)先順序和結(jié)合性問題。1.運算符返回本節(jié)目錄C語言提供了13類,共計34種運算符。據(jù)運算符的運算對象的個數(shù),C語言的運算符分為單目運算符、雙目運算符和三目運算符,如單目++,雙目<,三目?:等。運算符具體分類情況見下表所示。2.3.1運算符和運算式2.運算式3.運算符的優(yōu)先順序4.運算符的結(jié)合性返回本節(jié)目錄

用運算符將操作對象連接起來、符合C語法規(guī)則的式子稱為運算式。運算式因運算符種類也可分為各種運算式,如算術(shù)運算式、關(guān)係運算式、賦值運算式等,每一個運算式也都具有一定的值。如:a=b+c

運算符的優(yōu)先順序是指不同的運算符在運算式中進行運算的先後次序。如,算術(shù)運算符*、/的優(yōu)先順序高於+、-的優(yōu)先順序。在【例2.2】中“c=a>b?a:b;”語句中運算符按優(yōu)先順序由高到低排列順序為“>”、“?:”、“=”。

當一個運算對象的兩側(cè)的運算符的優(yōu)先順序相同時,運算的結(jié)合方向稱為結(jié)合性。運算符的結(jié)合性分為左結(jié)合和右結(jié)合兩種。在C語言中,運算對象先與左面的運算符結(jié)合稱左結(jié)合,如+、-、*、/的結(jié)合方向為自左向右;運算對象先與右面的運算符結(jié)合稱右結(jié)合,如單目運算符++、--的結(jié)合方向是自右向左。2.3.2算術(shù)運算符及算術(shù)運算式

算術(shù)運算符分基本算術(shù)運算符和自增、自減運算符。1.基本算術(shù)運算符

基本算術(shù)運算符包括加法(+)、減法(-)、乘法(*)、除法(/)和求餘(%)。後三種運算符優(yōu)先順序高於前兩種,它們都是左結(jié)合性。對於運算符/和%有如下說明:(1)若除法運算符的運算對象均為整型數(shù)據(jù),則結(jié)果為其商的整數(shù)部分,舍去小數(shù)部分。如13/7的結(jié)果為1。若運算對象中有一個為負值,則舍入的方向是不固定的。如,-13/7在有的機器上得到結(jié)果是-1,有的機器上得到結(jié)果是-2,但多數(shù)機器採取“向零取整”方法,即13/7=1,-13/7=-1,取整後向零靠近。返回本節(jié)目錄(2)求餘運算符的運算對象必須是整型數(shù)據(jù),運算結(jié)果的符號與被除數(shù)的符號相同,如,-13%7運算結(jié)果為-6,13%-7運算結(jié)果為6,-13%-7運算結(jié)果為-6。2.3.2算術(shù)運算符及算術(shù)運算式2.自增、自減運算符

自增(++)和自減(--)運算符是單目運算符,其功能是使運算對象(變數(shù))的值增1或減1。它們既可以作首碼運算符(位於運算對象的前面),如++i,--i;也可以作尾碼運算符(位於運算對象的後面),如i++,i--。首碼和尾碼運算的數(shù)據(jù)處理方法有明顯的差異。對於首碼形式表示在用該運算式之前先使變數(shù)值增(減)1;對於尾碼形式表示在用該運算式的值之後使n的值增(減)1。++j,--j在使用j之前,先使j的值加(減)1。j++,j—

在使用j之後,使j的值加(減)1。

在【例2.2】中“inti=3;printf("i=%d\n",i++);”,i++是尾碼形式,則先計算運算式的值,其值為當前i值,因此,輸出i=3,然後使i自增1,i值為4。所以,語句“printf("i=%d\n",i);”輸出的結(jié)果是i=4。返回本節(jié)目錄

自增或自減運算符在使用時,需要注意以下幾點:(1)運算符的操作對象,只能是變數(shù),而不能作用於常量或運算式。運算符的優(yōu)先順序高於基本算術(shù)運算符,結(jié)合性是“自右向左”右結(jié)合。(2)i++,遵照右結(jié)合原則,它相當於-(i++),而不相當於(-i)++形式。2.3.3關(guān)係運算符及關(guān)係運算式

關(guān)係運算符是對兩個操作對象進行大小比較的運算符,是邏輯運算的一種簡單形式。用關(guān)係運算符將兩個運算式連接起來的符合C語法規(guī)則的式子稱為關(guān)係運算式。關(guān)係運算式的運算結(jié)果是一個邏輯值,即“真”或“假”。在C語言中關(guān)係運算結(jié)果為真,以整數(shù)“1”表示,結(jié)果為假,以整數(shù)“0”表示。

C語言中的關(guān)係運算符共有六種,它們是:

> < >= <= != ==

大於小於 大於等於小於等於 不等於 等於

關(guān)係運算符的優(yōu)先順序低於算術(shù)運算符的優(yōu)先順序,且等於(==)和不等於(!=)的優(yōu)先順序低於另外四種運算符的優(yōu)先順序。關(guān)係運算符的結(jié)合性是左結(jié)合性。在【例2.2】實例“inta=5,b=7;”和“c=a>b?a:b;d=a<=b&&i;”中a>b值為0,a<=b值為1。返回本節(jié)目錄2.3.4邏輯運算符及邏輯運算式返回本節(jié)目錄

參與邏輯運算的邏輯量“真”或“假”的判斷原則是:以0代表“假”,以非0代表“真”。即將一個非零的數(shù)值認作“真”,將零值認作“假”。邏輯運算的結(jié)果邏輯值只有兩個,“真”和“假”,它們分別用“1”和“0”表示。

C語言中提供的三種邏輯運算符及運算法則見下表所示:

邏輯運算符中“&&”和“||”低於關(guān)係運算符,“!”高於算術(shù)運算符。在【例2.2】程式實例中“d=a<=b&&i;”先計算“a<=b”為真值為1,再計算“1&&i”,兩個操作對象均非零為“真”,故結(jié)果為“真”,值為1。再將該值1賦給變數(shù)d。在處理邏輯運算式時應注意以下幾點:

運算符運算名稱運算法則結(jié)合性&&邏輯與當兩個操作對象都為“真”時,運算結(jié)果為“真”,其他情況運算結(jié)果都為“假”。左結(jié)合||邏輯或只有當兩個操作對象都為“假”,運算結(jié)果才為“假”,其他情況運算結(jié)果都為“真”。左結(jié)合

!邏輯非當操作對象為“真”時,運算結(jié)果為“假”;當操作對象為“假”時,運算結(jié)果為“真”。右結(jié)合2.3.4邏輯運算符及邏輯運算式返回本節(jié)目錄

在處理邏輯運算式時應注意以下兩點:

(1)C語言編譯系統(tǒng)在給出邏輯運算結(jié)果時,以0代表“假”,以1代表“真”。但在判斷一個邏輯量“真假”時,以非0表示“真”,以0表示“假”。例如:當a=5.4,b=5,c=’a’時,!a,!b,!c的值均為“假”,即為0。a&&c的值為1,因為x和y均為非0。(2)在進行邏輯運算時,邏輯運算式運算到其值完全確定時為止。例如:運算運算式(a=3)&&(a==5)&&(a=6)時,由於a=3之後運算a==5的值為假,所以就不再進行a=6的運算了,因此a的值仍為3,而整個邏輯運算式的值為0。

使用條件運算式時,應注意以下兩點:(1)條件運算符優(yōu)先順序高於賦值運算符。如a=b>0?b:-b;相當於y=(b>0?b:-b),功能是將b的絕對值賦給a。(2)條件運算符結(jié)合性是右結(jié)合。如b>0?1:b<0?-1:0;相當於b>0?1:(b<0?-1:0)。2.3.5條件運算符及條件運算式

條件運算符是“?:”,是C語言中唯一的三目運算符,用條件運算符將兩個運算式連接起來的符合C語法規(guī)則的式子稱為條件運算式。條件運算式的一般形式:

運算式1?運算式2:運算式3;

操作過程:先計算運算式1的值,若為“真”,則計算運算式2的值,整個條件運算式的值就是運算式2的值;若運算式1的值為“假”,則計算運算式3,整個條件運算式的值就是運算式3的值。

條件運算符優(yōu)先順序低於邏輯運算符,其結(jié)合性是右結(jié)合。在【例2.2】程式實例中“a=5,b=7;c=a>b?a:b”,先計算a>b值為假,則條件運算式值取b的值為7。因此,c值為7。返回本節(jié)目錄C語言允許在賦值運算符“=”之前加上其他運算符,構(gòu)成複合運算符。在“=”之前加上算術(shù)運算符,則構(gòu)成算術(shù)複合賦值運算符;在“=”之前加上位運算符,則構(gòu)成位複合賦值運算符。象+=、-=、*=等。使用如,a+=b-c等價於a=a+(b-c),a%=b-c等價於a=a%(b-c)。

2.3.6賦值運算符及賦值運算式

賦值運算符包括簡單賦值運算符和複合賦值運算符,複合賦值運算符又包括算術(shù)複合賦值運算和位複合賦值運算符(位運算在第8章介紹)。由賦值運算符將操作對象連接起來符合C語法規(guī)則的式子稱為賦值運算式。

1.簡單賦值運算符及其運算式

2.簡單賦值運算符及其運算式

賦值運算符是“=”,其作用是將賦值運算符右側(cè)的運算式的值賦給其左側(cè)的變數(shù)。在【例2.2】程式實例中“i=3,a=5,b=7;c=a>b?a:b;d=a<=b&&I;d=(c,d=c); ”都是將“=”右側(cè)的數(shù)值或運算式的值賦給“=”左側(cè)的變數(shù)。賦值運算符的優(yōu)先順序低於條件運算符,其結(jié)合性是右結(jié)合。如:a=b=c=a>b?a:b;相當於a=(b=(c=(a>b?a:b)));

值得注意的是:賦值運算符運算對象中的左側(cè)對象一定是變數(shù)。如:a=b-c=5;相當於a=((b-c)=5);,由於運算式中出現(xiàn)將數(shù)值5賦給b-c運算式,因此,該運算式是非法的。返回本節(jié)目錄2.3.7逗號運算符及逗號運算式

逗號運算符是“,”,它的優(yōu)先順序低於賦值運算符,是左結(jié)合性。用逗號運算符將若干個運算式連接成一個逗號運算式。一般形式如下:

運算式1,運算式2,……運算式n

逗號運算式的操作過程是:先計算運算式1,再計算運算式2,……,最後再電腦運算式n,而逗號運算式的值為最右邊運算式n的值。如:

a=4.5,b=6.4,34.5-20.1,a-b

該逗號運算運算式,它由四個運算式結(jié)合而成,從左向右依次計算,逗號運算式的值為a-b的值,即-1.9。在【例2.2】程式實例中“d=(c,d=c);”是將逗號運算式c,d=c的值賦給變數(shù)d。值得注意的是,逗號運算符是C語言所有運算符中優(yōu)先順序最低。如:a=10,20;不同於a=(10,20);,前者a的值為10,運算式的值為20,後者a的值為20,運算式的值也為20。

返回本節(jié)目錄2.3.8求位元組運算符

C求位元組運算符是sizeof,它用於計算變數(shù)或某種類型的量在內(nèi)存中所占的位元組數(shù)。用法有兩種:

1.sizeof運算式2.sizeof(類型名)

功能是計算出運算式計算結(jié)果所佔用記憶體的位元組數(shù)。如:在【例2.1】程式實例中“printf(”int:%d,short:%d,char:%d,float:%d,double:%d\n“,sizeof(a),sizeof(r),sizeof(c),sizeof(pi),sizeof(s));”就是輸出變數(shù)a,r,c,pi,s所占的記憶體位元組數(shù)。

功能是計算出某種類型的量存儲時所佔用記憶體的位元組數(shù)。如:

sizeof(float)計算單精確度實型數(shù)據(jù)在內(nèi)存中所占的位元組數(shù),結(jié)果為4。

返回本節(jié)目錄返回本章目錄3.1.2順序結(jié)構(gòu)語句3.1.3程式實訓3.1.1順序結(jié)構(gòu)的C程式實例3.1順序結(jié)構(gòu)程式設計3.1.1C程式實例返回本節(jié)目錄C程式實例【例3.1】編程實現(xiàn):輸入一個長方形的二邊長,求長方形的面積並輸出。/*程式名為l3_1.cpp。*/#include"stdio.h"main(){floata,b,s;scanf("%f%f",&a,&b);s=a*b;printf("Theareaofrectangleis%5.2f.\n",s);}

返回本節(jié)目錄程式運行情況如下:輸入:3.04.0<CR>輸出:Theareaofrectangleis12.00.這個程式屬於順序結(jié)構(gòu),程式是按照書寫的順序自上而下一步步執(zhí)行,程式中的每一條語句都被執(zhí)行一次,且僅能被執(zhí)行一次。【例3.1】編程3.1.2順序結(jié)構(gòu)語句1C語言的順序結(jié)構(gòu)語句可以分為四大類:1.運算式語句運算式的後面加一個分號就構(gòu)成了一個語句,例如:sum=a+b;。事實上,C語言中有使用價值的運算式語句主要有3種:(1)賦值語句。例如:sum=a+b;(2)自動增1、減1運算符構(gòu)成的運算式語句。例如:i++;(3)逗號運算式語句。例:x=1,y=2;2.空語句語句僅有一個分號“;”,它表示什麼也不做。一般和後面章節(jié)所講迴圈語句結(jié)合使用起到延時作用。3.複合語句由"{"和"}"把一些變數(shù)定義和執(zhí)行語句組合在一起,稱之為複合語句,又稱語句塊。複合語句的語句形式如下:{語句1;語句2;…;語句n;}返回本節(jié)目錄返回本節(jié)目錄例如:{inta=0,b=1,sum;sum=a+b;printf("%d",sum);}【注意】與C語言中的其他語句不同,複合語句不以分號作為結(jié)束符,若複合語句的"}"後面出現(xiàn)分號,那不是該複合語句的組成成分,而是單獨的一個空語句。在複合語句起始部分可以有變數(shù)定義,如:"inta=0,b=1,sum;",也可以沒有。複合語句的"{}"內(nèi)可能會有多個語句,但在語法上把它整體上視為一條語句看待。4.函數(shù)調(diào)用語句由一個函數(shù)調(diào)用加上一個分號組成一個語句,如:

scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);3.1.2順序結(jié)構(gòu)語句2C程式實例【例3.2】由鍵盤輸入兩個整數(shù)給變數(shù)a和b,然後輸出a和b,在交換a和b中的值後,再輸出a和b,驗證兩個變數(shù)中的數(shù)值是否正確地進行了交換。

/*程式名為l3_2.cpp。*/#include"stdio.h"main(){inta,b,t;printf("Enteraandb:\n");scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);t=a;a=b;b=t;printf("a=%d,b=%d\n",a,b);}程式運行情況如下:Enteraandb:123456<CR>a=123,b=456a=456,b=123返回本節(jié)目錄3.1.3程式實訓【例3.2】返回本節(jié)目錄注意:在程式中交換兩個變數(shù)a和b的值,不可以簡單地用:a=b;b=a;兩條語句來實現(xiàn)。假設a和b的值分別為23和78,賦值語句a=b;將使a的值變?yōu)?8,接下來的b=a;使b的值變?yōu)?8,這樣,a和b的值最終都變?yōu)?8。所以在本例中引入了中間變數(shù)t,用來臨時存放a的值,這樣才能完成變數(shù)a和b的正確交換?!纠?.3】輸入一個double類型的數(shù),使該數(shù)保留小數(shù)點後兩位,對第三位小數(shù)進行四捨五入處理,然後輸出此數(shù),以便驗證處理是否正確。/*程式名為l3_3.cpp。*/#include"stdio.h"main(){doublex;printf("Inputx:\n");scanf("%lf",&x);3.1.3程式實訓【例3.3】3.1.3程式實訓【例3.3】返回本節(jié)目錄printf("(1)x=%f\n",x);/*將x輸出*/

x=x*100;x=x+0.5;x=(int)x;x=x/100;/*將x擴大100倍,加上0.5之後取整,再縮小100倍*/

printf("(2)x=%f\n",x);/*將四捨五入後的x輸出*/}程式運行情況如下:Inputx:3.14159<CR>則輸出的結(jié)果為:(1)x=3.141590(2)x=3.1400003.1.3程式實訓【例3.4】返回本節(jié)目錄【例3.4】從鍵盤上輸入一大寫英文字母,要求改用相應的小寫字母輸出。/*程式名為l3_4.cpp。*/#include"stdio.h"main(){charc1,c2;scanf("%c",&c1);printf("Theuppercaseis%c.\n",c1);c2=c1+'a'-'A';printf("Thelowercaseis%c.\n",c2);}程式運行時:輸入:B<CR>輸出:TheuppercaseisB.Thelowercaseisb.3.2選擇結(jié)構(gòu)程式設計3.2.1選擇結(jié)構(gòu)的C程式實例3.2.2if語句3.2.3switch語句3.2.4程式實訓

返回本章目錄3.2.1選擇結(jié)構(gòu)的C程式實例

返回本節(jié)目錄

【例3.5】請輸入兩個整數(shù)a,b,比較a+b和a×b哪個大,輸出判斷結(jié)果。

/*程式名為l3_5.cpp。*/#include"stdio.h"main(){inta,b,s1,s2;printf("請輸入兩個整數(shù)a,b:");scanf("%d,%d",&a,&b);s1=a+b;s2=a*b; /*求兩個數(shù)的和、積*/

if(s1>s2)printf("(a+b)>(a*b)/n");/*語句A*/

elseprintf("(a+b)<=(a*b)\n"); /*語句B*/}運行結(jié)果為:請輸入兩個整數(shù)a,b:2,3<CR>(a+b)<=(a*b)在這個程式中使用了if分支語句,它不像前面的程式那樣,按照語句的書寫順序一步步執(zhí)行下去,而是根據(jù)所給條件的真假,選擇兩者其中之一執(zhí)行。該程式執(zhí)行的過程是:比較兩數(shù)的和與積,如果s1>s2,則執(zhí)行語句A(跳過語句B不執(zhí)行),否則,就跳過語句A執(zhí)行語句B??梢奿f語句在程式中起到了改變語句執(zhí)行順序的作用。if語句就是我們在下一節(jié)中要介紹的條件分支語句。3.2.1選擇結(jié)構(gòu)的C程式實例結(jié)果

返回本節(jié)目錄3.2.2

if語句1.if語句的一般形式返回本節(jié)目錄2.if-else中的複合語句3.非關(guān)係、非邏輯運算式構(gòu)成的條件運算式4.if語句的嵌套1.if語句的一般形式1

1.if語句的一般形式:if語句有兩種形式:(1)不含else子句的if語句語句形式如下:if(<運算式>)<語句1>例如if(a<b){t=a;a=b;b=t;}其中,if是C語言的關(guān)鍵字,運算式兩側(cè)的圓括號不可少,最後是一條語句,稱為if子句。如果在if子句中需要多個語句,則應該使用花括弧把一組語句括起來組成複合語句,這樣在語法上仍滿足"一條語句"的要求。執(zhí)行過程:首先計算緊跟在if後面一對圓括號中的運算式的值,如果該運算式的值為非零(“真”),則執(zhí)行其後的if子句,然後去執(zhí)行if語句後的下一個語句。如果該運算式的值為零(“假”),則跳過if子句,直接執(zhí)行if語句後的下一個語句。返回3.2.2目錄1.if語句的一般形式2

(2)含else子句的if語句語句形式如下:if(<運算式>)<語句體1>[else<語句體2>]執(zhí)行過程:首先計算<運算式>的值,如果該運算式的值為非零("真"),則執(zhí)行<語句體1>,如果該運算式的值為零("假"),則跳過<語句體1>,直接執(zhí)行<語句體2>,兩者執(zhí)行其一後再去執(zhí)行if語句後的下一個語句。返回3.2.2目錄1.if語句的一般形式實例【例3.6】求分段函數(shù)的值,如果x≥0,y=2x+1,否則,

y=0。#include"stdio.h"main()/*程式名為l3_6.cpp。*/{intx,y;/*變數(shù)y存放f(x)的值*/

printf("請輸入x的值:");

scanf("%d",&x);if(x>=0)y=2*x+1;elsey=0;printf("當x=%d時,f(x)=%d",x,y);}返回3.2.2目錄1.if語句的一般形式實例運行結(jié)果:請輸入x的值:3<CR>

當x

溫馨提示

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

評論

0/150

提交評論