C語言程序設(shè)計(jì)(第3版)課件 第1、2章 C程序基礎(chǔ)、程序基本結(jié)構(gòu)_第1頁
C語言程序設(shè)計(jì)(第3版)課件 第1、2章 C程序基礎(chǔ)、程序基本結(jié)構(gòu)_第2頁
C語言程序設(shè)計(jì)(第3版)課件 第1、2章 C程序基礎(chǔ)、程序基本結(jié)構(gòu)_第3頁
C語言程序設(shè)計(jì)(第3版)課件 第1、2章 C程序基礎(chǔ)、程序基本結(jié)構(gòu)_第4頁
C語言程序設(shè)計(jì)(第3版)課件 第1、2章 C程序基礎(chǔ)、程序基本結(jié)構(gòu)_第5頁
已閱讀5頁,還剩121頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章C程序基礎(chǔ)1.1C語言程序的基本結(jié)構(gòu)1.2C語言基本語法成分1.3C語言數(shù)據(jù)類型1.4表達(dá)式和語句1.5C程序運(yùn)行過程1.6編寫簡單的C程序1.7數(shù)據(jù)的輸入與輸出1.8C語言宏定義1.9算法1.10C語言的產(chǎn)生、發(fā)展及特點(diǎn)☆☆☆☆☆☆??☆自學(xué)C程序的基本結(jié)構(gòu)

C程序的運(yùn)行過程

C語言基本語法成分

C語言基本數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出算法第1部分C程序的基本結(jié)構(gòu)例1編寫程序,輸出一句話:ThisisaCprogram!#include<stdio.h>voidmain(){

printf("ThisisaCprogram!\n");}編譯預(yù)處理命令函數(shù)編譯預(yù)處理命令:以#開頭,單獨(dú)占一行,放在程序最前面。#include即文件包含命令,用于把后面指定文件的內(nèi)容包含進(jìn)來例2輸入兩個整數(shù),計(jì)算并輸出其和。#include<stdio.h>intmain()

/*主函數(shù)*/{

inta,b,sum;

/*定義三個整型變量*/

scanf("%d%d",&a,&b);//

輸入值給a,b

sum=a+b;

printf("sumis%d\n",sum);return(0);}說明:⑴“/*…*/”表示注釋部分,以“/*”開始,以“*/”結(jié)束;注釋只是對程序的說明,僅起幫助閱讀程序的作用,不影響程序的運(yùn)行,可以放在程序的任意位置。⑵定義變量后,系統(tǒng)就為其分配相應(yīng)大小的存儲單元,用于存放其值。C語言要求變量必須先定義,后使用。absumEG102.C#include<stdio.h>intmain(){inta,b,sum;

scanf("%d%d",&a,&b);sum=a+b;printf("sumis%d\n",sum);return(0);}⑶

scanf用于將輸入的數(shù)按指定的格式送到后面指定的內(nèi)存單元(賦值給變量)?!?d”表示輸入/輸出一個整數(shù),“&”的含義是得到后面變量的地址。⑷“=”為賦值運(yùn)算符,把右邊表達(dá)式的值賦值給左邊的變量。⑸輸出時(shí)“%d”表示輸出一個整數(shù)值,該值由“,”后邊對應(yīng)的變量或表達(dá)式提供。使用scanf函數(shù)可以輸入任意兩個整數(shù)相加,即程序執(zhí)行前不確定a、b的值,程序運(yùn)行中指定。EG102.C#include<stdio.h>intmain(){inta,b,sum;

scanf("%d%d",&a,&b);sum=a+b;printf("sumis%d\n",sum);return(0);}程序的四個部分(編寫程序的四個步驟):EG102.C1、定義變量:定義在本函數(shù)中用到的變量(類型、名字);2、輸入變量的值:確定要處理的對象的值,也可以賦值;3、計(jì)算:處理計(jì)算對象,完成各種運(yùn)算;4、輸出:輸出計(jì)算結(jié)果。例3輸入3個實(shí)數(shù),計(jì)算并輸出其平均值。#include<stdio.h>intmain(){

floata,b,c,aver;

scanf("%f%f%f",&a,&b,&c);//輸入三個實(shí)數(shù)

aver=(a+b+c)/3;//

為變量aver賦值

printf("averis%f\n",aver);

return(0);}說明:⑴float用于聲明實(shí)型變量(精度要求不高時(shí)使用,高精度時(shí)用double類型)。⑵

“%f”表示輸入、輸出一個float型實(shí)數(shù)(double用%lf),輸出時(shí)默認(rèn)6位小數(shù)?!?.2f”表示控制輸出2位小數(shù)。345↙averis4.000000EG103.C例4輸入兩個整數(shù),輸出較大的數(shù)。#include<stdio.h>intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}intmain(){inta,b,c;scanf("%d%d",&a,&b);

c=max(a,b);printf("max=%d\n",c);return(0);}1234↙max=34EG104.C、EG105.C程序的基本結(jié)構(gòu)#include<…>#include<…>#define…

/*預(yù)處理命令*/intmain(){

聲明部分

/*定義本函數(shù)中用到的變量*/

執(zhí)行部分

/*完成本函數(shù)功能的若干語句*/return(0);}其他函數(shù){

聲明部分執(zhí)行部分}6.函數(shù)體的結(jié)構(gòu)為:①變量定義:定義在本函數(shù)中用到的變量②輸入數(shù)據(jù):將要處理的數(shù)據(jù)存放到內(nèi)存中(賦值或輸入給某些變量)③計(jì)算/處理:對輸入的數(shù)據(jù)進(jìn)行計(jì)算或處理④輸出結(jié)果:輸出計(jì)算后得到的最終結(jié)果(題目要求的結(jié)果)7.一行可以寫多條語句,一條語句也可以寫在多行上。C程序框架1.C程序是由函數(shù)組成的(函數(shù)式語言)。2.每個程序有且只有一個main函數(shù)。C程序總是以main函數(shù)作為入口開始執(zhí)行,結(jié)束于main的最后一條語句。3.用戶可根據(jù)需要自定義函數(shù)。4.以#開始的預(yù)處理命令寫在程序最前面,每個命令占一行。5.函數(shù)由函數(shù)首行信息(函數(shù)首部)和函數(shù)體構(gòu)成。第2部分C程序運(yùn)行過程C程序上機(jī)步驟一、編輯:將源程序輸入計(jì)算機(jī)內(nèi)存中→修改源程序→將改正后的源程序保存為磁盤文件?!訟SCII碼形式輸入和存儲----擴(kuò)展名為.C或.CPP(源程序)二、編譯:先進(jìn)行語法檢查,并將無語法錯誤的源程序翻譯成二進(jìn)制形式的目標(biāo)代碼----擴(kuò)展名為.OBJ(目標(biāo)程序)三、鏈接:將各模塊的二進(jìn)制目標(biāo)代碼與系統(tǒng)標(biāo)準(zhǔn)模塊連接,得到一個可執(zhí)行文件----擴(kuò)展名為.EXE(可執(zhí)行程序)四、執(zhí)行:執(zhí)行經(jīng)過編譯和連接的可執(zhí)行目標(biāo)文件。VC++6.0上機(jī)步驟1、啟動VC++6.0⑴、啟動:開始菜單→程序→VisualC++6.0⑵、工作窗口:

編輯窗口、工作空間窗口、輸出窗口2、在編輯狀態(tài)下輸入或修改源文件⑴、編輯新文件

編輯新文件:文件→新建…→文件→“C++SourceFile”

保存文件:文件→保存或Ctrl+S⑵、編輯已存在的文件

打開文件:文件→打開或Ctrl+O或直接雙擊文件

另存文件:文件→另存為…編譯時(shí)的提示信息將顯示在輸出窗口,雙擊錯誤信息則轉(zhuǎn)到相應(yīng)出錯處,修改完畢再重新編譯,直到無任何錯誤后編譯成功,顯示“0error(s),0warning(s)”。注意:編譯成功只能說明程序無語法錯誤,不一定代表算法正確或運(yùn)行結(jié)果正確。3、編譯源程序

組建→編譯

或Ctrl+F7編譯時(shí)若彈出如下提示框,選擇“是”。4、運(yùn)行源程序

組建→執(zhí)行或Ctrl+F5標(biāo)識符標(biāo)識符是用來標(biāo)識變量名、符號常量名、函數(shù)名、數(shù)組名等對象的字符序列。①以字母或下劃線開頭,由字母、數(shù)字或下劃線組成。

合法的標(biāo)識符:aisumS1r3aver_totaldaya_b不合法標(biāo)識符:S1r3S表

S'3D6a-b(注意不同于數(shù)學(xué)中的變量)②不能與C語言的關(guān)鍵字重名,如int、float、if③注意標(biāo)識符的有效長度,不能超過32個字符④區(qū)分大小寫字母:sum和Sum不同⑤盡量做到“見名知義”;如sum、area⑥應(yīng)盡量避免單個使用容易認(rèn)錯的字符。如:數(shù)字1與字母l和字母I,數(shù)字0與字母o和O,數(shù)字2與字母Z和z第3部分C基本語法成分比較下面兩個程序的不同,有何特點(diǎn)?#include<stdio.h>intmain(){inta,b,sum;

a=2;b=3;sum=a+b;printf("sumis%d\n",sum);return(0);}#include<stdio.h>intmain(){inta,b,sum;

scanf("%d%d",&a,&b);sum=a+b;printf("sumis%d\n",sum);return(0);}結(jié)論:如果數(shù)據(jù)需要在程序運(yùn)行時(shí)確定(程序運(yùn)行前不能確定),應(yīng)該用scanf函數(shù)輸入;如果數(shù)據(jù)已知(如常量或題目中已告知),可直接賦值。例1.5已知a=5,b=10,交換并輸出a、b的值。編寫程序的四個步驟:定義變量輸入(確定變量的值)計(jì)算/處理輸出#include<stdio.h>intmain(){return(0);}inta,b,temp;a=5;b=10;temp=a;a=b;b=temp;printf("a=%d,b=%d\n",a,b);思考:交換a、b能否不借助于第3個變量?EG106.Ca=a+b;b=a-b;a=a-b;inta=5,b=10,temp;//初始化變量賦初值/初始化C語言允許在定義變量的同時(shí)給變量賦初值,即變量的初始化。

inta=5,b=10,temp;×inta,b,temp;a=5;b=10;

floatf=3.56;

inta,b,c=3;

inta=3,b=3,c=3;

inta=b=c=3;inta,b,c;a=b=c=3;√例1.6計(jì)算圓柱體的表面積。分析:圓柱體表面積S=側(cè)面積S1+2×底面積S2S1=dh,S2=πr2,d=2πr因此,需要知道底面半徑r和圓柱體高h(yuǎn),怎么辦?#include<stdio.h>intmain(){return(0);}floatr,h,s;scanf("%f%f",&r,&h);d=2*3.14*r;s1=d*h;s2=3.14*r*r;s=s1+2*s2;printf("Totalareais%.2f\n",s);,d,s1,s2;原則:只出現(xiàn)一次的中間變量可以省略!#include<stdio.h>#definePI3.14intmain(){return(0);}floatr,h,s;scanf("%f%f",&r,&h);s=2*PI*r*h+2*PI*r*r;printf("area=%.2f\n",s);用一個標(biāo)識符代表一個常量的,稱為符號常量,即標(biāo)識符形式的常量。其值不能被改變,也不能再被賦值。定義形式:

#define符號常量名常量表達(dá)式或字符串如:#definePRICE303.1415926EG108.C關(guān)于scanf、printf的說明:整型(int)實(shí)型(float)實(shí)型(double)用途存放整數(shù)存放低精度實(shí)數(shù)存放高精度實(shí)數(shù)輸入格式%d%f(%.2f×)%lf輸出格式%d%f%.2f%lf或%f關(guān)于格式控制符:整型數(shù)據(jù)的輸入輸出都使用%d;實(shí)型數(shù)據(jù)(float)的輸入只能使用%f,不能是%.2f的格式。scanf("%d%d",&a,&b);scanf("%f",&r);scanf("%.2f",&r);×關(guān)于其它字符:scanf函數(shù)中只包括%d、%f等格式控制符,不要有其它字符。printf函數(shù)中為了說明輸出數(shù)據(jù)的含義,往往包含其它字符。scanf("r=%d",&r);//不推薦scanf("%f\n",&r);//不推薦printf("sum=%d\n",sum);printf("a=%d,b=%d\n",a,b);運(yùn)算符和表達(dá)式用于描述運(yùn)算形式的符號稱為運(yùn)算符。如+、-、=、>參與運(yùn)算的對象(即數(shù)據(jù))稱為操作數(shù)。

表達(dá)式是將操作數(shù)用運(yùn)算符連接起來的、符合C語法規(guī)則的式子。它描述了對哪些數(shù)據(jù)、以什么順序施以何種操作。其中運(yùn)算量可以是常量、變量或函數(shù)調(diào)用。如:

3+2-5、x+3/2、max=a+b、t=sin(x)+cos(x)表達(dá)式的取值及類型

