版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2024/12/141武漢理工大學(xué)計(jì)算機(jī)學(xué)院授課教師:王紅霞C語言程序設(shè)計(jì)2024/12/142選用教材與參考書主教科書
顧治華、陳天煌等
《C語言程序設(shè)計(jì)》
機(jī)械工業(yè)出版社
2007.2參考教材顧治華、陳天煌等《C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)》
機(jī)械工業(yè)出版社2007.2參考書譚浩強(qiáng)《C語言程序設(shè)計(jì)》清華大學(xué)出版社2024/12/143課程內(nèi)容第一章C語言程序設(shè)計(jì)概述
第二章算法及算法設(shè)計(jì)簡介
第三章數(shù)據(jù)描述與基本操作第四章選擇結(jié)構(gòu)程序設(shè)計(jì)
第五章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
第六章數(shù)組與指針第七章函數(shù)與模塊化程序設(shè)計(jì)方法2024/12/144第一章C語言程序設(shè)計(jì)基礎(chǔ)1.1程序與程序設(shè)計(jì)1.2C語言簡介1.3簡單的C語言程序1.4C語言程序的上機(jī)步驟1.5C語言的基本詞法1.6C語言程序的基本結(jié)構(gòu)2024/12/145程序與計(jì)算機(jī)語言程序是存放在計(jì)算機(jī)中的操作指令的集合。用程序設(shè)計(jì)語言安排好的處理問題的步驟稱為計(jì)算機(jī)程序用程序設(shè)計(jì)語言編制一個能完成某項(xiàng)任務(wù)的計(jì)算機(jī)程序的過程叫做計(jì)算機(jī)程序設(shè)計(jì)。程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+編程語言程序設(shè)計(jì)的關(guān)鍵:必須掌握一種程序設(shè)計(jì)語言。掌握程序設(shè)計(jì)的邏輯思維。2024/12/146
程序設(shè)計(jì)過程(1)問題的提出,要達(dá)到的要求;(2)確定數(shù)據(jù)結(jié)構(gòu)和所采用的算法;(3)編制程序;(4)調(diào)試程序;(5)整理并寫出文檔;2024/12/147C語言的特點(diǎn)(1)語言簡潔、緊湊,使用方便、靈活。C語言一共只有
32個關(guān)鍵字,主要用小寫字母表示。(2)
比其他高級語言更接近硬件,比低級語言更接近算法。程序易編、易讀、易查錯、易修改,兼有高級語言和低級語言的優(yōu)點(diǎn)。(3)
數(shù)據(jù)類型和運(yùn)算符十分豐富,程序設(shè)計(jì)和算法描述更為簡單和方便。(4)語法結(jié)構(gòu)十分簡單,語句數(shù)目少,簡單易學(xué)。2024/12/148
(6)它是一種模塊化的程序設(shè)計(jì)語言,適合大型軟件的研制和調(diào)試。
(5)它是一種結(jié)構(gòu)化程序設(shè)計(jì)語言,提供了完整的程序控制語句(選擇語句和循環(huán)語句),很適合結(jié)構(gòu)化的程序設(shè)計(jì)方法。(7)生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。(8)用c語言寫的程序可移植性好。(9)它提供了大量的庫函數(shù)以供調(diào)用,簡化了程序設(shè)計(jì)工作。2024/12/149C語言程序的結(jié)構(gòu)
C語言是結(jié)構(gòu)化的程序設(shè)計(jì)語言。C語言是模塊化的程序設(shè)計(jì)語言,程序是由函數(shù)構(gòu)成的。一個C源程序至少包含一個main函數(shù),也可以包含一個main函數(shù)和若干個其他函數(shù)。因此,函數(shù)是C程序的基本單位。一個函數(shù)由兩部分組成:
①函數(shù)的首部,函數(shù)的第一行。包括函數(shù)名、函數(shù)類型、函數(shù)屬性、函數(shù)參數(shù)(形參)名、參數(shù)類型。
②函數(shù)體,即函數(shù)首部下面的大括弧{…..}內(nèi)的部分。如果一個函數(shù)內(nèi)有多個括弧,則最外層的一對{}為函數(shù)的范圍。函數(shù)體一般包括:聲明部分:在這部分中定義所用到的變量。執(zhí)行部分:由若干個語句組成。2024/12/1410(4)一個C程序總是從main函數(shù)開始的,而不論main函數(shù)在整個程序中的位置如何(main函數(shù)可以放在程序最前頭,也可以放在程序最后,或在一些函數(shù)之前,在另一些函數(shù)之后)。(5)C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在多行上。(6)每個語句和數(shù)據(jù)定義的最后必須有一個分號。分號是C語句的必要組成部分。分號不可少。(7)C語言本身沒有輸入輸出語句。輸入輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。(8)可以用/*……*/對C程序中的任何部分作注釋。2024/12/1411簡單的C語言程序示例例一
main(){printf(“ThisisaCprogram.\n”);}
本程序的作用是輸出以下一行信息:
ThisisaCprogram.2024/12/1412例二main(){inta,b,sum;/*這是定義變量*/a=123;b=456;/*以下3行為C語句*/sum=a+b;printf(“sumis%d\n”,sum);}程序的運(yùn)行結(jié)果:Sumis5792024/12/1413例三/*example1.3輸入兩個數(shù),求其中較大的數(shù)*/#include<stdio.h>intmax(intx,inty)/*被調(diào)用函數(shù)*/{
int
z;if(x>y)z=x;
elsez=y;
return(z);
/*將z的值返回,通過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=62024/12/1414C程序的上機(jī)步驟
開始編輯編譯
有錯?執(zhí)行連接結(jié)果正確結(jié)束可執(zhí)行目標(biāo)程序f.exe源程序f.c目標(biāo)程序f.obj庫函數(shù)和其他目標(biāo)程序YesNoYesNo2024/12/1415C語言的基本詞法-標(biāo)識符定義:在程序中使用的變量名、函數(shù)名、標(biāo)號等統(tǒng)稱為標(biāo)識符。除庫函數(shù)的函數(shù)名由系統(tǒng)定義外,其余的都由用戶自己定義。命名規(guī)則:標(biāo)識符只能是字母(A~Z,a~z)、數(shù)字(0~9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。例如:以下標(biāo)識符是合法的:
a,x,x3,BOOK_1,sum5,_x7。以下標(biāo)識符是非法的:
3s,s*T,-3x,bowy-1,M.D.John,a>b。2024/12/1416(1)標(biāo)準(zhǔn)C不限制標(biāo)識符的長度,但它受各種版本的C語言編譯系統(tǒng)限制,同時也受到具體機(jī)器的限制。TurboC規(guī)定標(biāo)識符的長度為32。一般情況下,標(biāo)識符的長度不要超過8個字符。(2)在標(biāo)識符中,大小寫是有區(qū)別的。例如SUM和sum是兩個不同的標(biāo)識符。變量名應(yīng)盡量使用小寫字母,以增加程序的可讀性。(3)標(biāo)識符雖然可由程序員隨意定義,但標(biāo)識符是用于標(biāo)識某個量的符號。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,做到“顧名思義”。在C語言中,所有的變量都是先定義后應(yīng)用,使用沒有定義的變量名被認(rèn)為是“非法”的。
在使用標(biāo)識符時還必須注意以下幾點(diǎn):2024/12/1417C語言的基本詞法-關(guān)鍵字定義:關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標(biāo)識符不應(yīng)該與關(guān)鍵字相同。分類:C語言的關(guān)鍵字分為以下3類:(1)類型說明符用于定義和說明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類型。如int,double,float,long,short,auto,signed,static,struct,unsigned,char,enum,extern,register和union等。2024/12/1418(2)語句定義符用于表示一個語句的功能。如條件語句的語句定義符ifelse,循環(huán)語句的語句定義符do,while,for等。(3)預(yù)處理命令字用于表示一個預(yù)處理命令,使用時前面要加“#”。如include,define,ifdef,endif等。關(guān)鍵字后必須有空格、圓括號、尖括號、雙引號等分隔符,否則與其它字符一起組成新的標(biāo)識符。2024/12/1419C語言的基本詞法-其它運(yùn)算符
C語言中含有相當(dāng)豐富的運(yùn)算符。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。運(yùn)算符由一個或多個字符組成。分隔符
在C語言中采用的分隔符有逗號和空格兩種。逗號主要是用在類型說明和函數(shù)參數(shù)表中分隔各個變量??崭穸嘤糜谡Z句各單詞之間作間隔符。常量
C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號常量、轉(zhuǎn)義字符等多種。2024/12/1420C語言的字符集
(1)字母小寫字母a~z共26個,大寫字母A~Z共26個。(2)數(shù)字0~9共10個。(3)空格符、制表符、換行符等統(tǒng)稱為空白符。(4)標(biāo)點(diǎn)和特殊字符2024/12/1421C語言程序設(shè)計(jì)的基本結(jié)構(gòu)
(1)順序結(jié)構(gòu)ABab2024/12/1422(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu)此結(jié)構(gòu)中必包含一個判斷框。根據(jù)給定的條件P是否成立而選擇執(zhí)行A框或B框abBAp不成立成立2024/12/1423
(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成立時,執(zhí)行A框操作,執(zhí)行完A后,再判斷條件p1是否成立,如果仍然成立,再執(zhí)行A框,如此反復(fù)執(zhí)行A框,直到某一次p1條件不成立為止,此時不執(zhí)行A框,而從b點(diǎn)脫離循環(huán)結(jié)構(gòu)。ap1TFAb2024/12/1424(b)直到型(Until型)循環(huán)結(jié)構(gòu)它的功能是先執(zhí)行A框,然后判斷給定的p2條件是否成立,如果p2條件不成立,則再執(zhí)行A,然后再對p2條件作判斷,如果p2條件仍然不成立,又執(zhí)行A‥‥‥如此反復(fù)執(zhí)行A,直到給定的p2條件成立為止,此時不再執(zhí)行A,從b點(diǎn)脫離本循環(huán)結(jié)構(gòu)。aAFTbp22024/12/1425本章課堂練習(xí)(1)以下說法中正確的是().A)C語言程序總是從第一個函數(shù)開始執(zhí)行
B)在C語言程序中,要調(diào)用的函數(shù)必須在main()函數(shù)中定義
C)C語言程序總是從main()函數(shù)開始執(zhí)行
D)C語言程序中的main()函數(shù)必須放在程序的開始部分2024/12/1426解答:C解釋:C語言程序總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。除main函數(shù)外,其它函數(shù)都是在執(zhí)行main函數(shù)時被調(diào)用執(zhí)行的。在C語言中,函數(shù)不允許嵌套定義。習(xí)慣上,將主函數(shù)main()放在最前頭,但并不是必須的。2024/12/1427(2).以下敘述不正確的是A)一個C源程序可由一個或多個函數(shù)組成B)一個C源程序必須包含一個main函數(shù)C)C程序的基本組成單位是函數(shù)
D)在C程序中,注釋說明只能位于一條語句的后面2024/12/1428解答:D解釋:
凡是用“/*”和“*/”括起來的文字,都是注釋。其出現(xiàn)的位置可以任意。2024/12/1429(3).下列標(biāo)識符中,合法的變量名有:A)a.bB)$888C)A1D)
3x562024/12/1430解答:C解釋:變量名只能由字母、數(shù)字和下劃線三種字符所組成,且第一個字符必須為字母或下劃線。C語言的關(guān)鍵字不能用作變量名。另外,C語言對英文字母的大小寫敏感,即同一字母的大小寫,被認(rèn)為是兩個不同的字符。習(xí)慣上,變量名和函數(shù)名中的英文字母用小寫,以增加可讀性。2024/12/1431
第二章算法及算法設(shè)計(jì)簡介2.1算法的概念2.2算法的設(shè)計(jì)與表達(dá)2.3簡單的算法實(shí)例2.4結(jié)構(gòu)化程序設(shè)計(jì)方法簡介2024/12/1432算法的概念任何一個程序應(yīng)包含的如下兩方面的內(nèi)容:
(1)對數(shù)據(jù)的描述。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)(datastructure).(2)對操作的描述。即操作步驟,也就是算法(algorithm)。著名計(jì)算機(jī)科學(xué)家沃思(NikiklausWirth)提出公式
數(shù)據(jù)結(jié)構(gòu)+算法=程序算法:是對解決某個問題的方法步驟的描述。程序:從計(jì)算機(jī)角度來說,程序是用某種計(jì)算機(jī)能理解并執(zhí)行的計(jì)算機(jī)語言描述解決問題的方法和步驟。2024/12/1433實(shí)際上,一個程序除了以上兩個主要要素之外,還應(yīng)當(dāng)采用結(jié)構(gòu)化程序設(shè)計(jì)方法進(jìn)行程序設(shè)計(jì),并且用某一種計(jì)算機(jī)語言表示。因此,可以這樣表示:
程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語言工具和環(huán)境
在這4個方面中,算法是靈魂,數(shù)據(jù)結(jié)構(gòu)是加工對象,語言是工具,編程需要采用合適的算法。算法是解決“做什么”和“怎么做”的問題。2024/12/1434算法的表示
1、用自然語言表示算法采用漢語、英語或其它語言來描述解決問題的方法和步驟。由于自然語言容易出現(xiàn)“歧義性”,且描述問題的文字冗長,因此一般很少使用自然語言來描述算法。2024/12/1435例1:有50個學(xué)生,要求將他們之中成績在80分以上者打印出來。用n表示學(xué)號,n1代表第一個學(xué)生學(xué)號,ni代表第i個學(xué)生學(xué)號。用g代表學(xué)生成績,gi代表第i個學(xué)生成績,算法可表示如下:S1:1iS2:讀入學(xué)號ni和成績gi
S3:
如果gi80,則打印ni
和gi,否則不打印S4:
i+1iS5:如果i50,返回S2,繼續(xù)執(zhí)行;否則,算法結(jié)束。2024/12/1436起止框輸入/輸出框判斷框處理框流程線2、用流程圖表示算法(1)常用的流程圖符號2024/12/1437上例用流程圖表示:
(1)
流程圖表示算法的優(yōu)點(diǎn):①表示算法直觀形象,比較清楚地顯示出各個框之間的邏輯關(guān)系。②簡單,易于掌握。流程圖2024/12/14383、用N-S圖表示算法1973年美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式。在這種流程圖中,完全去掉了帶箭頭的流程線。全部算法寫在一個矩形框內(nèi),在該框內(nèi)還可以包含其他的從屬于它的框。
這種流程圖又稱N—S結(jié)構(gòu)化流程圖。N—S流程圖用以下的流程圖符號:(1)順序結(jié)構(gòu):AB2024/12/1439(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流程圖,以表示算法2024/12/1440上例用N-S圖表示:用N—S表示算法如圖1=>i輸入ni,gigi≥80是否輸出ni,gii+1=>i直到i>502024/12/14414、用偽碼表示算法偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號來描述算法。它不用圖形符號,因此書寫方便,格式緊湊,也比較好懂,便于向計(jì)算機(jī)語言算法(即程序)過渡。例有50個學(xué)生,要求將他們之中成績在80分以上者打印出來。用n表示學(xué)生學(xué)號,n1表示第一個學(xué)生學(xué)號,ni表示第i個學(xué)生學(xué)號。用g表示學(xué)生成績,gi表示第i個學(xué)生成績。2024/12/1442BEGIN(算法開始)1=>iWhilei<=50{inputniandgiifgi≥80printniandgii+1=>i}END(算法結(jié)束)
用偽代碼表示算法如下:2024/12/14435、用計(jì)算機(jī)語言表示算法設(shè)計(jì)算法的目的是為了實(shí)現(xiàn)算法。因此,不僅要考慮如何設(shè)計(jì)一個算法,也要考慮如何實(shí)現(xiàn)一個算法。我們的任務(wù)是用計(jì)算機(jī)解題,也就是要用計(jì)算機(jī)實(shí)現(xiàn)算法。計(jì)算機(jī)是無法識別流程圖和偽代碼的。只有用計(jì)算機(jī)語言編寫的程序才能被計(jì)算機(jī)執(zhí)行(當(dāng)然還要經(jīng)過編譯成目標(biāo)程序才能被計(jì)算機(jī)識別和執(zhí)行)。因此,在用流程圖或偽代碼描述出一個算法后,還要將它轉(zhuǎn)換成計(jì)算機(jī)語言程序。2024/12/1444例:有50個學(xué)生,要求將他們之中成績在80分以上者打印出來。用n表示學(xué)生學(xué)號,n1表示第一個學(xué)生學(xué)號,ni表示第i個學(xué)生學(xué)號。用g表示學(xué)生成績,gi表示第i個學(xué)生成績。C語言程序如下: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]);}2024/12/1445例2:對一個大于或等于3的正整數(shù),判斷它是不是一個素?cái)?shù)。方法:將n(其中n3)作為被除數(shù),將2到(n-1)各個整數(shù)輪流作為除數(shù),如果都不能被整除,則n為素?cái)?shù)。簡單的算法實(shí)例2024/12/1446算法表示如下: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é)束。2024/12/1447S1:
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。2024/12/1448結(jié)構(gòu)化程序設(shè)計(jì)方法簡介
1、三種基本結(jié)構(gòu)回顧(1)順序結(jié)構(gòu)ABab2024/12/1449(2)選擇結(jié)構(gòu),或稱分支結(jié)構(gòu)abBAp不成立成立2024/12/1450(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)ap1TFAb2024/12/1451(b)直到型(Until型)循環(huán)結(jié)構(gòu)aAFTbp22024/12/14522、結(jié)構(gòu)化程序所謂結(jié)構(gòu)化程序,就是僅僅使用順序、選擇、循環(huán)等三種基本結(jié)構(gòu)所構(gòu)造的程序。3、結(jié)構(gòu)化程序設(shè)計(jì)方法
結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是,把一個復(fù)雜問題的求解過程分階段進(jìn)行。每個階段的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。2024/12/14531=>ii+1=>igi≥80i>50結(jié)束開始打印ni,giYNNY讀入ni和gi2024/12/1454
解答:
(?。┯米匀徽Z言表示
(ⅱ)用傳統(tǒng)的流程圖表示
(ⅲ)N—S流程圖
(ⅳ)用偽代碼表示等。
1、算法的表示形式主要有哪些?課堂練習(xí)2024/12/14552、設(shè)計(jì)算法:A、B兩人各有一桶油,現(xiàn)兩人要將各自桶
內(nèi)的油互換。
解答:必須借助另外一個空桶,并按如下算法進(jìn)行:(用Si表示第i步操作,A的桶叫A,B的桶叫B,空桶叫M)開始:
S0:將A桶中的油倒入M桶中;
S1:將B桶中的油倒入A桶中;
S2:將M桶中的油倒入B桶中;
2024/12/14563、設(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á)式及賦值語句3.4基本輸入輸出操作的實(shí)現(xiàn)3.5順序結(jié)構(gòu)程序設(shè)計(jì)實(shí)例概述
使用高級語言編寫程序,必須在程序中做好兩件事:一是描述數(shù)據(jù),二是描述數(shù)據(jù)的加工方法。前者是通過數(shù)據(jù)定義語句實(shí)現(xiàn)的,后者是通過若干執(zhí)行語句,包括用各種運(yùn)算符構(gòu)成的表達(dá)式來實(shí)現(xiàn)的。本單元主要介紹C語言的基本數(shù)據(jù)類型,為后續(xù)單元的學(xué)習(xí)奠定一個基礎(chǔ)。關(guān)于復(fù)雜的數(shù)據(jù)類型(如數(shù)組、指針、結(jié)構(gòu)型、共用型等)將在以后單元中介紹。3.1C語言的數(shù)據(jù)類型
C語言具有十分豐富的數(shù)據(jù)類型。所謂數(shù)據(jù)類型是指數(shù)據(jù)的內(nèi)在表現(xiàn)形式。具體的數(shù)據(jù)類型有以下若干種:
1.基本數(shù)據(jù)類型:整型、實(shí)型和字符型。
2.構(gòu)造類型:由若干個相關(guān)的基本數(shù)據(jù)類型數(shù)據(jù)組合在一起形成的一種復(fù)雜的數(shù)據(jù)類型,如數(shù)組型、結(jié)構(gòu)型和共用型。
3.指針型:一種簡單的數(shù)據(jù)類型,它是用來表示內(nèi)存地址的。指針類型的數(shù)據(jù)可以表示基本類型數(shù)據(jù)的地址,它可以表示結(jié)構(gòu)類型數(shù)據(jù)的首地址和其中某個具體數(shù)據(jù)的地址。
4.枚舉型:某數(shù)據(jù)在程序運(yùn)行中,只取固定的幾個值。我們可以把這幾個值列出來,以后這個數(shù)據(jù)只能取這幾個值中的某一個。
5.
空類型:沒有任何具體值的數(shù)據(jù)類型。C語言中的數(shù)據(jù)類型如下圖所示:
數(shù)據(jù)類型基本類型整型字符型實(shí)型(浮點(diǎn)型)單精度型雙精度型枚舉類型構(gòu)造類型
數(shù)組類型結(jié)構(gòu)體類型共用體類型指針類型空類型2024/12/1462常量和變量2.常量的分類
(1)整型常量(2)實(shí)型常量(3)字符常量(4)字符串常量(5)符號常量常量的類型,可通過書寫形式來判別。常量
1.常量的概念
在程序運(yùn)行過程中,其值不能被改變的量稱為常量。2024/12/1463變量1.變量的概念在程序運(yùn)行過程中,其值可以被改變的量稱為變量。2.變量的兩個要素(1)變量名。每個變量都必須有一個名字──變量名,變量命名遵循標(biāo)識符命名規(guī)則。(2)變量值。在程序運(yùn)行過程中,變量值存儲在內(nèi)存中。在程序中,通過變量名來引用變量的值。2024/12/1464變量有以下幾個特征:變量名、變量值、變量的數(shù)據(jù)類型、變量的地址、變量的存儲類別、變量的作用域及變量的生存期等。變量必須先定義后使用。定義變量格式如下:數(shù)據(jù)類型關(guān)鍵字<變量名表>;如intx,y,z;變量的初始化:變量賦初值的過程就是變量初始化過程。
整型數(shù)據(jù)整型常量:整型常量就是整常數(shù),包括正整數(shù)和負(fù)整數(shù)及0。其書寫形式如下:(1)
十進(jìn)制整數(shù)。如123,-456,0。(2)
八進(jìn)制整數(shù)。以0開頭的是八進(jìn)制數(shù)。如0123表示八進(jìn)制數(shù)123,即(123)8
。(3)
十六進(jìn)制整數(shù)。以0x開頭的數(shù)是十六進(jìn)制數(shù)。如0x123,代表十六進(jìn)制數(shù),
(123)16=1×162+2×161+3×16o=256+32+3=291。①整型常量在一般微型機(jī)中占用2個字節(jié),不管是十進(jìn)制、八進(jìn)制或十六進(jìn)制整數(shù),它們的數(shù)值范圍都是十進(jìn)制的-32768~+32767。注意:②C語言還提供一種“長整型常量”。它們的數(shù)值范圍是十進(jìn)制的-2147483648~+2147483647,在計(jì)算機(jī)中占用四個字節(jié),它們的書寫方法是在數(shù)據(jù)的末尾加一個大寫字母“L”或小寫字母“l(fā)”,如0L,038L,0x15L。2024/12/1467
整型變量1.分類
根據(jù)占用內(nèi)存字節(jié)數(shù)的不同,整型變量又分為4類:(1)基本整型(類型關(guān)鍵字為int)。(2)短整型(類型關(guān)鍵字為short[int])。(3)長整型(類型關(guān)鍵字為long[int])。(4)無符號整型。無符號型又分為無符號基本整型(unsigned[int])、無符號短整型(unsignedshort)和無符號長整型(unsignedlong)三種,只能用來存儲無符號整數(shù)。2.占用內(nèi)存字節(jié)數(shù)與值域
上述各類型整型變量占用的內(nèi)存字節(jié)數(shù),隨系統(tǒng)而異。在16位操作系統(tǒng)中,一般用2字節(jié)表示一個int型變量,且long型(4字節(jié))≥int型(2字節(jié))≥short型(2字節(jié))。2024/12/1469
實(shí)型數(shù)據(jù)
實(shí)型常量
1.表示形式
實(shí)型常量即實(shí)數(shù),在C語言中又稱浮點(diǎn)數(shù),其值有兩種表達(dá)形式:
(1)一般形式的實(shí)數(shù),它是由整數(shù)、小數(shù)點(diǎn)、小數(shù)三部分組成。其中整數(shù)部分或小數(shù)部分可以省略。數(shù)的正負(fù)用前面的“+”(可以省略)號或“-”號來區(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ù)號)例如,12.3e2,-1.2e-3,47.0e2,-.234e-3等都是實(shí)型常量。
C語言規(guī)定,字母e(或者E)之前必須要有數(shù)字,且e(或者E)后面的指數(shù)必須為整數(shù)。如:e3,5e3.5,.e3都是不合法的指數(shù)形式。注意:
實(shí)型常量在一般的微機(jī)中是占用4個字節(jié)的,不管是一般形式還是指數(shù)形式,它們的數(shù)值范圍都是-10~10有效數(shù)字7位。例如,1.23456789和1.234567是相同的,因?yàn)閷?shí)型常量的有效數(shù)字是7位,所以1.23456789中的后兩位是無效的。38382024/12/1472實(shí)型變量C語言的實(shí)型變量,分為兩種:
(1)單精度型。類型關(guān)鍵字為float,一般占4字節(jié)(32位)、提供7位有效數(shù)字。
(2)雙精度型。類型關(guān)鍵字為double,一般占8個字節(jié)、提供15~16位有效數(shù)字。字符型數(shù)據(jù)A、把單個字符用一對單引號括起來表示字符常量。如‘a(chǎn)’,‘d’,‘w’,‘?’等都是字符常量。B、用該字符的ASCII碼值表示字符常量。如65表示‘A’C、轉(zhuǎn)義字符:反斜杠開頭后跟規(guī)定的單個字符或數(shù)字,并用一對單引號括起來表示字符常量。如下:一字符常量1.字符常量是ASCII碼字符集里的一個字符,包括字母(大、小寫有區(qū)別)、數(shù)字和標(biāo)點(diǎn)符號以及特殊字符等,均為半角字符。2.字符常量表示形式:
字符形式
含義ASCⅡ\n換行,將當(dāng)前位置移到下一行開頭
10\t水平制表(跳到下一個tab位置)9\b退格,將當(dāng)前位置移到前一列8\r回車,將當(dāng)前位置移到本行開頭
13\f換頁,將當(dāng)前位置移到下頁開頭
12\\反斜杠字符“\”
92\‘單引號(撇號)字符
39\“雙引號字符
34\ddd1到3位8進(jìn)制數(shù)所代表的字符
\xhh1到2位16進(jìn)制數(shù)所代表的字符
2024/12/1475例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=b2024/12/1476例2
字符參與整數(shù)運(yùn)算
#include"stdio.h"voidmain(){charn;n='a';n=n-65;printf("n=%d\n",n);}程序的輸出結(jié)果為:
n=322024/12/1477例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
二字符串常量
●
字符串就是用兩個雙引號(“)號后括住的若干個字符,例如,“abc”,“123456”,“aBbB”都是字符串。
●
轉(zhuǎn)義符可以出現(xiàn)在字符串中,例如,“\\ABC\\”,“\101\102\x43\x44”等都是字符串,分別表示“\ABCD\”、“ABCD”兩個字符串?!?/p>
一個字符串中所有的字符的個數(shù)稱為該字符串的長度,其中每個轉(zhuǎn)義字符只當(dāng)做一個字符。例如,“\\ABC\\”的長度為5。注意!‘a(chǎn)’與“a”的區(qū)別?!?/p>
C語言規(guī)定:每個字符串在內(nèi)存中占用的字符數(shù)等于字符串的長度+1。其中最后一個字符存放的字符稱為“空字符”其值為0,書寫時常用轉(zhuǎn)義字符“\0”來表示。在C語言中稱為字符串結(jié)束標(biāo)志。關(guān)于變量的補(bǔ)充內(nèi)容
1.變量:變量是指在程序運(yùn)行過程中其值可以發(fā)生變化的量。2.變量的取名規(guī)則為:以字母、下劃線“_”開頭,后跟若干個字母、下劃線、數(shù)字。一般約定,用戶使用的變量名采用以字母開頭,C語言內(nèi)部使用的變量名以下劃線開頭。例如,
abc,a_1,age_1等都是合法的變量名,而3a,+age則是非法的變量名。
當(dāng)程序運(yùn)行時,每個變量都要占用若干個連續(xù)的字節(jié),所占用的字節(jié)數(shù)由變量的數(shù)據(jù)類型確定。其中第1個字節(jié)的地址稱為變量的地址。C語言規(guī)定,程序中變量的地址是用“&變量名”來表示的。3.變量的數(shù)據(jù)類型及其定義
(1)
變量可以是任何一種數(shù)據(jù)類型,具有某種數(shù)據(jù)類型的變量就叫做該類型變量。(2)
每個變量在使用前必須定義,說明其數(shù)據(jù)類型。(3)
定義變量數(shù)據(jù)類型的語句格式如下:
數(shù)據(jù)類型符變量1,變量2…….;
數(shù)據(jù)類型
數(shù)據(jù)類型符占用字節(jié)數(shù)
數(shù)據(jù)范圍
整型int2(或4)同短整型(或長整型)
短整型short2-32768-+32767
長整型long4-2147483648-+2147483647無符號整型unsignedint2(或4)同無符號短整型(或長整型)無符號短整型unsignedshort20-65535無符號長整型unsignedlong40-4294967295單精度實(shí)型float4
-10-10雙精度實(shí)型double8
-10-10
字符型char1
-128-+127基本數(shù)據(jù)類型符及含義如下表所示:38383083085.變量的初始化
(1)在定義變量的同時給變量賦予初始值就稱為變量的初始化。(2)變量賦初值的語句格式如下:
存儲類型符數(shù)據(jù)類型符變量名1=初值1,變量名2=初值2,…3.2運(yùn)算符
1概述2算術(shù)運(yùn)算符3賦值運(yùn)算符4逗號運(yùn)算符5條件運(yùn)算符6長度運(yùn)算符7位運(yùn)算符8關(guān)系運(yùn)算符-下章介紹9邏輯運(yùn)算符-下章介紹一.概述用來表示各種運(yùn)算的符號稱為運(yùn)算符。
運(yùn)算符必須有運(yùn)算對象,運(yùn)算對象是一個的,則稱為
單目運(yùn)算;運(yùn)算對象是兩個的,則稱為雙目運(yùn)算;運(yùn)算對象是三個的,則稱為三目運(yùn)算。例如,數(shù)值運(yùn)算中經(jīng)常用到的+、-、*、/等。
每個運(yùn)算符都代表對運(yùn)算對象的某種運(yùn)算,都有自己特定的運(yùn)算規(guī)則。每個運(yùn)算符運(yùn)算的對象都規(guī)定了數(shù)據(jù)類型,同時運(yùn)算結(jié)果也有確定的數(shù)據(jù)類型。當(dāng)表達(dá)式中出現(xiàn)多個運(yùn)算符,計(jì)算表達(dá)式值時,就有誰先算,誰后算的問題,我們把這個問題稱為運(yùn)算符的優(yōu)先級。計(jì)算表達(dá)式值時,優(yōu)先級高的運(yùn)算要先進(jìn)行運(yùn)算。同級別的運(yùn)算符有左結(jié)合和右結(jié)合之分。C的運(yùn)算符十分豐富,有13類,30多種,其分類如下:C語言運(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)算符(+=、-=、*=、/=、%=)逗號運(yùn)算符(,)條件運(yùn)算符(?:)數(shù)據(jù)長度運(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)算符號有雙重意義,主要有以下幾種:
(1)“+”號,在算術(shù)運(yùn)算中即表示單目的取正運(yùn)算,又可表示雙目的加法運(yùn)算。(2)“-”號,在算術(shù)運(yùn)算中即表示單目的取負(fù)運(yùn)算,又可表示雙目的減法運(yùn)算(3)“*”號,在算術(shù)運(yùn)算中即表示雙目的乘法運(yùn)算,在指針運(yùn)算中表示指針變量指向的變量。(4)“&”號,在位邏輯運(yùn)算中表示雙目“與”運(yùn)算,在指針運(yùn)算中表示取地址的運(yùn)算。二.算術(shù)運(yùn)算符
1.基本算術(shù)運(yùn)算符基本算術(shù)運(yùn)算符的運(yùn)算對象、運(yùn)算規(guī)則與結(jié)果、結(jié)合性如表所示:對象數(shù)運(yùn)算符
名稱運(yùn)算對象運(yùn)算結(jié)果結(jié)合性單目雙目+-正負(fù)整型或?qū)嵭驼突驅(qū)嵭妥杂蚁蜃笞宰笙蛴遥?
/加減乘除%整除取余整型整數(shù)算術(shù)運(yùn)算符的優(yōu)先級規(guī)定如下:
●單目基本算術(shù)運(yùn)算符優(yōu)先于雙目基本算術(shù)運(yùn)算符
●*、/、%優(yōu)先于+、—
●同級單目基本算術(shù)運(yùn)算符的結(jié)合性是自右向左
●
同級雙目基本算術(shù)運(yùn)算符的結(jié)合性是自左向右
例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)算的兩個數(shù)中有一個為浮點(diǎn)型,則結(jié)果是double型2.增1減1運(yùn)算符(1)增1減1運(yùn)算符的運(yùn)算對象、運(yùn)算規(guī)則與結(jié)果、結(jié)合性如下表所示:對象數(shù)單目名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對象運(yùn)算結(jié)果結(jié)合性增1(前綴)++先加1后使用增1(后綴)減1(前綴)減1(后綴)++----先使用后加1先減1后使用先使用后減1整型、字符型、指針型變量或數(shù)組元素同運(yùn)算對象的類型自右向左(2)增1減1運(yùn)算符的優(yōu)先級:
●增1減1運(yùn)算符
優(yōu)先于
雙目基本算術(shù)運(yùn)算符
●增1減1運(yùn)算符和單目運(yùn)算符+、-同級別,結(jié)合性是自右向左
注意:
若出現(xiàn)難以區(qū)分的若干個+或-組成運(yùn)算符串時,
C語言規(guī)定,自左向右取盡可能多的符號組成運(yùn)算符。例1:a+++b應(yīng)理解為(a++)+ba―――b應(yīng)理解為
(a――)-b例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’
三.賦值運(yùn)算符
1.賦值運(yùn)算符
賦值運(yùn)算符是雙目運(yùn)算符,賦值運(yùn)算符的左邊必須是變量,右邊是表達(dá)式。
(1)賦值運(yùn)算符的運(yùn)算對象及有關(guān)規(guī)則如下表:
對象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算結(jié)果結(jié)合性
雙目賦值
=將表達(dá)式的值賦予變量
表達(dá)式的類型自右向左(2)賦值運(yùn)算符的優(yōu)先級
●
算術(shù)運(yùn)算符優(yōu)先于關(guān)系運(yùn)算符優(yōu)先于雙目邏輯運(yùn)算符優(yōu)先于賦值運(yùn)算符●賦值運(yùn)算符的結(jié)合性是自右向左
(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!=n1))
⑤n4=n5=n6=-(――n1)運(yùn)算后,n4,n5,n6的值均是-64,n1的值是64。
注意:上述表達(dá)式的值就等于賦值表達(dá)式中的最左邊的變量值。
2.算術(shù)自反賦值運(yùn)算符
(1)運(yùn)算規(guī)則
對象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對象運(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)先級
●
算術(shù)運(yùn)算符優(yōu)先于關(guān)系運(yùn)算符優(yōu)先于雙目邏輯運(yùn)算符優(yōu)先于算術(shù)自反賦值運(yùn)算符●算術(shù)自反賦值運(yùn)算符和賦值運(yùn)算符是同級別的,結(jié)合性是自右向左
(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)))
四.逗號運(yùn)算符
逗號運(yùn)算符是雙目運(yùn)算符,其運(yùn)算對象是表達(dá)式。
1.逗號運(yùn)算符
對象數(shù)名稱運(yùn)算符運(yùn)算規(guī)則運(yùn)算對象
結(jié)合性
雙目逗號
,依次計(jì)算前、后表達(dá)式
表達(dá)式自左向右注意:由逗號運(yùn)算符組成的式子也是表達(dá)式,其值等于最右邊的表達(dá)式的值
2.逗號運(yùn)算符的優(yōu)先級
●任何運(yùn)算符
優(yōu)先于
逗號運(yùn)算符
●逗號運(yùn)算符的結(jié)合性是自左向右3.例題。設(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á)式的值為1五.條件運(yùn)算符
1.條件運(yùn)算符
對象數(shù)
名稱運(yùn)算符
運(yùn)算規(guī)則運(yùn)算對象運(yùn)算結(jié)果結(jié)合性
三目條件
?:對e1?e2:e3e1為真,獲得e2e1為假,獲得e3
表達(dá)式e2(e3)的類型
自右向左2.條件運(yùn)算符的優(yōu)先級●其它運(yùn)算符
優(yōu)先于
條件運(yùn)算符
優(yōu)先于
賦值、算術(shù)自反賦值運(yùn)算符
●條件運(yùn)算符的結(jié)合性是自右向左
3.例子
(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á)式的值為01.長度運(yùn)算符
六.長度運(yùn)算符
對象數(shù)
名稱運(yùn)算符
運(yùn)算規(guī)則運(yùn)算對象運(yùn)算結(jié)果結(jié)合性
單目長度sizeof測試數(shù)據(jù)類型所占用的字節(jié)數(shù)類型說明符或變量
整型
無2.長度運(yùn)算符優(yōu)先級
●和單目算術(shù)運(yùn)算符、單目邏輯運(yùn)算符、增1減1運(yùn)算符同級別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é)果。
2024/12/14107七位運(yùn)算C語言中提供的位運(yùn)算符:~、<<、>>、&、^、︱1.按位取反運(yùn)算符~形式:~A功能:把A的各位都取反,(即0變1,1變0)例如:intA=179A0000000010110011~A11111111010011002024/12/141082.按位與運(yùn)算符&形式:A&B功能:對A的各位與B的對應(yīng)位進(jìn)行比較,如果兩者都為1,
A&B對應(yīng)位上的值為1,否則為0。例如:intA=179(二進(jìn)制0000000010110011)
intB=169(二進(jìn)制0000000010101001)A0000000010110011B0000000010101001A&B00000000101000012024/12/141093.按位或運(yùn)算符|形式:A|B功能:對A的各位與B的對應(yīng)位進(jìn)行比較,如果兩者中有一個為1,A|B對應(yīng)位上的值為1,否則為0。例如:intA=179(二進(jìn)制0000000010110011)
intB=169(二進(jìn)制0000000010101001)A0000000010110011B0000000010101001A|B00000000101110112024/12/141104.按位異或運(yùn)算符^形式:A^B功能:對A的各位與B的對應(yīng)位進(jìn)行比較,如果兩者不同,
A^B對應(yīng)位上的值為1,否則為0。例如:intA=179(二進(jìn)制0000000010110011)
intB=169(二進(jìn)制0000000010101001)A0000000010110011B0000000010101001A^B00000000000110102024/12/141115.左移運(yùn)算符<<形式:A<<n(其中n為一個大于0的整型表達(dá)式)功能:把A的值向左移動n位,右邊空出的n位用0填補(bǔ)。當(dāng)左移時移走的高位中全都是0時,相當(dāng)于對A作n次乘以2的運(yùn)算。例如:intA=27(二進(jìn)制0000000000011011)A0000000000011011A<<300000000110110002024/12/141126.右移運(yùn)算符>>形式:A>>n(其中n為一個大于0的整型表達(dá)式)功能:把A的值向右移動n位,左邊空出的n位用0填補(bǔ)。相當(dāng)于對A作n次除以2的運(yùn)算。例如:intA=179(二進(jìn)制0000000010110011)A0000000010110011A>>300000000000101103.3表達(dá)式
用運(yùn)算符將運(yùn)算對象連接形成的式子就是表達(dá)式。1.表達(dá)式的定義2.C語言的表達(dá)式非常豐富,也有人稱C語言為表達(dá)式語言。C語言使用的基本表達(dá)式有:⑴賦值表達(dá)式,如:a=3⑵算術(shù)表達(dá)式,如:3+4*2⑶關(guān)系表達(dá)式,如:3>2⑷邏輯表達(dá)式,如:3>5&&a>=b⑸條件表達(dá)式,如:a>b?a:b⑹逗號表達(dá)式,如:a=3,b=4,c=53.4賦值語句1.構(gòu)成規(guī)則:
(1)變量=表達(dá)式;
(2)變量賦值運(yùn)算符表達(dá)式分號2024/12/141162.注意區(qū)分賦值語句和賦值表達(dá)式的區(qū)別:
例如a=b+2
(這是賦值表達(dá)式)
a=b+2;
(這是賦值語句)
a++
(這是表達(dá)式)
a++;
(這是賦值語句,等價與a=a+1;)2024/12/141173.5輸入輸出在C語言中的實(shí)現(xiàn)1.輸入輸出的概念從計(jì)算機(jī)向外部輸出設(shè)備(如顯示屏、打印機(jī)、磁盤等)輸出數(shù)據(jù)稱為“輸出”,從外部向輸入設(shè)備(如鍵盤、磁盤、光盤、掃描儀等)輸入數(shù)據(jù)稱為“輸入”。2.C語言本身不提供輸入輸出語句,輸入和輸出操作是由函數(shù)來實(shí)現(xiàn)的。在C標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入輸出函數(shù),例如,printf函數(shù)和scanf函數(shù)。2024/12/141183.在使用C語言庫函數(shù)時,要用預(yù)編譯命令“#include”將有關(guān)的“頭文件”包括到用戶源文件中。在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時,文件開頭應(yīng)有以下預(yù)編譯命令:
#include<stdio.h>
或#include“stdio.h”
4.允許在使用printf和scanf兩個函數(shù)時可不加#include命令。2024/12/14119一、字符數(shù)據(jù)的輸入輸出1.putchar函數(shù)(字符輸出函數(shù))
·函數(shù)格式:putchar(C);C可以是字符型變量或整型變量或常量
·函數(shù)的功能:向終端輸出一個字符2024/12/141202.程序?qū)嵗?/p>
#include<stdio.h>main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);}
注意:該程序可以輸出控制字符,如putchar(‘\n’)
輸出一個換行符,也可以輸出其他轉(zhuǎn)義字符如putchar(‘\101’)(輸出字符A)
putchar(‘\’’)(輸出單引號字符’)運(yùn)行結(jié)果:
BOY2024/12/141213.getchar
函數(shù)(字符輸入函數(shù))
函數(shù)格式,getchar()
函數(shù)的功能:從終端輸入一個字符,函數(shù)的值就是從輸入設(shè)備得到的字符。4.程序?qū)嵗?/p>
#include<stdio.h>main(){charc;c=getchar();putchar(c);}在運(yùn)行時,如果從鍵盤輸入字符‘a(chǎn)’并按回車鍵,就會在屏幕上看到輸出的字符‘a(chǎn)’。a↙(輸入‘a(chǎn)’后,按“回車”鍵,字符才送到內(nèi)存)a(輸出變量c
的值‘a(chǎn)’)2024/12/14122注意:(1)getchar()只能接收一個字符,getchar函數(shù)收到的字符可以賦給一個字符變量或整型變量。(2)若在程序中調(diào)用getchar、putchar函數(shù),則必須在程序的開頭部分加上“包含命令”
#include<stdio.h>
或#include“stdio.h”2024/12/14123二、格式輸入與輸出(一)、printf
函數(shù)(格式輸出函數(shù))1.printf函數(shù)的一般格式為
printf(“格式控制字符串”,輸出表列)括弧內(nèi)包括兩部分:(1)“格式控制字符串”是用雙引號括起來的字符串,也稱“轉(zhuǎn)換控制字符串”,它包括兩種信息:①格式說明,由“%”和格式字符組成,如%d,%f等。它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出。格式說明總是由“%”字符開始的。②普通字符,即需要原樣輸出的字符。(2)“輸出表列”是需要輸出的一些數(shù)據(jù),可以是表達(dá)式。2024/12/14124下面是一個例子:
printf(“%d%d”,a,b);格式說明輸出表列printf(“a=%db=%d”,a,b);
格式說明輸出表列2024/12/141252.格式字符常用的有以下幾種格式字符:(1)d
格式字符。用來輸出十進(jìn)制整數(shù)。有以下幾種格式字符:①%d,按整型數(shù)據(jù)的實(shí)際長度輸出。②%md,m為指定的輸出字段的寬度。如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出。如
printf(“%4d,%4d”,a,b);
若a=123,b=12345,則輸出結(jié)果為
|__|123,12345③%ld,輸出長整型數(shù)據(jù)。如
longa=135790;printf(“%ld”,a);2024/12/14126對long型數(shù)據(jù)應(yīng)當(dāng)用%ld格式輸出。對長整型數(shù)據(jù)也可以指定字段寬度,如將上面printf函數(shù)中的“%ld”改為“%8ld”則輸出為:
|__|
|__|135790(8列)一個int型數(shù)據(jù)可以用%d或%ld格式輸出。(2)O格式符,以八進(jìn)制數(shù)形式輸出整數(shù)。由于是將內(nèi)存單元中的各位的值(0或1)按八進(jìn)制形式輸出,因此輸出的數(shù)值不帶符號,即將符號位也一起作為八進(jìn)制數(shù)的一部分輸出。例如:
inta=-1;printf(“%d,%o”,a,a);2024/12/14127
1111111111111111輸出為-1,177777對長整型數(shù)(long型)可以用“%lo”格式輸出。同樣可以指定字段寬度,如printf(“%8o”,a)輸出為|__|
|__|
177777-1在內(nèi)存單元中的存放形式(以補(bǔ)碼形式存放)如下:2024/12/14128(3)x格式符,以十六進(jìn)制數(shù)形式輸出整數(shù)。同樣不會出現(xiàn)負(fù)的十六進(jìn)制數(shù)。例如inta=-1;Printf(“%x,%o,%d”,a,a,a);輸出結(jié)果為:
ffff,177777,-12024/12/14129(4)u格式符,用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以十進(jìn)制形式輸出。(5)C格式符,用來輸出一個字符。如:
charc=‘a(chǎn)’;printf(“%c”,c);
輸出字符‘a(chǎn)’,請注意:“%c”中的c是格式符,引號右邊的c是變量名,不要搞混。一個整數(shù),只要它的值在0~255范圍內(nèi),也可以用字符形式輸出,在輸出前,系統(tǒng)會將該整數(shù)作為ASCII碼轉(zhuǎn)換成相應(yīng)的字符;反之,一個字符數(shù)據(jù)也可以用整數(shù)形式輸出。2024/12/14130(6)S格式符,用來輸出一個字符串。有幾種用法:①%s,例如:printf(“%s”,“CHINA”);輸出“CHINA”字符串(不包括雙引號)。②%ms,輸出的字符率占m列,如字符串本身長度大于m,則突破m的限制,將字符串全部輸出。若串長小于m,則左補(bǔ)空格。2024/12/14131③%-ms,如果串長小于m,則在m列范圍內(nèi),字符率向左靠,右補(bǔ)空格。④%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側(cè),左補(bǔ)空格。⑤%-m.ns,其中m、n含義同上,n個字符輸出在m
列范圍的左側(cè),右補(bǔ)空格。如果n>m,則m自動取n值,即保證n個字符正常輸出。2024/12/14132(7)f格式符,用來輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。有以下幾種用法:②%m.nf指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球3D生物打印植入物行業(yè)調(diào)研及趨勢分析報(bào)告
- 2024年軍隊(duì)文職人員招聘考試題庫二
- 2025年度旅游產(chǎn)業(yè)轉(zhuǎn)型升級個人咨詢服務(wù)協(xié)議
- 2025版文化產(chǎn)業(yè)投資合作開發(fā)協(xié)議3篇
- 2025版住宅小區(qū)物業(yè)委托維護(hù)管理協(xié)議3篇
- 二零二五年度藝術(shù)場地租賃合同中的藝術(shù)創(chuàng)作與展覽指導(dǎo)2篇
- 二零二五年度阿拉爾經(jīng)濟(jì)技術(shù)開發(fā)區(qū)環(huán)保產(chǎn)業(yè)合作開發(fā)合同3篇
- 2024版影視器材租賃合同下載
- 2025版房地產(chǎn)銷售合同標(biāo)準(zhǔn)模板
- 2024糯玉米采購協(xié)議書
- 印度與阿拉伯的數(shù)學(xué)
- 會陰切開傷口裂開的護(hù)理查房
- 《鋼鐵是怎樣煉成的》選擇題100題(含答案)
- 實(shí)驗(yàn)報(bào)告·測定雞蛋殼中碳酸鈣的質(zhì)量分?jǐn)?shù)
- 部編版小學(xué)語文五年級下冊集體備課教材分析主講
- 電氣設(shè)備建筑安裝施工圖集
- 《工程結(jié)構(gòu)抗震設(shè)計(jì)》課件 第10章-地下建筑抗震設(shè)計(jì)
- 公司法務(wù)部工作細(xì)則(草案)
- 第18課《文言文二則 鐵杵成針》(學(xué)習(xí)任務(wù)單)- 四年級語文下冊部編版
- 《功能材料概論》期末考試試卷及參考答案2023年12月
- 機(jī)器設(shè)備抵押合同
評論
0/150
提交評論