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

下載本文檔

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

文檔簡(jiǎn)介

返回本書目錄

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

scanf("%d%d",&a,&b); /*輸入變量a和b的值*/c=a+b; /*計(jì)算c等于a與b的和值*/

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

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

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

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

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

(1)連接過程是將編譯過程中生成的目標(biāo)代碼進(jìn)行連接處理,生成可執(zhí)行程序文件的過程。(2)在連接過程中,時(shí)常還要加入一些系統(tǒng)提供的庫文件代碼。經(jīng)過連接后生成的可執(zhí)行文件的擴(kuò)展名為.exe。

運(yùn)行可執(zhí)行文件的方法很多,可在C系統(tǒng)下執(zhí)行“運(yùn)行”命令。也可以在操作系統(tǒng)下直接執(zhí)行可執(zhí)行文件??蓤?zhí)行的程序文件運(yùn)行后,將在屏幕上顯示程序執(zhí)行的結(jié)果。1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄1.啟動(dòng)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.啟動(dòng)VisualC++6.0環(huán)境

方法:?jiǎn)螕簟伴_始”-“程序”-“MicrosoftVisualstudio6.0”-“MicrosoftVisualC++6.0”命令,啟動(dòng)VisualC++,VC6主窗口如下:菜單欄項(xiàng)目工作區(qū)標(biāo)題欄輸出區(qū)工具欄狀態(tài)欄文件編輯區(qū)返回1.1.3VisualC++6.0集成環(huán)境返回本節(jié)目錄2.

編輯源程序文件(1)建立新工程項(xiàng)目①單擊“文件”-“新建”,彈出“新建”對(duì)話框。②單擊“工程”選項(xiàng)卡;單擊“Win32ConsoleApplication”選項(xiàng);“工程”文件框中輸入項(xiàng)目名,如“gc1”和“位置”框輸入或選擇新項(xiàng)目所在位置,單擊“確定”按鈕。彈出“Win32ConsoleApplicationStep1of1”對(duì)話框。③單擊“Anemptyproject”按鈕和“完成”按鈕。系統(tǒng)顯示“新建工程信息”對(duì)話框。單擊“確定”按鈕。

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

編輯源程序文件(2)建立新項(xiàng)目中的文件①單擊“文件”-“新建”,彈出“新建”對(duì)話框。②

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

編譯和連接

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

方法二:?jiǎn)螕糁鞔翱诰幾g工具欄上的“Build”按鈕進(jìn)行編譯和連接。單擊“編譯”

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

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

執(zhí)行方法一:?jiǎn)螕簟熬幾g”菜單中“執(zhí)行”命令。方法二:?jiǎn)螕糁鞔翱诰幾g工具欄上的“BuildExecute”按鈕來執(zhí)行編譯連接后的程序。運(yùn)行成功,屏幕上輸出執(zhí)行結(jié)果,并提示信息:“Pressanykeytocontinue”。此時(shí)按任意鍵系統(tǒng)都將返回VC6主窗口。

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

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

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

{說明語句部分;

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

執(zhí)行語句部分;

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

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

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

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

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

C語言中,分號(hào)是程序語句的結(jié)束標(biāo)志,也是C語句的必要組成部分。

如變量a和變量A系統(tǒng)認(rèn)定為兩個(gè)不同的變量。

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

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

根據(jù)語句的從屬關(guān)系,程序書寫時(shí)采用縮進(jìn)格式,使程序語句的層次結(jié)構(gòu)清晰,提高程序的可讀性。同一層次語句要左對(duì)齊,不同層次的語句要縮進(jìn)若干個(gè)字符,這樣程序?qū)哟吻宄阌陂喿x和理解。

在書寫程序時(shí),適當(dāng)?shù)丶尤胱⑨屚瑯涌稍黾映绦虻目勺x性。

對(duì)于短語句可以多條語句書寫在同一行,也可以將長(zhǎng)語句分寫在多行。但需要注意,分行時(shí)不能將一個(gè)單詞分開,也不能將雙引號(hào)引起來的字符串分開。我們提倡一行一條語句的風(fēng)格。

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

1.3.1C語言的字符集

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

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

1.3.2C語言的詞法

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

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

關(guān)鍵字舉例:

intcharfloatlongifelseforwhile

sizeofstaticstruct

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

1.3.2C語言的詞法

