c語(yǔ)言程序設(shè)計(jì)與應(yīng)用開發(fā)課件_第1頁(yè)
c語(yǔ)言程序設(shè)計(jì)與應(yīng)用開發(fā)課件_第2頁(yè)
c語(yǔ)言程序設(shè)計(jì)與應(yīng)用開發(fā)課件_第3頁(yè)
c語(yǔ)言程序設(shè)計(jì)與應(yīng)用開發(fā)課件_第4頁(yè)
c語(yǔ)言程序設(shè)計(jì)與應(yīng)用開發(fā)課件_第5頁(yè)
已閱讀5頁(yè),還剩441頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第1章C語(yǔ)言概述本章要點(diǎn):C語(yǔ)言的發(fā)展及特點(diǎn)C語(yǔ)言程序的格式C語(yǔ)言程序的構(gòu)成C語(yǔ)言程序的基本要求C語(yǔ)言程序上機(jī)調(diào)試步驟和方法算法概述1.1C語(yǔ)言的發(fā)展及特點(diǎn)C語(yǔ)言是一種兼有匯編語(yǔ)言和高級(jí)語(yǔ)言特點(diǎn)的新語(yǔ)言,于20世紀(jì)70年代初期由貝爾實(shí)驗(yàn)室研制。C語(yǔ)言的兩個(gè)標(biāo)準(zhǔn)ANSIC和ISOCC語(yǔ)言的編譯系統(tǒng)及其版本(TurboC,BorlandC等)C++語(yǔ)言是C語(yǔ)言的擴(kuò)充和完善,是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言1.1.1C語(yǔ)言的發(fā)展1.1.2C語(yǔ)言的特點(diǎn)C語(yǔ)言的主要特點(diǎn)如下:1.具有結(jié)構(gòu)化控制語(yǔ)句如if…else、while、switch、for等語(yǔ)句2.語(yǔ)言簡(jiǎn)潔,結(jié)構(gòu)緊湊,使用方便靈活共有32個(gè)關(guān)鍵字,9條控制語(yǔ)句,書寫形式自由3.運(yùn)算豐富,數(shù)據(jù)處理能力強(qiáng)42個(gè)運(yùn)算符,表達(dá)式類型靈活多樣4.語(yǔ)言精練i+=1(i++);if(a)b;5.可移植性好與匯編語(yǔ)言相比

6.語(yǔ)言生成的代碼質(zhì)量高,程序的執(zhí)行效率高

i+=2(i=i+2);7.能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。(可寫系統(tǒng)軟件如:UNIX及應(yīng)用軟件)另:C語(yǔ)言的其他優(yōu)點(diǎn),同學(xué)們可在以后學(xué)習(xí)和實(shí)踐中體會(huì)1.2C語(yǔ)言程序的格式、構(gòu)成及其基本要求先看幾個(gè)程序:例1.1

輸出“Howareyou!”main(){printf(“Howareyou!\n”);}程序的運(yùn)行結(jié)果:Howareyou!例1.2

計(jì)算兩個(gè)給定整數(shù)的和main(){inta,b,sum;/*這是定義變量*/a=8;b=10;/*以下3行為C語(yǔ)句*/sum=a+b;printf(“Sumis%d\n”,sum);}程序的運(yùn)行結(jié)果:Sumis18例1.3:從鍵盤輸入兩個(gè)整數(shù),并將最大的數(shù)顯示出來。#include<stdio.h> /*包含預(yù)處理語(yǔ)句*/intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}main(){inta,b,c;

printf(“Pleaseinputtwointegers:\n”);scanf(“%d,%d”,&a,&b);

c=max(a,b);

printf(“max=%d\n”,c);}

程序運(yùn)行情況:Pleaseinputtwointegers:8,5max=8通過以上例子可以看出:1.C程序是由函數(shù)構(gòu)成的。每個(gè)程序由一個(gè)或多個(gè)函數(shù)組成,其中必須有且僅有一個(gè)主函數(shù)main()。函數(shù)容易實(shí)現(xiàn)程序的模塊化.2.一個(gè)可執(zhí)行的C語(yǔ)言程序總是從main函數(shù)開始執(zhí)行,而不論其在整個(gè)程序中的位置如何。3.每條語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào)(;)。說明:在以下三種情況下不允許有分號(hào):

a.所定義的函數(shù)的名稱后面不使用分號(hào);

b.在右花括號(hào)“}”后面不使用分號(hào);

c.預(yù)處理語(yǔ)句后面不使用分號(hào)。max();{……}while(i<=100){i++;s=s+i;};#include<math.h>;4.C對(duì)輸入輸出實(shí)行函數(shù)化。5.C程序書寫格式自由,一行內(nèi)可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫在多行上。6.可用/*……*/對(duì)C程序中的任何部分作注釋,注釋可以寫在程序的任何位置上,“/*”與“*/”也可不在同一行上。7.在C語(yǔ)言中,大小寫字母是有區(qū)分的(即大小寫敏感)。(C語(yǔ)言一般用小寫字母)

1.3C程序上機(jī)調(diào)試步驟和方法1.編輯:選擇適當(dāng)?shù)木庉嫵绦?將C語(yǔ)言源程序通過鍵盤輸入到計(jì)算機(jī)中,并以文件的形式存入到磁盤中(.C)2.編譯:即將源程序翻譯成機(jī)器語(yǔ)言程序的過程。編譯出來的程序稱為目標(biāo)程序(.OBJ)3.連接:編譯后生成的目標(biāo)文件經(jīng)過連接后生成最終的可執(zhí)行程序(.EXE)4.運(yùn)行:運(yùn)行是將可執(zhí)行的目標(biāo)程序投入運(yùn)行,以獲取程序的運(yùn)行結(jié)果;在操作系統(tǒng)中可以直接執(zhí)行擴(kuò)展名為(.EXE)的文件

編輯編譯

出錯(cuò)?連接出錯(cuò)?執(zhí)行結(jié)果正確?

.C源程序

.OBJ目標(biāo)程序

.EXE可執(zhí)行程序開始結(jié)束YYNYNN庫(kù)函數(shù)和其它目標(biāo)程序在TurboC運(yùn)行C程序的步驟:1.安裝TC編譯器:將:將tc的壓縮包的tc.rar文件夾復(fù)制到D盤,并解壓縮.2.運(yùn)行TC.進(jìn)入解壓縮后的tc文件夾,雙擊tc.exe(d:\tc)1.4算法要點(diǎn):了解算法的基本概念掌握程序的基本結(jié)構(gòu)程序包括:(1)對(duì)數(shù)據(jù)的描述數(shù)據(jù)結(jié)構(gòu)(2)對(duì)數(shù)據(jù)處理的描述算法算法(algorithm)是對(duì)特定問題求解步驟的一種描述。程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+編程語(yǔ)言1.4.1算法的概念算法應(yīng)該具有如下特點(diǎn):

有窮性:一個(gè)算法必須在執(zhí)行有窮步之后結(jié)束。確定性:算法的每一步必須是確切定義的。對(duì)于相同輸入必須得到相同結(jié)果。有效性:算法的每一步都是能夠?qū)崿F(xiàn)的,即可操作的。輸入:算法有零個(gè)或多個(gè)輸入。有輸出:算法執(zhí)行完畢,必須有一個(gè)或若干個(gè)輸出結(jié)果。1.4.2算法的特性1.4.3算法的表示方法(1)自然語(yǔ)言描述法(2)傳統(tǒng)的流程圖表示常用符號(hào)有:(3)N-S流程圖表示(4)偽代碼表示算法(5)計(jì)算機(jī)語(yǔ)言表示算法起止框輸入/輸出框判斷框處理框流程線連接點(diǎn)一、順序結(jié)構(gòu)

