C語言程序設(shè)計(jì)_第1頁
C語言程序設(shè)計(jì)_第2頁
C語言程序設(shè)計(jì)_第3頁
已閱讀5頁,還剩51頁未讀, 繼續(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語言程序設(shè)計(jì)第1章基本概念1.1 C語言的產(chǎn)生及發(fā)展史 1.2 C語言特點(diǎn)C語言及其程序的基本形式第2章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式 2.1基本數(shù)據(jù)類型-2.2常量與變量82.3 運(yùn)算符1.12.4 表達(dá)式 .'2.5逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式 1第三章順序結(jié)構(gòu) 1.3.2數(shù)據(jù)輸出13.2.1 printf 函數(shù)的使用13.3數(shù)據(jù)輸入13.4復(fù)合語句1.!341復(fù)合語句 19空語句213.5程序舉例21第4章選擇結(jié)構(gòu)24.1關(guān)系運(yùn)算與邏輯運(yùn)算 2.4.1.1 關(guān)系運(yùn)算 2:邏輯運(yùn)算2:4.2 if 語句2:4.3條件表達(dá)式 254.4 switch 選擇結(jié)構(gòu)與 break 語句2.第五章循環(huán)

2、結(jié)構(gòu)2i5.1 while 循環(huán)2.5.2 do while 循環(huán)295.3 for 語句和 for 語句構(gòu)成的循環(huán) 305.4 循環(huán)的嵌套 325.5 break 與continue在循環(huán)中的應(yīng)用 :3.:第六章字符型數(shù)據(jù)3.6.1字符型常量3i6.1.1 字符型常量 3.轉(zhuǎn)義字符數(shù)據(jù)的寫法 3可對(duì)字符量進(jìn)行運(yùn)算3.16.2 字符型變量 366.3字符的輸入與輸出 366.3.1 用 printf 與 scanf作輸出與讀取 366.3.2 用putchar 與getchar 作字符的輸出與讀取 3,第七章函數(shù)3.97.1_庫函數(shù) 3.7.2自定義函數(shù)39721函數(shù)的書寫方法 4.0722

3、函數(shù)的返回值 :47.3函數(shù)的調(diào)用 4:7.4函數(shù)的說明4:7.5調(diào)用函數(shù)與被調(diào)用函數(shù)之間的數(shù)據(jù)傳遞4.第八章地址與指針 4.8.1變量的地址與指針 488.2指針變量的定義 498.3指針變量賦值4.8.4對(duì)指針變量操作 498.5移動(dòng)指針58.6函數(shù)之間的地址傳遞 5.8.7返回地址的函數(shù)叫做指針函數(shù) 5:第九章數(shù)組5:9.1 一維數(shù)的定義與引用 5:9.2 維數(shù)組的訪問 5:9.3數(shù)組的賦值5:9.5 維數(shù)組與地址 5;9.5二維數(shù)組的定義和二維數(shù)組元素的引用5.二維數(shù)組的定義 57二維數(shù)組的訪問 589.5.3 二維數(shù)組在定義可以賦值 5可以通過賦值,確定行數(shù) 59.6 二維數(shù)組與指針

4、 59、二維數(shù)組實(shí)際上是由一維數(shù)組構(gòu)成: 599.6.2 二維數(shù)組名也是二維數(shù)組的首地址 599.7 二維數(shù)組與函數(shù) 60第十章字符串610.1用一維數(shù)組存放字符串 6.10.1.1 通過賦初值給一個(gè)字符數(shù)組賦成字符串 65在程序執(zhí)行過程中給一維字符數(shù)組賦值 .610.2 使指針指向一個(gè)字符串 6.10.2.1 可通過賦初值,指一個(gè)指針指向字符串 66通過賦值運(yùn)算使指針指向一個(gè)字符串 6610.3字符串的輸入與輸出 610.3.1 輸入輸出字符串的必要條件6610.3.2 用格式說明符 s進(jìn)行整串的輸入與輸出 6610.3.3 用gets和puts函數(shù)對(duì)字符串進(jìn)行輸入與輸出 66J 第十-10

5、.4字符串?dāng)?shù)組610.5用于字符串處理的函數(shù) 6.一章遞歸函數(shù)7.第十二章 C語言中變量的作用域與變量的存儲(chǔ)類型7012.1局部變量7.12.2全局變量7.12.3局部靜態(tài)變量7.第十二早編譯預(yù)處理和動(dòng)態(tài)存儲(chǔ)分酉己 7,13.1宏替換乙13.2動(dòng)態(tài)存儲(chǔ)分配7,13.2.1 malloc 函數(shù)與 free 函數(shù)7.第十四章結(jié)構(gòu)體與共用體7-14.1 用typedef 說明一個(gè)類型乙14.2結(jié)構(gòu)體類型 714.2.1 結(jié)構(gòu)體類型聲明的格式:714.2.2 結(jié)構(gòu)體型的數(shù)組、變量、指針的定義7.14.2.3結(jié)構(gòu)體變量、數(shù)組的賦值 7114.2.4 引用結(jié)構(gòu)體變量中的數(shù)據(jù) 714.2.5 對(duì)結(jié)構(gòu)體成員賦

