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

下載本文檔

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

文檔簡介

返回本書目錄

C語言緒論返回本章目錄1.1.2C程序的開發(fā)過程1.1.3VisualC++6.0集成環(huán)境1.1.1C程序?qū)嵗?.1VisualC++6.0環(huá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]程序演示單擊運行輸入源程序彈出運行結(jié)果窗口運行結(jié)果返回例題返回本節(jié)目錄1.1.1C程序?qū)嵗?)2.C程序?qū)嵗?【例1.2】輸入兩個整數(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; /*計算c等于a與b的和值*/

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

方法二:單擊主窗口編譯工具欄上的“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é)構特點1.2C程序的基本結(jié)構1.2.1C程序的結(jié)構特點返回本節(jié)目錄

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

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

{說明語句部分;

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

執(zhí)行語句部分;

}1.2.1C程序的結(jié)構特點1.C程序是由函數(shù)構成的。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語句的必要組成部分。

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

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

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

根據(jù)語句的從屬關系,程序書寫時采用縮進格式,使程序語句的層次結(jié)構清晰,提高程序的可讀性。同一層次語句要左對齊,不同層次的語句要縮進若干個字符,這樣程序?qū)哟吻宄?,便于閱讀和理解。

在書寫程序時,適當?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語言使用一組字符來構造具有特殊意義的符號,我們稱之為詞法符號。主要有關鍵字、標識符、運算符、分隔符、常量及注釋符等。1.關鍵字

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

關鍵字舉例:

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ù)組名、文件名以及符號常量名的有效字符序列。

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

分隔符是程序中的標點符號,用來分隔單詞或程序正文。(1)空格:作為單詞之間的分隔符。(2)逗號:作為變量之間或函數(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ù)變量的地址組成。求地址運算符為&,如&a,&b分別表示變量a和變量b的地址。若接收多個數(shù)據(jù),則變量地址之間用“,”分隔,并且地址列表與格式控制中的格式說明相匹配。(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’字符輸給了變量a,將‘B’字符輸給了變量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’就賦給了變量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; /*聲明定義變量a,b和c*/cin>>a>>b; /*輸入變量a和b的值*/c=a+b; /*計算c等于a與b的和值*/cout<<"c="<<c<<endl; /*輸出變量c的值*/}1.4.3C++的輸入輸出流返回本節(jié)目錄2.輸入cin輸入流對象cin必須配合提取操作符>>來完成數(shù)據(jù)的輸入。輸入格式為:

cin>>變量1>>變量2>>……>>變量n;功能:讀取用戶輸入的字符串,按相應變量的類型轉(zhuǎn)換成二進制代碼寫入內(nèi)存。執(zhí)行到輸入語句時,用戶按語句中變量的順序和類型鍵入各變量的值。輸入多個數(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程序?qū)嵗?2)1.C程序?qū)嵗?1)【例2.1】關于常量、變量及數(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; /*定義單精度實型變量pi并賦予實型常量值3.14*/doubles; /*定義雙精度實型變量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ù)寬度。短整型、整型、字符型、單精度實型、雙精度實型在內(nèi)存中分別占2字節(jié)、4字節(jié)、1字節(jié)、4字節(jié)和8字節(jié)。同時,這些數(shù)據(jù)在輸出時所使用的輸出格式控制符也不相同,分別為%d、%d、%c、%f和%lf形式。由此可見,數(shù)據(jù)表現(xiàn)為常量或變量,數(shù)據(jù)又具有不同的數(shù)據(jù)類型,不同數(shù)據(jù)類型的數(shù)據(jù)存儲格式不同,數(shù)據(jù)的輸出格式控制也不相同。注意:在TruboC環(huán)境下,整型數(shù)據(jù)存儲時在內(nèi)存中占2字節(jié)。2.1.1C程序?qū)嵗?)2.C程序?qū)嵗?【例2.2】關于運算符和表達式的程序?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; /*計算表達式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;語句中包括了關系運算符“>”、條件運算符“?:”、賦值運算符“=”,經(jīng)過各種運算處理后c的值為7。d=a<=b&&i;語句中包括了關系運算符“<=”、邏輯運算符“&&”、賦值運算符“=”,經(jīng)過各種運算處理后d的值為1。d=(c,d=c);語句中包括了賦值運算符“=”、逗號運算符“,”,經(jīng)過各種運算處理后d的值為7。2.2C語言的數(shù)據(jù)類型返回本節(jié)目錄單精度實型(float)雙精度實型(double)整型(int)字符型(char)枚舉類型數(shù)組類型結(jié)構體類型共用體類型實型基本類型構造類型空類型(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ù)據(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)境字節(jié)取值范圍字節(jié)取值范圍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)境字節(jié)取值范圍有效數(shù)字字節(jié)取值范圍有效數(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ù)類型名說明字節(jié)取值范圍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構成十進制整型常量。如12,-38等。(2)八進制整型常量:以數(shù)字0開頭,其他位以數(shù)字0~7構成八進制整型常如012,-037等。

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

(3)十六進制整型常量:以0X或0x開頭(數(shù)字0和大寫或小寫字母x),其他位以數(shù)字0~9或字母a~f或A~F構成十六進制整型常量。如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ù)一個字節(jié)。(2)轉(zhuǎn)義字符:C語言允許用一種特殊形式的字符常量,它是以反斜杠(\)開頭的特定字符序列,表示ASCII字符集中控制字符、某些用于功能定義的字符和其他字符。如’\n’表示回車換行符,’\\’表示字符“\”。常用的轉(zhuǎn)義字符見1.4.1中所敘。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.3.1運算符和表達式

2.3運算符及表達式

返回本章目錄2.3.3關系運算符及關系表達式

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

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

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

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

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

分類名稱運算符算術運算符+、-、*、/、%、++、--關系運算符<、<=、>、>=、==、!=邏輯運算符&&、||、!位運算符<<、>>、~、|、^、&賦值運算符=及其擴展賦值運算符條件運算符?:逗號運算符,指針運算符*、&求字節(jié)數(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ī)則的式子稱為表達式。表達式因運算符種類也可分為各種表達式,如算術表達式、關系表達式、賦值表達式等,每一個表達式也都具有一定的值。如:a=b+c

運算符的優(yōu)先級是指不同的運算符在表達式中進行運算的先后次序。如,算術運算符*、/的優(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算術運算符及算術表達式

算術運算符分基本算術運算符和自增、自減運算符。1.基本算術運算符

基本算術運算符包括加法(+)、減法(-)、乘法(*)、除法(/)和求余(%)。后三種運算符優(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算術運算符及算術表達式2.自增、自減運算符

自增(++)和自減(--)運算符是單目運算符,其功能是使運算對象(變量)的值增1或減1。它們既可以作前綴運算符(位于運算對象的前面),如++i,--i;也可以作后綴運算符(位于運算對象的后面),如i++,i--。前綴和后綴運算的數(shù)據(jù)處理方法有明顯的差異。對于前綴形式表示在用該表達式之前先使變量值增(減)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)運算符的操作對象,只能是變量,而不能作用于常量或表達式。運算符的優(yōu)先級高于基本算術運算符,結(jié)合性是“自右向左”右結(jié)合。(2)i++,遵照右結(jié)合原則,它相當于-(i++),而不相當于(-i)++形式。2.3.3關系運算符及關系表達式

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

C語言中的關系運算符共有六種,它們是:

> < >= <= != ==

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

關系運算符的優(yōu)先級低于算術運算符的優(yōu)先級,且等于(==)和不等于(!=)的優(yōu)先級低于另外四種運算符的優(yōu)先級。關系運算符的結(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語言中提供的三種邏輯運算符及運算法則見下表所示:

邏輯運算符中“&&”和“||”低于關系運算符,“!”高于算術運算符。在【例2.2】程序?qū)嵗小癲=a<=b&&i;”先計算“a<=b”為真值為1,再計算“1&&i”,兩個操作對象均非零為“真”,故結(jié)果為“真”,值為1。再將該值1賦給變量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】程序?qū)嵗小癮=5,b=7;c=a>b?a:b”,先計算a>b值為假,則條件表達式值取b的值為7。因此,c值為7。返回本節(jié)目錄C語言允許在賦值運算符“=”之前加上其他運算符,構成復合運算符。在“=”之前加上算術運算符,則構成算術復合賦值運算符;在“=”之前加上位運算符,則構成位復合賦值運算符。象+=、-=、*=等。使用如,a+=b-c等價于a=a+(b-c),a%=b-c等價于a=a%(b-c)。

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

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

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

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

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

值得注意的是:賦值運算符運算對象中的左側(cè)對象一定是變量。如: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】程序?qū)嵗小癲=(c,d=c);”是將逗號表達式c,d=c的值賦給變量d。值得注意的是,逗號運算符是C語言所有運算符中優(yōu)先級最低。如:a=10,20;不同于a=(10,20);,前者a的值為10,表達式的值為20,后者a的值為20,表達式的值也為20。

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

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

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

功能是計算出表達式計算結(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ù)。

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

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

返回本節(jié)目錄返回本章目錄3.1.2順序結(jié)構語句3.1.3程序?qū)嵱?.1.1順序結(jié)構的C程序?qū)嵗?.1順序結(jié)構程序設計3.1.1C程序?qū)嵗祷乇竟?jié)目錄C程序?qū)嵗纠?.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.這個程序?qū)儆陧樞蚪Y(jié)構,程序是按照書寫的順序自上而下一步步執(zhí)行,程序中的每一條語句都被執(zhí)行一次,且僅能被執(zhí)行一次?!纠?.1】編程3.1.2順序結(jié)構語句1C語言的順序結(jié)構語句可以分為四大類:1.表達式語句表達式的后面加一個分號就構成了一個語句,例如:sum=a+b;。事實上,C語言中有使用價值的表達式語句主要有3種:(1)賦值語句。例如:sum=a+b;(2)自動增1、減1運算符構成的表達式語句。例如:i++;(3)逗號表達式語句。例:x=1,y=2;2.空語句語句僅有一個分號“;”,它表示什么也不做。一般和后面章節(jié)所講循環(huán)語句結(jié)合使用起到延時作用。3.復合語句由"{"和"}"把一些變量定義和執(zhí)行語句組合在一起,稱之為復合語句,又稱語句塊。復合語句的語句形式如下:{語句1;語句2;…;語句n;}返回本節(jié)目錄返回本節(jié)目錄例如:{inta=0,b=1,sum;sum=a+b;printf("%d",sum);}【注意】與C語言中的其他語句不同,復合語句不以分號作為結(jié)束符,若復合語句的"}"后面出現(xiàn)分號,那不是該復合語句的組成成分,而是單獨的一個空語句。在復合語句起始部分可以有變量定義,如:"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é)構語句2C程序?qū)嵗纠?.2】由鍵盤輸入兩個整數(shù)給變量a和b,然后輸出a和b,在交換a和b中的值后,再輸出a和b,驗證兩個變量中的數(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程序?qū)嵱枴纠?.2】返回本節(jié)目錄注意:在程序中交換兩個變量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。所以在本例中引入了中間變量t,用來臨時存放a的值,這樣才能完成變量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程序?qū)嵱枴纠?.3】3.1.3程序?qū)嵱枴纠?.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程序?qū)嵱枴纠?.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é)構程序設計3.2.1選擇結(jié)構的C程序?qū)嵗?.2.2if語句3.2.3switch語句3.2.4程序?qū)嵱?/p>

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

返回本節(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。可見if語句在程序中起到了改變語句執(zhí)行順序的作用。if語句就是我們在下一節(jié)中要介紹的條件分支語句。3.2.1選擇結(jié)構的C程序?qū)嵗Y(jié)果

返回本節(jié)目錄3.2.2

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

1.if語句的一般形式:if語句有兩種形式:(1)不含else子句的if語句語句形式如下:if(<表達式>)<語句1>例如if(a<b){t=a;a=b;b=t;}其中,if是C語言的關鍵字,表達式兩側(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;/*變量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=3時,f(x)=7因為輸入x=3,那么

溫馨提示

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

最新文檔

評論

0/150

提交評論