BA(a)AB(b)先執(zhí)行A操作,再執(zhí)行B操作,兩者是順序執(zhí)行關(guān)系。N-S結(jié)構(gòu)流程圖1.4.4結(jié)構(gòu)化程序設(shè)計(jì)二、選擇結(jié)構(gòu)當(dāng)P條件為真時(shí),執(zhí)行A模塊,否則執(zhí)行B模塊。APB真假(a)P真假AB(b)三、循環(huán)結(jié)構(gòu)當(dāng)P條件成立時(shí),反復(fù)執(zhí)行A,直到P為假。1.當(dāng)型循環(huán)結(jié)構(gòu)PA假真(a)當(dāng)P為真A(b)當(dāng)P為真2.直到型循環(huán)結(jié)構(gòu)先執(zhí)行A操作,再判斷P是否為假,若P為假,再執(zhí)行A,直到P為真為止。AP假真(a)A直到P為真(b)算法舉例1:對(duì)一個(gè)大于2的正整數(shù),判斷它是不是一個(gè)素?cái)?shù)。方法:將n(其中n>2)作為被除數(shù),將2到(n-1)各個(gè)整數(shù)輪流作為除數(shù),如果都不能被整除,則n為素?cái)?shù)。算法表示如下: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é)束。算法舉例2:求1-1/2+1/3–1/4+…+1/99–1/100。S1:

1signS2:1sumS3:2denoS4:(-1)*signsignS5:sign*(1/deno)termS6:sum+termsumS7:deno+1denoS8:若deno100返回S4;否則算法結(jié)束。算法舉例3:用偽代碼表示算法:用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)來描述算法

BEGIN1=>iwhile(i

50){inputni和gi

i+1=>I}

1=>iwhile(i

50){if(gi>=80)printni和gi

i+1=>i}END

算法舉例4:

用計(jì)算機(jī)語(yǔ)言表示算法

求1-1/2+1/3–1/4+…+1/99–1/100。S1:

1sS2:1sumS3:2dS4:(-1)*ssS5:s*(1/d)tS6:sum+tsumS7:d+1dS8:若d100返回S4;否則算法結(jié)束。main(){ints=1;floatd=2.0,sum=1.0,t;while(d<=100){s=-s;t=s/d;sum=sum+t;d=d+1;}printf(“%f”,sum);}242.1C語(yǔ)言的數(shù)據(jù)類型整型字符型實(shí)型(浮點(diǎn)型)枚舉類型單精度型雙精度型數(shù)組類型結(jié)構(gòu)體類型共用體類型構(gòu)造類型基本類型指針類型空類型數(shù)據(jù)類型252.2常量、變量和標(biāo)識(shí)符2.2.1標(biāo)識(shí)符C語(yǔ)言中的標(biāo)識(shí)符可以分為系統(tǒng)定義標(biāo)識(shí)符和用戶定義標(biāo)識(shí)符。系統(tǒng)定義標(biāo)識(shí)符關(guān)鍵字關(guān)鍵字是C語(yǔ)言系統(tǒng)使用的具有特定含義的標(biāo)識(shí)符,不能作為預(yù)定義標(biāo)識(shí)符和用戶定義標(biāo)識(shí)符使用。C語(yǔ)言定義了32個(gè)關(guān)鍵字,如表2.1所示。2) 預(yù)定義標(biāo)識(shí)符預(yù)定義標(biāo)識(shí)符也是具有特定含義的標(biāo)識(shí)符,包括系統(tǒng)標(biāo)準(zhǔn)函數(shù)名和編譯預(yù)處理命令等,如scanf、printf、define和include等都是預(yù)定義標(biāo)識(shí)符。

26表2.1C語(yǔ)言中的關(guān)鍵字autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile關(guān)鍵字必須用小寫字母;不允許使用關(guān)鍵字為變量、數(shù)組和函數(shù)等操作對(duì)象命名。

272.用戶定義標(biāo)識(shí)符用戶定義標(biāo)識(shí)符用于對(duì)用戶使用的變量、數(shù)組和函數(shù)等操作對(duì)象進(jìn)行命名。例如將一個(gè)變量命名為a,將一個(gè)數(shù)組命名為date,將一個(gè)函數(shù)命名為fun等。用戶標(biāo)識(shí)符命名時(shí)要注意:

(1) C語(yǔ)言對(duì)英文字母的大小寫敏感,即同一字母的大小寫被認(rèn)為是兩個(gè)不同的字符。例如total與TOTAL是不同的標(biāo)識(shí)符。

(2) 標(biāo)識(shí)符必須由字母或下劃線開頭,并且除了字母、數(shù)字和下劃線外,不能含有其他字符。

(3) 標(biāo)識(shí)符的命名要見名知意,即通過變量名就知道變量值的含義。

(4) 標(biāo)識(shí)符的有效長(zhǎng)度隨系統(tǒng)而異,但至少前8個(gè)字符有效。如果超長(zhǎng),則超長(zhǎng)部分被舍棄。282.2.2常量1.定義:在程序執(zhí)行期間,其值不可改變的量稱為常量2.類型:數(shù)值常量例如:5,-10,3.14等符號(hào)常量即用一個(gè)符號(hào)代表一個(gè)常量例2.1用標(biāo)識(shí)符代表常量。#definePI3.1415926main(){

floats,r;

r=5;

s=PI*r*r;

printf("%f",s);}29說明:符號(hào)常量必須先定義后才能用它表示一個(gè)數(shù)值。符號(hào)常量的值在其作用域內(nèi)不能改變,也不能再被賦值。符號(hào)常量名習(xí)慣用大寫字母表示。302.2.3變量1.變量概念:程序執(zhí)行期間值可以改變的量。

命名規(guī)則:

變量名由標(biāo)識(shí)符表示,只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。例如:以下為不合法的變量名:

M.D.Jess,1add,age&,5th,lotus-1-2-3,cd*ef,int2.變量的定義要使用變量,必須為變量命名。變量名是用戶自己定義的標(biāo)識(shí)符,習(xí)慣上由小寫字母組成。變量定義的一般格式為:數(shù)據(jù)類型標(biāo)識(shí)符變量名1,變量名2,…,變量名n;

inta;

/*定義了整型變量a*/313.變量的初始化C語(yǔ)言允許在定義變量的同時(shí)給變量賦值,這稱為變量的初始化。變量初始化的一般格式為:數(shù)據(jù)類型標(biāo)識(shí)符變量名1=初值1,變量名2=初值2,…,變量名n=初值n;C語(yǔ)言允許在定義變量的同時(shí)初始化變量,如:int a=2; /*指定a為整型變量,初值為2*/float f=3.45; /*指定f為實(shí)型變量,初值為3.45*/char c=‘A'; /*指定c為字符變量,初值‘A'*/也可以使被定義的變量的一部分賦初值,如:inta=1,b=-3,c;32在C語(yǔ)言中,變量必須強(qiáng)制定義,其目的是:1、凡未被事先定義的,不作為變量名。2、每一個(gè)變量被指定為一確定的類型,在編譯時(shí)就能為其分配相應(yīng)的存儲(chǔ)單元。3、指定每一個(gè)變量為一確定的類型,在編譯時(shí)據(jù)此檢查該變量所進(jìn)行的運(yùn)算是否合法。*選變量名時(shí),要做到“見名知意”例如:namest_agexmnlclasssum*大小寫字母是兩個(gè)不同的字符,C變量名習(xí)慣用小寫字母表示。*建議變量名的長(zhǎng)度不要超過8個(gè)字符。注意:332.3整型數(shù)據(jù)2.3.1整型常量1.整型常量的形式十進(jìn)制整數(shù):由數(shù)字(0-9)和正負(fù)號(hào)表示