6、值 .7.14.2.6結(jié)構(gòu)體函數(shù)之間數(shù)據(jù)傳遞 7本章.14.3鏈表8第1章基本概念主要內(nèi)容e明確c語言的產(chǎn)生及發(fā)展史了解C語言特點(diǎn)掌握C語言的表述環(huán)境 4明確C語言及其程序的基本形式1.1 C語言的產(chǎn)生及發(fā)展史C語言屬于ALGOL語言族系,產(chǎn)生于1972年.是編程者設(shè)計(jì)的一種結(jié)構(gòu)化程序設(shè)計(jì) 語言.它首先是為了編寫 PDP-11型計(jì)算機(jī)上的UNIX操作系統(tǒng)而產(chǎn)生出來,但后來發(fā)展成 為一種獨(dú)立的程序設(shè)計(jì)語言,并廣泛地應(yīng)用在大型,小型,微型計(jì)算機(jī)上1967年英國(guó)劍橋大學(xué)的 Matin Richards對(duì)CPL語言做了簡(jiǎn)化,推出了 BCPL語言。1970年美國(guó)貝爾實(shí)驗(yàn)室的 Ken Thompson 以

7、BCPL語言為基礎(chǔ),又做了進(jìn)一步簡(jiǎn)化, 設(shè)計(jì)出了很簡(jiǎn)單的而且很接近硬件的B語言,并用B語言寫了第一個(gè) UNIX操作系統(tǒng),在PDP-7上實(shí)現(xiàn)。1972年至1973年間,貝爾實(shí)驗(yàn)室的 在B語言的基礎(chǔ)上設(shè)計(jì)出了 C語C語言的設(shè)計(jì)者 Denn is M. Ritchie1973年,K.Thompson 和兩人合作把UNIX的90 %以上用C改寫,即UNIX第5版,由此確立了 C語言的地位。Ritchie 和 Thompson 在開發(fā) UNIXC語言的設(shè)計(jì)者 和Unix的設(shè)計(jì)者 Ken Thompson接受美國(guó)國(guó)家技術(shù)勛章C語言是一種"中級(jí)語言",它介于高級(jí)語言(BASIC,FORT

8、RAN)和低級(jí)語言(匯編語言)之間它即具有高級(jí)語言功能(直接的人-機(jī)對(duì)話和數(shù)學(xué)計(jì)算),又具有低級(jí)語言功能(移位,位處理),從而使其功能大大地增強(qiáng),成為一種先進(jìn)的程序設(shè)計(jì)語言1.2 C語言特點(diǎn)語言簡(jiǎn)煉使用的關(guān)鍵字僅為 27個(gè),而BASIC語言為150多個(gè).利用符號(hào)代替語句 表達(dá)簡(jiǎn)潔許多工作由大量的庫函數(shù)完成,并且?guī)旌瘮?shù)可以自定義,所以C語言的關(guān)鍵字及其功能是無限的功能強(qiáng)它集高級(jí)語言的特點(diǎn)和低級(jí)語言的特點(diǎn)于一身,即能完成高語言的功能又能完成低級(jí)語言的功能,是一種強(qiáng)功能的語言.由它編寫的軟件有: UNIX, dBASE III,C 編譯.模塊化結(jié)構(gòu)C語言支持各種庫函數(shù)和用戶定義的函數(shù)(模塊)相互調(diào)用

9、構(gòu)成程序,完成功能并且,不允許嵌套定義,因此,具有很強(qiáng)的模塊化結(jié)構(gòu)移植性好利用C語言編的程序不加改動(dòng)或稍加改動(dòng),就可以由一個(gè)環(huán)境移植到另一個(gè)環(huán)境上因?yàn)?,不同?jì)算機(jī)上的 C語言編譯代碼的80%左右相同C語言及其程序的基本形式這里介紹幾個(gè)簡(jiǎn)單的C語言程序,從中明確C語言及其程序的基本形式。例1.1mai n ()printf ( This is a C program.' n);本程序的作用是輸出以下一行信息,主要說明 序的具體形式。C語言程序的基本組成部分,C語言程例1 . 2mai n ()int a,b,sum;/*求兩數(shù)之和*/*這是定義變量*/a=123;b=456;/*為變量賦

10、初值 */sum=a+b;/*將兩個(gè)變量的值相加后賦給另一個(gè)變量*/printf ( Sum is %dn”,sum);/* 輸出相加后的結(jié)果 */本程序的作用是說明一個(gè)較為全面的C語言程序,以及注釋的使用。第2章 數(shù)據(jù)類型、運(yùn)算符與表達(dá)式本章主要內(nèi)容 理解數(shù)據(jù)類型引入的目的、意義和具體類型 明確常量與變量 掌握c語言的運(yùn)算符和表達(dá)式表2.1基本數(shù)據(jù)類型大千世界存在著各種各樣、各種類型的數(shù),人們利用不同類型的數(shù)去描述不同的事物。然而,哪些“類型”的數(shù)據(jù)可以在C語言中使用? C語言中允許使用的“類型”又是什么呢?3.1.1 數(shù)據(jù)類型:某一類數(shù)據(jù)(值)的特征形式(表示意義、取值范圍、符號(hào)取向)基本

11、形:整數(shù)(int )、浮點(diǎn)(float )、字符(char )、無值(void )。構(gòu)造(組合、集合)型:數(shù)組、結(jié)構(gòu)(struct )聯(lián)合(union )、枚舉(enum )。 指針類型空類型1. 1.整數(shù)和整數(shù)類型整數(shù)在C語言中稱為“整型常量”,因?yàn)樗幢硎玖酥?,又表示了一定的意義。類型字節(jié)數(shù)取值范圍sig ned int2-32768 - 32767Un sig ned int20 -65535sig ned shot i nt2-32768-32767Un sig ned shot i nt20 -65535long int4-2147483648 -2147483647Un sig n