C語言中的所有表達(dá)式都具有確定的值。當(dāng)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),注意結(jié)果的值及類型。如:2.0+3C語言運(yùn)算符分為以下幾類:⑴

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

-

*

/

%

++

--⑵關(guān)系運(yùn)算符:<

<=

>

>=

==

!=⑶邏輯運(yùn)算符:!

&&

||⑷位運(yùn)算符:<<

>>

~

|

^

&⑸

賦值運(yùn)算符:=及擴(kuò)展賦值運(yùn)算符⑹條件運(yùn)算符:?:⑺逗號運(yùn)算符:,⑻指針和地址運(yùn)算符:*

&⑼求字節(jié)運(yùn)算符:sizeof

⑽分量運(yùn)算符:.

->

⑾下標(biāo)運(yùn)算符:[]

⑿強(qiáng)制類型轉(zhuǎn)換運(yùn)算符:(類型)

其他:如函數(shù)調(diào)用運(yùn)算符()需要注意的問題:⑴、參加操作的數(shù)據(jù)類型:⑵、要求運(yùn)算量的個數(shù):一元(單目)、二元(雙目)或三元(三目)運(yùn)算符⑶、優(yōu)先級操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級別不同時(shí),則先執(zhí)行“優(yōu)先級”高的運(yùn)算。如:3+5*6⑷、結(jié)合性操作數(shù)兩側(cè)的運(yùn)算符優(yōu)先級別相同時(shí),則按結(jié)合方向處理(左結(jié)合性、右結(jié)合性)。如:3*5/6⑸、結(jié)果的取值及類型C語言中的所有表達(dá)式都具有確定的值。當(dāng)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),注意結(jié)果的值及類型。2+3.01.算術(shù)運(yùn)算符和算術(shù)表達(dá)式基本算術(shù)運(yùn)算符:+-*/%其中:①、+、-、*、/的運(yùn)算對象可以是整型或?qū)嵭蛿?shù)據(jù);但如果其中一個運(yùn)算量為實(shí)型,則運(yùn)算結(jié)果為double型。②、/:兩個整數(shù)相除表示整除,舍去小數(shù)部分,結(jié)果為整數(shù)。③、%:要求兩側(cè)的操作數(shù)必須為整數(shù)。2+3.0=5.02+3.0=5.02-1.0=1.01*3.0=3.05/2=25/2.0=2.51/3=01.0/3=0.3333335%2=121%8=5運(yùn)算符的優(yōu)先級和結(jié)合性當(dāng)一個表達(dá)式中出現(xiàn)多個運(yùn)算符時(shí),按各運(yùn)算符的優(yōu)先級和結(jié)合性確定各運(yùn)算符的計(jì)算順序。①、*、/、%的優(yōu)先級相同,+、-的優(yōu)先級相同;但前三種高于后兩種。②、+-*/%均為左結(jié)合性。

3+2-5

x-2*3

2*5%7/3自增、自減運(yùn)算符

++、--:使變量的值增1或減1(均為一元運(yùn)算符)形式:

⑴、前綴:++i、--i⑵、后綴:i++、i--i++或++i:可看成i=i+1,都能使i的值增1;當(dāng)++和--在表達(dá)式里出現(xiàn)時(shí)情形比較復(fù)雜,此處不討論。優(yōu)先級:++-- */%+-(單目運(yùn)算符、右結(jié)合性)(雙目運(yùn)算符、左結(jié)合性)(雙目運(yùn)算符、左結(jié)合性)2.賦值運(yùn)算符和賦值表達(dá)式一、賦值運(yùn)算符(=)

=:雙目運(yùn)算符、優(yōu)先級14、結(jié)合性為自右至左二、賦值表達(dá)式1、簡單賦值表達(dá)式:變量名=表達(dá)式如:sum=a+b、temp=a、i=i+12、多重賦值表達(dá)式:

變量名1=變量名2=……=變量名n=表達(dá)式

a=b=c=3+x三、復(fù)合(自反)賦值運(yùn)算符

+=、-=、*=、/=、%=;<<=、>>=、&=、^=、|=(位運(yùn)算)a+=5;a=a+5;y*=x-2;y=y*(x-2);x%=y/3;x=x%(y/3);3.逗號運(yùn)算符和逗號表達(dá)式一、逗號運(yùn)算符(,)

,:雙目運(yùn)算符、優(yōu)先級15(最低)、結(jié)合性為自左至右二、逗號表達(dá)式形式:表達(dá)式1,表達(dá)式2,……,表達(dá)式n運(yùn)算:從左至右依次計(jì)算表達(dá)式1、表達(dá)式2、……、表達(dá)式n;結(jié)果:表達(dá)式n的值(和類型)即為整個逗號表達(dá)式的值(和類型)i=1,j=2,k=i+j逗號表達(dá)式,值為3i++,j+4,k-2逗號表達(dá)式,值為1運(yùn)算符優(yōu)先級:()++-- */%+-…=+=等,1、編寫程序,輸入三角形的三條邊,計(jì)算并輸出三角形的面積。(假設(shè)輸入的三條邊能構(gòu)成一個三角形)求三角形的面積公式為:提示:求平方根函數(shù)sqrt(表達(dá)式)函數(shù)原型:doublesqrt(doublex)

----教材p.233相關(guān)預(yù)處理命令:#include<math.h>floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);#include<stdio.h>intmain(){return(0);}變量定義輸入運(yùn)算輸出#include<stdio.h>#include<math.h>intmain(){

return(0);}floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);#include<stdio.h>intmain(){return(0);}變量定義輸入運(yùn)算輸出注意:變量的類型,本題應(yīng)該是float或double,實(shí)數(shù)盡量使用double。scanf、printf函數(shù)的格式:

scanf("%f%f%f",&a,&b,&c);//雙引號間不要加其它任何符號

scanf("%lf%lf%lf",&a,&b,&c);//double型輸入時(shí)應(yīng)使用%lf3.數(shù)學(xué)函數(shù)的使用方法;同時(shí)需加上#include<math.h>

doublepow(doublex,doubley);程序最前面寫上:#include<sdtio.h>#include<math.h>求得的值的類型參數(shù)的類型s=pow(a+b,2.1);area=pow(s*(s-a)*(s-b)*(s-b),0.5);area=sqrt(s*(s-a)*(s-b)*(s-c));4.計(jì)算的順序:先計(jì)算s,再計(jì)算area。--后面用到的值必須先計(jì)算s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);5.是否三角形的判斷:任意兩邊之和大于第三條邊a+b>cb+c>aa+c>b&&&&&&a>0&&b>0&&c>0if()s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);{}復(fù)合語句或任意兩邊之差小于第三邊(與上面的條件不能混用):b-c<a&&c-a<b&&a-b<c第4部分C語言數(shù)據(jù)類型#include<stdio.h>intmain(){