例如:123、-456、0等八進(jìn)制整數(shù):以0開頭數(shù)是八進(jìn)制數(shù)例如:

0123即(123)8=(83)10(123)8=182+281+380=(83)10十六進(jìn)制整數(shù):以0x或0X開頭,例如:

0x123即(123)16=(291)10main(){inta=0123;b=0x123; /*0123是八進(jìn)制數(shù),0x123是十六進(jìn)制*/printf("a=%d,b=%d",a,b);}程序運(yùn)行結(jié)果為:a=83,b=291342.整型常量的類型我們已知整型變量可分為int、shortint、1ongint和unsignedint、unsignedshort、unsignedlong等類別。(1) 一個(gè)整常量,如果其值在-32768~+32767范圍內(nèi),則認(rèn)為它是int型??梢詫⑺x值給int型和1ongint型變量。一個(gè)整常量,如果其值超過了上述范圍,而在-2147483648~2147483647范圍內(nèi),則認(rèn)為它是1ongint型。(3) 如果某一計(jì)算機(jī)系統(tǒng)的C版本確定的shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長(zhǎng)度相同,則它的表示范圍與int型相同。(4) 常量中無unsigned型,但一個(gè)非負(fù)值的整常量可以賦值給unsigned型整變量,只要它的范圍不超過變量的表示范圍即可。(5) 在一個(gè)整常量后面加一個(gè)字母l或L則認(rèn)為是1ongint型常量,例如123l、432L,這往往用于函數(shù)調(diào)用中。352.3.2整型變量的分類

基本型:以int

表示短整型:以shortint

或short

表示

1.類型長(zhǎng)整型:以longint

或long

表示

(123l、123L)無符號(hào)基本型(unsignedint)

無符號(hào)型無符號(hào)短整型(unsignedshort)

無符號(hào)長(zhǎng)整型(unsignedlong)(-32768~32767)一個(gè)無符號(hào)整型變量中可以存放的正數(shù)的范圍比一般整型變量中正數(shù)的范圍擴(kuò)大一倍。inti;/*變量i的數(shù)值范圍:-32768~32768*/unsignedintj;/*變量j的數(shù)值范圍:0~65535*/1.整型變量的類型36

整型變量的字長(zhǎng)short型∶字長(zhǎng)16位(2個(gè)字節(jié))。long型∶字長(zhǎng)32位(4個(gè)字節(jié))。int型∶隨編譯程序而定(可以是2個(gè)字節(jié),也可以是4個(gè)字節(jié))C要求long型數(shù)據(jù)長(zhǎng)度不短于int型,

short型不長(zhǎng)于int型。(short<=int<=long)long型可以得到大范圍的數(shù)據(jù),但同時(shí)會(huì)降低運(yùn)算速度,因此除非不得已,不要隨便使用long型。37整型數(shù)據(jù)的溢出:main(){inta,b;a=32767;b=a+1;printf(“”%d,%d”,a,b);}運(yùn)行結(jié)果:32767,-32767改進(jìn):將變量a和b改成long型,并按%ld格式輸出。382.整型變量的定義前面已提到,C規(guī)定在程序中所有用到的變量都必須在程序中指定其類型,即“定義”。這是和BASIC、FORTRAN不同的,而和PASCAL相類似。例如:inta,b; /*指定變量a,b為整型*/unsignedshortc,d; /*指定變量c,d為無符號(hào)短整型*/1onge,f; /*指定變量e,f為長(zhǎng)整型*/對(duì)變量的定義,一般是放在一個(gè)函數(shù)的開頭部分(也可以放在程序中間,但作用域只限于某一部分程序)。

例2.4整型變量的定義與使用。main(){inta,b,c,d; /*指定a,b,c,d為整型變量*/unsignedu; /*指定u為無符號(hào)整型變量*/a=20;b=-40;u=10;c=a+u;d=b+u;printf("c=%dd=%d",c,d);}運(yùn)行結(jié)果為:c=30,d=-30392.4實(shí)型數(shù)據(jù)2.4.1實(shí)型常量1.實(shí)型常量的形式(兩種):

十進(jìn)制數(shù)形式:由數(shù)字和小數(shù)點(diǎn)及正負(fù)號(hào)組成。

(注意:必須有小數(shù)點(diǎn))

例如:3.148.6-23.

指數(shù)形式:由數(shù)字、小數(shù)點(diǎn)、字母e或E及正負(fù)號(hào)組成。

(注:e或E之前必須有數(shù)字,且后指數(shù)必須為整數(shù))例如:正確:3.5E-52e3錯(cuò)誤:E23.6e3.5.e62.實(shí)型常量的類型多數(shù)C編譯系統(tǒng)對(duì)實(shí)型常量按雙精度(double)類型處理,以提高運(yùn)算精度。此時(shí)系統(tǒng)為實(shí)型常量分配8個(gè)字節(jié)的存儲(chǔ)空間。如果在實(shí)型常量后加字母f或F,則強(qiáng)調(diào)表示該數(shù)是float型常量,這時(shí)系統(tǒng)會(huì)為其分配4個(gè)字節(jié)的存儲(chǔ)空間。402.4.2實(shí)型變量實(shí)型變量可分為:

單精度(float型)如:floatx,y;

雙精度型(double型)如:doublea,b,c;說明:1.float型變量在內(nèi)存中占4個(gè)字節(jié);double型變量在內(nèi)存中占8個(gè)字節(jié)。2.單精度實(shí)數(shù)提供7位有效數(shù)字;雙精度實(shí)數(shù)提供15~16位有效數(shù)字。3.一個(gè)實(shí)型常量不分float和

double型,一個(gè)實(shí)型常量可以賦給一個(gè)float型或

double型變量,并根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效位數(shù)字。

例如:

floata;doubleb;a=123456.789e5;b=123456.789;

413.5字符型數(shù)據(jù)3.5.1字符常量

1.字符常量:用單引號(hào)括起來的一個(gè)字符。例如:‘a(chǎn)’‘B’‘#’‘!’2.轉(zhuǎn)義字符:指不能用符號(hào)直接表示的字符常量。將反斜杠(\)后面的字符轉(zhuǎn)變成另外的意義。

如‘\n’中的“n”不代表字母n而作為“換行”符。例如:‘\n’換行‘\t’橫向跳格(水平制表)‘\b’退格‘\v’豎向跳格(垂直制表)‘\r’回車‘\f’走紙換頁(yè)‘\a’報(bào)警‘\0’空字符main(){printf("Y\b=\n");}運(yùn)行結(jié)果:程序運(yùn)行時(shí)在屏幕上顯示結(jié)果:=程序運(yùn)行時(shí)在打印機(jī)上輸出結(jié)果:¥