返回本節(jié)目錄

2.標(biāo)識(shí)符

3.分隔符

4.其他

標(biāo)識(shí)符是指用來標(biāo)識(shí)程序中用到的變量名、函數(shù)名、類型名、數(shù)組名、文件名以及符號(hào)常量名的有效字符序列。

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

分隔符是程序中的標(biāo)點(diǎn)符號(hào),用來分隔單詞或程序正文。(1)空格:作為單詞之間的分隔符。(2)逗號(hào):作為變量之間或函數(shù)的多個(gè)參數(shù)之間的分隔符。(3)冒號(hào):作為語句標(biāo)號(hào)與語句間的分隔符以及switch語句中case與語句序列之間的分隔符。(4)大括號(hào):作為函數(shù)體、復(fù)合語句等定界。

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

標(biāo)準(zhǔn)函數(shù)庫中定義了一些輸入輸出函數(shù),程序在調(diào)用這些庫函數(shù)時(shí),必須在源文件的開始處加上頭文件的“包含命令”,格式如下:

#include<庫函數(shù)頭文件名>或#include"庫函數(shù)頭文件名"

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

printf()函數(shù)的作用:向計(jì)算機(jī)系統(tǒng)默認(rèn)的輸出設(shè)備(一般指終端或顯示器)輸出一個(gè)或多個(gè)任意類型的數(shù)據(jù)。

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

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

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

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

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

表示“回車換行”符。

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

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

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

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

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

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

返回本節(jié)目錄

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

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

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

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

1.4.1C語言格式輸入/輸出

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

getchar()

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

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

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

putchar(c)putchar作用:在標(biāo)準(zhǔn)輸出設(shè)備(顯示器)上輸出c對(duì)應(yīng)的一個(gè)字符。輸出的字符是括號(hào)中c所對(duì)應(yīng)的一個(gè)字符。c可以是單字符數(shù)據(jù)、整型數(shù)據(jù)及其表達(dá)式。如,charc=’Y’;putchar(c);輸出結(jié)果為Y。如,inta=98;putchar(a+1);輸出結(jié)果為c。返回本節(jié)目錄1.4.3C++的輸入輸出流C++程序中,還增加了特有的輸入/輸出流,由輸入/輸出流庫提供。cin和cout是流庫預(yù)定義標(biāo)準(zhǔn)輸入流對(duì)象和標(biāo)準(zhǔn)輸出流對(duì)象,分別連接鍵盤和顯示器。

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

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

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

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

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

返回本章目錄1.5.2高級(jí)語言與C語言

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

程序2.程序設(shè)計(jì)語言

程序是控制計(jì)算機(jī)完成特定功能的一組有序指令的集合。前面我們見到的各個(gè)例題【例1.1】、【例1.2】、【例1.3】和【例1.4】和【例1.5】都是一些小的程序,都能完成一定的功能。

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

charc='a'; /*定義字符變量c并賦予字符常量值'a'*/

floatpi=3.14; /*定義單精度實(shí)型變量pi并賦予實(shí)型常量值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)); /*輸出各變量占內(nèi)存的字節(jié)數(shù)*/

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

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

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

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