inta=5,b=10,temp;temp=a;a=b;b=temp;printf("a=%d,b=%d\n",a,b);return(0);}#include<stdio.h>#definePI3.1415926intmain(){

floatr,h,s;scanf("%f%f",&r,&h);s=2*PI*r*h+2*PI*r*r;printf("areais%.2f\n",s);return(0);}比較下面兩個程序中變量的類型:結(jié)論:存放整數(shù)則變量定義為int型,輸入輸出使用%d;存放實(shí)數(shù)一般定義為float型,輸入輸出使用%f。例編寫程序,輸入一個華氏溫度,輸出對應(yīng)的攝氏溫度。轉(zhuǎn)換公式為:例編寫程序,計(jì)算20!,并輸出結(jié)果。1!=12!=23!=64!=245!=1206!=7207!≈50008!≈4萬9!≈36萬10!≈360萬11!≈4千萬12!≈5億13!≈65億……C語言數(shù)據(jù)類型:字符型(char)實(shí)型(浮點(diǎn)型)單精度型(float)雙精度型(double)整型短整型(shortint)整型(int)長整型(longint)枚舉類型(enum)數(shù)組類型結(jié)構(gòu)體類型(struct)共用體類型(union)文件類型(FILE)基本類型構(gòu)造類型指針類型空類型(void)C數(shù)據(jù)類型常量與變量C語言中的常量區(qū)分為不同的類型:180-34.6-1.230.0'a''x'整型常量實(shí)型常量字符型常量字面常量

符號常量:用一個標(biāo)識符代表一個常量,即標(biāo)識符形式的常量。其值不能被改變,也不能再被賦值。定義形式:#define符號常量名常量表達(dá)式或字符串如:#definePI3.14PI=3.1415926;×//符號常量不能被賦值變量:在程序運(yùn)行過程中其值可以被改變的量inta,b,sum;floatx,y;3sum變量名變量值存儲單元每個變量在使用之前必須先進(jìn)行定義(聲明),C要求變量必須先定義后使用。進(jìn)行變量聲明后,計(jì)算機(jī)系統(tǒng)會為聲明的變量分配相應(yīng)大小的存儲空間,用以存放數(shù)據(jù)。整型數(shù)據(jù)一、整型常量①十進(jìn)制形式,如112、0、-3;②八進(jìn)制形式,以數(shù)字0開頭,如0123;③十六進(jìn)制形式,以0x開頭,如0x123intx,y,z;x=10;y=010;z=0x10;printf("x=%d,y=%d,z=%d\n",x,y,z);x=10,y=8,z=16EG109.C二、整型變量根據(jù)數(shù)值的范圍可以分為三種:①基本型:int;4個字節(jié)(-2,147,483,648~2,147,483,647,即-231~(231-1))②短整型:shortint或short;2個字節(jié)(-32768~32767)③長整型:longint或long;4個字節(jié),同intunsigned:無符號數(shù)signed:有符號數(shù);默認(rèn)為有符號類型inta,b;unsignedinti,j,fact;實(shí)型數(shù)據(jù)實(shí)數(shù)又稱為浮點(diǎn)數(shù),實(shí)型常量有兩種表示形式:①、十進(jìn)制數(shù)形式:如0.123、.123、123.0、123.、0.

②、指數(shù)形式:字母e(E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù)如:1.23e2、12300E-2、.123e3、123.e0√而:2.1e3.5、E2

×規(guī)范化的指數(shù)形式:在小數(shù)部分中,小數(shù)點(diǎn)左邊有且只有一位非零的數(shù)字,指數(shù)占3位。如1.23E+002實(shí)型變量C實(shí)型變量分為單精度(float)和雙精度型(double)。類型字節(jié)數(shù)有效數(shù)字絕對值范圍float46~70,1.2×10-38~3.4×1038double815~160,2.3×10-308~1.7×10308longdouble10190,3.4×10-4932~1.1×104932字符型數(shù)據(jù)

C的字符常量是用單引號('')括起來的一個字符。如'a'、'8'、'x'、'D'、'?'、'$'等。

轉(zhuǎn)義字符:以“\”開頭的字符序列。字符含義\n換行,光標(biāo)移到下一行行首\t水平制表\b退格\r回車,光標(biāo)移到本行開頭\\反斜扛字符“\”\'單引號字符“'”\"雙引號字符“"”\ddd1到3位八進(jìn)制數(shù)所代表的字符\xhh1到2位十六進(jìn)制數(shù)所代表的字符'\101'、'\x41':A'\1'、'\x1':?'\32'、'\x1A':→大小寫字母的ASCII值相差32:大寫字母轉(zhuǎn)換為小寫:

ch=ch+32;小寫字母轉(zhuǎn)換為大寫:

ch=ch-32;輸入一個大寫字母,轉(zhuǎn)換為對應(yīng)的小寫字母:#include<stdio.h>intmain(){charch;scanf("%c",&ch);ch=ch+32;printf("%c\n",ch);return(0);}字符ASCII碼字符ASCII碼A65a97B66b98C67c99D68d100E69e101F70f102G71g103…………Z90z122EG111.C字符常量本身具有數(shù)值,就是它們的ASCII碼值,如:'A'的值是65,'a'的值是97,'0'的值是48,因此字符型數(shù)據(jù)和整型數(shù)據(jù)在0-127范圍內(nèi)通用。說明:字符可以整數(shù)形式輸出;也可與整數(shù)進(jìn)行相互運(yùn)算。#include<stdio.h>intmain(){charch;

intx;ch='A';

x=ch+32;printf("%c,%d\n",ch,ch);printf("%c,%d\n",x,x);return(0);}A,65a,97如需要存放ASCII碼為128~255之間的字符,需要將字符變量定義為unsignedchar(默認(rèn)為signedchar:-128~127)EG112.C字符串常量

字符串常量由一對雙引號("")括起來的字符序列。如"Howareyou!"、"China"、"a"、"$123.45"、""等。可以輸出一個字符串,如:printf("Hello!");。系統(tǒng)在存儲字符串時(shí)自動在字符串末尾加一個結(jié)束標(biāo)志'\0',據(jù)此判斷字符串是否結(jié)束。"China"China\0'a'"a"aa\0