42

注意:字符常量首尾的單引號(hào)是定界符,不占存儲(chǔ)空間。在C語(yǔ)言中,‘a(chǎn)’和a是不同的。前者代表字符常量,后者代表一個(gè)標(biāo)識(shí)符。‘a(chǎn)’和‘A’是不同的字符常量。前者存儲(chǔ)的是小寫字母a的ASCII碼值為97,后者存儲(chǔ)的是大寫字母A的ASCII碼值為65。轉(zhuǎn)義字符代表一個(gè)字符,在內(nèi)存中只占一個(gè)字節(jié)的存儲(chǔ)空間。轉(zhuǎn)義字符‘\0’就是ASCII碼值為0的字符,常用于表示字符串結(jié)束的標(biāo)志符?!甛ddd’形式的轉(zhuǎn)義字符是用ASCII碼(八進(jìn)制數(shù))表示的一個(gè)字符,例如‘\101’代表字符‘A’,‘012’代表“換行”?!甛xhh’形式的轉(zhuǎn)義字符也代表一個(gè)字符,反斜杠后必須以小寫字母x開頭,后面的兩位數(shù)字為十六進(jìn)制數(shù)。例如,‘\xa’和‘\xA’都代表回車換行符,等價(jià)于轉(zhuǎn)義字符‘\n’。433.5.2字符變量定義形式:char

標(biāo)識(shí)符1,標(biāo)識(shí)符2,…,標(biāo)識(shí)符n

例如:charc1,c2,c3,ch;c1=‘a(chǎn)’;c2=‘b’;c3=‘c’;ch=‘d’;說明:1、字符變量在內(nèi)存中占一個(gè)字節(jié)。2、在內(nèi)存中,是把字符對(duì)應(yīng)的ASCII碼值放到存儲(chǔ)單元中.3、字符型數(shù)據(jù)與整型數(shù)據(jù)之間可以通用.44main(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}輸出結(jié)果:ab9798main(){inti;charc;i=‘a(chǎn)’;c=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}輸出結(jié)果:a,97a,97452.5.3字符串常量1.定義:括在一對(duì)雙引號(hào)之內(nèi)的字符序列或轉(zhuǎn)義字符序列稱為字符串常量。例如:“Howareyou!”“a”“*abc\n\t”2.存儲(chǔ):字符串中的字符依次存儲(chǔ)在內(nèi)存中一塊連續(xù)的區(qū)域內(nèi),并且把空操作字符‘\0’自動(dòng)附加到字符串的尾部作為字符串的結(jié)束標(biāo)志。故字符個(gè)數(shù)為n的字符串在內(nèi)存中應(yīng)占n+1個(gè)字節(jié)。例:c=“china”

china\046‘b’與‘B’是否相同?‘b’與“b”是否相同?b為98,B為66'b'是字符常量,“b"是字符串常量思考?注意:字符串常量首尾的雙引號(hào)是定界符,不屬于字符串的內(nèi)容。如果字符串本身包括了雙引號(hào)或反斜杠,必須使用轉(zhuǎn)義字符。不要將字符常量與字符串常量混淆,‘a(chǎn)’是字符常量,“a”是字符串常量,二者不同。前者只占一個(gè)字節(jié)的存儲(chǔ)空間,存放字符‘a(chǎn)’的ASCII碼值;后者占兩個(gè)字節(jié)的存儲(chǔ)空間,分別存放字符‘a(chǎn)’和字符串結(jié)束標(biāo)志‘\0’。字符串常量中包含轉(zhuǎn)義字符時(shí),一定要注意其長(zhǎng)度的計(jì)算。在寫字符串時(shí)不必加‘\0’,字符‘\0’是系統(tǒng)自動(dòng)加上的。

472.6算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.6.1基本的算術(shù)運(yùn)算符和算術(shù)表達(dá)式1.基本的算術(shù)運(yùn)算符

在C語(yǔ)言中,基本的算術(shù)運(yùn)算符有5個(gè):

+(加法運(yùn)算符,正值運(yùn)算符),-(減法運(yùn)算符,負(fù)值運(yùn)算符),*(乘法運(yùn)算符),/(除法運(yùn)算符),%(模運(yùn)算符)

注意:除法運(yùn)算符“/”的運(yùn)算對(duì)象可以是各種類型的數(shù)據(jù),但是當(dāng)進(jìn)行兩個(gè)整型數(shù)據(jù)相除時(shí),運(yùn)算結(jié)果也是整型數(shù)據(jù),即只取商的整數(shù)部分;而操作數(shù)中有一個(gè)為實(shí)型數(shù)據(jù)時(shí),則結(jié)果為雙精度實(shí)型數(shù)據(jù),即double型。例如,5.0/10的運(yùn)算結(jié)果是0.5,5/10的運(yùn)算結(jié)果是0,而不是0.5,10/4的運(yùn)算結(jié)果是2。求余運(yùn)算符“%”要求運(yùn)算對(duì)象必須是整型操作數(shù),它的功能是求兩個(gè)操作數(shù)相除的余數(shù),余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同。例如,11%3的值為2,-11%3的值為-2,2%-5的值為2。

482.算術(shù)表達(dá)式

算術(shù)表達(dá)式是指用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(也稱操作數(shù),如常量、變量、函數(shù)等)連接起來、符合C語(yǔ)法規(guī)則的式子,如:

a*b/c-1.5+'a'

在算術(shù)表達(dá)式中,運(yùn)算對(duì)象可以是各種類型的數(shù)據(jù),包括整型、實(shí)型或字符型的常量、變量及函數(shù)調(diào)用。

2.6.2算術(shù)運(yùn)算符的優(yōu)先級(jí)、結(jié)合性

在5個(gè)算術(shù)運(yùn)算符中,*、/和%的優(yōu)先級(jí)相同且高于+、-。當(dāng)運(yùn)算符的優(yōu)先級(jí)相同的情況下,這5個(gè)運(yùn)算符的結(jié)合方向?yàn)閺淖笾劣?先左后右,簡(jiǎn)稱左結(jié)合)。例:

a-b+c

由于算術(shù)運(yùn)算符為左結(jié)合,故先執(zhí)行a-b,再執(zhí)行加c的運(yùn)算。492.7賦值運(yùn)算符和賦值表達(dá)式2.7.1基本賦值運(yùn)算符(=)形式:變量名=常量或表達(dá)式作用:將右邊常量或表達(dá)式的值賦給左邊的變量例如:

b=c+d

賦值符號(hào)“=”就是賦值運(yùn)算符,它的作用是將一個(gè)數(shù)據(jù)賦給一個(gè)變量。如x=5的作用是執(zhí)行一次賦值操作,將常量5賦給變量x。結(jié)合方向:從右向左。例如:“a=b=c=10;”等價(jià)于“a=(b=(c=10));”即先將常量10賦給變量c,然后再將10賦給變量b,最后將10賦給變量a。注意:如果表達(dá)式類型與左邊的變量的類型不匹配,自動(dòng)進(jìn)行類型轉(zhuǎn)換。

502.7.2復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符:在賦值符“=”之前加上其它運(yùn)算符共有10種復(fù)合賦值運(yùn)算符