12、ed long int40 -4294967295注:方括弧內(nèi)的部分是可以省略的。例如:signed shot int 與shot等價(jià),尤其是signed是完全多余的,一般都不寫sig ned2.浮點(diǎn)類型(float)類型字節(jié)數(shù)有效數(shù)字取值范圍float46 -7-3.4X10(-38) - 3.4X10(38)double815 -16-1.7X10(-308) - 1.7X10(308)long double1618 - 19-1.2X10(-4932) - 1.2X10(4932)3.字符類型(char)類型字節(jié)數(shù)意義char1表示個(gè)字付2.2常量與變量在3.1節(jié)學(xué)習(xí)了幾種數(shù)據(jù)的類型,可

13、以用它們表示客觀世界中的數(shù)值。那么,如果要表示客觀世界中的“事物”(事和物)怎么辦? C語言中使用“量”來表達(dá)客觀事物,其中, 自身數(shù)值不變的量用“常量”表示,自身數(shù)值變化的量用“變量”表示。因此,為了全面地 表達(dá)客觀事物,在 C語言中則必須使用(定義)常量和變量(表示事和物)。同時(shí),給出它們的類型(表示數(shù)值)。3.2.1 常量:程序執(zhí)行中其值不變的量。類型:一般(短整)常量、長(zhǎng)整常量、浮點(diǎn)常量、字符常量、字符串常量。 符號(hào)常量定義式:#defi ne符號(hào)常量名;例:#defi nePI 3.14 意義:3.2.2 變量:程序在執(zhí)行過程中其值變化的量。類型:一般(短整)變量、長(zhǎng)整變量、浮點(diǎn)變量

14、、字符變量、字符串變量。 定義式:數(shù)據(jù)類型變量名;例:int k; 意義:定義整型變量 k。變量賦初值在C語言中常需要對(duì)變量預(yù)先設(shè)置初值,可以使用數(shù)的三種表示形式:十進(jìn)制數(shù)、八 進(jìn)制數(shù)、十六進(jìn)制數(shù)和數(shù)據(jù)類型為變量賦初值。例3.1#defi ne PRICE 30mai n ()int nu m,total;num=10;total=num*PRICE;printf ( fotal=%dn ” ,total);本程序的作用是說明常量的定義、賦值和使用。例3.2mai n ()int a,b,c,d;un sig ned u;a=12;b=-24;u=10;c=a+u;d=b+u;printf (

15、a+u=%d,b+u=%dn”c,d);本程序的作用是說明整型變量的定義、賦初值、運(yùn)算和其值的輸出。例3.3main ()char c1,c2;c仁 97;c2=98;printf (%c%cn ”c1,c2);printf (%d%dn ”c1,c2);本程序的作用是說明字符型變量的定義、賦初值和輸出。例3.4mai n ()int a=3;float f=3.1415926;char c= a 'printf (nnn%d%f %cn ”a,f,c);本程序的作用是說明整型、字符、浮點(diǎn)變量的定義、賦初值和輸出。注:標(biāo)識(shí)符:由字母、數(shù)字和下線符構(gòu)成,標(biāo)志和識(shí)別一定意義的字符串。類型:

16、關(guān)鍵字、特定字、一般標(biāo)識(shí)符(由用戶設(shè)定)。作用:代表常量、變量、數(shù)據(jù)類型、函數(shù)名字。關(guān)鍵字:在C語言中,具有嚴(yán)格特定含義的標(biāo)識(shí)符。見教材 P365 附錄B2.3 運(yùn)算符在客觀事物使用數(shù)和量表示完以后,還要對(duì)它們進(jìn)行處理,進(jìn)行運(yùn)算,這就要涉及 C 語言中的運(yùn)算符。還要表達(dá)它們之間的關(guān)系,又要用到 C語言中的表達(dá)式。那么 C語言中 提供了哪些運(yùn)算符和表達(dá)式讓我們使用呢?運(yùn)算符C語言中的運(yùn)算符分為以下幾類:1. 1.算術(shù)運(yùn)算符+ -* / %<=!=2. 2.關(guān)系運(yùn)算符>< =>=3.3.邏輯運(yùn)算符&& | !4.4.位運(yùn)算符<< >>