注意:寫字符串時(shí)不必加'\0',它是系統(tǒng)自動加上的。字符串的存儲:數(shù)組(將在第4章介紹)

charstr[50];//可用于存放最多49個字符的字符串第5部分?jǐn)?shù)據(jù)的輸入輸出C語言對數(shù)據(jù)的輸入輸出實(shí)行函數(shù)化。

C語言沒有提供輸入輸出語句,其輸入輸出功能均由函數(shù)來實(shí)現(xiàn)。如printf、scanf等稱為標(biāo)準(zhǔn)輸入輸出函數(shù)。使用標(biāo)準(zhǔn)輸入輸出函數(shù)時(shí);需要在程序開始使用預(yù)編譯命令:

#include

<stdio.h>或:#include

"stdio.h"printf函數(shù)

格式:printf(格式控制,

輸出表列)功能:在終端的當(dāng)前光標(biāo)處輸出若干個任意類型的數(shù)據(jù)1.格式控制:用""括起來的字符串,包括兩部分:普通字符(包括轉(zhuǎn)義字符):需要原樣輸出的字符格式說明:由%和格式字符組成,其作用是將輸出數(shù)據(jù)按指定的格式輸出printf("ThisisaCprogram!\n");printf("a=%d,b=%d\n",a,b);printf函數(shù)使用的格式控制符:格式字符說明d,i以帶符號的十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),默認(rèn)6位小數(shù)e,E以指數(shù)形式輸出單、雙精度數(shù),小數(shù)位數(shù)為6位g,G選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0inta=123,b=-1;floatx=12.34;charch=65;printf("a=%d,b=%d",a,b);輸出結(jié)果:a=123,b=-1printf("x=%f",x);輸出結(jié)果:x=12.340000printf("x=%e",x);輸出結(jié)果:x=1.234000e+001printf("x=%g",x);輸出結(jié)果:x=12.34printf("%f%%",1.0/3);輸出結(jié)果:0.333333%printf("ch=%c",ch);輸出結(jié)果:ch=Aprintf("str=%s","IloveChina!");輸出結(jié)果:str=IloveChina!EG113.C在格式控制符中,%和后面跟隨的單個字符之間又可以插入以下幾種修飾符。字符說明字母l用于輸出double型數(shù)據(jù)m(正整數(shù))數(shù)據(jù)最小寬度(小于實(shí)際位數(shù)時(shí)無效).n(正整數(shù))對實(shí)數(shù),表示輸出幾位小數(shù);對字符串,表示截取的字符個數(shù)-輸出的數(shù)字或字符在域內(nèi)向左靠EG114.C例:inti=79;%di79%5di79%-5di79%1di79doublex=33.1234567;%fx33.123455%.2fx33.12%6.2fx33.12%4.2fx33.12%ex3.312346e+001%.3ex3.312e+0012.輸出表列:由0到多個具體參數(shù)組成,其中的參數(shù)可以是常量、變量或表達(dá)式。printf("%d\n",25);printf("x=%d\n",x);printf("x*y=%d\n",x*y);printf("max=%d\n",max(a,b));EG115.C注意:①輸出整數(shù)和實(shí)數(shù)時(shí),數(shù)0用以指定數(shù)字前的空位是否補(bǔ)0;無0則補(bǔ)空格。floata=1.23;printf("%08.1f\n",a);000001.2

格式控制符的個數(shù)與后面的參數(shù)個數(shù)應(yīng)相等,且前后位置要一一對應(yīng)。printf("a=%d,b=%d\n",a,b);

③格式字符與其對應(yīng)的輸出項(xiàng)的類型要保持一致,例如,不應(yīng)用%f輸出整數(shù)。scanf函數(shù)

格式:scanf("格式控制",地址表列)功能:從鍵盤讀入字符序列,并按指定的格式轉(zhuǎn)換成相應(yīng)的數(shù)據(jù),存儲到地址表列所指定的內(nèi)存單元中

“地址表列”由若干個地址組成,可以是變量的地址或字符串的首地址。#include<stdio.h>intmain(){inta,b,c;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);return(0);}注:輸入整數(shù)、實(shí)數(shù)或字符串時(shí),如果格式控制部分只有格式控制符,不含其它字符,則數(shù)據(jù)之間以一個空格或多個空格、或Tab鍵或回車鍵分隔。EG116.Cscanf函數(shù)的格式控制符:格式字符說明d,i用來輸入十進(jìn)制整數(shù)c用來輸入單個字符s用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時(shí)以非空白字符開始,以第一個空白字符結(jié)束。字符串以串結(jié)束標(biāo)志'\0'作為最后一個字符。f(e,E,g,G)用來輸入單精度實(shí)數(shù)(float),可以用小數(shù)形式或指數(shù)形式輸入lf,le等用來輸入雙精度實(shí)數(shù)(double),可以用小數(shù)形式或指數(shù)形式輸入inta;scanf("%d",&a);charch;scanf("%c",&ch);charstr[50];scanf("%s",str);floatx;scanf("%f",&x);doubley;scanf("%lf",&y);在%和格式字符之間可插入附加的格式說明符:字符說明l用于輸入double型數(shù)據(jù)(用%lf或%le)--特別注意m(正整數(shù))域?qū)挘付ㄝ斎霐?shù)據(jù)所占寬度(列數(shù))*賦值抑制符,表示本輸入項(xiàng)讀入后不賦給任何變量格式:%*m格式字符說明:⑴與printf函數(shù)不同,scanf函數(shù)的格式控制部分一般不包含其它字符;scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d\n",a,b,c);⑵

格式控制中若帶域?qū)?,系統(tǒng)自動按域?qū)捊厝∷钄?shù)據(jù);scanf("%3d%3d",&a,&b);12345678↙a=123,b=456scanf("%3c%3c",&ch1,&ch2);abcdefg↙ch1=a,ch2=dchars1[20],s2[20];scanf("%s%3s",s1,s2);ComputerComputer↙s1=Computer,s2=Com⑶賦值抑制符*,表示按格式說明讀入數(shù)據(jù)后不送給任何變量scanf("%2d%*3d%2d",&a,&b);12345678↙a=12,b=67EG117.C、EG118.C、EG119.C;EG120.C⑷輸入實(shí)數(shù)時(shí)不能規(guī)定精度;scanf("%7.2f",&a);×scanf("%5f",&a);12.345678↙a=12.340000使用scanf函數(shù)應(yīng)注意的問題:⑴地址表列必須提供變量或字符串在內(nèi)存中的地址,不能寫成變量名的形式;inta,b;scanf("%d%d",&a,&b);charstr[20];scanf("%s",str);⑵如果在“格式控制”字符串中除格式控制符外還有其它字符,則在輸入時(shí)應(yīng)輸入相同的字符;scanf("%d,%d",&a,&b)12,34↙scanf("%d%d",&a,&b)1234↙scanf("%d:%d:%d",&a,&b,&c)12:34:56↙scanf("a=%d,b=%d,c=%d",&a,&b,&c);a=12,b=34,c=56↙⑶在用“%c”輸入字符時(shí),空格字符和轉(zhuǎn)義字符也都作為有效字符輸入;scanf("%c%c%c",&c1,&c2,&c3);ABC↙c1=A,c2=