+=,-=,*=,/=,%= /*復(fù)合算術(shù)運(yùn)算符5個(gè)*/&=,^=,|=,<<=,>>= /*復(fù)合位運(yùn)算符5個(gè)*/例如:a+=3a=a+3x*=y+3x=x*(y+3)注意,a=a+b如果b是包含若干項(xiàng)的表達(dá)式,則相當(dāng)于它有括號(hào)。如:x%=y+3x%=(y+3)x=x%(y+3) /*不要寫成x=x%y+3*/

512.8逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式1.逗號(hào)運(yùn)算符:即“,”優(yōu)先級(jí):為所有運(yùn)算符中級(jí)別最低的。2.逗號(hào)表達(dá)式形式:表達(dá)式1,表達(dá)式2,……,表達(dá)式n

求解過程:順次求解表達(dá)式1,表達(dá)式2……

最后求解表達(dá)式n。逗號(hào)表達(dá)式的值為表達(dá)式n的值。例如:a=3*4,a*5

a=3*4,a*5,a+5注意:并不是任何地方出現(xiàn)的逗號(hào)都是作為逗號(hào)運(yùn)算符,函數(shù)參數(shù)也是用逗號(hào)來間隔的6017522.9自增運(yùn)算符、自減運(yùn)算符及C語(yǔ)言運(yùn)算符的優(yōu)先級(jí)2.9.1自增運(yùn)算符

自增運(yùn)算符(++)是單目運(yùn)算符,其作用是使單個(gè)變量的值增1。自增運(yùn)算符種類有兩種:前置++i,先執(zhí)行i+1,再使用i值;后置i++,先使用i值,再執(zhí)行i+1。例如:

j=3;k=++j;則k=4,j=4;

j=3;k=j++;則k=3,j=4。532.9.2自減運(yùn)算符

自減運(yùn)算符(--)是單目運(yùn)算符,其作用是使單個(gè)變量的值減1。自減運(yùn)算符種類也有兩種:前置--i,先執(zhí)行i-1,再使用i值;后置i--,先使用i值,再執(zhí)行i-1。

例如:

j=3;k=--j;則k=2,j=2;

j=3;k=j--;則k=3,j=2。注意:自增運(yùn)算符(++)、自減運(yùn)算符(--),只能用于變量,不能用于常量和表達(dá)式。例如,5++、--(a+b)等都是非法的。++和--的結(jié)合方向是“自右至左”,其優(yōu)先級(jí)高于算術(shù)運(yùn)算符。例如i=3,-i++相當(dāng)于-(i++),因此表達(dá)式的值為-3,i=4。自增運(yùn)算符、自減運(yùn)算符,常用于循環(huán)語(yǔ)句中,使循環(huán)控制變量加(或減)1,以及指針變量中,使指針指向下(或向上)一個(gè)地址。542.9.3C語(yǔ)言運(yùn)算符的優(yōu)先級(jí)與結(jié)合性C的運(yùn)算符有以下幾類。(1) 算術(shù)運(yùn)算符 (+-*/%)(2) 關(guān)系運(yùn)算符 (><==>=<=!=)(3) 邏輯運(yùn)算符 (?。Γ|)(4) 位運(yùn)算符 (<<>>~|^&)(5) 賦值運(yùn)算符 (=及其擴(kuò)展賦值運(yùn)算符)(6) 條件運(yùn)算符 (?:)(7) 逗號(hào)運(yùn)算符 (,)(8) 指針運(yùn)算符 (*和&)(9) 求字節(jié)數(shù)運(yùn)算符 (sizeof)(10) 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 (類型)(11) 分量運(yùn)算符 (.->)(12) 下標(biāo)運(yùn)算符 ([])(13) 其他(如函數(shù)調(diào)用運(yùn)算符())55

C語(yǔ)言規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。運(yùn)算符的優(yōu)先級(jí)別從高到低依次為:初等運(yùn)算符,如()、[]、->、.;單目運(yùn)算符,如!、~、++、--、*(指針)、&、(類型);算術(shù)運(yùn)算符(先乘除,后加減);關(guān)系運(yùn)算符;邏輯運(yùn)算符(不包括!);條件運(yùn)算符;賦值運(yùn)算符;逗號(hào)運(yùn)算符。所謂結(jié)合性是指,當(dāng)一個(gè)操作數(shù)兩側(cè)的運(yùn)算符具有相同的優(yōu)先級(jí)時(shí),該操作數(shù)是先與左邊的運(yùn)算符結(jié)合,還是先與右邊的運(yùn)算符結(jié)合。自左至右的結(jié)合方向,稱為左結(jié)合性;反之,稱為右結(jié)合性。結(jié)合性是C語(yǔ)言的獨(dú)有概念。除單目運(yùn)算符、賦值運(yùn)算符和條件運(yùn)算符是右結(jié)合性外,其他運(yùn)算符都是左結(jié)合性。562.10不同類型數(shù)據(jù)間的混合運(yùn)算1.隱式類型轉(zhuǎn)換

隱式類型轉(zhuǎn)換主要又可分為兩類:算術(shù)轉(zhuǎn)換和賦值轉(zhuǎn)換。

(1) 算術(shù)轉(zhuǎn)換

當(dāng)表達(dá)式中的運(yùn)算對(duì)象不同時(shí),系統(tǒng)會(huì)進(jìn)行類型的自動(dòng)轉(zhuǎn)換。轉(zhuǎn)換的基本原則是:自動(dòng)將精度低、表示范圍小的運(yùn)算對(duì)象類型向精度高、表示范圍大的運(yùn)算對(duì)象轉(zhuǎn)換。

(2) 賦值轉(zhuǎn)換

賦值轉(zhuǎn)換主要出現(xiàn)在賦值表達(dá)式中,不管賦值運(yùn)算符右邊是什么類型,都要轉(zhuǎn)換為賦值運(yùn)算符左邊的類型。若賦值運(yùn)算符右邊的值表示范圍更大,則左邊賦值所得到的值將失去右邊數(shù)據(jù)的精度。572.強(qiáng)制類型轉(zhuǎn)換C語(yǔ)言提供了強(qiáng)制類型轉(zhuǎn)換運(yùn)算符來實(shí)現(xiàn)強(qiáng)制類型轉(zhuǎn)換。

格式:

(類型)表達(dá)式例如:(int)3.5注意:在進(jìn)行類型轉(zhuǎn)換時(shí),操作數(shù)的值并不發(fā)生改變,改變的只是表達(dá)式值的類型。例如:floatx=3.5;i=(int)x;/*i的值為3*/使用強(qiáng)制轉(zhuǎn)換類型得到的是一個(gè)所需類型的中間量,原表達(dá)式類型并不發(fā)生變化。例如,(double)a只是將變量a的值轉(zhuǎn)換成一個(gè)double型的中間量,其數(shù)據(jù)類型并未轉(zhuǎn)換成double型。(int)(x+y);/*將x+y的值轉(zhuǎn)換為int類型*/(int)x+y;/*將x的值轉(zhuǎn)換為int類型,再與y相加*/3.1C語(yǔ)句概述一、C程序結(jié)構(gòu)C程序源程序文件1源程序文件2源程序文件n??????預(yù)處理命令全局變量聲明函數(shù)1函數(shù)n??????函數(shù)首部函數(shù)體局部變量聲明執(zhí)行語(yǔ)句二、C語(yǔ)句概述C語(yǔ)句分類:

1.控制語(yǔ)句

2.函數(shù)調(diào)用語(yǔ)句