17、 | A &5.5.賦值運(yùn)算符=6.6.條件運(yùn)算符?7.7.逗號(hào)運(yùn)算符58.8.指針運(yùn)算符* &9.9.求字節(jié)數(shù)運(yùn)算符sizeof10. 10.強(qiáng)制類型轉(zhuǎn)換(類型)11. 11.分量運(yùn)算符變->12. 12.下標(biāo)運(yùn)算符13. 13.其它函數(shù)調(diào)用運(yùn)算符 ()見教材 P365 附錄C332算術(shù)運(yùn)算符自增、自減算術(shù)運(yùn)算符+i;-i;意義:在使用i之前,先使i的值加1 (減1 )。i+;i-;意義:在使用i之后,使i的值加1 (減1 )。例:int m,n,s,t,k=1O;m=+k;n=k+;s=-k;t=k-3.3.3復(fù)合運(yùn)算符a+=3;等價(jià)于a=a+3;x*=y+8;等價(jià)于

18、x=x*(y+8);x%=3;等價(jià)于x=x%3;2.4 表達(dá)式表達(dá)式:使用運(yùn)算符將運(yùn)算(操作)對(duì)象連接起來的、符合c語法規(guī)則的式子。算術(shù)表達(dá)式、邏輯表達(dá)式、字位表達(dá)式、強(qiáng)制類型轉(zhuǎn)換表達(dá)式、逗號(hào)(順序)表達(dá)式、 賦值表達(dá)式、條件表達(dá)式、指針表達(dá)式。例3.5main ()int a,b,c;float d,f=3.1415926;a=b=c=9;d=a/f;printf (“nnn%d%d %d %f n ”a,b,c,f);printf (“n%fn ”d);本程序的作用是說明賦值表達(dá)式、算術(shù)表達(dá)式的使用。例3.6mai n ()int m=10; n=3;int s,t;s=m/2;t=n %

19、2;printf (“nnn%d%d n ”s,t);本程序的作用是說明除法運(yùn)算符和取余運(yùn)算符的區(qū)別。例3.7mai n ()int i,j,k,l;i=2,j=3;k=i+;l=-j;printf ( %d %d %d %d ”i,j,k,l);本程序的作用是說明自加、自減運(yùn)算符的使用。例3.8main ()int num=1,total=11;nu m+=5;total%=num;printf ("n %d %dn", nu m,total);本程序的作用是說明復(fù)合運(yùn)算符的使用。例3.9mai n ()float x;int i;x=3.6;i=(i nt)x;prin

20、tf (“n x=%fi=%dn ”x,i);本程序的作用是說明強(qiáng)制類型轉(zhuǎn)換的問題。2.5逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式以前我們學(xué)過+- */(特別)%(特別)=%要求兩邊的操作數(shù)必須是整數(shù)如:5%3 結(jié)果為2這個(gè)運(yùn)算符通常用作判斷一個(gè)數(shù)是否能被另一個(gè)數(shù)整除。這節(jié)課我們學(xué)習(xí)逗號(hào)運(yùn)算符,我們通過逗號(hào)表達(dá)式來看一下逗號(hào)運(yùn)算符是怎 么回事。逗號(hào)表達(dá)的定義:用逗號(hào)連接的表達(dá)式,叫逗號(hào)表達(dá)式格式:表達(dá)式1,表達(dá)式2,表達(dá)式3,表達(dá)式4,表達(dá)式n逗號(hào)表達(dá)式的運(yùn)算順序:表達(dá)式 1 表達(dá)式2 表達(dá)式3 表達(dá)式4 表達(dá) 式n 逗號(hào)表達(dá)式結(jié)果:最后一個(gè)表達(dá)式的結(jié)果將作為整個(gè)表達(dá)式的結(jié)果 例1、例1、看如下程序,寫出結(jié)果#

21、i nclude "stdio.h"mai n()int k;k=(2+3,7,0,88);printf("k=%dn",k);/ 結(jié)果是 88例2、例2、看如下程序,寫出結(jié)果#i nclude "stdio.h"mai n()int k;k=2+3,7,88;printf("k=%dn",k);/ 結(jié)果是 5說明:賦值符號(hào)的優(yōu)先級(jí)要高于逗號(hào)運(yùn)算符,逗號(hào)運(yùn)算符的優(yōu)先級(jí)在所有的運(yùn)算 符當(dāng)中是最低的。例3、看如下程序,寫出結(jié)果#i nclude "stdio.h"mai n()int k,i=5;k

22、=(i+,i+,i+5);/ k=(i=i+1),(i=i+1),(i+5);printf("k=%dn",k);/ 結(jié)果為 12例4、看如下程序,寫出結(jié)果#i nclude "stdio.h"mai n()int k,i=5;k=i+,i+,i+5;/ k=(i=i+1),(i=i+1),(i+5);prin tf("k=%dn",k);復(fù)習(xí)以前的知識(shí)運(yùn)算符+ 和-運(yùn)算的規(guī)則是一樣的,我們以+為例進(jìn)行講解。+運(yùn)算符只能用于單變量身上,如i+,(a+b)+ 這樣寫就不對(duì)了。用于單變量身上表示單變量本身自增1。自增運(yùn)算符有兩種情況,一種

