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

下載本文檔

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

文檔簡(jiǎn)介

2019/10/4,1,武漢理工大學(xué)計(jì)算機(jī)學(xué)院,授課教師:王紅霞,C語(yǔ)言程序設(shè)計(jì),2019/10/4,2,選用教材與參考書,主教科書 顧治華、陳天煌等 C語(yǔ)言程序設(shè)計(jì) 機(jī)械工業(yè)出版社 2007.2 參考教材 顧治華、陳天煌等C語(yǔ)言程序設(shè)計(jì) 實(shí)驗(yàn)指導(dǎo) 機(jī)械工業(yè)出版社 2007.2 參考書 譚浩強(qiáng) C語(yǔ)言程序設(shè)計(jì) 清華大學(xué)出版社,2019/10/4,3,課程內(nèi)容,第一章 C語(yǔ)言程序設(shè)計(jì)概述 第二章 算法及算法設(shè)計(jì)簡(jiǎn)介 第三章 數(shù)據(jù)描述與基本操作 第四章 選擇結(jié)構(gòu)程序設(shè)計(jì) 第五章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) 第六章 數(shù)組與指針 第七章 函數(shù)與模塊化程序設(shè)計(jì)方法,2019/10/4,4,第一章 C語(yǔ)言程序設(shè)計(jì)基礎(chǔ),1.1 程序與程序設(shè)計(jì) 1.2 C語(yǔ)言簡(jiǎn)介 1.3 簡(jiǎn)單的C語(yǔ)言程序 1.4 C語(yǔ)言程序的上機(jī)步驟 1.5 C語(yǔ)言的基本詞法 1.6 C語(yǔ)言程序的基本結(jié)構(gòu),2019/10/4,5,程序與計(jì)算機(jī)語(yǔ)言,程序是存放在計(jì)算機(jī)中的操作指令的集合。,用程序設(shè)計(jì)語(yǔ)言安排好的處理問(wèn)題的步驟稱為計(jì)算機(jī)程序,用程序設(shè)計(jì)語(yǔ)言編制一個(gè)能完成某項(xiàng)任務(wù)的計(jì)算機(jī)程序的過(guò)程叫做計(jì)算機(jī)程序設(shè)計(jì)。,程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+編程語(yǔ)言,程序設(shè)計(jì)的關(guān)鍵:必須掌握一種程序設(shè)計(jì)語(yǔ)言。掌握程序設(shè)計(jì)的邏輯思維。,2019/10/4,6,程序設(shè)計(jì)過(guò)程,(1)問(wèn)題的提出,要達(dá)到的要求; (2)確定數(shù)據(jù)結(jié)構(gòu)和所采用的算法; (3)編制程序; (4)調(diào)試程序; (5)整理并寫出文檔;,2019/10/4,7,C語(yǔ)言的特點(diǎn),(1)語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。C語(yǔ)言一共只有 32個(gè)關(guān)鍵字,主要用小寫字母表示。,(2) 比其他高級(jí)語(yǔ)言更接近硬件,比低級(jí)語(yǔ)言更接近算法。 程序易編、易讀、易查錯(cuò)、易修改,兼有高級(jí)語(yǔ)言和 低級(jí)語(yǔ)言的優(yōu)點(diǎn)。,(3) 數(shù)據(jù)類型和運(yùn)算符十分豐富,程序設(shè)計(jì)和算法描述更為 簡(jiǎn)單和方便。,(4) 語(yǔ)法結(jié)構(gòu)十分簡(jiǎn)單,語(yǔ)句數(shù)目少,簡(jiǎn)單易學(xué)。,2019/10/4,8,(6) 它是一種模塊化的程序設(shè)計(jì)語(yǔ)言,適合大型軟件的研制 和調(diào)試。,(5) 它是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,提供了完整的程序控制 語(yǔ)句(選擇語(yǔ)句和循環(huán)語(yǔ)句),很適合結(jié)構(gòu)化的程序設(shè)計(jì)方 法。,(7) 生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。,(8) 用c語(yǔ)言寫的程序可移植性好。,(9) 它提供了大量的庫(kù)函數(shù)以供調(diào)用,簡(jiǎn)化了程序設(shè)計(jì)工作。,2019/10/4,9,C語(yǔ)言程序的結(jié)構(gòu),C語(yǔ)言是結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言。 C語(yǔ)言是模塊化的程序設(shè)計(jì)語(yǔ)言,程序是由函數(shù)構(gòu)成的。一個(gè)C源程序至少包含一個(gè)main函數(shù),也可以包含一個(gè)main函數(shù)和若干個(gè)其他函數(shù)。因此,函數(shù)是C程序的基本單位。 一個(gè)函數(shù)由兩部分組成: 函數(shù)的首部,函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。 函數(shù)體,即函數(shù)首部下面的大括弧內(nèi)的部分。如果一個(gè) 函數(shù)內(nèi)有多個(gè)括弧,則最外層的一對(duì) 為函數(shù)的范圍。 函數(shù)體一般包括: 聲明部分:在這部分中定義所用到的變量。 執(zhí)行部分: 由若干個(gè)語(yǔ)句組成。,2019/10/4,10,(4) 一個(gè)C程序總是從main函數(shù)開(kāi)始的,而不論main函數(shù)在整 個(gè)程序中的位置如何(main函數(shù)可以放在程序最前頭,也可 以放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之后)。,(5) C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句 可以分寫在多行上。,(6) 每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)。分號(hào)是C語(yǔ) 句的必要組成部分。分號(hào)不可少。,(7) C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句。輸入輸出的操作是由庫(kù) 函數(shù)scanf和printf等函數(shù)來(lái)完成的。,(8) 可以用/*/對(duì)C程序中的任何部分作注釋。,2019/10/4,11,簡(jiǎn)單的C語(yǔ)言程序示例,例一 main( ) printf (“This is a C program.n”); ,本程序的作用是輸出以下一行信息: This is a C program.,2019/10/4,12,例二 main( ) int a,b,sum; /*這是定義變量*/ a=123;b=456; /*以下3行為C語(yǔ)句*/ sum=a+b; printf(“sum is %dn”,sum); ,程序的運(yùn)行結(jié)果: Sum is 579,2019/10/4,13,例三,/* example1.3 輸入兩個(gè)數(shù),求其中較大的數(shù)*/ #include int max(int x,int y) /* 被調(diào)用函數(shù)*/ int z; if (xy) z=x; else z=y; return(z); /* 將z的值返回,通過(guò)max帶回調(diào)用處*/ main() /* 主函數(shù)*/ int a,b,c; scanf(“%d,%d”, ,運(yùn)行結(jié)果: 4,6 max=6,2019/10/4,14,C程序的上機(jī)步驟,2019/10/4,15,C語(yǔ)言的基本詞法標(biāo)識(shí)符,定義:在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為 標(biāo)識(shí)符。除庫(kù)函數(shù)的函數(shù)名由系統(tǒng)定義外,其余的都由用戶自己定義。,命名規(guī)則:標(biāo)識(shí)符只能是字母(AZ,az)、數(shù)字(09)、下劃線(_)組成的字符串,并且其第一個(gè)字符必須是字母或下劃線。,例如:以下標(biāo)識(shí)符是合法的: a,x,x3,BOOK_1,sum5,_x7。 以下標(biāo)識(shí)符是非法的: 3s,s*T,-3x,bowy-1,M.D.John,ab。,2019/10/4,16,(1)標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C語(yǔ)言編 譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。Turbo C規(guī)定標(biāo)識(shí)符的長(zhǎng)度為32。一般情況下,標(biāo)識(shí)符的長(zhǎng)度不要超過(guò)8個(gè)字符。,(2)在標(biāo)識(shí)符中,大小寫是有區(qū)別的。例如SUM和sum是兩個(gè) 不同的標(biāo)識(shí)符。變量名應(yīng)盡量使用小寫字母,以增加程序的可讀性。,(3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,做到“顧名思義”。 在C語(yǔ)言中,所有的變量都是先定義后應(yīng)用,使用沒(méi)有定義的變量名被認(rèn)為是“非法”的。,在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn):,2019/10/4,17,C語(yǔ)言的基本詞法關(guān)鍵字,定義:關(guān)鍵字是由語(yǔ)言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)該與關(guān)鍵字相同。 分類:語(yǔ)言的關(guān)鍵字分為以下3類: (1)類型說(shuō)明符 用于定義和說(shuō)明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如int,double,float,long,short,auto,signed,static,struct,unsigned,char,enum,extern,register和union等。,2019/10/4,18,(2)語(yǔ)句定義符 用于表示一個(gè)語(yǔ)句的功能。如條件語(yǔ)句的語(yǔ)句定義符if else,循環(huán)語(yǔ)句的語(yǔ)句定義符do,while,for等。,(3)預(yù)處理命令字 用于表示一個(gè)預(yù)處理命令,使用時(shí)前面要加“”。如include,define,ifdef,endif等。 關(guān)鍵字后必須有空格、圓括號(hào)、尖括號(hào)、雙引號(hào)等分隔符,否則與其它字符一起組成新的標(biāo)識(shí)符。,2019/10/4,19,C語(yǔ)言的基本詞法其它,運(yùn)算符 語(yǔ)言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。,分隔符 在語(yǔ)言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要是用在類型說(shuō)明和函數(shù)參數(shù)表中分隔各個(gè)變量。空格多用于語(yǔ)句各單詞之間作間隔符。,常量 C語(yǔ)言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。,2019/10/4,20,語(yǔ)言的字符集,(1)字母 小寫字母az共26個(gè),大寫字 母AZ共26個(gè)。 (2)數(shù)字09共10個(gè)。 (3)空格符、制表符、換行符等統(tǒng)稱為空白符。 (4)標(biāo)點(diǎn)和特殊字符,2019/10/4,21,C語(yǔ)言程序設(shè)計(jì)的基本結(jié)構(gòu),(1)順序結(jié)構(gòu),2019/10/4,22,(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu),此結(jié)構(gòu)中必包含一個(gè)判斷框。根據(jù)給定的條件 P是否成立而選擇執(zhí)行A框或B框,2019/10/4,23,(3) 循環(huán)結(jié)構(gòu),它又稱為重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分 的操作。又兩類循環(huán)結(jié)構(gòu):,(a) 當(dāng)型(while型)循環(huán)結(jié)構(gòu),它的功能是判斷當(dāng)前給定 的條件p1成立時(shí),執(zhí)行A 框操作,執(zhí)行完A后,再 判斷條件p1是否成立,如 果仍然成立,再執(zhí)行A框, 如此反復(fù)執(zhí)行A框,直到 某一次p1條件不成立為止, 此時(shí)不執(zhí)行A框,而從b點(diǎn) 脫離循環(huán)結(jié)構(gòu)。,2019/10/4,24,(b)直到型(Until型)循環(huán)結(jié)構(gòu),它的功能是先執(zhí)行A框,然后判斷給定的p2條 件是否成立,如果p2條件不成立,則再執(zhí)行A, 然后再對(duì)p2條件作判斷,如果p2條件仍然不成立,又執(zhí)行A如此反復(fù)執(zhí)行A,直到給定 的p2條件成立為止,此時(shí)不再執(zhí)行A,從b點(diǎn)脫 離本循環(huán)結(jié)構(gòu)。,2019/10/4,25,本章課堂練習(xí),(1) 以下說(shuō)法中正確的是( ). A) C語(yǔ)言程序總是從第一個(gè)函數(shù)開(kāi)始執(zhí)行 B) 在C語(yǔ)言程序中,要調(diào)用的函數(shù)必須在main()函數(shù) 中定義 C) C語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行 D) C語(yǔ)言程序中的main()函數(shù)必須放在程序的開(kāi)始 部分,2019/10/4,26,解答:C 解釋:C語(yǔ)言程序總是從main()函數(shù)開(kāi)始執(zhí)行,而不論其在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時(shí),亦即程序執(zhí)行完畢。除main函數(shù)外,其它函數(shù)都是在執(zhí)行main函數(shù)時(shí)被調(diào)用執(zhí)行的。在C語(yǔ)言中,函數(shù)不允許嵌套定義。習(xí)慣上,將主函數(shù)main()放在最前頭,但并不是必須的。,2019/10/4,27,(2)以下敘述不正確的是 A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成 B) 一個(gè)C源程序必須包含一個(gè)main函數(shù) C) C程序的基本組成單位是函數(shù) D) 在C程序中,注釋說(shuō)明只能位于一條語(yǔ)句的后面,2019/10/4,28,解答:D 解釋: 凡是用“/*”和“*/”括起來(lái)的文字,都是注釋。其出現(xiàn)的位置可以任意。,2019/10/4,29,(3)下列標(biāo)識(shí)符中,合法的變量名有: A)a.b B)$888 C)A1 D) 3x56,2019/10/4,30,解答:C 解釋:變量名只能由字母、數(shù)字和下劃線三種字符所組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言的關(guān)鍵字不能用作變量名。另外,C語(yǔ)言對(duì)英文字母的大小寫敏感,即同一字母的大小寫,被認(rèn)為是兩個(gè)不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。,2019/10/4,31,第二章 算法及算法設(shè)計(jì)簡(jiǎn)介,2.1 算法的概念 2.2 算法的設(shè)計(jì)與表達(dá) 2.3 簡(jiǎn)單的算法實(shí)例 2.4 結(jié)構(gòu)化程序設(shè)計(jì)方法簡(jiǎn)介,2019/10/4,32,算法的概念,任何一個(gè)程序應(yīng)包含的如下兩方面的內(nèi)容: (1)對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(data structure). (2)對(duì)操作的描述。即操作步驟,也就是算法(algorithm)。,著名計(jì)算機(jī)科學(xué)家沃思(Nikiklaus Wirth)提出公式 數(shù)據(jù)結(jié)構(gòu)算法程序,算法:是對(duì)解決某個(gè)問(wèn)題的方法步驟的描述。,程序:從計(jì)算機(jī)角度來(lái)說(shuō),程序是用某種計(jì)算機(jī)能理解并執(zhí) 行的計(jì)算機(jī)語(yǔ)言描述解決問(wèn)題的方法和步驟。,2019/10/4,33,實(shí)際上,一個(gè)程序除了以上兩個(gè)主要要素之外,還應(yīng)當(dāng)采用 結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),并且用某一種計(jì)算機(jī)語(yǔ) 言表示。因此,可以這樣表示: 程序算法數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)方法語(yǔ)言工具和環(huán)境 在這4個(gè)方面中,算法是靈魂,數(shù)據(jù)結(jié)構(gòu)是加工對(duì)象,語(yǔ)言 是工具,編程需要采用合適的算法。算法是解決“做什么” 和“怎么做”的問(wèn)題。,2019/10/4,34,算法的表示,1、用自然語(yǔ)言表示算法 采用漢語(yǔ)、英語(yǔ)或其它語(yǔ)言來(lái)描述解決問(wèn)題的方法和步驟。 由于自然語(yǔ)言容易出現(xiàn)“歧義性”,且描述問(wèn)題的文字冗長(zhǎng), 因此一般很少使用自然語(yǔ)言來(lái)描述算法。,2019/10/4,35,例1: 有50個(gè)學(xué)生 ,要求將他們之中成績(jī)?cè)?0分以上者打印出來(lái)。用n表示學(xué)號(hào),n1代表第一個(gè)學(xué)生學(xué)號(hào),ni代表第i個(gè)學(xué)生學(xué)號(hào)。用g代表學(xué)生成績(jī), gi 代表第i個(gè)學(xué)生成績(jī),算法可表示如下: S1:1i S2:讀入學(xué)號(hào)ni和成績(jī)gi S3: 如果gi 80 ,則打印 ni 和gi ,否則不打印 S4: i+1 i S5: 如果 i 50, 返回S2, 繼續(xù)執(zhí)行; 否則,算法結(jié)束。,2019/10/4,36,2、用流程圖表示算法,(1)常用的流程圖符號(hào),2019/10/4,37,上例用流程圖表示:,(1) 流程圖表示算法的優(yōu)點(diǎn): 表示算法直觀形象,比較清楚地顯示出各個(gè)框之間 的邏輯關(guān)系。 簡(jiǎn)單,易于掌握。,流程圖,2019/10/4,38,3、用NS圖表示算法,1973年美國(guó)學(xué)者I.Nassi和B.Shneiderman提出了 一種新的流程圖形式。在這種流程圖中,完全去掉 了帶箭頭的流程線。全部算法寫在一個(gè)矩形框內(nèi), 在該框內(nèi)還可以包含其他的從屬于它的框。,這種流程圖又稱NS結(jié)構(gòu)化流程圖。,NS流程圖用以下的流程圖符號(hào):,(1)順序結(jié)構(gòu):,A,B,2019/10/4,39,(2)選擇結(jié)構(gòu):,P,成立,不成立,A,B,(3)循環(huán)結(jié)構(gòu):,當(dāng)p1成立,A,當(dāng)型循環(huán)結(jié)構(gòu),直到p1成立,A,直到型循環(huán)結(jié)構(gòu),用以上3種NS流程圖中的基本框,可以組成復(fù)雜的NS流程圖,以表示算法,2019/10/4,40,上例用NS圖表示:,用NS表示算法如圖,2019/10/4,41,4、用偽碼表示算法,偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來(lái) 描述算法。它不用圖形符號(hào),因此書寫方便,格式緊湊,也 比較好懂,便于向計(jì)算機(jī)語(yǔ)言算法(即程序)過(guò)渡。,例 有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者打印出來(lái)。 用n表示學(xué)生學(xué)號(hào),n1表示第一個(gè)學(xué)生學(xué)號(hào),ni表示第i個(gè)學(xué)生 學(xué)號(hào)。用g表示學(xué)生成績(jī),gi表示第i個(gè)學(xué)生成績(jī)。,2019/10/4,42,BEGIN(算法開(kāi)始) 1=i While ii END(算法結(jié)束),用偽代碼表示算法如下:,2019/10/4,43,5、用計(jì)算機(jī)語(yǔ)言表示算法,設(shè)計(jì)算法的目的是為了實(shí)現(xiàn)算法。因此,不僅要考 慮如何設(shè)計(jì)一個(gè)算法,也要考慮如何實(shí)現(xiàn)一個(gè)算法。,我們的任務(wù)是用計(jì)算機(jī)解題,也就是要用計(jì)算機(jī)實(shí) 現(xiàn)算法。計(jì)算機(jī)是無(wú)法識(shí)別流程圖和偽代碼的。只 有用計(jì)算機(jī)語(yǔ)言編寫的程序才能被計(jì)算機(jī)執(zhí)行(當(dāng) 然還要經(jīng)過(guò)編譯成目標(biāo)程序才能被計(jì)算機(jī)識(shí)別和執(zhí) 行)。因此,在用流程圖或偽代碼描述出一個(gè)算法 后,還要將它轉(zhuǎn)換成計(jì)算機(jī)語(yǔ)言程序。,2019/10/4,44,例: 有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者打印出來(lái)。 用n表示學(xué)生學(xué)號(hào),n1表示第一個(gè)學(xué)生學(xué)號(hào),ni表示第i個(gè)學(xué)生 學(xué)號(hào)。用g表示學(xué)生成績(jī),gi表示第i個(gè)學(xué)生成績(jī)。,C語(yǔ)言程序如下: main( ) int g50,n50,i; for(i=0;i=80) printf(“%6d,%3dn”,ni,gi); ,2019/10/4,45,例2:對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。,方法:將 n (其中n 3) 作為被除數(shù), 將2 到(n-1) 各個(gè)整數(shù)輪流作為除數(shù),如果都不能被整除,則n為素?cái)?shù)。,簡(jiǎn)單的算法實(shí)例,2019/10/4,46,算法表示如下: S1:輸入n的值 S2:2 i ( i 作為除數(shù)) S3: n 被 i 除,得余數(shù) r S4: 如果 r 等于 0 , 表示 n 能 被 i 整除,則打印 n “不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5 S5:i+1 i S6: 如果 i n-1, 返回S3;否則,打印 n “是素?cái)?shù)”,算法結(jié)束。,2019/10/4,47,S1: 1 sign S2: 1 sum S3: 2 deno S4: (-1)*sign sign S5: sign*(1/deno) term S6: sum+term sum S7: deno+1 deno S8: 若deno 100 返回S4;否則算法結(jié)束。,例3:求 1-1/2 + 1/3 1/4 + 1/99 1/100。,2019/10/4,48,結(jié)構(gòu)化程序設(shè)計(jì)方法簡(jiǎn)介,1、三種基本結(jié)構(gòu)回顧,(1)順序結(jié)構(gòu),2019/10/4,49,(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu),2019/10/4,50,(3) 循環(huán)結(jié)構(gòu),它又稱為重復(fù)結(jié)構(gòu),即反復(fù)執(zhí)行某一部分 的操作。又兩類循環(huán)結(jié)構(gòu):,(a) 當(dāng)型(while型)循環(huán)結(jié)構(gòu),2019/10/4,51,(b)直到型(Until型)循環(huán)結(jié)構(gòu),2019/10/4,52,2、結(jié)構(gòu)化程序,所謂結(jié)構(gòu)化程序,就是僅僅使用順序、選擇、循環(huán)等三種基本結(jié)構(gòu)所構(gòu)造的程序。,3、結(jié)構(gòu)化程序設(shè)計(jì)方法,結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是,把一個(gè)復(fù)雜問(wèn)題的求解過(guò)程分階段進(jìn)行。每個(gè)階段的問(wèn)題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。,2019/10/4,53,1 = i,i+1 =i,gi80,i50,結(jié)束,開(kāi)始,打印ni,gi,Y,N,N,Y,讀入ni和gi,2019/10/4,54,解答: ()用自然語(yǔ)言表示 ()用傳統(tǒng)的流程圖表示 ()NS流程圖 ()用偽代碼表示等。,1、算法的表示形式主要有哪些?,課堂練習(xí),2019/10/4,55,2、設(shè)計(jì)算法:A、B兩人各有一桶油,現(xiàn)兩人要將各自桶 內(nèi)的油互換。,解答:必須借助另外一個(gè)空桶,并按如下算法進(jìn)行: (用Si表示第i步操作,A的桶叫A,B的桶叫B,空桶叫M) 開(kāi)始: S0:將A桶中的油倒入M桶中; S1:將B桶中的油倒入A桶中; S2:將M桶中的油倒入B桶中;,2019/10/4,56,3、設(shè)計(jì)算法寫出求n!的算法,解答: S0:給出n的值; S1: 1=p; S2: 2=i; S3: p*i=p; S4: i+1=i; S5: 若i=n,返回S3;否則,結(jié)束,第三章 數(shù)據(jù)描述與基本操作,3.1 基本數(shù)據(jù)類型 3.2 常用的運(yùn)算符和表達(dá)式 3.3 表達(dá)式及賦值語(yǔ)句 3.4 基本輸入輸出操作的實(shí)現(xiàn) 3.5 順序結(jié)構(gòu)程序設(shè)計(jì)實(shí)例,概 述,使用高級(jí)語(yǔ)言編寫程序,必須在程序中做好兩件事: 一是描述數(shù)據(jù),二是描述數(shù)據(jù)的加工方法。前者是通過(guò) 數(shù)據(jù)定義語(yǔ)句實(shí)現(xiàn)的,后者是通過(guò)若干執(zhí)行語(yǔ)句,包括 用各種運(yùn)算符構(gòu)成的表達(dá)式來(lái)實(shí)現(xiàn)的。本單元主要介紹 C語(yǔ)言的基本數(shù)據(jù)類型,為后續(xù)單元的學(xué)習(xí)奠定一個(gè)基 礎(chǔ)。關(guān)于復(fù)雜的數(shù)據(jù)類型(如數(shù)組、指針、結(jié)構(gòu)型、共 用型等)將在以后單元中介紹。,3.1 C語(yǔ)言的數(shù)據(jù)類型,C語(yǔ)言具有十分豐富的數(shù)據(jù)類型。所謂數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式。具體的數(shù)據(jù)類型有以下若干種:,1.基本數(shù)據(jù)類型:整型、實(shí)型和字符型。 2.構(gòu)造類型: 由若干個(gè)相關(guān)的基本數(shù)據(jù)類型數(shù)據(jù)組合在一起形 成的一種復(fù)雜的數(shù)據(jù)類型,如數(shù)組型、結(jié)構(gòu)型和共用型。 3.指針型:一種簡(jiǎn)單的數(shù)據(jù)類型,它是用來(lái)表示內(nèi)存地址的。 指針類型的數(shù)據(jù)可以表示基本類型數(shù)據(jù)的地址,它可以表 示結(jié)構(gòu)類型數(shù)據(jù)的首地址和其中某個(gè)具體數(shù)據(jù)的地址。,4.枚舉型:某數(shù)據(jù)在程序運(yùn)行中,只取固定的幾個(gè)值。我們可 以把這幾個(gè)值列出來(lái),以后這個(gè)數(shù)據(jù)只能取這幾個(gè)值中的 某一個(gè)。 5. 空類型:沒(méi)有任何具體值的數(shù)據(jù)類型。,C語(yǔ)言中的數(shù)據(jù)類型如下圖所示:,數(shù)據(jù)類型,基本類型,整型,字符型,實(shí)型(浮點(diǎn)型),單精度型,雙精度型,枚舉類型,構(gòu)造類型,數(shù)組類型,結(jié)構(gòu)體類型,共用體類型,指針類型,空類型,2019/10/4,62,常量和變量,2.常量的分類 (1)整型常量 (2)實(shí)型常量 (3)字符常量 (4)字符串常量 (5)符號(hào)常量 常量的類型,可通過(guò)書寫形式來(lái)判別。,常量 1.常量的概念 在程序運(yùn)行過(guò)程中,其值不能被改變的量稱為常量。,2019/10/4,63,變量 1.變量的概念 在程序運(yùn)行過(guò)程中,其值可以被改變的量稱為變量。,2.變量的兩個(gè)要素 (1)變量名。每個(gè)變量都必須有一個(gè)名字變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。 (2)變量值。在程序運(yùn)行過(guò)程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過(guò)變量名來(lái)引用變量的值。,2019/10/4,64,變量有以下幾個(gè)特征: 變量名、變量值、變量的數(shù)據(jù)類型、變量的地址、變量的存儲(chǔ)類別、變量的作用域及變量的生存期等。 變量必須先定義后使用。定義變量格式如下: 數(shù)據(jù)類型關(guān)鍵字 ; 如int x,y,z; 變量的初始化:變量賦初值的過(guò)程就是變量初始化過(guò)程。,整型數(shù)據(jù),整型常量:整型常量就是整常數(shù),包括正整數(shù)和負(fù)整數(shù)及 0。其書寫形式如下:,(1) 十進(jìn)制整數(shù)。如 123,456,0。 (2) 八進(jìn)制整數(shù)。以0開(kāi)頭的是八進(jìn)制數(shù)。如0123表示八進(jìn)制 數(shù)123,即(123)8 。 (3) 十六進(jìn)制整數(shù)。以0x開(kāi)頭的數(shù)是十六進(jìn)制數(shù)。如0x123, 代表十六進(jìn)制數(shù), (123)16116216316256323291。, 整型常量在一般微型機(jī)中占用2個(gè)字節(jié),不管是 十進(jìn)制、八進(jìn)制或十六進(jìn)制整數(shù),它們的數(shù)值范 圍都是十進(jìn)制的3276832767。,注意:, C語(yǔ)言還提供一種“長(zhǎng)整型常量”。它們的數(shù)值范圍 是十進(jìn)制的21474836482147483647,在計(jì)算 機(jī)中占用四個(gè)字節(jié),它們的書寫方法是在數(shù)據(jù)的末 尾加一個(gè)大寫字母“L”或小寫字母“l(fā)”,如0L,038L, 0x15L。,2019/10/4,67,整型變量,1.分類 根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為類: (1)基本整型(類型關(guān)鍵字為int)。 (2)短整型(類型關(guān)鍵字為short int)。 (3)長(zhǎng)整型(類型關(guān)鍵字為long int)。 (4)無(wú)符號(hào)整型。無(wú)符號(hào)型又分為無(wú)符號(hào)基本整型(unsigned int)、無(wú)符號(hào)短整型(unsigned short)和無(wú)符號(hào)長(zhǎng)整型(unsigned long)三種,只能用來(lái)存儲(chǔ)無(wú)符號(hào)整數(shù)。,2.占用內(nèi)存字節(jié)數(shù)與值域 上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用字節(jié)表示一個(gè)int型變量,且long型(字節(jié))int型(字節(jié))short型(字節(jié))。,2019/10/4,69,實(shí)型數(shù)據(jù),實(shí)型常量 .表示形式 實(shí)型常量即實(shí)數(shù),在語(yǔ)言中又稱浮點(diǎn)數(shù),其值有兩種表達(dá)形式:,(1)一般形式的實(shí)數(shù),它是由整數(shù)、小數(shù)點(diǎn)、小數(shù)三部分組 成。 其中整數(shù)部分或小數(shù)部分可以省略。數(shù)的正負(fù)用前 面的“”(可以省略)號(hào)或“”號(hào)來(lái)區(qū)分。例如,12.345, 1.2345,47.0,.234,47.等都是實(shí)型常量。,(2)指數(shù)形式的實(shí)數(shù),它是由尾數(shù)、小寫字母e或大寫字母E、 指數(shù)三部分組成,尾數(shù)部分可以是十進(jìn)制整型常量或一般 形式的實(shí)數(shù),指數(shù)部分是十進(jìn)制的短整型常量(可以帶E負(fù) 號(hào))例如, 12.3e2,1.2e-3,47.0e2,.234e-3 等都是實(shí) 型常量。 C語(yǔ)言規(guī)定,字母e(或者E)之前必須要有數(shù)字,且e(或者E) 后面的指數(shù)必須為整數(shù)。 如:e3,5e3.5,.e3都是不合法的指數(shù)形式。,注意:,實(shí)型常量在一般的微機(jī)中是占用4個(gè)字節(jié)的,不管是一般 形式還是指數(shù)形式,它們的數(shù)值范圍都是10 10 有效數(shù) 字7位。例如,1.23456789和1.234567是相同的,因?yàn)閷?shí)型常 量的有效數(shù)字是7位,所以1.23456789中的后兩位是無(wú)效的。,38,38,2019/10/4,72,實(shí)型變量,語(yǔ)言的實(shí)型變量,分為兩種: (1)單精度型。類型關(guān)鍵字為float,一般占字節(jié) (位)、提供位有效數(shù)字。 (2)雙精度型。類型關(guān)鍵字為double,一般占個(gè)字節(jié)、提供1516位有效數(shù)字。,字符型數(shù)據(jù),A、把單個(gè)字符用一對(duì)單引號(hào)括起來(lái)表示字符常量。 如a,d,w,?等都是字符常量。 B、用該字符的ASCII碼值表示字符常量。如65表示A C、轉(zhuǎn)義字符:反斜杠開(kāi)頭后跟規(guī)定的單個(gè)字符或數(shù)字, 并用一對(duì)單引號(hào)括起來(lái)表示字符常量。如下:,一 字符常量,1.字符常量是ASCII碼字符集里的一個(gè)字符,包括字母(大、小寫有區(qū)別)、數(shù)字和標(biāo)點(diǎn)符號(hào)以及特殊字符等,均為半角字符。,2.字符常量表示形式:,2019/10/4,75,例1:字符與整數(shù)的轉(zhuǎn)化,#include “stdio.h“ void main() int i; char n; n=97; i=b; printf(“n=%cn“,n); printf(“i=%dn“,i); printf(“i=%cn“,i); ,程序的輸出為: n=a i=98 i=b,2019/10/4,76,例2 字符參與整數(shù)運(yùn)算,#include “stdio.h“ void main() char n; n=a; n=n-65; printf(“n=%dn“,n); ,程序的輸出結(jié)果為: n=32,2019/10/4,77,例3 字母的大小寫轉(zhuǎn)換,#include “stdio.h“ void main() char n,i; n=a; i=B; n=n-32; i=i+32; printf(“n=%cn“,n); printf(“i=%cn“,i); ,程序的輸出為 n=A i=b,二 字符串常量, 字符串就是用兩個(gè)雙引號(hào)(“)號(hào)后括住的若干個(gè)字符, 例如,“abc”,“123 456”,“aBbB”都是字符串。, 轉(zhuǎn)義符可以出現(xiàn)在字符串中,例如,“ABC”, “101102x43x44”等都是字符串,分別表示“ABCD”、 “ABCD”兩個(gè)字符串。, 一個(gè)字符串中所有的字符的個(gè)數(shù)稱為該字符串的長(zhǎng)度, 其中每個(gè)轉(zhuǎn)義字符只當(dāng)做一個(gè)字符。例如,“ABC”的長(zhǎng) 度為5。,注意!a與“a”的區(qū)別。, C語(yǔ)言規(guī)定:每個(gè)字符串在內(nèi)存中占用的字符數(shù)等于字符 串的長(zhǎng)度1。其中最后一個(gè)字符存放的字符稱為“空字符” 其值為0,書寫時(shí)常用轉(zhuǎn)義字符“0”來(lái)表示。在C語(yǔ)言中稱 為字符串結(jié)束標(biāo)志。,關(guān)于變量的補(bǔ)充內(nèi)容,1. 變量: 變量是指在程序運(yùn)行過(guò)程中其值可以發(fā)生變化的量。,2. 變量的取名規(guī)則為:以字母、下劃線“_”開(kāi)頭,后跟若干 個(gè)字母、下劃線、數(shù)字。一般約定,用戶使用的變量名采用 以字母開(kāi)頭,C語(yǔ)言內(nèi)部使用的變量名以下劃線開(kāi)頭。例如, abc,a_1,age_1等都是合法的變量名,而3a,age則是非 法的變量名。,當(dāng)程序運(yùn)行時(shí),每個(gè)變量都要占用若干個(gè)連續(xù)的字節(jié), 所占用的字節(jié)數(shù)由變量的數(shù)據(jù)類型確定。其中第1個(gè)字節(jié)的 地址稱為變量的地址。C語(yǔ)言規(guī)定,程序中變量的地址是用 “&變量名”來(lái)表示的。,3.變量的數(shù)據(jù)類型及其定義,(1) 變量可以是任何一種數(shù)據(jù)類型,具有某種數(shù)據(jù)類型的 變量就叫做該類型變量。 (2) 每個(gè)變量在使用前必須定義,說(shuō)明其數(shù)據(jù)類型。 (3) 定義變量數(shù)據(jù)類型的語(yǔ)句格式如下: 數(shù)據(jù)類型符 變量1,變量2.;,基本數(shù)據(jù)類型符及含義如下表所示:,38,38,308,308,5.變量的初始化,(1)在定義變量的同時(shí)給變量賦予初始值就稱為變量的初始化。 (2)變量賦初值的語(yǔ)句格式如下: 存儲(chǔ)類型符 數(shù)據(jù)類型符 變量名1初值1,變量名2初值2,,3.2 運(yùn)算符,1 概述 2 算術(shù)運(yùn)算符 3 賦值運(yùn)算符 4 逗號(hào)運(yùn)算符 5條件運(yùn)算符 6長(zhǎng)度運(yùn)算符 7位運(yùn)算符 8 關(guān)系運(yùn)算符-下章介紹 9邏輯運(yùn)算符 下章介紹,一. 概述,用來(lái)表示各種運(yùn)算的符號(hào)稱為運(yùn)算符。,運(yùn)算符必須有運(yùn)算對(duì)象,運(yùn)算對(duì)象是一個(gè)的,則稱為 單目運(yùn)算;運(yùn)算對(duì)象是兩個(gè)的,則稱為雙目運(yùn)算;運(yùn)算對(duì) 象是三個(gè)的,則稱為三目運(yùn)算。,例如,數(shù)值運(yùn)算中經(jīng)常用到的、*、/等。,每個(gè)運(yùn)算符都代表對(duì)運(yùn)算對(duì)象的某種運(yùn)算,都有自己 特定的運(yùn)算規(guī)則。每個(gè)運(yùn)算符運(yùn)算的對(duì)象都規(guī)定了數(shù)據(jù)類型, 同時(shí)運(yùn)算結(jié)果也有確定的數(shù)據(jù)類型。 當(dāng)表達(dá)式中出現(xiàn)多個(gè)運(yùn)算符,計(jì)算表達(dá)式值時(shí),就有誰(shuí) 先算,誰(shuí)后算的問(wèn)題,我們把這個(gè)問(wèn)題稱為運(yùn)算符的優(yōu)先級(jí)。 計(jì)算表達(dá)式值時(shí),優(yōu)先級(jí)高的運(yùn)算要先進(jìn)行運(yùn)算。 同級(jí)別的運(yùn)算符有左結(jié)合和右結(jié)合之分。,C的運(yùn)算符十分豐富, 有13類,30多種, 其分類如下:,C語(yǔ)言運(yùn)算符,基本運(yùn)算符,算術(shù)運(yùn)算符,基本算術(shù)運(yùn)算符 (、*、/、),增1減1運(yùn)算符 (、),關(guān)系運(yùn)算符(、=、!),邏輯運(yùn)算符(!、&、|),賦值運(yùn)算符,基本賦值運(yùn)算符(),算術(shù)自反賦值運(yùn)算符 (、*、/、),逗號(hào)運(yùn)算符(,),條件運(yùn)算符(?:),數(shù)據(jù)長(zhǎng)度運(yùn)算符(sizeof),位運(yùn)算符,位邏輯運(yùn)算符(、&、|、),位移運(yùn)算符(、),位自反賦值運(yùn)算符 (&,|,),專用運(yùn)算符,強(qiáng)制運(yùn)算符(( )),下標(biāo)運(yùn)算符( ),成員運(yùn)算符(,.),指針運(yùn)算符(&,*),注意!少數(shù)運(yùn)算符號(hào)有雙重意義,主要有以下幾種:,(1)“”號(hào),在算術(shù)運(yùn)算中即表示單目的取正運(yùn)算, 又可表示雙目的加法運(yùn)算。 (2)“”號(hào),在算術(shù)運(yùn)算中即表示單目的取負(fù)運(yùn)算, 又可表示雙目的減法運(yùn)算 (3)“*”號(hào),在算術(shù)運(yùn)算中即表示雙目的乘法運(yùn)算, 在指針運(yùn)算中表示指針變量指向的變量。 (4)“&”號(hào),在位邏輯運(yùn)算中表示雙目“與”運(yùn)算, 在指針運(yùn)算中表示取地址的運(yùn)算。,二.算術(shù)運(yùn)算符,1.基本算術(shù)運(yùn)算符,基本算術(shù)運(yùn)算符的運(yùn)算對(duì)象、運(yùn)算規(guī)則與結(jié)果、結(jié)合性如表所示 :,對(duì)象數(shù),運(yùn)算符,名稱,運(yùn)算對(duì)象,運(yùn)算結(jié)果,結(jié)合性,單 目,雙 目, ,正 負(fù),整 型 或 實(shí) 型,整 型 或 實(shí) 型,自右向左,自左向右, * /,加 減 乘 除,整除取余,整型,整數(shù),算術(shù)運(yùn)算符的優(yōu)先級(jí)規(guī)定如下:,單目基本算術(shù)運(yùn)算符 優(yōu)先于 雙目基本算術(shù)運(yùn)算符 *、/、 優(yōu)先于 、 同級(jí)單目基本算術(shù)運(yùn)算符的結(jié)合性是自右向左 同級(jí)雙目基本算術(shù)運(yùn)算符的結(jié)合性是自左向右,例1.基本算術(shù)運(yùn)算符的使用,設(shè)變量定義如下: int n=10, m=3; float f=5.0,g=10.0; double d=5.0,e=10.0;,則 n的結(jié)果是10 nm,nm,n*m,n/m,n%m的結(jié)果 分別為13、7、30、3、1 de,de,d*e,d/e的結(jié)果 分別為15.0,5.0,50.0,0.5 nmf*g/d的運(yùn)算順序相當(dāng)于 (nm(f*g)/d),結(jié)果是3.0 nm*f*d的運(yùn)算順序相當(dāng)于 (nm)*f)*d,結(jié)果是25.0,如果參加運(yùn)算的兩個(gè)數(shù)中有一個(gè)為浮點(diǎn)型,則結(jié)果是double型,2 增1減1運(yùn)算符,(1)增1減1運(yùn)算符的運(yùn)算對(duì)象、運(yùn)算規(guī)則與結(jié)果、 結(jié)合性如下表所示:,對(duì)象數(shù),單 目,名稱,運(yùn)算符,運(yùn)算規(guī)則,運(yùn)算對(duì)象,運(yùn)算結(jié)果,結(jié)合性,增1(前綴),先加1 后使用,增1(后綴),減1(前綴),減1(后綴),先使用 后加1,先減1 后使用,先使用 后減1,整型、字 符型、指 針型變量 或數(shù)組 元素,同運(yùn)算 對(duì)象的 類型,自 右 向 左,(2)增1減1運(yùn)算符的優(yōu)先級(jí):, 增1減1運(yùn)算符 優(yōu)先于 雙目基本算術(shù)運(yùn)算符 增1減1運(yùn)算符和單目運(yùn)算符、同級(jí)別,結(jié)合性 是自右向左,注意:,若出現(xiàn)難以區(qū)分的若干個(gè)或組成運(yùn)算符串時(shí), C語(yǔ)言規(guī)定,自左向右取盡可能多的符號(hào)組成運(yùn)算符。,例1:,ab 應(yīng)理解為(a)b ab應(yīng)理解為 (a)b,例2:增1減1運(yùn)算符的使用,設(shè)變量定義如下:char c1b,c2B; (c1,c2可看成整型,其值分別為98,66),則: c1 的值是99,運(yùn)算后c1的值是c c1 的值是98,運(yùn)算后c1的值是a c1c2的值是164,運(yùn)算后c1的值是c,c2的值是B c1c2的值是32,運(yùn)算后c1的值是a,c2的值是B,三.賦值運(yùn)算符,1.賦值運(yùn)算符,賦值運(yùn)算符是雙目運(yùn)算符,賦值運(yùn)算符的左邊必須是變量, 右邊是表達(dá)式。,(1) 賦值運(yùn)算符的運(yùn)算對(duì)象及有關(guān)規(guī)則如下表:,(2) 賦值運(yùn)算符的優(yōu)先級(jí), 算術(shù)運(yùn)算符 優(yōu)先于 關(guān)系運(yùn)算符 優(yōu)先于 雙目邏輯運(yùn)算符 優(yōu)先于 賦值運(yùn)算符 賦值運(yùn)算符的結(jié)合性是自右向左,(3) 賦值運(yùn)算符的使用,設(shè)變量定義如下: char c1a,c2; int n165,n2,n3,n4,n5,n6; float f13.0,f2;,則: c2n1運(yùn)算后,c2的值是65,n1的值不變。 n2!c1運(yùn)算后,n2的值是0,c1的值不變。 f2f10.001運(yùn)算后,f2的值是3.001,f1的值不變。 n3c1n1|c1!n1運(yùn)算后,n3的值是1,c1和n1 的值不變。 注:運(yùn)算順序相當(dāng)于 n3(c1n1)|(c1!n1) n4n5n6(n1)運(yùn)算后,n4,n5,n6的值 均是64,n1的值是64。,注意:上述表達(dá)式的值就等于賦值表達(dá)式中的最左邊的變量值。,2 .算術(shù)自反賦值運(yùn)算符,(1) 運(yùn)算規(guī)則,對(duì)象數(shù),名稱,運(yùn)算符,運(yùn)算規(guī)則,運(yùn)算對(duì)象,運(yùn)算結(jié)果,結(jié)合性,雙目,加賦值,減賦值,乘賦值,除賦值,模賦值,*,/ =,%=,a+=b相當(dāng)于 a=a+(b),a=b相當(dāng)于 a=a(b),a*=b相當(dāng)于 a=a*(b),a/=b相當(dāng)于 a=a/(b),a%=b相當(dāng)于 a=a%(b),數(shù)值型,數(shù)值型,自 右 向 左,整型,整型,(2)算術(shù)自反賦值運(yùn)算符的優(yōu)先級(jí), 算術(shù)運(yùn)算符 優(yōu)先于 關(guān)系運(yùn)算符 優(yōu)先于 雙目邏輯運(yùn)算符 優(yōu)先于 算術(shù)自反賦值運(yùn)算符 算術(shù)自反賦值運(yùn)算符和賦值運(yùn)算符是同級(jí)別的,結(jié)合性是 自右向左,(3)算術(shù)自反賦值運(yùn)算符的使用,設(shè)變量定義如下 int n1=10, n2=10, m1=10, m2=10, m3=10, m4=10;,則: n1n2,n1的值為20,n2的值不變 n1n2,n1的值為0,n2的值不變 n1*n2,n1的值為100,n2的值不變 n1/n2, n1的值為1,n2的值不變 m1m2m3*m4/2 運(yùn)算后, m1,m2,m3,m4的值依次是30,40,50,5。 運(yùn)算順序相當(dāng)于m1(m2(m3*(m4/2),四.逗號(hào)運(yùn)算符,逗號(hào)運(yùn)算符是雙目運(yùn)算符,其運(yùn)算對(duì)象是表達(dá)式。,1.逗號(hào)運(yùn)算符,注意:由逗號(hào)運(yùn)算符組成的式子也是表達(dá)式,其值等于最右邊 的表達(dá)式的值,2.逗號(hào)運(yùn)算符的優(yōu)先級(jí), 任何運(yùn)算符 優(yōu)先于 逗號(hào)運(yùn)算符 逗號(hào)運(yùn)算符的結(jié)合性是自左向右,3. 例題。設(shè)整型變量a,b為2,,則: ba3,cb4 運(yùn)算結(jié)果:a不變,b為5,c為9,表達(dá)式的值為9 da,ed,fe 運(yùn)算結(jié)果:a為1,d為1,e為1,f為1,表達(dá)式的值為1,五.條件運(yùn)算符,1.條件運(yùn)算符,2.條件運(yùn)算符的優(yōu)先級(jí), 其它運(yùn)算符 優(yōu)先于 條件運(yùn)算符 優(yōu)先于 賦值、算術(shù)自反賦值運(yùn)算符 條件運(yùn)算符的結(jié)合性是自右向左,3.例子,(1) 設(shè)整型變量a,b,c,d均為2 則ab?(c1):(d0); 結(jié)果a,b,d不變,c為1,表達(dá)式的值為1,(2) a13?(ba2):(ca3); 結(jié)果a,c不變,b為4,表達(dá)式值為4,(3) ab?(c0):(ab?(c1):(c1)); 結(jié)果a,b不變,c為0,表達(dá)式的值為0,1.長(zhǎng)度運(yùn)算符,六.長(zhǎng)度運(yùn)算符,2.長(zhǎng)度運(yùn)算符優(yōu)先級(jí), 和單目算術(shù)運(yùn)算符、單目邏輯運(yùn)算符、增1減1運(yùn)算符同級(jí)別,3.例子,設(shè)變量定義如下: int n; short s; unsigned long u3; float f; char c;,則 sizeof(n)的值是2 sizeof(s)的值是2 sizeof(long)的值是4 sizeof(unsigned int)的值是2 sizeof(u3)的值是4 sizeof(f)的值是4 sizeof(double)的值是8 sizeof(c)的值是1,注意:上述結(jié)果是Turbo C 2.0在微機(jī)上運(yùn)行的結(jié)果。,2019/10/4,107,七 位運(yùn)算 C語(yǔ)言中提供的位運(yùn)算符: 、 、 & 、 、 1.按位取反運(yùn)算符 形式: A 功能:把A的各位都取反,(即0變1,1變0) 例如:int A=179,2019/10/4,108,2. 按位與運(yùn)算符 & 形式:A&B 功能:對(duì)A的各位與B的對(duì)應(yīng)位進(jìn)行比較,如果兩者都為1, A&B對(duì)應(yīng)位上的值為1,否則為0。 例如:int A=179(二進(jìn)制0000000010110011) int B=169(二進(jìn)制0000000010101001),2019/10/4,109,3. 按位或運(yùn)算符| 形式:A | B 功能:對(duì)A的各位與B的對(duì)應(yīng)位進(jìn)行比較,如果兩者中有一個(gè) 為1,A|B對(duì)應(yīng)位上的值為1,否則為0。 例如:int A=179(二進(jìn)制0000000010110011) int B=169(二進(jìn)制0000000010101001),2019/10/4,110,4. 按位異或運(yùn)算符 形式:AB 功能:對(duì)A的各位與B的對(duì)應(yīng)位進(jìn)行比較,如果兩者不同, AB對(duì)應(yīng)位上的值為1,否則為0。 例如:int A=179(二進(jìn)制0000000010110011) int B=169(二進(jìn)制0000000010101001),2019/10/4,111,5. 左移運(yùn)算符 形式:An ( 其中 n為一個(gè)大于0的整型表達(dá)式) 功能:把A的值向左移動(dòng)n位,右邊空出的n位用0填補(bǔ)。 當(dāng)左移時(shí)移走的高位中全都是0時(shí),相當(dāng)于對(duì)A作n 次乘 以2的運(yùn)算。 例如:int A=27(二進(jìn)制0000000000011011),2019/10/4,112,6.右移運(yùn)算符 形式:An ( 其中 n為一個(gè)大于0的整型表達(dá)式) 功能:把A的值向右移動(dòng)n位,左邊空出的n位用0填補(bǔ)。 相當(dāng)于對(duì)A作n 次除以2的運(yùn)算。 例如:int A=179(二進(jìn)制0000000010110011),3.3 表達(dá)式,用運(yùn)算符將運(yùn)算對(duì)象連接形成的式子就是表達(dá)式。,1.表達(dá)式的定義,2.C語(yǔ)言的表達(dá)式非常豐富,也有人稱C語(yǔ)言為表達(dá)式語(yǔ)言。,C語(yǔ)言使用的基本表達(dá)式有: 賦值表達(dá)式,如:a=3 算術(shù)表達(dá)式,如:3+4*2 關(guān)系表達(dá)式,如:32 邏輯表達(dá)式,如:35&a=b 條件表達(dá)式,如:ab?a:b 逗號(hào)表達(dá)式,如:a=3,b=4,c=5,3.4 賦值語(yǔ)句,1.構(gòu)成規(guī)則: (1) 變量表達(dá)式;,(2) 變量 賦值運(yùn)算符 表達(dá)式 分號(hào),2019/10/4,116,2.注意區(qū)分賦值語(yǔ)句和賦值表達(dá)式的區(qū)別: 例如 a=b+2 (這是賦值表達(dá)式) a=b+2; (這是賦值語(yǔ)句) a+ + (這是表達(dá)式) a+ +; (這是賦值語(yǔ)句,等價(jià) 與 a=a+1;),2019/10/4,117,3.5 輸入輸出在C語(yǔ)言中的實(shí)現(xiàn),1.輸入輸出的概念 從計(jì)算機(jī)向外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤 等)輸出數(shù)據(jù)稱為“輸出”,從外部向輸入設(shè)備(如鍵盤、 磁盤、光盤、掃描儀等)輸入數(shù)據(jù)稱為“輸入”。,2.C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是由 函數(shù)來(lái)實(shí)現(xiàn)的。在C標(biāo)準(zhǔn)函數(shù)庫(kù)中提供了一些輸入輸出函 數(shù),例如,printf函數(shù)和scanf函數(shù)。,2019/10/4,118,3.在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“include” 將有關(guān)的“頭文件”包括到用戶源文件中。在調(diào)用標(biāo)準(zhǔn) 輸入輸出庫(kù)函數(shù)時(shí),文件開(kāi)頭應(yīng)有以下預(yù)編譯命令: # include 或# include “stdio.h”,4.允許在使用printf和scanf兩個(gè)函數(shù)時(shí)可不加#include 命令。,2019/10/4,119,一、字符數(shù)據(jù)的輸入輸出,1.putchar函數(shù)(字符輸出函數(shù)) 函數(shù)格式:putchar( C ) ; C可以是字符型變量或整型變量或常量 函數(shù)的功能:向終端輸出一個(gè)字符,2019/10/4,120,2.程序?qū)嵗?#include main( ) char a, b, c ; a=B; b=O; c=Y; putchar(a); putchar(b); putchar(c); ,注意:該程序可以輸出控制字符,如putchar(n) 輸出一個(gè)換行符,也可以輸出其他轉(zhuǎn)義字符 如 putchar(101) (輸出字符A) putchar() (輸出單引號(hào)字符),運(yùn)行結(jié)果: BOY,2019/10/4,121,3.getchar 函數(shù)(字符輸入函數(shù)) 函數(shù)格式,getchar ( ) 函數(shù)的功能:從終端輸入一個(gè)字符,函數(shù)的值就是 從輸入設(shè)備得到的字符。,4.程序?qū)嵗?#include main ( ) char c; c=getchar( ); putchar(c); 在運(yùn)行時(shí),如果從鍵盤輸入字符a并按回車鍵,就會(huì)在 屏幕上看到輸出的字符a。 a (輸入a后,按“回車”鍵,字符才送到內(nèi)存) a (輸出變量 c 的值a),2019/10/4,122,注意: (1)getchar( )只能接收一個(gè)字符,getchar函數(shù)收到 的字符可以賦給一個(gè)字符變量或整型變量。 (2)若在程序中調(diào)用getchar、putchar函數(shù),則必須 在程序的開(kāi)頭部分加上“包含命令” #include 或 #include “stdio.h”,2019/10/4,123,二、格式輸入與輸出,(一)、printf 函數(shù)(格式輸出函數(shù)),1.printf函數(shù)的一般格式為 printf(“格式控制字符串”,輸出表列) 括弧內(nèi)包括兩部分: (1) “格式控制字符串”是用雙引號(hào)括起來(lái)的字符串,也稱 “轉(zhuǎn)換控制字符串”,它包括兩種信息: 格式說(shuō)明,由“”和格式字符組成,如%d, %f等。 它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式 說(shuō)明總是由“”字符開(kāi)始的。 普通字符,即需要原樣輸出的字符。 (2)“輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達(dá) 式。,2019/10/4,124,下面是一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論