3.表達(dá)式語(yǔ)句

4.空語(yǔ)句

5.復(fù)合語(yǔ)句

一條完整的C語(yǔ)句必須以“;”結(jié)束。“;”是一個(gè)語(yǔ)句不可缺少的一部分。1.控制語(yǔ)句:完成一定的控制功能。C有9種控制語(yǔ)句:⑴if()~else~(條件語(yǔ)句)⑵for()~(循環(huán)語(yǔ)句)⑶while()~(循環(huán)語(yǔ)句)⑷do~while()(循環(huán)語(yǔ)句)⑸continue(結(jié)束本次循環(huán)語(yǔ)句)⑹break(中止執(zhí)行switch或循環(huán)語(yǔ)句)⑺switch(多分支選擇語(yǔ)句)⑻goto(轉(zhuǎn)向語(yǔ)句)⑼return(從函數(shù)返回語(yǔ)句)2.函數(shù)調(diào)用語(yǔ)句

由一次函數(shù)調(diào)用加一個(gè)“;”構(gòu)成。如:printf(“HelloWorld!”);函數(shù)調(diào)用分號(hào)3.表達(dá)式語(yǔ)句

由表達(dá)式加上“;”構(gòu)成。如:x+4*y;算術(shù)表達(dá)式語(yǔ)句

4*7,4+8;逗號(hào)表達(dá)式語(yǔ)句

x=4*7;賦值表達(dá)式語(yǔ)句(賦值語(yǔ)句)4.空語(yǔ)句

由一個(gè)“;”構(gòu)成。即:;

作用:①程序轉(zhuǎn)向點(diǎn);②什么也不做的循環(huán)體。while(i<=11);5.復(fù)合語(yǔ)句

用{}括起的一組語(yǔ)句。如:if(x1>x2){y=x1*x1+x2;printf("y=%d",y);}不能省略不能加“;”

說明:(1)復(fù)合語(yǔ)句中的每一個(gè)語(yǔ)句還可以是復(fù)合語(yǔ)句;

(2)復(fù)合語(yǔ)句盡管可由多個(gè)語(yǔ)句組合,但它只相當(dāng)于一個(gè)語(yǔ)句,在任何單一語(yǔ)句可以存在的地方,復(fù)合語(yǔ)句都可以存在。

(3)在復(fù)合語(yǔ)句內(nèi),不僅可以有執(zhí)行語(yǔ)句,還可以有定義部分,定義部分應(yīng)該出現(xiàn)在可執(zhí)行語(yǔ)句的前面。3.2數(shù)據(jù)的輸出一、數(shù)據(jù)輸入輸出的概念計(jì)算機(jī)的輸入輸出是以計(jì)算機(jī)主機(jī)為主體而言。輸入:從外部通過輸入設(shè)備(如,鍵盤、磁盤、光盤、掃描儀等)向計(jì)算機(jī)輸入數(shù)據(jù)。輸出:從計(jì)算機(jī)向外部設(shè)備(如,顯示屏、打印機(jī)、磁盤等)輸出數(shù)據(jù)。二、數(shù)據(jù)輸入輸出在C語(yǔ)言中的實(shí)現(xiàn)1.調(diào)用輸入輸出函數(shù)實(shí)現(xiàn)輸入輸出操作

C語(yǔ)言本身不提供輸入輸出語(yǔ)句,輸入和輸出操作是通過調(diào)用C語(yǔ)言庫(kù)函數(shù)中輸入輸出函數(shù)來實(shí)現(xiàn)的。如:putchar函數(shù)——輸出字符

getchar函數(shù)——輸入字符

printf函數(shù)——格式輸出

scanf函數(shù)——格式輸入

puts函數(shù)——輸出字符串

gets函數(shù)——輸入字符串1、C語(yǔ)言庫(kù)函數(shù)已被編譯成目標(biāo)文件(二進(jìn)制形式)2、源程序必須先編譯成目標(biāo)文件。源程序中的輸入輸出函數(shù)等庫(kù)函數(shù),在編譯時(shí)并不被翻譯成目標(biāo)指令。3、生成好的目標(biāo)文件(.OBJ)必須與與系統(tǒng)的函數(shù)庫(kù)(以及其他的目標(biāo)文件)進(jìn)行連接,,形成可執(zhí)行文件(EXE)4、運(yùn)行EXE文件時(shí),調(diào)用已被連接的函數(shù)庫(kù)中的系統(tǒng)函數(shù)。2.文件開頭應(yīng)有“#include”命令

在調(diào)用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí),文件開頭應(yīng)有預(yù)編譯命令:

#include<stdio.h>

或#include“stdio.h”

其中,stdio.h是“頭文件”,包含了與用到的標(biāo)準(zhǔn)輸入輸出函數(shù)有關(guān)的信息。

系統(tǒng)允許在使用printf和scanf兩個(gè)函數(shù)時(shí)可不加“#include”命令。3.3字符數(shù)據(jù)的輸入與輸出一、putchar函數(shù)(字符輸出函數(shù))一般格式:putchar(c)必須有預(yù)編譯命令∶#include<stdio.h>功能∶從終端輸出一個(gè)字符,且轉(zhuǎn)換成ASCII

碼返回。說明:其中c可以是字符型常量、字符型變量、整型常量、整型變量表達(dá)式。一、putchar函數(shù)(字符輸出函數(shù))例:#include<stdio.h>main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\’’);}輸出結(jié)果:BOY’#include”stdio.h”main(){charc;c=getchar();putchar(c);}a例:一般格式:getchar()——沒有參數(shù)必須有預(yù)編譯命令∶#include<stdio.h>功能∶從終端輸入一個(gè)字符。a二、getchar函數(shù)(字符輸入函數(shù))3.5格式輸入輸出函數(shù)printf();scanf();格式字符說明d,i用來輸入有符號(hào)的十進(jìn)制整數(shù)u用來輸入無符號(hào)的十進(jìn)制整數(shù)o用來輸入無符號(hào)的八進(jìn)制整數(shù)x,X用來輸入無符號(hào)的十六進(jìn)制整數(shù)c用來輸入單個(gè)字符s用來輸入字符串f用來輸入實(shí)數(shù)(小數(shù)或指數(shù))e,E,g,G與f作用相同,e與f,g可以互相替換4.5.1printf函數(shù)(格式輸出函數(shù))功能:向終端輸出若干個(gè)任意類型的數(shù)據(jù)。(一)printf函數(shù)的一般格式printf(格式控制,輸出表列)如果在printf函數(shù)調(diào)用之后加上“;”,就構(gòu)成了輸出語(yǔ)句。例如:printf("a=%d,b=%d",a,b);舉例:main(){inta=3,b=4;printf(“a=%db=%d\n”,a,b);}輸出結(jié)果:a=3b=4格式說明(格式字符)普通字符輸出表列轉(zhuǎn)義字符main(){charc1=‘a(chǎn)’,c2=‘b’,c3=‘c’,c4=‘101’,c5=‘116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c%c”,c4,c5);}aabbccabcAN(二)格式字符

對(duì)不同類型的數(shù)據(jù)用不同的格式字符。1.d格式符——用來輸出十進(jìn)制整數(shù)。(1)%d:按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出。如:inta=123;printf(“%d”,a);

結(jié)果:123(2)%md:m為指定的輸出字段的寬度。若數(shù)據(jù)位數(shù)小于m,則左端補(bǔ)以空格;若大于