23、作為前綴, 別一種作為后綴。一、當(dāng)+作為前綴或是后綴時(shí),變量執(zhí)行的結(jié)果都是一樣的#i nclude "stdio.h"mai n()int i=5;+i;prin tf("%d n",i);/ 6#i nclude "stdio.h"mai n()int i=5;i+;prin tf("%d n",i);/ 6說明:無論是前綴還是后綴,i+(或+i)都是使i自增1( i=i+1)二、+作為前綴與+作為后綴,表達(dá)式的值是不一樣的#include "stdio.h"mai n()int k,i=5;

24、k=+i;prin tf("%d%d n",k,i);/ 66#i nclude "stdio.h"mai n()int k,i=5;k=i+;prin tf("%d %d n",k,i);56說明:在上面的兩個(gè)程序中,K存放的都是自增表達(dá)式的值,兩個(gè)自增表達(dá)式的 值是不同的。(1) +iK得到的是i自增后的結(jié)果,我們用一句話表示:先運(yùn)算,后取值。(2)i+K得到的是i自增后前的結(jié)果,我們用一句話表示:先取值,后運(yùn)算。 總結(jié)一下:i+和+i主要區(qū)別只是表達(dá)式的值不同,但是他們功能是一樣 的,都是使i自增1.第三章順序結(jié)構(gòu)在這一章中,我

25、們主要講printf和scanf的使用,若在程序中使用printf 和scanf,則應(yīng)在程序的第一行用#inelude 將”stdio.h ”文件包含進(jìn)來。3.2數(shù)據(jù)輸出函數(shù)的使用以前我們上講過一個(gè)例子:#i nclude "stdio.h"mai n()double a,b;a=1.2;b=1.2;prin tf("a=%f,b=%f n",a,b);說明:在上面的printf中,存在一個(gè)格式符%f,%f是專門用來輸出double變量?jī)?nèi)容,那么上面程序的執(zhí)行結(jié)果: printf的使用方法:printf(字符串”輸出的變量);說明:1、雙引號(hào)中的字符除了

26、格式符(是用來輸出變量的)之外,其它字符是原樣輸出2、我們主要學(xué)習(xí)哪些格式符呢?double %f(%lf)float %fint%dlong %ld例1、寫出程序結(jié)果#i nclude "stdio.h"mai n()float x,y;x=33.0;y=66.0;prin tf("x=%f,y=%f",x,y);例2寫出程序結(jié)果#i nclude "stdio.h"mai n()int k;int a=11,b=3;k=a%b;prin tf("k=%d n",k);例3寫出程序結(jié)果#i nclude &quo

27、t;stdio.h"mai n()long k;long a=9,b=3;k=a%b;prin tf("k=%ld n",k);3、printf(字符串”輸出的變量);該格式中第二部分是可以省略,那么就輸出字符串。#in clude "stdio.h"mai n()prin tf("*Hello Vorld*n");4、可以在d之間加上一個(gè)數(shù)字,用來指定輸出數(shù)所占的寬度,如5d,貝擻占5個(gè)字符的寬度,字符默認(rèn)向右對(duì)齊。例1、#i nclude "stdio.h"mai n()int a=3;int b=5

28、0;int c=500;prin tf("%5dn",a);prin tf("%5dn",b);prin tf("%5dn",c);例2、#i nclude "stdio.h"mai n()int a=3;int b=50;int c=500;int d=5000;prin tf("%5dn",a);prin tf("%-5dn",b);prin tf("%dn",c);prin tf("%3dn",d);若實(shí)際寬度 < 指定的寬

29、度,則nd數(shù)字默認(rèn)向右對(duì)齊若實(shí)際寬度 < 指定的寬度,則%-nd默認(rèn)向左對(duì)齊%d是我們以前的老模式,正常輸出若實(shí)際寬度 > 指定的寬度,則正常輸出5、對(duì)于輸出(float 或double )的仁可以在%和f之間,加上m.n ,%m.nf m :是指定整個(gè)數(shù)所占寬度n:指定小數(shù)位數(shù)如:a=3.145678若想保留兩位小數(shù)輸出,則4.2f#i nclude "stdio.h"mai n()double a=3.145678;prin tf("a=%4.2f n",a);/ 3.15有時(shí)出題人比較懶,他容易將%4.2f寫成%.2f,%.2f的意思:

30、小數(shù)按兩位 輸出,整數(shù)部分要原樣輸出的。#i nclude "stdio.h"mai n()double a=300.145678;prin tf("a=%.2f n",a);/ 300.151.2f 是先保證小數(shù)位輸出,然后整數(shù)位原樣輸出3.3數(shù)據(jù)輸入如何能過鍵盤給程序中的變量賦值呢?#i nclude "stdio.h"mai n()double a,b,area;a=1.2;b=1.2;area = a*b;prin tf("a=%.2f,b=%.2f,area =%.2f n",a,b,area);通過sc

