版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
武漢理工大學(xué)計(jì)算機(jī)學(xué)院授課教師:王紅霞C語(yǔ)言程序設(shè)計(jì)7/4/20241選用教材與參考書主教科書
顧治華、陳天煌等
《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é)出版社7/4/20242課程內(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ì)方法7/4/20243第一章C語(yǔ)言程序設(shè)計(jì)基礎(chǔ)1.1程序與程序設(shè)計(jì)1.2C語(yǔ)言簡(jiǎn)介1.3簡(jiǎn)單的C語(yǔ)言程序1.4C語(yǔ)言程序的上機(jī)步驟1.5C語(yǔ)言的基本詞法1.6C語(yǔ)言程序的基本結(jié)構(gòu)7/4/20244程序與計(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ì)的邏輯思維。7/4/20245
程序設(shè)計(jì)過(guò)程(1)問(wèn)題的提出,要達(dá)到的要求;(2)確定數(shù)據(jù)結(jié)構(gòu)和所采用的算法;(3)編制程序;(4)調(diào)試程序;(5)整理并寫出文檔;7/4/20246C語(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é)。7/4/20247
(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ì)工作。7/4/20248
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ǔ)句組成。7/4/20249(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程序中的任何部分作注釋。7/4/202410簡(jiǎn)單的C語(yǔ)言程序示例例一
main(){printf(“ThisisaCprogram.\n”);}
本程序的作用是輸出以下一行信息:
ThisisaCprogram.7/4/202411例二main(){inta,b,sum;/*這是定義變量*/a=123;b=456;/*以下3行為C語(yǔ)句*/sum=a+b;printf(“sumis%d\n”,sum);}程序的運(yùn)行結(jié)果:Sumis5797/4/202412例三/*example1.3輸入兩個(gè)數(shù),求其中較大的數(shù)*/#include<stdio.h>int
max(int
x,inty)/*被調(diào)用函數(shù)*/{
int
z;if(x>y)z=x;
elsez=y;
return(z);
/*將z的值返回,通過(guò)max帶回調(diào)用處*/}main()/*主函數(shù)*/{
int
a,b,c;
scanf(“%d,%d”,&a,&b);
c=max(a,b);
printf(“max=%d\n”,c);}運(yùn)行結(jié)果:4,6↙max=67/4/202413C程序的上機(jī)步驟
開(kāi)始編輯編譯有錯(cuò)?執(zhí)行連接結(jié)果正確結(jié)束可執(zhí)行目標(biāo)程序f.exe源程序f.c目標(biāo)程序f.obj庫(kù)函數(shù)和其他目標(biāo)程序YesNoYesNo7/4/202414C語(yǔ)言的基本詞法-標(biāo)識(shí)符定義:在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱為標(biāo)識(shí)符。除庫(kù)函數(shù)的函數(shù)名由系統(tǒng)定義外,其余的都由用戶自己定義。命名規(guī)則:標(biāo)識(shí)符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線(_)組成的字符串,并且其第一個(gè)字符必須是字母或下劃線。例如:以下標(biāo)識(shí)符是合法的:
a,x,x3,BOOK_1,sum5,_x7。以下標(biāo)識(shí)符是非法的:
3s,s*T,-3x,bowy-1,M.D.John,a>b。7/4/202415(1)標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C語(yǔ)言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。TurboC規(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):7/4/202416C語(yǔ)言的基本詞法-關(guān)鍵字定義:關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識(shí)符不應(yīng)該與關(guān)鍵字相同。分類:C語(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等。7/4/202417(2)語(yǔ)句定義符用于表示一個(gè)語(yǔ)句的功能。如條件語(yǔ)句的語(yǔ)句定義符ifelse,循環(huán)語(yǔ)句的語(yǔ)句定義符do,while,for等。(3)預(yù)處理命令字用于表示一個(gè)預(yù)處理命令,使用時(shí)前面要加“?!薄H鏸nclude,define,ifdef,endif等。關(guān)鍵字后必須有空格、圓括號(hào)、尖括號(hào)、雙引號(hào)等分隔符,否則與其它字符一起組成新的標(biāo)識(shí)符。7/4/202418C語(yǔ)言的基本詞法-其它運(yùn)算符
C語(yǔ)言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個(gè)或多個(gè)字符組成。分隔符
在C語(yǔ)言中采用的分隔符有逗號(hào)和空格兩種。逗號(hào)主要是用在類型說(shuō)明和函數(shù)參數(shù)表中分隔各個(gè)變量??崭穸嘤糜谡Z(yǔ)句各單詞之間作間隔符。常量
C語(yǔ)言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。7/4/202419C語(yǔ)言的字符集
(1)字母小寫字母a~z共26個(gè),大寫字母A~Z共26個(gè)。(2)數(shù)字0~9共10個(gè)。(3)空格符、制表符、換行符等統(tǒng)稱為空白符。(4)標(biāo)點(diǎn)和特殊字符7/4/202420C語(yǔ)言程序設(shè)計(jì)的基本結(jié)構(gòu)
(1)順序結(jié)構(gòu)
ABab7/4/202421(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu)
此結(jié)構(gòu)中必包含一個(gè)判斷框。根據(jù)給定的條件P是否成立而選擇執(zhí)行A框或B框abBAp不成立成立7/4/202422
(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)。ap1TFAb7/4/202423(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)。aAFTbp27/4/202424本章課堂練習(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)始部分7/4/202425解答: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()放在最前頭,但并不是必須的。7/4/202426(2).以下敘述不正確的是A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成B)一個(gè)C源程序必須包含一個(gè)main函數(shù)C)C程序的基本組成單位是函數(shù)
D)在C程序中,注釋說(shuō)明只能位于一條語(yǔ)句的后面7/4/202427解答:D解釋:
凡是用“/*”和“*/”括起來(lái)的文字,都是注釋。其出現(xiàn)的位置可以任意。7/4/202428(3).下列標(biāo)識(shí)符中,合法的變量名有:A)a.bB)$888C)A1D)
3x567/4/202429解答:C解釋:變量名只能由字母、數(shù)字和下劃線三種字符所組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言的關(guān)鍵字不能用作變量名。另外,C語(yǔ)言對(duì)英文字母的大小寫敏感,即同一字母的大小寫,被認(rèn)為是兩個(gè)不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。7/4/202430第二章算法及算法設(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)介7/4/202431算法的概念任何一個(gè)程序應(yīng)包含的如下兩方面的內(nèi)容:
(1)對(duì)數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(datastructure).
(2)對(duì)操作的描述。即操作步驟,也就是算法(algorithm)。著名計(jì)算機(jī)科學(xué)家沃思(NikiklausWirth)提出公式
數(shù)據(jù)結(jié)構(gòu)+算法=程序算法:是對(duì)解決某個(gè)問(wèn)題的方法步驟的描述。程序:從計(jì)算機(jī)角度來(lái)說(shuō),程序是用某種計(jì)算機(jī)能理解并執(zhí)行的計(jì)算機(jī)語(yǔ)言描述解決問(wèn)題的方法和步驟。7/4/202432實(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)題。7/4/202433算法的表示
1、用自然語(yǔ)言表示算法
采用漢語(yǔ)、英語(yǔ)或其它語(yǔ)言來(lái)描述解決問(wèn)題的方法和步驟。由于自然語(yǔ)言容易出現(xiàn)“歧義性”,且描述問(wèn)題的文字冗長(zhǎng),因此一般很少使用自然語(yǔ)言來(lái)描述算法。
7/4/202434例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:1iS2:讀入學(xué)號(hào)ni和成績(jī)gi
S3:
如果gi
80,則打印ni
和gi
,否則不打印S4:
i+1iS5:如果i50,返回S2,繼續(xù)執(zhí)行;否則,算法結(jié)束。7/4/202435起止框輸入/輸出框判斷框處理框流程線2、用流程圖表示算法(1)常用的流程圖符號(hào)7/4/202436上例用流程圖表示:
(1)
流程圖表示算法的優(yōu)點(diǎn):①表示算法直觀形象,比較清楚地顯示出各個(gè)框之間的邏輯關(guān)系。②簡(jiǎn)單,易于掌握。
流程圖7/4/2024373、用N-S圖表示算法
1973年美國(guó)學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個(gè)矩形框內(nèi),在該框內(nèi)還可以包含其他的從屬于它的框。這種流程圖又稱N—S結(jié)構(gòu)化流程圖。N—S流程圖用以下的流程圖符號(hào):(1)順序結(jié)構(gòu):AB7/4/202438(2)選擇結(jié)構(gòu):P成立不成立AB(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種N—S流程圖中的基本框,可以組成復(fù)雜的N—S流程圖,以表示算法7/4/202439上例用N-S圖表示:用N—S表示算法如圖1=>i輸入ni,gigi≥80是否輸出ni,gii+1=>i直到i>507/4/2024404、用偽碼表示算法
偽代碼是用介于自然語(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ī)。7/4/202441BEGIN(算法開(kāi)始)1=>iWhilei<=50{inputniandgiifgi≥80printniandgii+1=>i}END(算法結(jié)束)
用偽代碼表示算法如下:7/4/2024425、用計(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ǔ)言程序。7/4/202443例:有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(){intg[50],n[50],i;for(i=0;i<50;i++)scanf(“%d,%d”,&n[i],&g[i]);for(i=0;i<50;i++)if(g[i]>=80)printf(“%6d,%3d\n”,n[i],g[i]);}7/4/202444例2:對(duì)一個(gè)大于或等于3的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。方法:將n(其中n3)作為被除數(shù),將2到(n-1)各個(gè)整數(shù)輪流作為除數(shù),如果都不能被整除,則n為素?cái)?shù)。簡(jiǎn)單的算法實(shí)例7/4/202445算法表示如下:S1:輸入n的值S2:2i(i作為除數(shù))
S3:n被i除,得余數(shù)rS4:如果r等于0,表示n能被i整除,則打印n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1iS6:如果in-1,返回S3;否則,打印n“是素?cái)?shù)”,算法結(jié)束。7/4/202446S1:
1signS2:1sumS3:2denoS4:(-1)*signsignS5:sign*(1/deno)termS6:sum+termsumS7:deno+1denoS8:若deno100返回S4;否則算法結(jié)束。例3:求1-1/2+1/3–1/4+…+1/99–1/100。7/4/202447結(jié)構(gòu)化程序設(shè)計(jì)方法簡(jiǎn)介
1、三種基本結(jié)構(gòu)回顧
(1)順序結(jié)構(gòu)
ABab7/4/202448(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu)
abBAp不成立成立7/4/202449(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)ap1TFAb7/4/202450(b)直到型(Until型)循環(huán)結(jié)構(gòu)
aAFTbp27/4/2024512、結(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)。
7/4/2024521=>ii+1=>igi≥80i>50結(jié)束開(kāi)始打印ni,giYNNY讀入ni和gi7/4/202453
解答:
(?。┯米匀徽Z(yǔ)言表示
(ⅱ)用傳統(tǒng)的流程圖表示
(ⅲ)N—S流程圖
(ⅳ)用偽代碼表示等。
1、算法的表示形式主要有哪些?課堂練習(xí)7/4/2024542、設(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桶中;
7/4/2024553、設(shè)計(jì)算法寫出求n!的算法
解答:S0:給出n的值;S1:1=>p;S2:2=>i;S3:p*i=>p;S4:i+1=>i;S5:若i<=n,返回S3;否則,結(jié)束
7/4/202456第三章數(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í)例7/4/202457概述
使用高級(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)型、共用型等)將在以后單元中介紹。7/4/2024583.1C語(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ù)的地址。7/4/202459
4.枚舉型:某數(shù)據(jù)在程序運(yùn)行中,只取固定的幾個(gè)值。我們可以把這幾個(gè)值列出來(lái),以后這個(gè)數(shù)據(jù)只能取這幾個(gè)值中的某一個(gè)。
5.
空類型:沒(méi)有任何具體值的數(shù)據(jù)類型。7/4/202460C語(yǔ)言中的數(shù)據(jù)類型如下圖所示:
數(shù)據(jù)類型基本類型整型字符型實(shí)型(浮點(diǎn)型)單精度型雙精度型枚舉類型構(gòu)造類型數(shù)組類型結(jié)構(gòu)體類型共用體類型指針類型空類型7/4/202461常量和變量2.常量的分類
(1)整型常量(2)實(shí)型常量(3)字符常量(4)字符串常量(5)符號(hào)常量常量的類型,可通過(guò)書寫形式來(lái)判別。常量
1.常量的概念
在程序運(yùn)行過(guò)程中,其值不能被改變的量稱為常量。7/4/202462變量1.變量的概念在程序運(yùn)行過(guò)程中,其值可以被改變的量稱為變量。2.變量的兩個(gè)要素(1)變量名。每個(gè)變量都必須有一個(gè)名字──變量名,變量命名遵循標(biāo)識(shí)符命名規(guī)則。(2)變量值。在程序運(yùn)行過(guò)程中,變量值存儲(chǔ)在內(nèi)存中。在程序中,通過(guò)變量名來(lái)引用變量的值。7/4/202463變量有以下幾個(gè)特征:變量名、變量值、變量的數(shù)據(jù)類型、變量的地址、變量的存儲(chǔ)類別、變量的作用域及變量的生存期等。變量必須先定義后使用。定義變量格式如下:數(shù)據(jù)類型關(guān)鍵字<變量名表>;如intx,y,z;變量的初始化:變量賦初值的過(guò)程就是變量初始化過(guò)程。
7/4/202464整型數(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)16=1×162+2×161+3×16o=256+32+3=291。7/4/202465①整型常量在一般微型機(jī)中占用2個(gè)字節(jié),不管是十進(jìn)制、八進(jìn)制或十六進(jìn)制整數(shù),它們的數(shù)值范圍都是十進(jìn)制的-32768~+32767。注意:②C語(yǔ)言還提供一種“長(zhǎng)整型常量”。它們的數(shù)值范圍是十進(jìn)制的-2147483648~+2147483647,在計(jì)算機(jī)中占用四個(gè)字節(jié),它們的書寫方法是在數(shù)據(jù)的末尾加一個(gè)大寫字母“L”或小寫字母“l(fā)”,如0L,038L,0x15L。7/4/202466整型變量1.分類
根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為4類:(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)短整型(unsignedshort)和無(wú)符號(hào)長(zhǎng)整型(unsignedlong)三種,只能用來(lái)存儲(chǔ)無(wú)符號(hào)整數(shù)。7/4/2024672.占用內(nèi)存字節(jié)數(shù)與值域
上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用2字節(jié)表示一個(gè)int型變量,且long型(4字節(jié))≥int型(2字節(jié))≥short型(2字節(jié))。7/4/202468
實(shí)型數(shù)據(jù)
實(shí)型常量
1.表示形式
實(shí)型常量即實(shí)數(shù),在C語(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í)型常量。7/4/202469(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ù)形式。7/4/202470注意:實(shí)型常量在一般的微機(jī)中是占用4個(gè)字節(jié)的,不管是一般形式還是指數(shù)形式,它們的數(shù)值范圍都是-10~10有效數(shù)字7位。例如,1.23456789和1.234567是相同的,因?yàn)閷?shí)型常量的有效數(shù)字是7位,所以1.23456789中的后兩位是無(wú)效的。38387/4/202471實(shí)型變量C語(yǔ)言的實(shí)型變量,分為兩種:
(1)單精度型。類型關(guān)鍵字為float,一般占4字節(jié)(32位)、提供7位有效數(shù)字。
(2)雙精度型。類型關(guān)鍵字為double,一般占8?jìng)€(gè)字節(jié)、提供15~16位有效數(shù)字。7/4/202472字符型數(shù)據(jù)A、把單個(gè)字符用一對(duì)單引號(hào)括起來(lái)表示字符常量。如‘a(chǎn)’,‘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.字符常量表示形式:7/4/202473
字符形式含義ASCⅡ
\n換行,將當(dāng)前位置移到下一行開(kāi)頭
10
\t水平制表(跳到下一個(gè)tab位置)
9
\b退格,將當(dāng)前位置移到前一列
8
\r回車,將當(dāng)前位置移到本行開(kāi)頭
13
\f換頁(yè),將當(dāng)前位置移到下頁(yè)開(kāi)頭
12
\\反斜杠字符“\”
92
\‘單引號(hào)(撇號(hào))字符
39
\“雙引號(hào)字符
34
\ddd1到3位8進(jìn)制數(shù)所代表的字符
\xhh1到2位16進(jìn)制數(shù)所代表的字符
7/4/202474例1:字符與整數(shù)的轉(zhuǎn)化#include"stdio.h"voidmain(){
inti;charn;n=97;i='b';printf("n=%c\n",n);printf("i=%d\n",i);printf("i=%c\n",i);}程序的輸出為:
n=ai=98i=b7/4/202475例2
字符參與整數(shù)運(yùn)算
#include"stdio.h"voidmain(){charn;n='a';n=n-65;printf("n=%d\n",n);}程序的輸出結(jié)果為:
n=327/4/202476例3字母的大小寫轉(zhuǎn)換#include"stdio.h"voidmain(){charn,i;n='a';i='B';n=n-32;i=i+32;printf("n=%c\n",n);printf("i=%c\n",i);}
程序的輸出為n=Ai=b
7/4/202477二字符串常量
●
字符串就是用兩個(gè)雙引號(hào)(“)號(hào)后括住的若干個(gè)字符,例如,“abc”,“123456”,“aBbB”都是字符串。
●
轉(zhuǎn)義符可以出現(xiàn)在字符串中,例如,“\\ABC\\”,“\101\102\x43\x44”等都是字符串,分別表示“\ABCD\”、“ABCD”兩個(gè)字符串。7/4/202478●
一個(gè)字符串中所有的字符的個(gè)數(shù)稱為該字符串的長(zhǎng)度,其中每個(gè)轉(zhuǎn)義字符只當(dāng)做一個(gè)字符。例如,“\\ABC\\”的長(zhǎng)
度為5。注意!‘a(chǎn)’與“a”的區(qū)別?!?/p>
C語(yǔ)言規(guī)定:每個(gè)字符串在內(nèi)存中占用的字符數(shù)等于字符串的長(zhǎng)度+1。其中最后一個(gè)字符存放的字符稱為“空字符”其值為0,書寫時(shí)常用轉(zhuǎn)義字符“\0”來(lái)表示。在C語(yǔ)言中稱為字符串結(jié)束標(biāo)志。7/4/202479關(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)表示的。7/4/2024803.變量的數(shù)據(jù)類型及其定義
(1)
變量可以是任何一種數(shù)據(jù)類型,具有某種數(shù)據(jù)類型的變量就叫做該類型變量。(2)
每個(gè)變量在使用前必須定義,說(shuō)明其數(shù)據(jù)類型。(3)
定義變量數(shù)據(jù)類型的語(yǔ)句格式如下:
數(shù)據(jù)類型符變量1,變量2…….;7/4/202481數(shù)據(jù)類型數(shù)據(jù)類型符占用字節(jié)數(shù)數(shù)據(jù)范圍整型int
2(或4)同短整型(或長(zhǎng)整型)短整型short2-32768-+32767
長(zhǎng)整型long4-2147483648-+2147483647無(wú)符號(hào)整型unsignedint
2(或4)同無(wú)符號(hào)短整型(或長(zhǎng)整型)無(wú)符號(hào)短整型unsignedshort2
0-65535無(wú)符號(hào)長(zhǎng)整型unsignedlong4
0-4294967295單精度實(shí)型float4-10-10雙精度實(shí)型double8-10-10字符型char1-128-+127基本數(shù)據(jù)類型符及含義如下表所示:38383083087/4/2024825.變量的初始化
(1)在定義變量的同時(shí)給變量賦予初始值就稱為變量的初始化。(2)變量賦初值的語(yǔ)句格式如下:
存儲(chǔ)類型符數(shù)據(jù)類型符變量名1=初值1,變量名2=初值2,…7/4/202483
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)算符-下章介紹7/4/2024一.概述用來(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)常用到的+、-、*、/等。7/4/2024
每個(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é)合之分。7/4/2024C的運(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)算符(&,*)7/4/2024注意!少數(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)算。7/4/2024二.算術(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ù)整型或?qū)嵭驼突驅(qū)嵭妥杂蚁蜃笞宰笙蛴遥?
/加減乘除%整除取余整型整數(shù)7/4/2024算術(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é)合性是自左向右
7/4/2024例1.基本算術(shù)運(yùn)算符的使用設(shè)變量定義如下:
intn=10,m=3;floatf=5.0,g=10.0;doubled=5.0,e=10.0;則①-n的結(jié)果是-10②n+m,n-m,n*m,n/m,n%m的結(jié)果分別為13、7、30、3、1③d+e,d-e,d*e,d/e的結(jié)果分別為15.0,-5.0,50.0,0.5④n+m-f*g/d的運(yùn)算順序相當(dāng)于(n+m-(f*g)/d),結(jié)果是3.0⑤n%m*f*d的運(yùn)算順序相當(dāng)于((n%m)*f)*d,結(jié)果是25.0如果參加運(yùn)算的兩個(gè)數(shù)中有一個(gè)為浮點(diǎn)型,則結(jié)果是double型7/4/20242.增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ì)象的類型自右向左7/4/2024(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:a+++b應(yīng)理解為(a++)+ba―――b應(yīng)理解為
(a――)-b7/4/2024例2:增1減1運(yùn)算符的使用
設(shè)變量定義如下:charc1=‘b’,c2=‘B’;
(c1,c2可看成整型,其值分別為98,66)則:①++c1的值是99,運(yùn)算后c1的值是‘c’
②c1――的值是98,運(yùn)算后c1的值是‘a(chǎn)’
③c1+++c2的值是164,運(yùn)算后c1的值是‘c’,c2的值是‘B’
④c1―――c2的值是32,運(yùn)算后c1的值是‘a(chǎn)’,c2的值是‘B’
7/4/2024三.賦值運(yùn)算符
1.賦值運(yùn)算符
賦值運(yùn)算符是雙目運(yùn)算符,賦值運(yùn)算符的左邊必須是變量,右邊是表達(dá)式。
(1)賦值運(yùn)算符的運(yùn)算對(duì)象及有關(guān)規(guī)則如下表:
對(duì)象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算結(jié)果結(jié)合性雙目賦值=將表達(dá)式的值賦予變量表達(dá)式的類型自右向左7/4/2024(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é)合性是自右向左
7/4/2024(3)賦值運(yùn)算符的使用設(shè)變量定義如下:charc1=‘a(chǎn)’,c2;
intn1=65,n2,n3,n4,n5,n6;
floatf1=3.0,f2;
則:①c2=n1運(yùn)算后,c2的值是65,n1的值不變。②n2=!c1運(yùn)算后,n2的值是0,c1的值不變。③f2=f1+0.001運(yùn)算后,f2的值是3.001,f1的值不變。④
n3=c1==n1||c1!=n1運(yùn)算后,n3的值是1,c1和n1
的值不變。注:運(yùn)算順序相當(dāng)于
n3=((c1==n1)||(c1?。絥1))
⑤n4=n5=n6=-(――n1)運(yùn)算后,n4,n5,n6的值均是-64,n1的值是64。
注意:上述表達(dá)式的值就等于賦值表達(dá)式中的最左邊的變量值。
7/4/2024972.算術(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ù)值型自右向左整型整型7/4/202498(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é)合性是自右向左
7/4/202499(3)算術(shù)自反賦值運(yùn)算符的使用
設(shè)變量定義如下
intn1=10,n2=10,m1=10,m2=10,m3=10,m4=10;則:①n1+=n2,n1的值為20,n2的值不變
②n1-=n2,n1的值為0,n2的值不變③n1*=n2,n1的值為100,n2的值不變④n1/=n2,n1的值為1,n2的值不變
⑤m1+=m2-=m3*=m4/=2運(yùn)算后,
m1,m2,m3,m4的值依次是-30,-40,50,5。
運(yùn)算順序相當(dāng)于m1+=(m2-=(m3*=(m4/=2)))
7/4/2024100四.逗號(hào)運(yùn)算符
逗號(hào)運(yùn)算符是雙目運(yùn)算符,其運(yùn)算對(duì)象是表達(dá)式。
1.逗號(hào)運(yùn)算符
對(duì)象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對(duì)象結(jié)合性雙目逗號(hào)
,依次計(jì)算前、后表達(dá)式表達(dá)式自左向右注意:由逗號(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é)合性是自左向右7/4/20241013.例題。設(shè)整型變量a,b為2,
則:①b=a+3,c=b+4
運(yùn)算結(jié)果:a不變,b為5,c為9,表達(dá)式的值為9
②d=a――,e=d――,f=――e運(yùn)算結(jié)果:a為1,d為1,e為1,f為1,表達(dá)式的值為17/4/2024102五.條件運(yùn)算符
1.條件運(yùn)算符
對(duì)象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對(duì)象運(yùn)算結(jié)果結(jié)合性三目條件?:對(duì)e1?e2:e3e1為真,獲得e2e1為假,獲得e3表達(dá)式e2(e3)的類型自右向左2.條件運(yùn)算符的優(yōu)先級(jí)●其它運(yùn)算符
優(yōu)先于
條件運(yùn)算符
優(yōu)先于
賦值、算術(shù)自反賦值運(yùn)算符
●條件運(yùn)算符的結(jié)合性是自右向左
7/4/20241033.例子
(1)
設(shè)整型變量a,b,c,d均為2
則a==b?(c=1):(d=0);
結(jié)果a,b,d不變,c為1,表達(dá)式的值為1(2)
a+1==3?(b=a+2):(c=a+3);結(jié)果a,c不變,b為4,表達(dá)式值為4(3)
a==b?(c=0):(a>b?(c=1):(c=-1));
結(jié)果a,b不變,c為0,表達(dá)式的值為07/4/20241041.長(zhǎng)度運(yùn)算符
六.長(zhǎng)度運(yùn)算符
對(duì)象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對(duì)象運(yùn)算結(jié)果結(jié)合性
單目長(zhǎng)度sizeof測(cè)試數(shù)據(jù)類型所占用的字節(jié)數(shù)類型說(shuō)明符或變量
整型
無(wú)2.長(zhǎng)度運(yùn)算符優(yōu)先級(jí)
●和單目算術(shù)運(yùn)算符、單目邏輯運(yùn)算符、增1減1運(yùn)算符同級(jí)別3.例子
設(shè)變量定義如下:intn;shorts;unsignedlongu3;floatf;
charc;
則sizeof(n)的值是2sizeof(s)的值是2sizeof(long)的值是4sizeof(unsignedint)的值是2sizeof(u3)的值是4sizeof(f)的值是4sizeof(double)的值是8sizeof(c)的值是1注意:上述結(jié)果是TurboC2.0在微機(jī)上運(yùn)行的結(jié)果。
七位運(yùn)算C語(yǔ)言中提供的位運(yùn)算符:~、<<、>>、&、^、︱1.按位取反運(yùn)算符~形式:~A功能:把A的各位都取反,(即0變1,1變0)例如:intA=179A0000000010110011~A11111111010011007/4/20241072.按位與運(yùn)算符&形式:A&B功能:對(duì)A的各位與B的對(duì)應(yīng)位進(jìn)行比較,如果兩者都為1,
A&B對(duì)應(yīng)位上的值為1,否則為0。例如:intA=179(二進(jìn)制0000000010110011)
intB=169(二進(jìn)制0000000010101001)A0000000010110011B0000000010101001A&B00000000101000017/4/20241083.按位或運(yùn)算符|形式:A|B功能:對(duì)A的各位與B的對(duì)應(yīng)位進(jìn)行比較,如果兩者中有一個(gè)為1,A|B對(duì)應(yīng)位上的值為1,否則為0。例如:intA=179(二進(jìn)制0000000010110011)
intB=169(二進(jìn)制0000000010101001)A0000000010110011B0000000010101001A|B00000000101110117/4/20241094.按位異或運(yùn)算符^形式:A^B功能:對(duì)A的各位與B的對(duì)應(yīng)位進(jìn)行比較,如果兩者不同,
A^B對(duì)應(yīng)位上的值為1,否則為0。例如:intA=179(二進(jìn)制0000000010110011)
intB=169(二進(jìn)制0000000010101001)A0000000010110011B0000000010101001A^B00000000000110107/4/20241105.左移運(yùn)算符<<形式:A<<n(其中n為一個(gè)大于0的整型表達(dá)式)功能:把A的值向左移動(dòng)n位,右邊空出的n位用0填補(bǔ)。當(dāng)左移時(shí)移走的高位中全都是0時(shí),相當(dāng)于對(duì)A作n次乘以2的運(yùn)算。例如:intA=27(二進(jìn)制0000000000011011)A0000000000011011A<<300000000110110007/4/20241116.右移運(yùn)算符>>形式:A>>n(其中n為一個(gè)大于0的整型表達(dá)式)功能:把A的值向右移動(dòng)n位,左邊空出的n位用0填補(bǔ)。相當(dāng)于對(duì)A作n次除以2的運(yùn)算。例如:intA=179(二進(jìn)制0000000010110011)A0000000010110011A>>300000000000101107/4/20241123.3表達(dá)式用運(yùn)算符將運(yùn)算對(duì)象連接形成的式子就是表達(dá)式。1.表達(dá)式的定義2.C語(yǔ)言的表達(dá)式非常豐富,也有人稱C語(yǔ)言為表達(dá)式語(yǔ)言。7/4/2024113C語(yǔ)言使用的基本表達(dá)式有:⑴賦值表達(dá)式,如:a=3⑵算術(shù)表達(dá)式,如:3+4*2⑶關(guān)系表達(dá)式,如:3>2⑷邏輯表達(dá)式,如:3>5&&a>=b⑸條件表達(dá)式,如:a>b?a:b⑹逗號(hào)表達(dá)式,如:a=3,b=4,c=57/4/20241143.4賦值語(yǔ)句
1.構(gòu)成規(guī)則:
(1)變量=表達(dá)式;(2)變量賦值運(yùn)算符表達(dá)式分號(hào)7/4/20241152.注意區(qū)分賦值語(yǔ)句和賦值表達(dá)式的區(qū)別:
例如a=b+2
(這是賦值表達(dá)式)
a=b+2;
(這是賦值語(yǔ)句)
a++
(這是表達(dá)式)
a++;
(這是賦值語(yǔ)句,等價(jià)與a=a+1;)7/4/20241163.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ù)。7/4/20241173.在使用C語(yǔ)言庫(kù)函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。在調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),文件開(kāi)頭應(yīng)有以下預(yù)編譯命令:
#include<stdio.h>
或#include“stdio.h”
4.允許在使用printf和scanf兩個(gè)函數(shù)時(shí)可不加#include命令。7/4/2024118一、字符數(shù)據(jù)的輸入輸出1.putchar函數(shù)(字符輸出函數(shù))
·函數(shù)格式:putchar(C);C可以是字符型變量或整型變量或常量
·函數(shù)的功能:向終端輸出一個(gè)字符7/4/20241192.程序?qū)嵗?/p>
#include<stdio.h>main(){chara,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é)果:
BOY7/4/20241203.getchar
函數(shù)(字符輸入函數(shù))
函數(shù)格式,getchar()
函數(shù)的功能:從終端輸入一個(gè)字符,函數(shù)的值就是從輸入設(shè)備得到的字符。4.程序?qū)嵗?/p>
#include<stdio.h>main(){charc;c=getchar();
putchar(c);}在運(yùn)行時(shí),如果從鍵盤輸入字符‘a(chǎn)’并按回車鍵,就會(huì)在屏幕上看到輸出的字符‘a(chǎn)’。a↙(輸入‘a(chǎn)’后,按“回車”鍵,字符才送到內(nèi)存)a(輸出變量c
的值‘a(chǎn)’)7/4/2024121注意:(1)getchar()只能接收一個(gè)字符,getchar函數(shù)收到的字符可以賦給一個(gè)字符變量或整型變量。(2)若在程序中調(diào)用getchar、putchar函數(shù),則必須在程序的開(kāi)頭部分加上“包含命令”
#include<stdio.h>
或#include“stdio.h”7/4/2024122二、格式輸入與輸出(一)、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á)式。7/4/2024123下面是一個(gè)例子:
printf(“%d%d”,a,b);格式說(shuō)明輸出表列printf(“a=%db=%d”,a,b);格式說(shuō)明輸出表列7/4/20241242.格式字符常用的有以下幾種格式字符:(1)d
格式字符。用來(lái)輸出十進(jìn)制整數(shù)。有以下幾種格式字符:①%d,按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。②%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。如
printf(“%4d,%4d”,a,b);
若a=123,b=12345,則輸出結(jié)果為
|__|123,12345③%ld,輸出長(zhǎng)整型數(shù)據(jù)。如
longa=135790;printf(“%ld”,a);7/4/2024125對(duì)long型數(shù)據(jù)應(yīng)當(dāng)用%ld格式輸出。對(duì)長(zhǎng)整型數(shù)據(jù)也可以指定字段寬度,如將上面printf函數(shù)中的“%ld”改為“%8ld”則輸出為:
|__|
|__|135790(8列)一個(gè)int型數(shù)據(jù)可以用%d或%ld格式輸出。(2)O格式符,以八進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值(0或1)按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號(hào),即將符號(hào)位也一起作為八進(jìn)制數(shù)的一部分輸出。例如:
inta=-1;printf(“%d,%o”,a,a);7/4/2024126
1111111111111111輸出為-1,177777對(duì)長(zhǎng)整型數(shù)(long型)可以用“%lo”格式輸出。同樣可以指定字段寬度,如printf(“%8o”,a)輸出為|__|
|__|
177777-1在內(nèi)存單元中的存放形式(以補(bǔ)碼形式存放)如下:7/4/2024127(3)x格式符,以十六進(jìn)制數(shù)形式輸出整數(shù)。同樣不會(huì)出現(xiàn)負(fù)的十六進(jìn)制數(shù)。例如inta=-1;Printf(“%x,%o,%d”,a,a,a);輸出結(jié)果為:
ffff,177777,-17/4/2024128(4)u格式符,用來(lái)輸出unsigned型數(shù)據(jù),即無(wú)符號(hào)數(shù),以十進(jìn)制形式輸出。(5)C格式符,用來(lái)輸出一個(gè)字符。如:
charc=‘a(chǎn)’;printf(“%c”,c);
輸出字符‘a(chǎn)’,請(qǐng)注意:“%c”中的c是格式符,引號(hào)右邊的c是變量名,不要搞混。一個(gè)整數(shù),只要它的值在0~255范圍內(nèi),也可以用字符形式輸出,在輸出前,系統(tǒng)會(huì)將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符;反之,一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出。7/4/2024129(6)S格式符,用來(lái)輸出一個(gè)字符串。有幾種用法:①%s,例如:printf(“%s”,“CHINA”);輸出“CHINA”字符串(不包括雙引號(hào))。②%ms,輸出的字符率占m列,如字符串本身長(zhǎng)度大于m,則突破m的限制,將字符串全部輸出。若串
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學(xué)心理學(xué)模擬練習(xí)題(附答案)
- 臨床醫(yī)學(xué)概論(內(nèi)科)試題庫(kù)與參考答案
- 昭通買房合同范例
- 2025年銀川貨運(yùn)從業(yè)資格證題庫(kù)答案
- 2025年防城港貨運(yùn)資格證試題及答案
- 電梯監(jiān)控安裝勞務(wù)合同范例
- 油田開(kāi)發(fā)征地合同范例
- 小型超市出租合同范例
- 電力維修家政服務(wù)合同范例
- 建造水池合同范例
- 年產(chǎn)5億粒藿香正氣膠囊車間工藝設(shè)計(jì).文檔
- 第17課《昆明的雨》課件(共35張)
- 多發(fā)性骨折的護(hù)理
- 2023-2024學(xué)年北京市海淀區(qū)七年級(jí)(上)期末數(shù)學(xué)試卷(含解析)
- 五官科醫(yī)院感染管理
- 規(guī)劃設(shè)計(jì)方案審批全流程
- 2024年考研政治試題及詳細(xì)解析
- 2024年03月遼寧建筑職業(yè)學(xué)院招考聘用17人筆試歷年(2016-2023年)真題薈萃帶答案解析
- 酒店強(qiáng)電主管述職報(bào)告
- 2023版道德與法治教案教學(xué)設(shè)計(jì)專題7 第1講 社會(huì)主義法律的特征和運(yùn)行
- 虛擬電廠總體規(guī)劃建設(shè)方案
評(píng)論
0/150
提交評(píng)論