,c3=B⑷在輸入數(shù)據(jù)時(shí),遇以下情況之一認(rèn)為一個數(shù)據(jù)輸入結(jié)束:①遇到空格或按Tab鍵或回車鍵;②滿足域?qū)?,?4d,輸入4位即結(jié)束;③遇到非法字符。scanf("%d%c%f",&a,&b,&c);12P12o.35↙a=12,b=P,c=12.00000scanf("%d%d",&x,&y);12,34↙x=12,y無正確數(shù)據(jù)數(shù)據(jù)類型及printf、scanf的總結(jié)數(shù)據(jù)整數(shù)實(shí)數(shù)字符字符串變量類型intfloat(一般情況)double(高精度、大數(shù))char數(shù)組charstr[20];輸入格式%d%f%lf%c%s輸出格式%f%E(%e)定義數(shù)據(jù)類型的原則:只要是存放整數(shù)都定義為int;實(shí)數(shù):一般情況下定義為float即可,如果需要精度高或數(shù)值大則定義為double。關(guān)于輸入、輸出的格式控制符:int型數(shù)據(jù)的輸入輸出都使用%d。float型數(shù)據(jù)的輸入使用%f,double型數(shù)據(jù)輸入必須使用%lf。scanf函數(shù)中不要加其它符號;printf函數(shù)中往往要加,作為輸出數(shù)據(jù)的說明信息。第6部分算法廣義的說,為解決一個問題而采取的方法和步驟稱為算法。對同一個問題可能有不同的解決方法和步驟,即不同的算法。在保證算法正確的基礎(chǔ)上,還要考慮算法的質(zhì)量,即選擇較優(yōu)的算法。比如,交換兩個整數(shù),處理過程如下:方法一:inta=10,b=5,temp;temp=a;a=b;b=temp;方法二:inta=10,b=5;a=a+b;b=a-b;a=a-b;方法三:inta=10,b=5;b=a+b;a=b-a;b=b-a;算法的特性1.有窮性一個算法包含有限的操作步驟2.確定性算法中的每一個步驟是確定的,含義是唯一的3.有零個或多個輸入4.有一個或多個輸出5.有效性算法中每一個步驟應(yīng)能有效地執(zhí)行,并得到確定的結(jié)果算法的表示一、自然語言表示法例,求兩數(shù)之和:①輸入a、b兩數(shù);②求和sum=a+b;③輸出兩數(shù)之和sum。注意:每一個操作步驟必須是計(jì)算機(jī)所能實(shí)現(xiàn)的。特點(diǎn):通俗易懂,但文字冗長、易出現(xiàn)歧義,因此較少使用。張三對李四說他的兒子考上了清華大學(xué)。二、傳統(tǒng)的程序流程圖用ANSIC規(guī)定的圖形符號形象直觀的描述算法。名稱符號含義箭頭流向或路徑矩形處理功能圓形連接點(diǎn)平行四邊形輸入或輸出菱形判斷圓弧矩形流程的起點(diǎn)或終點(diǎn)尖頭框循環(huán)雙邊矩形框調(diào)用子程序例輸入三個數(shù)a、b、c,輸出其中的最大者。開始輸入a,b,ca>b?a>c?T輸出cF結(jié)束輸出aTb>c?F輸出bTF輸出c(算法二,常用算法)輸入三個數(shù)a、b、c,輸出其中的最大者。開始輸入a,b,cb>max?結(jié)束假設(shè)a就是最大數(shù)max=amax=bc>max?max=c輸出maxFT#include<stdio.h>intmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);

max=a;

if(b>max)max=b;if(c>max)max=c;printf("max=%d\n",max);return0;}FT三種基本控制結(jié)構(gòu):

1、順序結(jié)構(gòu):按語句書寫的先后次序(從上到下、從左到右)執(zhí)行;

2、選擇(分支)結(jié)構(gòu):根據(jù)指定條件的判斷結(jié)果從若干組語句中選擇一組執(zhí)行;

3、循環(huán)結(jié)構(gòu):根據(jù)判斷給定條件是否滿足,決定是否重復(fù)執(zhí)行程序中的某一段程序。三、N-S流程圖

提供了描述三種基本邏輯結(jié)構(gòu)的圖形工具;與傳統(tǒng)的程序流程圖對比如下:⑴、順序結(jié)構(gòu)A模塊B模塊(a)傳統(tǒng)流程圖A模塊B模塊(b)N-S圖⑵、選擇(分支)結(jié)構(gòu)(a)傳統(tǒng)流程圖表示A模塊B模塊判斷條件成立嗎?成立不成立(b)N-S圖表示判斷條件成立嗎?成立

不成立A模塊B模塊⑶、循環(huán)結(jié)構(gòu):①.當(dāng)型循環(huán)結(jié)構(gòu)(while)不滿足滿足循環(huán)體循環(huán)條件滿足嗎?(a)流程圖表示(b)N-S圖表示循環(huán)體

循環(huán)條件滿足嗎?②.直到型循環(huán)結(jié)構(gòu)(do-while)不滿足滿足循環(huán)體循環(huán)條件滿足嗎?(a)流程圖表示(b)N-S圖表示循環(huán)體