31、anf函數(shù)給變量賦值,看一下scanf函數(shù)的使用形式:scanf(字符串” 變量的地址);說明1、給變量賦值也要能過格式符double%lffloat%fint%dlo ng%ld現(xiàn)在我們舉一個(gè)最常見的例子:#i nclude "stdio.h"mai n()double a,b,area;scan f("%lf%lf",&a,&b);area = a*b;prin tf("a=%.2f,b=%.2f,area =%.2f n",a,b,area);注意:scan f("%lf%lf",&a

32、,&b);雙引號(hào)內(nèi)的格式符要挨著,不要加一些其它字符,要賦值的變量前加&2、如何給變量賦值#include "stdio.h"mai n()double a,b,c,area;sca nf("%lf%lf%lf",&a,&b,&c);area = a*b+c;prin tf("a=%.2f,b=%.2f,c=%.2f,area =%.2f n",a,b,area);1)123 回車2)1回車2回車3回車3)1tab23總之:數(shù)據(jù)之間可以任意加空格,回車,Tab,最后用回車表示數(shù)據(jù)輸入結(jié)束。3、在

33、scanf中,我們可以指定所要讀取數(shù)的寬度#i nclude "stdio.h"mai n()int a,b,c,area;scan f("%3d%2d%4d",&a,&b,&c);area = a*b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);說明:若在鍵盤中輸入1234567890 時(shí),此時(shí)%3d讀取了 123賦給了 a,%2d讀取了 45賦給了 b,%4d讀取了 6789賦給了 c,4、用%*d可以是跳過一個(gè)數(shù)#i nclude "

34、;stdio.h"mai n()int a,b,area;scan f("%d%*d%d",&a,&b);area = a+b;prin tf("a=%3d,b=%3d,area =%3d n",a,b,area); /若輸入123456789回車說明:此時(shí)第一個(gè)%d讀取了 123,遇空格結(jié)束,第二%*d會(huì)跳過456,第三 個(gè)%d讀取了 789。例1、#in clude "stdio.h"mai n()int a,b,area;scan f("%3d%*3d%3d",&a,&

35、;b);area = a+b; prin tf("a=%3d,b=%3d,area =%3d n",a,b,area);/若輸入123456789回車?yán)?、#i nclude "stdio.h"mai n()int a,b,area;scan f("%2d%*3d%2d",&a,&b);area = a+b;prin tf("a=%3d,b=%3d,area =%3d n",a,b,area);輸入 1234567890說明:讀取了 12送給了 a,跳過345,讀取了 67賦給了 b.最后注意,同學(xué)

36、們?cè)谏蠙C(jī)的時(shí)候總愛出現(xiàn)這樣的毛?。?i nclude "stdio.h"mai n()int a,b,area;scan f("%d,%d,%d",&a,&b,&c);area = a+b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);同學(xué)們千萬要注意:在scanf的雙引號(hào),一定要按著雙引號(hào)的字符原樣輸入, 這樣才是正確的,如上題:123,456,789#i nclude "stdio.h"mai n()int a,b,c,are

37、a;scan f("please input a,b,c: %d%d%d",&a,&b,&c);area = a+b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area); 此時(shí)正確的輸入方法是:please in put a,b,c:1231213.4復(fù)合語句復(fù)合語句復(fù)合語句復(fù)合語句的概念:就是用 括起來的0個(gè)或多個(gè)語句叫復(fù)合語句 在C語言語法上來說,是作為一個(gè)整體(也可以說作為一條大的語句) 如:#i nclude "stdio.h"mai n()int

38、 a,b,c,area;sca nf("%d%d%d",&a,&b,&c);area = a+b+c;prin tf("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);這個(gè)C語言程序從上到下一共3條語句??照Z句空語句:就是一個(gè)單分號(hào),空語句也是一條合法的語句。#i nclude "stdio.h"mai n()int a,b,c,area;scan f("%d%d%d",&a,&b,&c);area = a+b+c;prin tf

39、("a=%3d,b=%3d,c=%3d,area =%3d n",a,b,c,area);該程序一共是5條語句,當(dāng)計(jì)算機(jī)執(zhí)行到第四條語句(空語句)時(shí),計(jì)算機(jī)什 么也不干。3.5程序舉例例3.1從鍵盤輸入兩個(gè)整數(shù),給x和y賦值,在程序中使x和y的值交換,然 后再輸出交換后的x和y的值。#i nclude "stdio.h"mai n()int x,y,t;scan f("%d%d", &x, &y);t=x; x=y; y=t;prin tf("x=%d,y=%d n",x,y);例3.2輸入一個(gè)do

40、uble 數(shù)給n,輸出該數(shù)時(shí),要對(duì)小數(shù)點(diǎn)的第三位進(jìn)行四舍 五入,后輸出n。#i nclude "stdio.h"mai n()double n;scan f("%lf,&n);n=n *100;n=n+0.5;n=(i nt) n;n=n/100;printf("n=%.2f", n);第4章選擇結(jié)構(gòu)4.1關(guān)系運(yùn)算與邏輯運(yùn)算關(guān)系運(yùn)算關(guān)系運(yùn)算主要是由>>=<<=!=,由關(guān)系運(yùn)算符構(gòu)成的表達(dá) 式是關(guān)系表達(dá)式。這里面講的主要是:是表達(dá)式都得有值,關(guān)系表達(dá)式也有值(當(dāng) 關(guān)系成立時(shí),表達(dá)式的值為1,不成立關(guān)系表達(dá)式的值為0

41、)#i nclude "stdio.h"mai n()int k;k=1>2;prin tf(" 1>2 de zhi %dn", k);/ 0k=1=2;prin tf(" 1=2 de zhi %dn", k);/ 0k=1!=2;prin tf(" 1!=2 de zhi %dn", k);1邏輯運(yùn)算邏輯運(yùn)算符主要是由&&(并且)、|(或者)、!(非)等運(yùn)算符組成。現(xiàn)在說一 下運(yùn)算規(guī)則:&&T&&TTT&&FFF&&T