m,則按實(shí)際位數(shù)輸出。(3)%ld:輸出長(zhǎng)整型數(shù)據(jù)。也可以對(duì)長(zhǎng)整型數(shù)據(jù)指定字段寬度。2.o格式符——以8進(jìn)制數(shù)形式輸出整數(shù).

輸出的數(shù)值不帶符號(hào),即將符號(hào)也一起作為八進(jìn)制數(shù)的一部分輸出。

如:inta=-1;printf(“%d,%o”,a,a);

結(jié)果:-1,177777

o格式符同d格式符一樣,可以輸出長(zhǎng)整型數(shù)據(jù),也可以指定字段寬度。11111111111111113.x格式符——以16進(jìn)制數(shù)形式輸出整數(shù)。同樣不會(huì)出現(xiàn)負(fù)的十六進(jìn)制數(shù)。4.u格式符——以十進(jìn)制形式輸出unsigned型數(shù)據(jù)如:main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}輸出結(jié)果:a=-1,177777,ffff,65535b=-2,177776,fffe,655345.

C格式符——用來輸出一個(gè)字符。

一個(gè)整數(shù),只要它的值在0~255范圍內(nèi),也可以用字符形式輸出,在輸出前,將該整數(shù)轉(zhuǎn)換成相應(yīng)的ASCII字符;反之,一個(gè)字符數(shù)據(jù)也可以用整數(shù)形式輸出。如:main(){charc=‘a(chǎn)’;inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}

輸出結(jié)果:a,97a,976.s格式符——用來輸出一個(gè)字符串。(1)%s:按原長(zhǎng)度輸出字符串。如:printf(“%s”,“CHINA”)

輸出結(jié)果:CHINA(2)%ms:輸出的字符串占m列,如字符串本身長(zhǎng)度大于m,則突破m的限制,將字符串全部輸出,若串長(zhǎng)小于m,則左補(bǔ)空格。(3)%–ms:如果串長(zhǎng)小于m,則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格。(4)%m.ns:輸出占m列,但只取字符串中左端n個(gè)字符。輸出在列的右側(cè),左補(bǔ)空格。如果n>m,則自動(dòng)取值,即保證個(gè)字符正常輸出。(5)%–m.ns,其中m、n含義同上,n個(gè)字符輸出在m列范圍的左側(cè),右補(bǔ)空格。如:printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);輸出結(jié)果:CHINA,CH,CHIN,CHI7.f格式符——以小數(shù)形式輸出實(shí)數(shù)。(1)%f:不指定字段寬度,由系統(tǒng)自動(dòng)指定,使整數(shù)部分全部如數(shù)輸出,并輸出6位小數(shù)。注意float型和double型數(shù)據(jù)的有效位數(shù),如:floatx=123456.123;printf(“%f”,x);

輸出結(jié)果:123456.125000main(){doublex,y;x=1111111111111.111111111;y=1111111111111.111111111;printf(“%f”,x+y);}2222222222222.222170(2)%m.nf:指定輸出的數(shù)據(jù)共占m列,其中有n

位小數(shù)。若數(shù)據(jù)長(zhǎng)度小于m,則左端補(bǔ)空格。(3)%–m.nf:與%m.nf基本相同,只是使輸出的數(shù)值向左端靠,右端補(bǔ)空格。如:floatf=123.456;printf(“%10.2f,%-10.2f”,f);

輸出結(jié)果:

123.46,123.468.e格式——以指數(shù)形式輸出實(shí)數(shù)。

(1)%e如:printf(“%e”,123.456);

輸出結(jié)果:1.234560e+0026位3位一般共占13列寬度(2)%m.ne和%–m.ne:m、n和“–”字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分(又稱尾數(shù))

的小數(shù)位數(shù)。9.g格式符——用來輸出實(shí)數(shù),它根據(jù)數(shù)值的大小,自動(dòng)選f格式或e格式(選擇輸出時(shí)占寬度較小的一種),且不輸出無意義的零。如:f=123.468;

printf(“%f,%e,%g”,f,f,f);輸出如下:123.468000,1.234680e+002,123.46810列13列如:f=123.468;

printf(“%f,%e,%g”,f,f,f);輸出如下:123.468000,1.234680e+002,123.46810列二、scanf函數(shù)(格式輸入函數(shù))(一)scanf(格式控制,地址表列)1015main(){inta,b,c;scanf(“%d,%d”,&a,&b);printf(“a=%d,b=%d”,a,b);輸入:10,15輸出:a=10,b=15ab如:inta,b,c;scanf(“%d%d%d”,&a,&b,&c);輸入形式:1017181inta,b,c;scanf(“%d,%d,%d\n”,&a,&b,&c);輸入形式:10,11,12

scanf(“%3d%3d%c”,&a,&b,&ch);

輸入形式:123456abc

結(jié)果:a=123b=456ch=‘a(chǎn)’scanf(“%d%d%c”,&a,&b,&ch);

輸入形式:123456abc

結(jié)果:a=123b=456ch=‘a(chǎn)’main(){charc1,c2;scanf(“c1=%c,c2=%c”,&c1,&c2);printf(“%c%c”,c1,c2);}輸入數(shù)據(jù):c1=a,c2=b輸出數(shù)據(jù):abmain(){intx,y,z;charch;scanf(“%7.2d%d%d%c”,x,y,z,ch);}main(){intx,y;scanf(“%5d,%3d”,&x,&y);}輸入數(shù)據(jù):345,567

有錯(cuò)嗎?1.%后的“*”附加說明符,用來表示跳過它相應(yīng)的數(shù)據(jù)。如:scanf(“%2d,%*3d,%2d”,&a,&b);

輸入:12,456,67

結(jié)果:a=12b=672.輸入數(shù)據(jù)時(shí)不能規(guī)定精度。╳

Scanf(“%7.2f”,&a);3、scanf(“a=%d,b=%d”,&a,&b);

輸入:a=12,b=134、scanf(“%c%c%c”,&a,&b,&c);輸入:abc

空格和轉(zhuǎn)義字符都作為有效字符輸入說明:main(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“%f%e”,&x,&y);scanf(“%c%c”,&c1,&c2);printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);}輸入數(shù)據(jù):a=10b=201010ab輸出數(shù)據(jù):10,20,10.00000,20.00000,a,b輸入方式2:a=10b=201020abmain(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“x=%fy=%e”,&x,&y);scanf(“c1=%cc2=%c”,&c1,&c2);printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);}輸入數(shù)據(jù):a=10b=20x=10y=10c1=ac2=b輸出數(shù)據(jù):10,20,10.00000,20.00000,a,b3.4順序結(jié)構(gòu)程序設(shè)計(jì)(順序結(jié)構(gòu))(選擇結(jié)構(gòu))(循環(huán)結(jié)構(gòu))特點(diǎn):程序按語(yǔ)句從上到下的排列順序依此執(zhí)行,每條語(yǔ)句必須執(zhí)行且只能執(zhí)行一次,沒有執(zhí)行不到或執(zhí)行多次的語(yǔ)句。例如:已知圓柱體半徑6米,高7米,求體積。#definePI3.1415main(){floatr,h,s,v;r=6;h=7;s=PI*r*r;v=s*h;printf(“V=%f\n”,v);}例3.1輸入三角形的三條邊,求三角形的面積。分析:已知∶三角形的三條邊a,b,c。求解∶三角形的面積area。計(jì)算公式∶設(shè)s=(a+b+c)/2area=開始給a,b,c賦值計(jì)算s=(a+b+c)/2計(jì)算area=結(jié)果輸出結(jié)束#include<math.h>main(){floata,b,c,s,area;scanf(“%f%f%f”,&a,&b,&c);s=(a+b+c)/2.0;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“a=%fb=%fc=%fs=%f”,a,b,c,s);printf(“area=%f”,area);}例3.2從鍵盤輸入一個(gè)大寫字母,要求改用小寫字母輸出。分析:已知∶字符變量c1為大寫字母。求解∶將字符變量c2中放入相應(yīng)的小寫字母。計(jì)算公式∶c2=c1+32(小寫改成大寫字母?)開始計(jì)算c2=c1+32輸出c1結(jié)束輸入一大寫字母放入c1中輸出c2#include<stdio.h>main(){charc1,c2;c1=getchar();/*鍵盤輸入一個(gè)大寫字母*/