循環(huán)條件滿足嗎?例描述求ax2+bx+c=0的根的算法。開始輸入a、b、cd=b2-4ac輸出x1、x2輸出兩個虛根x1、x2結(jié)束d≥0?TTFFd>0?例7輸入10個數(shù),找出最大的數(shù),并輸出。開始max←輸入一個數(shù)i←1輸入xYNmax←xi←i+1i<10?輸出max結(jié)束x>max?#include<stdio.h>intmain(){intmax,x,i;scanf("%d",&max);i=1;do{scanf("%d",&x);if(x>max)max=x;i=i+1;}while(i<10);printf("max=%d\n",max);return0;}常用數(shù)學(xué)函數(shù)sqrt(x)pow(x,y)fabs(x)abs(x)exp(x)log(x)log10(x)fmod(x,y)floor(x)ceil(x)sin(x)cos(x)x的平方根(x>=0),即x的y次方,即xydouble型數(shù)x的絕對值,即|x|整數(shù)x的絕對值x/y整除的余數(shù)求不超過x的最大整數(shù),即向下取整求不小于x的最小整數(shù),即向上取整x的正弦(x的弧度)x的余弦(x為弧度)#include<math.h>數(shù)學(xué)函數(shù)應(yīng)用舉例#include<stdio.h>#include<math.h>intmain(){doublex,y1,y2,y3,y4;scanf("%lf",&x);y1=sqrt(2*x-1);y2=pow(2*x-1,y1);y3=log10(2*x+3);y4=fmod(5.2,2.5);printf("y1=%lf,y2=%lf,y3=%lf,y4=%lf\n",y1,y2,y3,y4);printf("%lf\n",floor(5.2));printf("%lf\n",ceil(5.2));

printf("%lf\n",sin(30*3.1415926/180));return0;}函數(shù)原型:doublesqrt(doublex);doublepow(doublex,doubley);doublefmod(doublex,doubley);編程計(jì)算以下數(shù)學(xué)公式:本章小結(jié)C程序的基本結(jié)構(gòu):一個程序由一個main函數(shù)及其它自定義函數(shù)構(gòu)成

C程序的運(yùn)行過程:四個上機(jī)步驟及VC++6.0的使用

C語言基本語法成分:標(biāo)識符、運(yùn)算符與表達(dá)式(算術(shù)、賦值、逗號)

C語言數(shù)據(jù)類型:整型(int)、實(shí)型(float、double)、字符型(char)

數(shù)據(jù)的輸入與輸出:標(biāo)準(zhǔn)輸入輸出函數(shù)scanf、printf

算法:概念、特性、流程圖表示與N-S圖表示、三種基本控制結(jié)構(gòu)(順序、選擇、循環(huán))

常用數(shù)學(xué)函數(shù):sqrt、pow、fabs…第二章程序基本結(jié)構(gòu)2.1分支結(jié)構(gòu)2.2關(guān)系運(yùn)算和邏輯運(yùn)算2.3循環(huán)結(jié)構(gòu)2.4break語句和continue語句2.5goto語句2.6指針程序設(shè)計(jì)☆☆☆☆☆自學(xué)例1輸入三個數(shù)a、b、c,輸出其中的最大者。算法一:開始輸入a,b,ca>b?a>c?T輸出cF結(jié)束輸出aTb>c?F輸出bTF輸出c算法一:程序?qū)崿F(xiàn)#include<stdio.h>intmain(){inta,b,c;scanf("%d%d%d",&a,&b,&c);if(a>b){ //復(fù)合語句

if(a>c)printf("max=%d\n",a);

elseprintf("max=%d\n",c);}else{

if(b>c)printf("max=%d\n",b);

elseprintf("max=%d\n",c);}return0;}雙分支結(jié)構(gòu):形式:if(表達(dá)式)

語句1else

語句2表達(dá)式語句2真(非0)假(0)語句1(算法二,常用算法)#include<stdio.h>intmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);

max=a;

if(b>max)max=b;if(c>max)max=c;printf("max=%d\n",max);return0;}開始輸入a,b,cb>max?結(jié)束假設(shè)a就是最大數(shù)max=amax=bc>max?max=c輸出maxFTFT單分支結(jié)構(gòu):形式:if(表達(dá)式)

語句表達(dá)式真(非0)假(0)語句#include<stdio.h>intmain(){inta,b,c,max;scanf("%d%d%d",&a,&b,&c);

max=a;

if(b>max)max=b;if(c>max)max=c;printf("max=%d\n",max);return0;}表達(dá)式?語句FT例輸入x的值,根據(jù)下面的函數(shù)計(jì)算y值。#include<stdio.h>intmain(){return0;}doublex,y;scanf("%lf",&x);if(x>=0)y=1;elsey=-1;printf("y=%lf\n",y);EG202.C例輸入三個數(shù)x1、x2、x3,按從小到大的順序輸出。分析:使x1、x2、x3中依次存放最小值,次小值和最大值;再依次輸出即可。若x1>x2:交換x1和x2若x1>x3:交換x1和x3若x2>x3:交換x2和x3#include<stdio.h>intmain(){}floatx1,x2,x3,temp;scanf("%f%f%f",&x1,&x2,&x3);if(x1>x2)temp=x1;x1=x2;x2=temp;{}復(fù)合語句if(x1>x3){temp=x1;x1=x3;x3=temp;}if(x2>x3){temp=x2;x2=x3;x3=temp;}printf("%g,%g,%g\n",x1,x2,x3);說明:①復(fù)合語句是一個整體,相當(dāng)于一個語句;②在復(fù)合語句的花括號后不能再加分號;③一個復(fù)合語句中可以包含其它的復(fù)合語句。EG204.C2.1.3多分支結(jié)構(gòu)例求一元二次方程ax2+bx+c=0的根。a、b、c由鍵盤輸入。分析:需要做下列判斷:

a=0:不是一元二次方程;不能計(jì)算,結(jié)束程序

b2-4ac=0:有兩個相等的根;計(jì)算并輸出,結(jié)束程序

b2-4ac>0:有兩個不等的根;計(jì)算并輸出,結(jié)束程序

b2-4ac<0:有兩個共軛復(fù)數(shù)根;計(jì)算并輸出,結(jié)束程序問題:如何判斷一個實(shí)數(shù)是否等于0?判斷其絕對值是否小于某個數(shù),如1×10-10。需要用到的數(shù)學(xué)函數(shù):sqrt(x):計(jì)算x的平方根fabs(x):計(jì)算x的絕對值多分支if語句的形式:if(表達(dá)式1)

語句1elseif(表達(dá)式2)

語句2elseif(表達(dá)式3)

語句3……elseif(表達(dá)式n)

語句nelse

語句n+1VC++6.0的默認(rèn)對其格式注意:表達(dá)式的括號后面沒有分號;if后面必須帶表達(dá)式;只有最后一個else后面沒有if和表達(dá)式。例求一元二次方程ax2+bx+c=0的根。a、b、c由鍵盤輸入。#include<stdio.h>#include<math.h>intmain(){return0;}doublea,b,c;doubledisc,x1,x2,rpart,ipart;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;if(fabs(a)<=1E-6)/*判斷a是否為0*/printf("notaquadratic.\n");elseif(fabs(disc)<=1E-6)/*判斷disc是否為0*/printf("twoequalroot:%.2f\n",-b/(2*a));elseif(disc>1E-6)/*disc大于0*/{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf("twodistinctrealroot:\n%.2f,%.2f\n",x1,x2);}else/*disc小于0*/{rpart=-b/(2*a);ipart=sqrt(-disc)/(2*a);printf("twocomplexroot:%.2f+%.2fi,%.2f-%.2fi\n",rpart,ipart,rpart,ipart);}EG205.C例輸入x的值,根據(jù)下面的公式計(jì)算y值。#include<stdio.h>intmain(){return0;}doublex,y;scanf("%lf",&x);if(x<1)y=x;elseif(x<10)y=2*x-1;elsey=3*x+5;printf("%.2f\n",y);EG206.C//1≤x<10