42、FF&&FFIIT|TTT|FTF|TTF|FF!T!F結(jié)果為 F 結(jié)果為 T例 1、( T && TT)#i nclude "stdio.h"mai n()int k;k=3>2&&3>1;prin tf("%d",k);例 2、( F && T F)#i nclude "stdio.h"mai n()int k;k=3>12&&3>1;prin tf("%d",k);例 3、(T | F T)#i nclud

43、e "stdio.h"mai n()int k;k=13>12|3>11;prin tf("%d",k);例4、(! T結(jié)果為 F)#i nclude "stdio.h"mai n()int k;k=!(13>12);prin tf("%d",k);說明:在邏輯表達(dá)式中,若其中一個(gè)表達(dá)式是非0的,那么在邏輯判斷中,計(jì)算機(jī)認(rèn)為是真#i nclude "stdio.h"mai n()int k;k=(13>12) &&-3;prin tf("%d&q

44、uot;,k);4.2 if語句if語句一共和2種基本的使用形式,還有2種嵌套的使用形式,當(dāng)然考試主 要考兩種基本的使用形式,關(guān)于嵌套同學(xué)們認(rèn)識(shí)一下就可以了?;拘问?、1、使用形式:if(條件)語句2、執(zhí)行過程:若條件成立,則執(zhí)行if中的語句,否則執(zhí)行if語句后面的語句。3、例1 :從鍵盤輸入兩數(shù),輸出最大數(shù):#i nclude "stdio.h"mai n()int m,n; int max;scan f("%d%d",&m,&n);max=m;if(max <n) max=n;prin tf("max=%d n&qu

45、ot;,max);例3、例3、從鍵盤輸入三數(shù)給a,b,c變量,再輸出a,b,c變量時(shí),三數(shù)是由大到小的順序輸出#i nclude "stdio.h"mai n()int a,b,c; int t;scan f("%d%d%d",&a,&b,&c);if(a < b) t=a; a=b; b=t;if(a < c) t=a; a=c; c=t;if(b < c)t=b; b=c; c=t;prin tf("%d%d %d n",a,b,c);#i nclude "stdio.h&quo

46、t;mai n()int a,b,c; int t;scan f("%d%d%d",&a,&b,&c); if(a < b) t=a;a=b; b=t;if(a < c) t=a; a=c; c=t;if(b < c) t=b; b=c; c=t;prin tf("%d%d %d n",a,b,c);運(yùn)行:沒有達(dá)到預(yù)期,因?yàn)閕f語句中,若條件成立時(shí),同時(shí)執(zhí)行多條語句,多 條語句必須用括起來,構(gòu)成復(fù)合語句,才可以。上面程序中,if后面的多條語 句沒有被括起來,if只與最近的語句搭配。正確的寫法如下:#i nclud

47、e "stdio.h"mai n()int a,b,c; int t;scan f("%d%d%d",&a,&b,&c);if(a < b)t=a; a=b; b=t;if(a < c) t=a; a=c; c=t;if(b < c)t=b; b=c; c=t; prin tf("%d %d %d n",a,b,c);第二種基本形式:含else的if語句1、使用形式if(條件)語句1else語句22、 執(zhí)行過程:若條件成立了,則執(zhí)行語句1,否則執(zhí)行語句23、例:從鍵盤輸入兩數(shù),輸出最大數(shù):#i

48、 nclude "stdio.h"mai n()int m,n; int max;scan f("%d%d",&m,&n);if(m >n)max=m;elsemax=n;prin tf("max=%d n",max);從鍵盤輸入一個(gè)整數(shù),若能被 3整除,打印Yes,否則打印No#in clude "stdio.h"mai n()int n;scan f("%d",&n);if(n %3=0)prin tf("Yes");elseprin tf(