printf(“%c,%d\n”,c1,c1);c2=c1+32;printf(“%c,%d\n”,c2,c2);}輸入:A

輸出:A,65

a,97

例3.3求ax2+bx+c=0的根,a,b,c由鍵盤輸入,設(shè)b2-4ac>0#include<math.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("%f%f%f",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;printf(”x1=%fx2=%f",x1,x2);}運(yùn)行情況:a=1,b=3,c=2x1=-1.000000x2=-2.0000003.5小結(jié)(1) C語(yǔ)言程序設(shè)計(jì)的三種基本的控制結(jié)構(gòu)是:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。(2) C語(yǔ)言的語(yǔ)句類型有:表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、控制語(yǔ)句、空語(yǔ)句和復(fù)合語(yǔ)句。(3) 數(shù)據(jù)輸出函數(shù)有:putchar函數(shù)和printf函數(shù)。① putchar函數(shù)是單個(gè)字符輸出函數(shù)。函數(shù)調(diào)用的一般格式是:putchar(c);其中,putchar是函數(shù)名,圓括號(hào)中的c是函數(shù)參數(shù),可以是字符型或整型的常量、變量或表達(dá)式。② printf函數(shù)是格式輸出函數(shù)。作用是按格式控制所指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出輸出項(xiàng)列表中列出的輸出項(xiàng)。

printf函數(shù)的一般調(diào)用格式為:

printf(格式控制,輸出項(xiàng)表)其中格式控制包括格式標(biāo)識(shí)符和普通字符。輸出項(xiàng)表由若干個(gè)輸出項(xiàng)構(gòu)成,輸出項(xiàng)之間用逗號(hào)隔開,每個(gè)輸出項(xiàng)既可以是常量、變量,也可以是表達(dá)式。4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式

6種關(guān)系運(yùn)算符:

①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)⑤==(等于)⑥?。剑ú坏扔冢┮?、關(guān)系運(yùn)算符及其優(yōu)先次序優(yōu)先級(jí)相同(高)優(yōu)先級(jí)相同(低)結(jié)合性:自左向右4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式一、關(guān)系運(yùn)算符及其優(yōu)先次序

與其它運(yùn)算符優(yōu)先級(jí)的比較:算術(shù)運(yùn)算符關(guān)系運(yùn)算符賦值運(yùn)算符(高)(低)例如:c=d>a+b等效于:c=(d>(a+b))1.什么是關(guān)系表達(dá)式?二、關(guān)系表達(dá)式如:(a>b)>(b<c)、‘a(chǎn)’<‘b’、x>y、s+f>d2.關(guān)系表達(dá)式的值運(yùn)算結(jié)果∶邏輯值1——“真”,0——“假”如:設(shè)a=3,b=2,c=1求下面關(guān)系表達(dá)式的值:c>b(a-b)==1b+c<a值為0值為1值為0如果關(guān)系運(yùn)算對(duì)象的類型不同,也要先進(jìn)行類型轉(zhuǎn)換。4.2邏輯運(yùn)算符和邏輯表達(dá)式

3種邏輯運(yùn)算符:

①?。ㄟ壿嫹牵?&(邏輯與)③||(邏輯或)一、邏輯運(yùn)算符及其優(yōu)先次序優(yōu)先級(jí)(高)(低)如:!aa為真,則!a為假。

a||ba、b之一為真,則a||b為真。

a&&ba、b同時(shí)為真,則a&&b為真。4.2邏輯運(yùn)算符和邏輯表達(dá)式與其它運(yùn)算符優(yōu)先級(jí)的比較:一、邏輯運(yùn)算符及其優(yōu)先次序(高)(低)

算術(shù)運(yùn)算符

關(guān)系運(yùn)算符

&&和||

賦值運(yùn)算符例如:c=d>a+b&&a>b等效于:

c=((d>(a+b))&&(a>b))1.什么是邏輯表達(dá)式?二、邏輯表達(dá)式用邏輯運(yùn)算符將邏輯運(yùn)算對(duì)象連結(jié)起來的式子。如:(a>b)&&(b<c)、!a||a>b2.邏輯表達(dá)式的值運(yùn)算結(jié)果∶邏輯值(只有假為0、真為1兩種取值)如:5>3&&2||8<4‘b’&&’d’值為1值為1運(yùn)算對(duì)象∶以數(shù)值非0為真、0為假4.3if語(yǔ)句1.if(表達(dá)式)語(yǔ)句一、if語(yǔ)句的三種形式執(zhí)行過程:當(dāng)表達(dá)式的值為“真”(非零)時(shí),執(zhí)行語(yǔ)句,否則,不執(zhí)行語(yǔ)句。如:if(x>y)z=x;2.if(表達(dá)式)語(yǔ)句1else語(yǔ)句2執(zhí)行過程:當(dāng)表達(dá)式的值為“真”(非零)時(shí),執(zhí)行語(yǔ)句1,否則,執(zhí)行語(yǔ)句2。如:

if(x>y)z=x;

elsez=y;3.if(表達(dá)式1)語(yǔ)句1elseif(表達(dá)式2)語(yǔ)句2elseif(表達(dá)式3)語(yǔ)句3:elseif(表達(dá)式m)語(yǔ)句melse語(yǔ)句n如:if(grade>=85)level=‘A’;elseif(grade>=70)level=‘B’;elseif(grade>=60)level=‘C’;elselevel=‘D’;

if語(yǔ)句說明:

⑴if后面的表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是任意數(shù)值類型表達(dá)式。該語(yǔ)句是合法的:if(3)printf(“ok!”);⑵if語(yǔ)句中的“語(yǔ)句”為一個(gè)簡(jiǎn)單語(yǔ)句或復(fù)合語(yǔ)句。

如:下面程序段是否有錯(cuò)?if(x>=0)printf(“Xispositive.”);x++;elseprintf(“Xisnegative.”);if(x>=0){printf(“Xispositive.”);x++;}elseprintf(“Xisnegative.”);二、if語(yǔ)句的嵌套

在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句稱為if語(yǔ)句的嵌套。一般形式:if(條件1)

if(條件2)語(yǔ)句1else語(yǔ)句2elseif(條件3)語(yǔ)句3else語(yǔ)句4內(nèi)嵌if內(nèi)嵌if如:if(x>0)if(y>0)printf("x>0,y>0");

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論