×//1<=x<10

×//x>=1&&x<10√//elseif(x>=10)√if語句的簡單總結(jié):類型形式適合情況雙分支if(表達(dá)式)

語句1;else

語句2;滿足條件做一些操作;否則執(zhí)行另一些操作;即二選一單分支if(表達(dá)式)

語句;滿足條件則執(zhí)行操作;否則什么也不做多分支if(表達(dá)式1)

語句1elseif(表達(dá)式2)

語句2……else

語句n+1多個條件中必滿足一個,滿足則執(zhí)行其下的操作,其它操作都不做2.1.4if語句的嵌套在if語句的原“語句”中又包含一個或多個if語句1.if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2

else語句32.

if(表達(dá)式1)if(表達(dá)式2)語句1

else

語句2二義性?C語言規(guī)定:else總是與它前面最近的且未曾配對的if配對。if(表達(dá)式1){if(表達(dá)式2)語句1else語句2}if(表達(dá)式1){if(表達(dá)式2)語句1}else

語句2關(guān)于if語句的說明:1、表達(dá)式一般為關(guān)系表達(dá)式或邏輯表達(dá)式。但在C語言中它也可以是任意的數(shù)值表達(dá)式。if(3)n=1;if('a')printf("%d",'a');if(n=0)x=1;elsex=-1;2、else只能與if配對使用。僅else本身不能單獨(dú)作為一個語句使用。if(x>5);y=x;elsey=2*x-1;if(x>5)

;

/*空語句*/y=x;elsey=2*x-1;/*不再與if配對,而單獨(dú)出現(xiàn)了,因此出現(xiàn)語法錯誤*/3、每個語句序列可以是一個語句也可以是若干個語句,但要用花括號括起來構(gòu)成復(fù)合語句。if(a>b){temp=a;a=b;b=temp;}if(a+b>c&&b+c>a&&c+a>b){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%.2f\n",area);}elseprintf("Itisnotatriangle!\n");2.2關(guān)系運(yùn)算和邏輯運(yùn)算2.1.5條件運(yùn)算符1、條件運(yùn)算符:?:(唯一的三目運(yùn)算符)優(yōu)先級高于賦值類運(yùn)算符,右結(jié)合性2、條件表達(dá)式的一般形式:表達(dá)式1?表達(dá)式2:表達(dá)式3運(yùn)算過程:首先求表達(dá)式1的值,若為真(非0),則求表達(dá)式2的值,且整個表達(dá)式的值為表達(dá)式2的值;若表達(dá)式1為假(0),則求表達(dá)式3的值,且整個表達(dá)式的值為表達(dá)式3的值。表達(dá)式1整個條件表達(dá)式取表達(dá)式3的值真(非0)假(0)整個條件表達(dá)式取表達(dá)式2的值例:x=a>b?a:b;x=((a>b)?a:b);if(a>b)x=a;elsex=b;說明:1、條件表達(dá)式不能完全取代if語句,只有在if語句中內(nèi)嵌語句為賦值語句、且兩個分支都給同一個變量賦值時(shí)才能代替if語句。if(a>b)printf("%d\n",a);elseprintf("%d\n",b);if(a>b)x=a;elsey=b;2、條件表達(dá)式中,表達(dá)式1、表達(dá)式2和表達(dá)式3的類型可以不同。若表達(dá)式2和表達(dá)式3類型不同,則整個條件表達(dá)式的值應(yīng)為二者中較高的類型。2>1?1:1.5值為1.0

0?10:'a'值為972.1.6開關(guān)語句switch例:學(xué)生成績管理中,要將輸入的百分制轉(zhuǎn)換為五級制,規(guī)則如下:score≥90:輸出A80≤score≤89:輸出B70≤score≤79:輸出C60≤score≤69:輸出Dscore<60:輸出Eif(score>=90)printf("A\n");elseif(score>=80)printf("B\n");elseif(score>=70)printf("C\n");elseif(score>=60)printf("D\n");elseprintf("E\n");elseif:多條件并列測試,從中選一執(zhí)行switch:單條件測試,從中選一或多執(zhí)行1、格式:switch(表達(dá)式)

{

case

常量表達(dá)式1:語句1

case

常量表達(dá)式2:語句2

┆┆┆

case

常量表達(dá)式n:語句n

default:語句n+1

}2、功能:先計(jì)算表達(dá)式的值,然后測試該值是否與某常量表達(dá)式的值相同①、若有相同者,流程轉(zhuǎn)向其后的語句執(zhí)行②、若無,再看有沒有default部分:若有default,則執(zhí)行其后面的語句;若無default,則switch語句什么也不做,流程轉(zhuǎn)向其后繼語句。中間加空格隔開score≥90:輸出A80≤score≤89:輸出B70≤score≤79:輸出C60≤score≤69:輸出Dscore<60:輸出E#include<stdio.h>intmain(){intscore,temp;scanf("%d",&score);

temp=score/10;switch(temp){case10:case9:printf("A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("D\n");break;default:printf("E\n");}return0;}EG207.C注意:什么地方要加break,什么地方不加break!#include<stdio.h>intmain(){return0;}intscore;charch;scanf("%d",&score);printf("Grade:%c\n",ch);switch(score/10){case10:case9:ch='A';break;case8:ch='B';break;case7:ch='C';break;case6:ch='D';break;default:ch='E';}先賦值,再輸出EG207.C說明:1、switch后面括號內(nèi)的表達(dá)式可以是整型,也可以是字符型2、case后常量表達(dá)式只起語句標(biāo)號的作用;各個case后常量表達(dá)式的值必須互不相同,否則矛盾。3、各個case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。4、case后的語句為復(fù)合語句時(shí)可省略花括號。5、可在每個case分支的最后加上一個break,使流程跳出switch語句,而不再執(zhí)行其它分支。6、多個case可以共用一組執(zhí)行語句。case10:case9:printf("A\n");break;但不能寫成:case10,9:printf("A\n");b

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論