49、"No");if語句是一條特殊的語句,所以他可以替換if語句中的語句。嵌套形式一:else語句2嵌套形式二:if(條件)語句2elseif(條件)語句1else#include "stdio.h"mai n()int s; sca nf("%d",&s); if(s>=60)if(s>=90) prin tf("youxiu n"); elseprin tf("jige n");elseprin tf("Faild! n");#include "

50、stdio.h" mai n()int s; sca nf("%d",&s); if(s<60)prin tf("Faild! n"); elseif(s>=90)prin tf("youxiu n"); else語句2例如:輸入一成績(jī)到變量S中,根據(jù)學(xué)生成績(jī)的等級(jí)分別輸出ABCDE等。#i nclude "stdio.h"mai n()int s; sca nf("%d",&s); if(s>=90)pri ntf("A n ”);else

51、 if(s>=80)pri ntf("B");else if(s>=70)pri ntf("C");else if(s>=60)pri ntf("D");else prin tf("E");4.3條件表達(dá)式叫條先擇結(jié)構(gòu)呢我們學(xué)習(xí)了 if結(jié)構(gòu),現(xiàn)在我們還要學(xué)習(xí)另外一種選擇結(jié)構(gòu), 件表達(dá)式。我們首先看一下條件表達(dá)式的構(gòu)成:條件?表達(dá)式1 :表達(dá)式2條件表達(dá)式的執(zhí)行過程: 若條件成立,則計(jì)算機(jī)執(zhí)行e1,否則執(zhí)行e2。例1 :#include "stdio.h"mai n()int m

52、,n; scan f("%d%d",&m,&n);int max;m>n? max=m:max=n;條件表達(dá)式的值:我們通過一個(gè)例子來看:例2#i nclude "stdio.h"mai n()int m,n; scan f("%d%d",&m,&n);int max;max=m>n ?m: n;(?:條件運(yùn)算符優(yōu)先級(jí)高于=)prin tf("max=%dn",max);若條件成立,則表達(dá)式的結(jié)果為表達(dá)式1,否則表達(dá)式的結(jié)果為表達(dá)式2例3#include "st

53、dio.h"mai n()int s; scanf("%d",&s);s>60 ? s>=90 ? prin tf("youxiu n") : prin tf("jige n"):prin tf("Faild! n");4.4 switch 選擇結(jié)構(gòu)與break語句Switch也是一個(gè)分支選擇結(jié)構(gòu):switch(表達(dá)式)case常量1:語句1;語句2;case常量2:語句1;語句2;case常量3:語句1;語句2;case常理n:語句1;語句2;default :語句1;語句2例如:根

54、據(jù)學(xué)生的成績(jī)給出相應(yīng)的等級(jí),90分以上是A等,80以上是B等, 直到60分以上是E等,不及格為F等。#i nclude "stdio.h"mai n()int s; scanf("%d",&s); 88switch(s/10)case 10: prin tf("A");case 9:prin tf("A");case 8:prin tf("B");case 7:prin tf("C");case 6:prin tf("D");default :pr

55、i ntf("F");說明:根據(jù)這個(gè)程序,我們得出一個(gè)結(jié)論:switch也是一個(gè)選擇結(jié)構(gòu),計(jì)算機(jī) 在執(zhí)行時(shí),先得出switch后括號(hào)內(nèi)表達(dá)式的值,然后計(jì)算機(jī)拿著這個(gè)值去和 case后的常量比較,如果和哪個(gè)常量的值相等的話,就去執(zhí)行相應(yīng)的case分支內(nèi)的語句。這里面,同學(xué)背下來吧:整數(shù)/整數(shù)=整數(shù) 整數(shù)/小數(shù)=小數(shù)(88/10 =8 88.0/10=8.8)但是執(zhí)行的時(shí)候出錯(cuò)了(結(jié)果為BCDF),為什么呢?就是因?yàn)橛?jì)算機(jī)在執(zhí)行case分支時(shí)的特點(diǎn):進(jìn)入到當(dāng)前分支,執(zhí)行完本分支內(nèi)的語句后,后面的分 支包括default分支都執(zhí)行了。所以我們?cè)趯懨總€(gè) case分支的時(shí)候,在分支的

56、 末尾都要加上break; break 功能就是跳出break所在的switch 語句。#i nclude "stdio.h"mai n()int s; scanf("%d",&s); /98switch(s/10)case 9:prin tf("A n"); break;case 8:printf("B n"); break;case 7:prin tf("C n"); break;case 6:prin tf("D n"); break;default :pri

57、ntf("F n");說明:1、 case分支后,可以有多條語句,也可以有 0條語句,當(dāng)有0條語句的時(shí) 候,當(dāng)計(jì)算機(jī)進(jìn)入到?jīng)]有語句的分支,什么也不干,但又沒發(fā)現(xiàn)break;,計(jì)算 機(jī)又繼續(xù)向下執(zhí)行(這里是執(zhí)行 case 9)#i nclude "stdio.h"mai n()int s; scanf("%d",&s); 98switch(s/10)case 10: case 9:prin tf("A n"); break;case 8: prin tf("B n"); break;case 7:prin tf("C n&q

溫馨提示

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