printf("d=%d\n",d); /*輸出d的值*/d=(c,d=c); /*計(jì)算表達(dá)式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)?,理解自增運(yùn)算符++的運(yùn)算方式。c=a>b?a:b;語句中包括了關(guān)系運(yùn)算符“>”、條件運(yùn)算符“?:”、賦值運(yùn)算符“=”,經(jīng)過各種運(yùn)算處理后c的值為7。d=a<=b&&i;語句中包括了關(guān)系運(yùn)算符“<=”、邏輯運(yùn)算符“&&”、賦值運(yùn)算符“=”,經(jīng)過各種運(yùn)算處理后d的值為1。d=(c,d=c);語句中包括了賦值運(yùn)算符“=”、逗號(hào)運(yùn)算符“,”,經(jīng)過各種運(yùn)算處理后d的值為7。2.2C語言的數(shù)據(jù)類型返回本節(jié)目錄單精度實(shí)型(float)雙精度實(shí)型(double)整型(int)字符型(char)枚舉類型數(shù)組類型結(jié)構(gòu)體類型共用體類型實(shí)型基本類型構(gòu)造類型空類型(void)指針類型數(shù)據(jù)類型2.2C語言的數(shù)據(jù)類型2.2.1基本數(shù)據(jù)類型2.2.2常量2.2.3變量及其類型定義返回本節(jié)目錄2.2.1基本數(shù)據(jù)類型返回本節(jié)目錄1.整型數(shù)據(jù)2.實(shí)型數(shù)據(jù)3.字符型數(shù)據(jù)2.2.1基本數(shù)據(jù)類型(一)

1.

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

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

2.

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

數(shù)據(jù)類型名說明VisualC++6.0環(huán)境TurboC2.0環(huán)境字節(jié)取值范圍有效數(shù)字字節(jié)取值范圍有效數(shù)字float單精度實(shí)型4-3.4×1038~3.4×10386~74-3.4×1038~3.4×10386~7double雙精度實(shí)型8-1.7×10308~1.7×1030815~168-1.7×10308~1.7×1030815~16longdouble長(zhǎng)雙精度實(shí)型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)、帶符號(hào)字符型(signedchar)和無符號(hào)字符型(unsignedchar)三種類型。具體情況見下表所示

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

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

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

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

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

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

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

實(shí)型常量分為單精度、雙精度和長(zhǎng)雙精度三種類型。實(shí)型常量如果沒有任何說明,則表示為雙精度常量,實(shí)型常量后加上F或f則表示單精度常量,實(shí)型常量后加上L或l則表示長(zhǎng)雙精度常量。

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

字符型常量是由一對(duì)單引號(hào)括起來的一個(gè)字符。它分為一般字符常量和轉(zhuǎn)義字符。一個(gè)字符常量在計(jì)算機(jī)的存儲(chǔ)中占據(jù)一個(gè)字節(jié)。(2)轉(zhuǎn)義字符:C語言允許用一種特殊形式的字符常量,它是以反斜杠(\)開頭的特定字符序列,表示ASCII字符集中控制字符、某些用于功能定義的字符和其他字符。如’\n’表示回車換行符,’\\’表示字符“\”。常用的轉(zhuǎn)義字符見1.4.1中所敘。

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

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

字符串常量也稱字符串,由一對(duì)雙引號(hào)括起來(“”)的字符序列。字符序列中的字符個(gè)數(shù)稱字符串長(zhǎng)度,沒有字符的字符串稱為空串。如“a”、“12+3”等都是合法的字符串常量。字符串常量中的字符是連續(xù)存儲(chǔ)的,并在最后自動(dòng)加上字符’\0’(空字符,該字符在ASCII碼值為0,也稱NULL字符)作為字符串結(jié)束標(biāo)志。如字符串“a”在計(jì)算機(jī)內(nèi)存中占兩個(gè)連續(xù)單元,存儲(chǔ)內(nèi)容為字符’a’和’\0’對(duì)于字符串常量和字符常量的區(qū)別是十分顯著的,主要表現(xiàn)在以下4個(gè)方面:

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

(2)存儲(chǔ)所占的內(nèi)存空間不同。字符常量在內(nèi)存中只用1個(gè)字節(jié)存放該字符的ASCII碼值。字符串常量在內(nèi)存中,除了存儲(chǔ)串中的有效字符的ASCII碼值外,系統(tǒng)還自動(dòng)在串后加上1個(gè)字節(jié),存放字符串結(jié)束標(biāo)志’\0’。

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

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

(2)變量名表:變量名是C語言合法的標(biāo)識(shí)符。變量名表可以包含多個(gè)變量名,彼此之間使用逗號(hào)分開,表示同時(shí)定義若干個(gè)具有相同數(shù)據(jù)類型的變量,如:

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

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

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

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

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

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

2.3.1運(yùn)算符和表達(dá)式

2.3運(yùn)算符及表達(dá)式

返回本章目錄2.3.3關(guān)系運(yùn)算符及關(guān)系表達(dá)式

2.3.4邏輯運(yùn)算符及邏輯表達(dá)式

2.3.5條件運(yùn)算符及條件表達(dá)式

2.3.6賦值運(yùn)算符及賦值表達(dá)式

2.3.7逗號(hào)運(yùn)算符及逗號(hào)表達(dá)式

2.3.8求字節(jié)運(yùn)算符2.3.9類型轉(zhuǎn)換

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

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

運(yùn)算符的優(yōu)先級(jí)是指不同的運(yùn)算符在表達(dá)式中進(jìn)行運(yùn)算的先后次序。如,算術(shù)運(yùn)算符*、/的優(yōu)先級(jí)高于+、-的優(yōu)先級(jí)。在【例2.2】中“c=a>b?a:b;”語句中運(yùn)算符按優(yōu)先級(jí)由高到低排列順序?yàn)椤?gt;”、“?:”、“=”。

當(dāng)一個(gè)運(yùn)算對(duì)象的兩側(cè)的運(yùn)算符的優(yōu)先級(jí)相同時(shí),運(yùn)算的結(jié)合方向稱為結(jié)合性。運(yùn)算符的結(jié)合性分為左結(jié)合和右結(jié)合兩種。在C語言中,運(yùn)算對(duì)象先與左面的運(yùn)算符結(jié)合稱左結(jié)合,如+、-、*、/的結(jié)合方向?yàn)樽宰笙蛴?;運(yùn)算對(duì)象先與右面的運(yùn)算符結(jié)合稱右結(jié)合,如單目運(yùn)算符++、--的結(jié)合方向是自右向左。2.3.2算術(shù)運(yùn)算符及算術(shù)表達(dá)式

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

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

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

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

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

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

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

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

> < >= <= != ==

大于小于 大于等于小于等于 不等于 等于

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

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

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

邏輯運(yùn)算符中“&&”和“||”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。在【例2.2】程序?qū)嵗小癲=a<=b&&i;”先計(jì)算“a<=b”為真值為1,再計(jì)算“1&&i”,兩個(gè)操作對(duì)象均非零為“真”,故結(jié)果為“真”,值為1。再將該值1賦給變量d。在處理邏輯表達(dá)式時(shí)應(yīng)注意以下幾點(diǎn):

運(yùn)算符運(yùn)算名稱運(yùn)算法則結(jié)合性&&邏輯與當(dāng)兩個(gè)操作對(duì)象都為“真”時(shí),運(yùn)算結(jié)果為“真”,其他情況運(yùn)算結(jié)果都為“假”。左結(jié)合||邏輯或只有當(dāng)兩個(gè)操作對(duì)象都為“假”,運(yùn)算結(jié)果才為“假”,其他情況運(yùn)算結(jié)果都為“真”。左結(jié)合

!邏輯非當(dāng)操作對(duì)象為“真”時(shí),運(yùn)算結(jié)果為“假”;當(dāng)操作對(duì)象為“假”時(shí),運(yùn)算結(jié)果為“真”。右結(jié)合2.3.4邏輯運(yùn)算符及邏輯表達(dá)式返回本節(jié)目錄

在處理邏輯表達(dá)式時(shí)應(yīng)注意以下兩點(diǎn):

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

使用條件表達(dá)式時(shí),應(yīng)注意以下兩點(diǎn):(1)條件運(yùn)算符優(yōu)先級(jí)高于賦值運(yùn)算符。如a=b>0?b:-b;相當(dāng)于y=(b>0?b:-b),功能是將b的絕對(duì)值賦給a。(2)條件運(yùn)算符結(jié)合性是右結(jié)合。如b>0?1:b<0?-1:0;相當(dāng)于b>0?1:(b<0?-1:0)。2.3.5條件運(yùn)算符及條件表達(dá)式

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

表達(dá)式1?表達(dá)式2:表達(dá)式3;

操作過程:先計(jì)算表達(dá)式1的值,若為“真”,則計(jì)算表達(dá)式2的值,整個(gè)條件表達(dá)式的值就是表達(dá)式2的值;若表達(dá)式1的值為“假”,則計(jì)算表達(dá)式3,整個(gè)條件表達(dá)式的值就是表達(dá)式3的值。

條件運(yùn)算符優(yōu)先級(jí)低于邏輯運(yùn)算符,其結(jié)合性是右結(jié)合。在【例2.2】程序?qū)嵗小癮=5,b=7;c=a>b?a:b”,先計(jì)算a>b值為假,則條件表達(dá)式值取b的值為7。因此,c值為7。返回本節(jié)目錄C語言允許在賦值運(yùn)算符“=”之前加上其他運(yùn)算符,構(gòu)成復(fù)合運(yùn)算符。在“=”之前加上算術(shù)運(yùn)算符,則構(gòu)成算術(shù)復(fù)合賦值運(yùn)算符;在“=”之前加上位運(yùn)算符,則構(gòu)成位復(fù)合賦值運(yùn)算符。象+=、-=、*=等。使用如,a+=b-c等價(jià)于a=a+(b-c),a%=b-c等價(jià)于a=a%(b-c)。

2.3.6賦值運(yùn)算符及賦值表達(dá)式

賦值運(yùn)算符包括簡(jiǎn)單賦值運(yùn)算符和復(fù)合賦值運(yùn)算符,復(fù)合賦值運(yùn)算符又包括算術(shù)復(fù)合賦值運(yùn)算和位復(fù)合賦值運(yùn)算符(位運(yùn)算在第8章介紹)。由賦值運(yùn)算符將操作對(duì)象連接起來符合C語法規(guī)則的式子稱為賦值表達(dá)式。

1.簡(jiǎn)單賦值運(yùn)算符及其表達(dá)式

2.簡(jiǎn)單賦值運(yùn)算符及其表達(dá)式

賦值運(yùn)算符是“=”,其作用是將賦值運(yùn)算符右側(cè)的表達(dá)式的值賦給其左側(cè)的變量。在【例2.2】程序?qū)嵗小癷=3,a=5,b=7;c=a>b?a:b;d=a<=b&&I;d=(c,d=c); ”都是將“=”右側(cè)的數(shù)值或表達(dá)式的值賦給“=”左側(cè)的變量。賦值運(yùn)算符的優(yōu)先級(jí)低于條件運(yùn)算符,其結(jié)合性是右結(jié)合。如:a=b=c=a>b?a:b;相當(dāng)于a=(b=(c=(a>b?a:b)));

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

逗號(hào)運(yùn)算符是“,”,它的優(yōu)先級(jí)低于賦值運(yùn)算符,是左結(jié)合性。用逗號(hào)運(yùn)算符將若干個(gè)表達(dá)式連接成一個(gè)逗號(hào)表達(dá)式。一般形式如下:

表達(dá)式1,表達(dá)式2,……表達(dá)式n

逗號(hào)表達(dá)式的操作過程是:先計(jì)算表達(dá)式1,再計(jì)算表達(dá)式2,……,最后再計(jì)算機(jī)表達(dá)式n,而逗號(hào)表達(dá)式的值為最右邊表達(dá)式n的值。如:

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

該逗號(hào)運(yùn)算表達(dá)式,它由四個(gè)表達(dá)式結(jié)合而成,從左向右依次計(jì)算,逗號(hào)表達(dá)式的值為a-b的值,即-1.9。在【例2.2】程序?qū)嵗小癲=(c,d=c);”是將逗號(hào)表達(dá)式c,d=c的值賦給變量d。值得注意的是,逗號(hào)運(yùn)算符是C語言所有運(yùn)算符中優(yōu)先級(jí)最低。如:a=10,20;不同于a=(10,20);,前者a的值為10,表達(dá)式的值為20,后者a的值為20,表達(dá)式的值也為20。

返回本節(jié)目錄2.3.8求字節(jié)運(yùn)算符

C求字節(jié)運(yùn)算符是sizeof,它用于計(jì)算變量或某種類型的量在內(nèi)存中所占的字節(jié)數(shù)。用法有兩種:

1.sizeof表達(dá)式2.sizeof(類型名)

功能是計(jì)算出表達(dá)式計(jì)算結(jié)果所占用內(nèi)存的字節(jié)數(shù)。如:在【例2.1】程序?qū)嵗小皃rintf(”int:%d,short:%d,char:%d,float:%d,double:%d\n“,sizeof(a),sizeof(r),sizeof(c),sizeof(pi),sizeof(s));”就是輸出變量a,r,c,pi,s所占的內(nèi)存字節(jié)數(shù)。

功能是計(jì)算出某種類型的量存儲(chǔ)時(shí)所占用內(nèi)存的字節(jié)數(shù)。如:

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

返回本節(jié)目錄返回本章目錄3.1.2順序結(jié)構(gòu)語句3.1.3程序?qū)嵱?xùn)3.1.1順序結(jié)構(gòu)的C程序?qū)嵗?.1順序結(jié)構(gòu)程序設(shè)計(jì)3.1.1C程序?qū)嵗祷乇竟?jié)目錄C程序?qū)嵗纠?.1】編程實(shí)現(xiàn):輸入一個(gè)長(zhǎng)方形的二邊長(zhǎng),求長(zhǎng)方形的面積并輸出。/*程序名為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é)目錄程序運(yùn)行情況如下:輸入:3.04.0<CR>輸出:Theareaofrectangleis12.00.這個(gè)程序?qū)儆陧樞蚪Y(jié)構(gòu),程序是按照書寫的順序自上而下一步步執(zhí)行,程序中的每一條語句都被執(zhí)行一次,且僅能被執(zhí)行一次。【例3.1】編程3.1.2順序結(jié)構(gòu)語句1C語言的順序結(jié)構(gòu)語句可以分為四大類:1.表達(dá)式語句表達(dá)式的后面加一個(gè)分號(hào)就構(gòu)成了一個(gè)語句,例如:sum=a+b;。事實(shí)上,C語言中有使用價(jià)值的表達(dá)式語句主要有3種:(1)賦值語句。例如:sum=a+b;(2)自動(dòng)增1、減1運(yùn)算符構(gòu)成的表達(dá)式語句。例如:i++;(3)逗號(hào)表達(dá)式語句。例:x=1,y=2;2.空語句語句僅有一個(gè)分號(hào)“;”,它表示什么也不做。一般和后面章節(jié)所講循環(huán)語句結(jié)合使用起到延時(shí)作用。3.復(fù)合語句由"{"和"}"把一些變量定義和執(zhí)行語句組合在一起,稱之為復(fù)合語句,又稱語句塊。復(fù)合語句的語句形式如下:{語句1;語句2;…;語句n;}返回本節(jié)目錄返回本節(jié)目錄例如:{inta=0,b=1,sum;sum=a+b;printf("%d",sum);}【注意】與C語言中的其他語句不同,復(fù)合語句不以分號(hào)作為結(jié)束符,若復(fù)合語句的"}"后面出現(xiàn)分號(hào),那不是該復(fù)合語句的組成成分,而是單獨(dú)的一個(gè)空語句。在復(fù)合語句起始部分可以有變量定義,如:"inta=0,b=1,sum;",也可以沒有。復(fù)合語句的"{}"內(nèi)可能會(huì)有多個(gè)語句,但在語法上把它整體上視為一條語句看待。4.函數(shù)調(diào)用語句由一個(gè)函數(shù)調(diào)用加上一個(gè)分號(hào)組成一個(gè)語句,如:

scanf("%d%d",&a,&b);printf("a=%d,b=%d\n",a,b);3.1.2順序結(jié)構(gòu)語句2C程序?qū)嵗纠?.2】由鍵盤輸入兩個(gè)整數(shù)給變量a和b,然后輸出a和b,在交換a和b中的值后,再輸出a和b,驗(yàn)證兩個(gè)變量中的數(shù)值是否正確地進(jìn)行了交換。

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

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

printf("(2)x=%f\n",x);/*將四舍五入后的x輸出*/}程序運(yùn)行情況如下:Inputx:3.14159<CR>則輸出的結(jié)果為:(1)x=3.141590(2)x=3.1400003.1.3程序?qū)嵱?xùn)【例3.4】返回本節(jié)目錄【例3.4】從鍵盤上輸入一大寫英文字母,要求改用相應(yīng)的小寫字母輸出。/*程序名為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);}程序運(yùn)行時(shí):輸入:B<CR>輸出:TheuppercaseisB.Thelowercaseisb.3.2選擇結(jié)構(gòu)程序設(shè)計(jì)3.2.1選擇結(jié)構(gòu)的C程序?qū)嵗?.2.2if語句3.2.3switch語句3.2.4程序?qū)嵱?xùn)

返回本章目錄3.2.1選擇結(jié)構(gòu)的C程序?qū)嵗?/p>

返回本節(jié)目錄

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

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

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

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

返回本節(jié)目錄3.2.2

if語句1.if語句的一般形式返回本節(jié)目錄2.if-else中的復(fù)合語句3.非關(guān)系、非邏輯表達(dá)式構(gòu)成的條件表達(dá)式4.if語句的嵌套1.if語句的一般形式1

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

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

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

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

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

當(dāng)x=3時(shí),f(x)=7因?yàn)檩斎離=3,那么

溫馨提示

  • 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)論