語言程序設計知識_第1頁
語言程序設計知識_第2頁
語言程序設計知識_第3頁
語言程序設計知識_第4頁
語言程序設計知識_第5頁
已閱讀5頁,還剩324頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

C程序設計1整理pptC語言程序設計第一章第二章第三章第四章第五章第六章第七章2整理ppt第一章C語言概述C語言–––既可作為系統(tǒng)軟件的程序設計語言,又可作為應用軟件的程序設計語言。尤其是當今計算機應用極為廣泛,軟件的設計、編寫質量要求高,經(jīng)常與硬件局部打交道,如:界面設計等,所以用C語言編寫是最理想的。因而C語言也是當前計算機語言中用得最廣泛的語言之一。3整理ppt§1.1C語言出現(xiàn)的歷史背景一、操作系統(tǒng)的設計語言O.S.–––操作系統(tǒng),為用戶使用計算機提供一個操作環(huán)境:系統(tǒng)命令、語言編程等。如:DOS.UNIX以前:O.S.軟件用匯編指令編寫。匯編語言:一種二進制指令代碼的符號表示,既繁瑣,又易出錯,可讀性差。改進:用C語言編寫,既提高了程序的可讀性,又可與硬件打交道。4整理ppt二、開展過程

1960年出現(xiàn)了Algol60語言,但該語言主要面向問題,與硬件較遠,故英國劍橋大學推出了CPL(CombinedProgrammingLanguage)1967年,MatinRichards對CPL進行改進、簡化、推出了BCPL(BasicCombinedProgrammingLanguage)1970年,美國貝爾實驗室KenThomson以BCPL為根底,再次簡化推出了B語言,并寫了第一個UNIX系統(tǒng)。5整理ppt美國貝爾實驗室D.M.Ritchie在B語言根底上設計出了C語言,并用其將UNIX系統(tǒng)全部改寫并實現(xiàn)。經(jīng)進一步改進,至1977年出現(xiàn)了與具體機器無關的C編譯文本,從而使C語言廣泛應用,各種機器皆可使用。1978年,美國BrainW.Kernighan與Dennis.M.Ritchie聯(lián)合出版一書?TheCProgrammingLanguage?成為ANSIC之根底。6整理ppt

1983年,美國標準化協(xié)會(ANSI)制定了ANSIC。ANSIC為根底:

不同機器有不同版本,尤其是函數(shù)均應參考相應的機器。7整理ppt§1.2C語言的特點

只有通過學習,方可理解C之特點,先簡敘之:1.簡潔、緊湊、方便、靈活

32個關鍵字,9種控制語句,主要用小寫字母,壓縮一切不必要成分2.運算符豐富除了最根本的+、-、×、÷、%等運算外,還將括號、賦值、類型強制轉換等均作為運算符,共有34種運算符。8整理ppt3.數(shù)據(jù)結構豐富除根本類型外,有指針,結構體、共同體等類型。4.具有結構化的控制語句模塊完整,控制中的語句可完整化。5.語法嚴格,但有靈活性如:數(shù)據(jù)類型可相互通用:整型、字符型通用。9整理ppt6.可與機器硬件打交道,直接訪問內(nèi)存地址,具有“高〞、“低〞級語言之功能。7.生成目標代碼質量高,執(zhí)行效率高。8.可移植性優(yōu)于匯編語言。10整理ppt§1.3簡單的C程序介紹

為了更好、更快地掌握C程序,我們先看幾個C語言程序:例1.main(){printf("Thisisacprogram\n");}11整理ppt例2.main()/*求兩個數(shù)之和*/{inta,b,sum;/*這是定義變量*/

a=123;b=456;sum=a+b;printf("sumis%d\n",sum);}12整理ppt例3.main()/*主函數(shù)*/{inta,b,c;/*定義變量*/scanf("%d,%d",&a,&b);/*輸入變量a和b的值*/c=max(a,b);/*調用max函數(shù),將得到的值賦給c*/printf("max=%d",c;)/*輸出c的值*/}13整理pptintmax(x,y)intx,y;/*對形參x、y作類型定義*/{intz;/*max函用到的變量z,也要加以定義*/

z=y;if(x>y)z=x;return(z);/*將z的值返回,通過max帶回調用處*/}14整理ppt通過分析,初步看到:1.C程序全部由一個一個的函數(shù)構成。至少有一個主函數(shù)main(),其它函數(shù)可被主函數(shù)調用或相互調用。其它函數(shù)可為C函數(shù)庫中函數(shù),也可為自己編的函數(shù)。上述特點稱為程序的模塊化.15整理ppt2.

函數(shù)的構成:

函數(shù)說明+函數(shù)體

函數(shù)體:

變量定義與執(zhí)行語句

可允許空函數(shù):

dump(){}函數(shù)說明包括:函數(shù)名、類型、屬性、參數(shù)等16整理ppt3.

函數(shù)的執(zhí)行一定從main()開始。盡管main()函數(shù)位置可自由。4.

書寫自由,一個語句可多行,一行可多個語句。5.

每一條語句必須有一個分號;6.C語言的輸入/出均以函數(shù)形式出現(xiàn)。scanf(),printf().7.

可用/

/對C語言加注釋17整理ppt程序設計C主講教師:劉丹18整理ppt第二章數(shù)據(jù)類型、運算符與表達式§2.1.數(shù)據(jù)類型

著名計算機科學家沃思提出:

程序=數(shù)據(jù)結構+算法19整理ppt

所以,存放數(shù)據(jù)的方式直接反映了一種語言的數(shù)據(jù)表達能力。數(shù)據(jù)的存儲方式又稱之為:數(shù)據(jù)類型。

舉一個例子:以考生各科成績及總分排隊問題為列。

成績的存放–––以數(shù)組形式

排隊方法––––算法20整理ppt前面已述.C數(shù)據(jù)類型豐富,分為:根本類型構造類型指針類型空類型整型字符型實型單精度雙精度數(shù)組結構體共用體數(shù)據(jù)有常量、變量之分,均為其中一種類型。本章先學習根本類型。枚舉21整理ppt§2.2常量與變量2.2.1常量和符號常量常量程序運行過程中不能被改變的量。一般的數(shù)據(jù)顯式寫法均表示常量。如程序中:

20

整型常量

15.8實型常量

'a'字符常量22整理ppt例:#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}還可用一個符號表示一個常量符號常量23整理ppt符號常量(一般用大寫,以區(qū)分變量)再如:=3.1415629#definePAI3.1415629#definePRICE3024整理ppt2.2.2變量

程序執(zhí)行中可以改變的量稱為變量。變量包括變量名和變量值。變量名

用標識符命名,對應一定數(shù)量的內(nèi)存存貯單元,其單元數(shù)視變量類型而定。標識符

由字母、數(shù)字、下劃線組成且由字母或下劃線開頭的字符串。25整理ppt

標識符可用來命名變量及作為常量名、函數(shù)名、類型名、文件名等,一個程序內(nèi)不得有重復名。

如:_sum,sum,student_name,price等

習慣上,變量名、函數(shù)名等用小寫字母表示。常量名用大寫字母表示(以增加可讀性)。另:需注意標識符長度,視不同系統(tǒng)而定。設允許8個字符。那么:student_namestudent_number為同一名字。26整理pptC語言中,變量須先定義,后使用如:intstudentstudent=30;那么假設寫成student=30,那么未定義,編譯時指出其錯。

一旦變量被定義,即可在編譯時為其分配相應數(shù)量的單元。

一旦變量被定義,其類型便確定。那么可檢查其運算的合法性。如:a%b表示a整除以b的余,那么a,b必須為整型量。27整理ppt§2.3整型數(shù)據(jù)2.3.1整型常量整型常量

整型常數(shù)C語言提供了三種形式

十進制如:256,308,-120等28整理ppt八進制以數(shù)字0開頭表示的整數(shù)例:0235,0146-012等.0235=2×82+3×8+5=157100146=1×82+4×8+6=10210-012=-(1×8+2〕=-1010

十六進制以"0x"開頭的整型數(shù)

如:0x16,0x2829整理ppt2.3.2整型變量一、分類:分為四種:根本型、短整型、長整型、無符號型

2.短整型:用"shortint"或"short"定義

3.長整型:用"long"或"longint"定義1.根本型:用"int"定義30整理ppt4.無符號型:不存放符號,那么不帶符號數(shù).

又分無符號整型,無符號短整型,無符號長整型。上述各種類型所占內(nèi)存單元數(shù)及取值范圍視不同機器而不同。詳見P13。31整理ppt二、定義方法整型變量分別以以下方式定義2.

短整型

shortint或shorta,b,c;3.

長整型

longint或longa,b,c;1.根本整型:inta,b,c;32整理ppt4.

無符號型

unsigneda,b,c;unsignedshorta,b,c;unsignedlonga,b,c;例:main(){inta,b,c,d;/*指定a,b,c,d為整型變量*/

unsigndu;/*指定u為無符號整型變量*/

a=12;b=–24;u=10;33整理ppt

c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d);}由此看到:不同類型的整型數(shù)據(jù)可進行算術運算。但有一定規(guī)那么,見§2.7.運行結果為

a+u=22,b+u=–1434整理ppt三、關于整型常量程序中出現(xiàn)的整型常數(shù),系統(tǒng)按以下規(guī)那么分配變量(內(nèi)存單元)或賦值給相應變量2.假設超越,而在–2147483648~2147483647之間,那么可賦給longint變量。1.當常數(shù)(量)在–32768~32767之間,那么可賦給int,longint變量。35整理ppt4.一個非負整數(shù)<32768那么可賦給unsignedint。5.

一個常數(shù)后加'l',或'L',表示長整數(shù).如123l.主要用于函數(shù)調用時形、實參數(shù)傳遞。3.假設int,shortint長度相同,那么二者皆可賦值。36整理ppt§2.4實型數(shù)據(jù)2.4.1實型常量有二種表示形式

1.十進制形式如:0.126,523.64等2.

指數(shù)形式對于較大或較小的數(shù),可用指數(shù)形式

0.00001261.26E–512600001.26E+6或1.26E6'E','e'均可.37整理ppt分為單精度型與雙精度型.

分別為

floatx,y,z;(單精度)

doublea,b,c;(雙精度)

一般地:單精度占4字節(jié)內(nèi)存單元;

雙精度占8字節(jié)內(nèi)存單元.2.4.2實型變量38整理ppt注意:

不同機器對實型變量的有效數(shù)字長度的限制

如:pc機,單精度一般為7位,雙精度15位單精度數(shù)值:10–38~1038雙精度數(shù)值:10–308~10308于是:floata;a=123456.789那么實際賦值a123456.739整理ppt§2.5字符型數(shù)據(jù)

用一對單引號括起來的單個字符。

如'a','A',二者不一樣.此外,以"\"開頭后接一個字符或n個字符代表了一種特殊字符常量。–––轉義字符。

如\n––換行,\r––回車2.5.1字符常量40整理ppt其它如下表:字符形式\n\t\v\b\r\f\\\'\ddd\xxh功能換行橫向跳格(即跳到下一個輸出區(qū))豎向跳格退格回車走紙換頁反斜杠字符“\〞單引號(撇號)字符1到3位8進制數(shù)所代表的字符1到2位16進制數(shù)所代表的字符41整理ppt注意:\表示ASCII碼字符三位八進制如

\101––表示字母A又:\x十六進制ASCII字符\x41––表示字母A42整理ppt其定義方式為:

charc1,c2;c1='A';c2='B';字符變量只占一個字節(jié)單元。2.5.2字符變量用來存放一個字符的變量.43整理ppt

一個字符存入一個字符變量。其對應單元存放的是其ASCII碼,即ASCII碼的二進制形式。

由此:字符變量中的數(shù)據(jù)是一整型數(shù)據(jù)。輸出時既可輸出字符,亦可輸出整數(shù),且字符變量可作整數(shù)運算。2.5.3字符數(shù)據(jù)的實際存放形式44整理ppt例1:main(){charc1,c2;c1=97;c2=98;printf("%c%c",c1,c2)}運行結果ab

看如下幾個例子:45整理ppt例2:main(){charc1,c2;c1='a';c2='b';c1=c1–32;c2=c2–32;printf("%c%c",c1,c2)}運行結果AB46整理ppt例3:main(){inti;charc;i='a';c=97;printf("%c,%d\n",c,c);printf("%c,%d\n",i,i);}

運行結果:a,97a,9747整理ppt有的系統(tǒng)將一個字節(jié)的整型變量的最高位,作為符號。這時對0~127之間的字符可輸出正整數(shù)(ASCII)。但128~255字符最高位為1,那么作為負數(shù)輸出。

由此最好用unsignedint存放字符整數(shù)(ASCII)。注:48整理ppt用雙引號括起來的字符串。

例:"GoodMorning!"

注意'A'與"A"是不同字符串存放時,在最后加上"/0"––空字符。

于是:GoodMorning!/02.5.4字符串常量49整理ppt"A"A/0但'A'

A注意:1.

字符串長度=實際字符個數(shù)+1,但最后\0不輸出.

printf("GoodMorning!")此處不寫/0。自動加上。2.

單個字符的字符串不能賦給字符變量。

例:charc;c="a";是錯誤的。50整理ppt§2.6變量賦初值C語言允許定義變量時賦予初值。

如:

inti=6;floatx=8.35;charc='6';*也可對某個變量賦初值:

inta,b,c=6;51整理ppt*不可能將同初值的變量賦初值時寫成:inta=b=c=6;

只能:

inta=6,b=6,c=6;

定義變量時賦初值實際上是在運行時執(zhí)行一個賦初值語句:inta=6;相當于:inta;a=6;52整理ppt§2.7類數(shù)值型數(shù)據(jù)間的混合運算C語言允許雙精度、單精度、整型及字符數(shù)據(jù)之間混合運算10+'a'+1.5–8765.1234'b'是允許的。但有一個規(guī)那么:先轉換成同一類型,再計算。53整理pptdoublefloat上下圖中“〞表示必定轉換。如'a'+'b',先轉換為int。結果為int。轉換方法:

long

unsigned

intchar,short即:既使是同一種類型也按"

"轉換。54整理ppt圖中“〞:表示低,高型數(shù)據(jù)運算時,均先轉換為高型。例:10+'a'+if–d/e其中:

i––intf––floatd––doublee––long55整理ppt

10+'a':轉為int,結果為int

i

f:轉為double,結果為double

+:轉為double

d/e:轉為double

-轉為double那么運算時:56整理ppt§2.8算術運算符與算術表達式運算符:運算的符號表示。

C語言有豐富的運算功能,先簡述之2.8.1.C運算符1.

算術運算符+,–,,/,%,等3.

邏輯運算符!,&&,||2.

關系運算符>,<,==,>=,<=,!=57整理ppt4.

位運算符<<,>>,~,|,^,&.5.

賦值運算符=等6.

條件運算符?等7.

逗號運算符,8.

指針運算符*,&58整理ppt11.

分量運算符?,

,12.

下標運算符[]13.

其它運算符如函數(shù)的調用()9.

求字節(jié)數(shù)運算符sizeof10.

強制類型轉換運算符(類型)

59整理ppt2.8.2算術運算符和算術表達式一、根本算術運算符+

加法正值3+6,+3–減法負值6–4,–5

乘法38/除法8/5%求余7%4的值為360整理ppt注:

兩個整型數(shù)據(jù)相除(結果為整,一般向零靠攏)。–5/3–1“/〞中,有一個float,那么結果為double型,使用時千萬注意int/int出現(xiàn)數(shù)據(jù)喪失。61整理ppt二、算術表達式及算術運算符的優(yōu)先級與結合性運算對象:常量、變量、函數(shù)等優(yōu)先級:

(),

,/,%,

+,–結合性:同一優(yōu)先級,自左向右,為左結合性,反之為右結合性。例:a

b/c–1.5+'a'–de

當類型不同的數(shù)據(jù)進行運算時,按§2.7介紹的類型轉換。算術表達式:用算術運行運算符和括號將運算對象連接起來,且符合C語法規(guī)那么的式子。62整理ppt三、可利用強制類型轉換運算符將一個算術表達式轉換為所需類型形式:(類型名)(表達式)例如:(double)a將a轉換為double(int)(x+y)將x+y轉換為int(float)(5%3)將5%3轉換為float63整理ppt注:1.

括號不能省略。

如:intx會理解為變量intx.

2.

轉換后的類型數(shù)據(jù)由系統(tǒng)分配一個中間變量存放,而原變量類型不變。floatx;又如:(int)(x+y)假設省略:(int)x+y會變成將x轉成整型.(int)x;那么x本身仍為實型,而(int)x由一個中間變量(整)存放x的整數(shù)局部。64整理ppt例:main(){floatx;inti;x=3.6;i=(int)x;printf("x=%d",x,i);}那么:x=3.600000,i=3.65整理ppt總結以上類型轉換,有二種:1.

強制另:

強制類型轉換運算優(yōu)先于算術運算符.2.系統(tǒng)自動如:假設x為float,那么x%3不合法。但可用(int)x%3來解決。(附錄III介紹了優(yōu)先級)66整理ppt四、自增,自減運算符設有inti=3;++自增1––自減1那么:++i,i++都會使i變?yōu)?,但有區(qū)別:++i:先使i值+1,再使用i值;i++:先使用i值,再使i值+1.j=++i;j=4,i=4.(i=i+1;j=i;)j=i++;j=3,i=4.(j=i;i=i+1)67整理ppt同理:––i,i––,均使i值–1,但:

又如:printf("i=%d\n",i++);

結果:i=3假設:printf("i=%d\n",++i);結果:i=4––i:先使i值–1,再使用i值;i––:先使用i值,再使i值–1i=3;68整理ppt幾點注意:1.++和––運算法只能用于變量,不得用于常量和表達式.2.++,–

–,的結合性為從右至左,而一般算術運算符為從左至右。如:如5++,(a+b)++均為不合法.–i++

"–"和"++"為同一優(yōu)先級.–i++相當于–(i++)假設i=3,那么結果為–3,i為4.++,––主要用于循環(huán)變量自增或自減。69整理ppt1.

要慎用++、––運算符。五、有關表達式使用中的問題說明那么:先對i進行3次自加,為6,然后三個i相加為18,而i為6。如:

表達式(i++)+(i++)+(i++)(i=3)

一般認為:從左至右:3+4+5=12,i6.但TurboC.MSC都是先取三個原值相加:i+i+i=9i6如果表達式數(shù)為:

k=(++i)+(++i)+(++i)70整理ppt2.

在表達式中,有的運算符為一個字符,有的為兩個字符。3.

在函數(shù)調用時,如:一般地:自左至右盡可能多地將假設干字符組成一個運算符。例:i+++j,究竟理解為(i++)+j還是i+(++j)?printf("%d,%d",i,i++);假設i=3,假設參數(shù)計算從左至右,那么輸出3,3假設從右至左,那么輸出4,3上述問題看似復雜,最好上機實踐.71整理ppt§2.9賦值運算符和賦值表達式符號"="為賦值運算符。2.

整型數(shù)據(jù)賦給實型變量,數(shù)值不變,但按實數(shù)形式存放.1.

將實型數(shù)據(jù)(無論單,雙精度)賦給整型變量時,舍棄小數(shù).賦值時,兩邊類型假設不一致,那么按以下規(guī)那么轉換:72整理ppt4.

將intlongint,進行符號擴展。即:符號擴展,低16位long的低16位。5.longintint那么高16位截斷。3.

字符型數(shù)據(jù)賦給整型變量時:(2)字符帶符號整型變量,那么字符高位擴展。(1)字符無符號整型變量,那么存入低8位,高8位補零。73整理ppt6.

將unsignedint型

longint高位補0。原值傳送,但數(shù)據(jù)大小不能超值。如:unsignedinta=65535;intb;b=a;那么越界。而位數(shù)相同局部賦值unsignedintintunsignedlonglongunsignedshortshort74整理ppt7.

非unsigned型長度相同的unsigned型數(shù)據(jù),原樣傳送(包括符號位)

一、復合賦值運算符:在"

="號之前加一個其它運算符。C語言規(guī)定:但凡二目運算符均可構成復合運算符。例:a+=3;相當于a=a+3x

=y+8;相當于x=x

(y+8)x%=3;相當于x=x%75整理ppt一般形式:<變量><賦值運算符><表達式>二、賦值表達式例:x=10為一賦值表達式其中<表達式>又可以是一個賦值表達式。例:

x=(y=10)相當于y=10;x=y

由于賦值號為右結合性,于是"()"可省略,即為:x=y=10;76整理ppt例:a+=a–=a

a(設a12)又:a=5+(c=6)c=6,a=11a=(b=4)+(c=6)

b=4,c=6,a=10a=(b=10)/(c=2)b=10,c=2,a=5進一步,還可用復合賦值運算符作以下運算:步驟:

aa144.a–=a

aa=a–a

a=12–144=–132a+=–132a=a+(–132)=–26477整理ppt§2.10逗號運算符和逗號表達式

一般形式:

表達式1,表達式2其計算規(guī)那么:先計算表達式1,再計算表達式2,最后值為表達式2的值。例:a=35,a4那么:先計算35,a15,a4=60,結果為60。78整理ppt又如:(a=3

5,a

4),a+5

擴展形式:表達式1,表達2,…,表達式n,結果為20(作為逗號表達式的值)

a+5a即20a.

3

5=15a

a

4=60(此時a值仍未變)結果為表達式n的值

79整理ppt注意:

x=(a=3,6

3)賦值表達式,x18;

x=a=3,6

a逗號表達式,x3.逗號表達式主要用于某些語句中需一次計算多個表達式值的情況。如在循環(huán)語句中。函數(shù)調用中的實參之間雖然用的是逗號間隔,但不是逗號表達式。如:printf("%d,%d,%d",a,b,c);80整理ppt主講教師:劉丹C程序設計81整理ppt第三章最簡單的C程序設計§3.1C語句概述C語句全部為可執(zhí)行語句,對應假設干機器操作指命令C程序由許多源文件組成。(分別編譯,然后連接)每一個源文件由預編譯命令和假設干函數(shù)組成。每一個函數(shù)由說明局部和語句局部組成。82整理ppt其結構如圖除說明局部外,重要局部為語句局部。C程序源程序文件1源程序文件i源程序文件n預編譯命令函數(shù)1函數(shù)n說明局部執(zhí)行局部(語句)……83整理pptC語句分為五類1.控制語句––改變語句的執(zhí)行順序共有9種控制語句:

if()~else~(條件)

for()~(循環(huán))

while()~(循環(huán))

do~while(循環(huán))84整理ppt

continue(結束本次循環(huán))

switch(多分支選擇)

break(中止整個循環(huán))

goto(轉移)

return(函數(shù)返回)()表示條件,~表示語句85整理ppt2.函數(shù)調用語句3.表達式語句printf("…");表達式加;如:i=i+1;i++;x+y;

其函數(shù)調用也可理解為表達式語句.86整理ppt5.復合語句4.空語句

;

任何事情都不做.用{}括起來的一系列語句。如:{z=x+y;t=z/100;printf("%f",t);

}87整理ppt§3.2程序的三種根本結構

從結構化程序設計角度出發(fā),程序有三種結構:·順序結構·選擇結構·循環(huán)結構88整理ppt1.順序結構表示ABAB先執(zhí)行A,再執(zhí)行B.89整理ppt2.選擇結構表示為ABPTFBTPFA存在某條件P,假設P為真,那么執(zhí)行A,否那么執(zhí)行B。90整理ppt3.循環(huán)結構表示為PFTAAP為T(1)當型結構當P條件成立時(T),反復執(zhí)行A,直到P為“假〞時才停止循環(huán).有兩種結構:當型和直到型91整理ppt(2)

直到型APFTA直到P為真先執(zhí)行A,再判斷P,假設為F,再執(zhí)行A,如此反復,直到P為T.92整理ppt另外:由選擇結構可以派生出另一種根本結構––多分支結構.KK=K1A1A2AiAn……K=K2K=Ki

已證明:上述三種結構組成的程序可以解決全部的問題,所以任何一種高級語言都具備上述三種結構。93整理ppt§3.3賦值語句

由賦值表達式加分號;構成,與其它高級語言相比有以下不同點:“=〞為一運算符,由此,構成一賦值表達式,可出現(xiàn)于表達式能出現(xiàn)的任何地方:if((a=b)>0)t=a;94整理ppt§3.4數(shù)據(jù)輸出

前面已論述:C語言本身無輸入/出語句,由函數(shù)實現(xiàn),如printf.等。

一般:C語言提供了一些標準的輸入/出函數(shù)–––系統(tǒng)函數(shù)。95整理ppt形式:putchar(c);功能:向終端(一般為顯示器)輸出一個字符,其中c為字符型或整型變量注意:用該函數(shù)時,須用預編譯命令:#include"stdio.h"3.4.1putchar

函數(shù)—字符輸出函數(shù)96整理ppt舉例:#include"stdio.h"main(){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(C);}結果:BOY97整理pptputchar(a);putchar('\n');putchar(b);putchar('\n');putchar(c);putchar('\n');*利用putchar還可輸出其它轉義字符結果:BOYputchar('\101');輸出Aputchar('\’');輸出’putchar('\015');輸出↙*假設將最后一行改為:98整理ppt3.4.2printf函數(shù)––格式輸出函數(shù)一、printf的一般形式

是C語言中使用得最多的一種輸出函數(shù),它可一次按格式輸出多個不同類型的數(shù)據(jù)。printf(格式控制序列,輸出表列);輸出表列–––用“,〞號隔開的變量或表達式序列,其變量的值按對應的格式控制符所指定的格式輸出。99整理ppt格式控制序列–––用雙引號“...〞括起來的格式符序列。格式控制序列由格式說明符和普通字符組成。2.普通字符原樣輸出1.格式說明符:

由%接–格式字符組成如:%f,%d等100整理ppt例:a=3;b=4;printf("a=%d,b=%d",a,b);…結果:

a=3,b=4無論a,b中位數(shù)多少,均為上述形式:a=123b=45101整理ppt二、格式字符如直接用%d,那么將出錯。不同類型的數(shù)據(jù)輸出,用不同格式字符:1.d格式符––十進制整數(shù)輸出。(1)%d:按數(shù)據(jù)的實際長度輸出。(2)%md:m表示輸出字段寬度。假設實際位數(shù)<m,左邊補空格。(3)%ld:輸出長整數(shù)如要指定寬度,那么用%mld即可。例:

longa=1234567;printf("%ld",a);102整理ppt2.o格式符–––按八進制形式輸出.1111111111111111以1的補碼形式inta=–1;printf("%d,%o",a,a);那么輸出結果:–1,177777注:連符號位一起組成八進制數(shù)輸出特例:–1存于int單元如以長整型輸出,在%加l,也可指定寬度m,%mo103整理ppt3.x格式符–––以十六進制形式輸出整數(shù).例:inta=–1;printf("%x,%o,%d〞,a,a,a)輸出結果:ffff,177777,–1104整理ppt例: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);}a=–1,177777,ffff,6553511111111111111111111111111111111a=65535b=–24.u格式符–––無符號格式輸出整數(shù).b=–2,177776,fffe,65534運行結果為:105整理ppt5.c格式符–––輸出一個字符.注:假設有一整型變量,其值在0~255之間,那么可以字符形式輸出.一個字符型變量亦可以一個整型數(shù)據(jù)輸出.charc='a';printf("%c",c);106整理ppt例:

main(){charc='a';

inti=97;printf("%c,%d\n",c,c);printf("%c,%d\n",i,i);}107整理ppt運行結果為:a,97a,97也可以指定輸出字符寬度,如果有那么輸出:"?a",即c變量輸出占3列,前2列補空格.print("%3c",c)108整理ppt6.s格式符–––用來輸出一個字符串.(1)%ms,輸出的字符串占m列,如字符串本身長度大于m,那么突破m的限制,將字符串全部輸出。假設串長小于m,那么左補空格。允許一定的編輯即允許%ms,%–ms,%m.ns,%–m.ns四種形式,每一形式的意義如下:例:printf("%s","CHINA");結果:

CHINA109整理ppt(3)%m.ns,輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側,左補空格。(4)%–ms,其中m、n含義同上,n個字符輸出在m列范圍的左側,右補空格。如果n>m,那么m自動取n值,即保證n個字符正常輸出。(2)%–ms,如果串長小于m,那么在m列范圍內(nèi),字符串向左靠,右補空格。110整理ppt7.f格式符–––以小數(shù)形式輸出單、雙精度實數(shù),有以下幾種形式:%m.nf,指定輸出的數(shù)據(jù)共占m列,其中有n位小數(shù)。如果值長度小于m,那么左端補空格。%–mn.f,與%m.nf根本相同,只是使輸出的數(shù)值向左端靠,右端補空格。%f,不指定字段寬度,由系統(tǒng)自動指定,使整數(shù)局部全部如數(shù)輸出,并輸出6位小數(shù)。%f%m.nf%–m.nf111整理ppt8.e格式符–––以指數(shù)形式輸出單,雙精度實數(shù)根本形式:%e結果:1.23456共13列6例5例可有%m.ne和%–m.ne的形式9.g格式符––根據(jù)實數(shù)大小自動選擇f格式,或e格式輸出單雙精度實數(shù)。e+002例:

printf("%e",123.456)112整理ppt表3.1printf格式字符總結格式字符d以帶符號的十進制形式輸出整數(shù)(正數(shù)不輸出符號)oxucsfeg以8進制無符號形式輸出整數(shù)(不輸出前導符0)。以16進制無符號形式輸出整數(shù)(不輸出前導符0x)。以無符號10進制形式輸出整數(shù)。以字符形式輸出,只輸出一個字符。說明輸出字符串。以小數(shù)形式輸出單、雙精度數(shù),隱含輸出6位小數(shù)。以標準形式輸出單、雙精度數(shù),數(shù)字部分小數(shù)位數(shù)為6位。選用%f或%e格式中輸出寬度較短的一種格式,不輸出無意義的0。113整理ppt

許多情況與具體機器或系統(tǒng)有關,最好機器上一試。表3.2附加格式說明字符字符說明用于長整型整型,可加在格式符d、o、x、u前面。數(shù)據(jù)最小寬度對實數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)。輸出的數(shù)字或字符在域內(nèi)向左靠。m(代表一個正整數(shù)).n(代表一個正整數(shù))–字母1114整理ppt§3.5數(shù)據(jù)輸入系統(tǒng)提供了假設干函數(shù),以提供從標準輸入設備(鍵盤)上輸入數(shù)據(jù).3.5.1getchar函數(shù)本節(jié)先介紹兩個輸入函數(shù).形式:

getchar()功能:從標準輸入裝置(鍵盤)上輸入一個字符要求:有#include"stdio.h"預編譯命令115整理ppt例:#include"stdio.h"main(){charc;c=getchar();putchar(c);}116整理ppt3.5.2scanf函數(shù)功能:在標準輸入裝置(鍵盤)上按指定格式輸入各種類型的數(shù)據(jù)地址表列–––變量的地址或字符串首地址。形式:scanf(格式控制序列,地址表列)格式控制序列–––同printf(…..)117整理ppt例:main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);prinft("%d,%d,%d\n,"a,b,c);}運行,機器等待你輸入:345↙

結果3,4,5118整理ppt注意:1.scanf函數(shù)順用地址量接受數(shù)據(jù)。2.輸入數(shù)據(jù)的間隔為↙,Tab.空格,不能為“,〞.3.允許在格式符中插入附加字符。格式字符及附加字符的定義如下表3.3和表3.4119整理ppt表3.3scanf格式字符格式字符d用來輸入十進制整數(shù)。oxcsfe用來輸入八進制整數(shù)。用來輸入十六進制整數(shù)。用來輸入單個字符。說明用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時以非空白字符開始,以第一個空白字符結束。字符串以串結束標志‘\0’作為其最后一個字符。用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入。以f作用相同,e與f可以互相替換。120整理ppt表3.4scanf附加的格式說明字符字符說明用于輸入長整型數(shù)據(jù)(可用%ld,%lo,%lx),以及double型數(shù)據(jù)(用%lf或%le)。用于輸入短整型數(shù)據(jù)(可用%hd,%ho,%hx)。指定輸入數(shù)據(jù)所占寬度(列數(shù))。表示本輸入項在讀入后不賦給相應的變量。h域寬(為一正整數(shù))*l121整理ppt4.對于輸入unsigned型數(shù)據(jù),不用%u,而用%d,%o,%x.5.指定數(shù)據(jù)長度時,系統(tǒng)自動截取。那么當輸入123456時,

scanf("%3d%3d",&a,&b);a12,b34122整理ppt7.輸入數(shù)據(jù)不能規(guī)定精度.6.在%后加“*〞表示跳過相應的數(shù)據(jù)那么當輸入為1234567↙那么a12b67scanf("%2d%*3d%2d",&a,&b);scanf("%7.2f",&a);是錯誤的123整理ppt8.在格式控制中除格式說明符外假設還有其它字符,那么應按順序原樣輸入。例:scanf("%d,%d",&a,&b);那么必須輸入21,28↙又如:

scanf("a=%d,b=%d,c=%d",&a,&b,&c);那么輸入:a=34,b=58,c=100124整理ppt§3.6程序舉例例1:

輸入三角形三邊,求三角形面積。例2:

輸入一個大寫字母,要求系統(tǒng)改為小寫字母輸出。例3.

當b2–4ac>0時,求ax2+bx+c=0的兩個根。125整理ppt程序設計C主講教師:劉丹126整理ppt

在C程序的三種結構中,分支結構是一重要結構,其中的P為條件第四章邏輯運算和判斷選取控制問題:條件如何表達?邏輯運算、關系運算127整理ppt§4.1關系運算符關系運算比較運算,如:a>3為一比較運算,當a=5,a>3成立。結果稱為“真〞,否那么,如:a=1,a>3不成立,為假。上述表達式a>3稱為關系表達式。128整理ppt4.1.1

關系運算符及其優(yōu)先次序1.<,<=,>,>=為同一優(yōu)先級,==,!=等為同一優(yōu)先級,但前者高于后者。2.關系運算符優(yōu)先級低于算術運算符。C語言提供了六種關系運算符

<<=>>===!=優(yōu)先級為:129整理ppt3.關系運算符優(yōu)先級高于賦值運算符。如以下圖:算術運算符賦值運算符關系運算符高低舉例:c>a+b

c>(a+b)a>b!=c

(a>b)!=ca==b<c

a==(b<c)a=b>c

a=(b>c)130整理ppt4.1.2

關系表達式關系表達式的結果值規(guī)定為1或0.如:a>b,a+b>b+c,(a=3)>(b=5),'a'>'b',(a>b)>(b<c)完整的定義:用關系運算符將兩個表達式(算術、關系、邏輯、賦值、字符等表達式)連接起來的式子。1––結果為真(成立)0––結果為假(不成立)131整理ppt如:當a=3,b=2,c=1時(a>b)==c成立1b+c<a不成立0d=a>b那么a>b值為1,所以d=1.f=a>b>ca>b為1,a>b>c為0,所以f=0.132整理ppt§4.2邏輯運算符和邏輯表達式

用邏輯運算符將關系表達式、邏輯表達式連接起來的式子–––邏輯表達式。133整理ppt4.2.1

邏輯運算符及優(yōu)先級ab!a!ba&&ba||b

真真假假真真

真假假真假真

假真真假假真

假假真真假假三種:&&(與),||(或)!(非)其意義見真值表134整理ppta&&b當a,b均為1時,才為1a||b當a,b中有一個為1時,才為1!a當a為1,!a為0,反之為1.由此看到:||和&&為雙目運算符.!為單目運算符。135整理ppt優(yōu)先級定義:2.&&和||低于關系運算符。!高于算術運算符1.!(非)優(yōu)先于&&(與).&&優(yōu)先于||即:!&&||例:!a&&b||x>y&&c

((!a)&&b)||((x>y)&&c)136整理ppt4.2.2

邏輯表達式1.邏輯表達式的值與關系表達式值一樣,真為1,假為0。例:a=4那么!a值為0.此處只要a0,為真.那么!a值為0.

a=4,b=5a&&b為1

前面已定義了邏輯表達式,以下看一看邏輯表達式的值及具體的運算。137整理ppt

4&&0||2為1.

總之,在邏輯運算中,非0值參加邏輯運算時被看成1處理.

a=4,b=5a||b為1

a=4,b=5!a||b為1138整理ppt2.一個邏輯表達式中的邏輯運算符并不是一定全部執(zhí)行.

一個實際的例子:判斷年號是否為潤年。如:a&&b&&c.那么當a=0(假)時,b,c不需判斷。當a=1,b=0,那么不需判c.又如:a||b||c.當a=1時,b,c均不必判別。潤年的定義:

能被4整除且又能被400整除。

年號能被4整除但不能被100整除。139整理ppt當(year%4!=0)||(year%100==0&&year%400!=0)為1時,year為非潤年。設用變量year表示年號當((year%4==0&&year%100!=0)||year%400==0)為1時,year為潤年,否那么為非潤年。如果要判別非潤年可在上述表達式前加非(!)運算符.當!((year%4==0&&year%100!=0)||year%400==0)為1時,year為非潤年?;蛘?即:那么:140整理ppt§4.3if語句–––條件判斷4.3.1if的三種形式功能:當表達式值非0時,執(zhí)行語句A,否那么不執(zhí)行語句A.表達式語句A=00例如:if(x>y)printf("%d",x)形式1

if(表達式)語句A其流程圖:141整理ppt形式2if(表達式)語句Aelse語句B功能:表達式為非0,執(zhí)行語句A

表達式為0,執(zhí)行語句B表達式語句A語句B0=0例:if(x>y) printf("%d",x); elseprintf("%d",y);142整理ppt形式3if(表達式1)語句1

elseif(表達式2)語句2elseif(表達式3)語句3……elseif(表達式n)語句nelse語句n143整理ppt流程:表達1表達2表達3表達n語句1語句2語句3語句n語句n語句1……0=0=0000144整理ppt如:if(3)prinft("o.k");if('a')…1.表達式可以是邏輯、關系,甚至是算術表達式。2.上述形式中的語句必須以分號結束3.上述形式中的語句可以是由{}括起來的復合語句。此時,在{}外可以不用分號.注意的問題:145整理pptmain(){floata,b,t;scabf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}例4.1輸入兩個實數(shù),按代數(shù)值由小到大次序輸出這兩個數(shù)。146整理ppt3.6,–3.2

–3.20,3.60運行情況如下:147整理ppt例4.2輸入三個數(shù),按大小順序輸出。main()

{floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}148整理pptif(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);}運行情況如下:3,7,1

1.00,3.00,7.00149整理ppt4.3.2.if語句的嵌套if(表達式1)內(nèi)嵌ifelse內(nèi)嵌注意:else與最近的if配對.一般形式在上述形式的if語句中,又可以是if語句–––稱為嵌套。if(表達式2)語句1if(表達式3)語句3else語句2else語句4150整理ppt例:if()if()語句2else語句3if(){if()語句1}

else…所以:必要時加{}.if()語句1else151整理ppt例4.3

有一函數(shù)y=–1(x<0)0(x=0)1(x>0)編一程序,輸入一個x值,輸出y值。有以下幾種寫法,請判斷哪些是正確的?程序1:

main(){intx,y;scanf("%d",&x);152整理pptif(x<0)y=–1;elseif(x==0)y=0;elsey=1;printf("x=%d,y=%d\n",x,y);}程序2:將上面程序的if語句改為:

if(x>=0)if(x>0)y=1;elsey=0;elsey=–1;153整理ppt程序3:將上述if語句改為:

y=–1;if(x!=0)if(x>0)y=1;elsey=0;程序4:

y=0;if(x>=0)if(x>0)y=1;elsey=–1;154整理ppt4.3.3條件運算符C語言提供了一個簡單的條件賦值語句或條件表達式。問題:當判斷條件不管是“真〞是“假〞,均給同一變量賦值時,能否簡化語句書寫?條件運算符為?:三目運算符。155整理ppt功能:先判表達式1,假設非0,那么值為表達式2的值,否那么為表達式3的值。一般形式表達式1?表達式2:表達式3max=a>b?a:b;當a>b.maxa.否那么maxb156整理ppt注:1.

條件運算符優(yōu)先于賦值運算符.

例:max=(a>b?a:b)可去掉()2.

條件運算符低于關系運算符和算術運算符。例:max=a>b?a:b+1

max=a>b?a:(b+1)并不是

max=(a>b?a:b)+13.

條件運算符結合性為從右至左.

如:a>b?a:c>d?c:d

相當于a>b?a:(c>d?c:d)157整理ppt4.

條件表達式不能取代一般的if語句,只有當if的兩個分支為給同一變量賦值時才可替代if.if(a>b)printf("%d",a);elseprintf("%d",b)由于printf.不是表達式,故不可用條件表達式,但可為:

printf("%d",a>b?a:b);158整理ppt5.

表達式1、表達式2、表達式3可類型不同。main(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z'?(ch+32):ch;printf("%c",ch)}例4.4輸入一個字符,判別它是否大寫字母,如果是,將它轉換成小寫字母;如果不是,不轉換。然后輸出最后得到的字符。159整理ppt運行結果如下:

A

a160整理ppt§4.4switch語句–––開關語句問題:當某一表達式有n個取值,每一取值執(zhí)行一語句,那么如果用內(nèi)嵌if十分繁鎖,而用switch簡單.一般形式:switch(表達式){case常量表達式1:語句1

case常量表達式2:語句2

case常量表達式n:語句ndefault:語句n+1}161整理ppt例:

根據(jù)成績等級打印百分數(shù)段.switch(grade){case'A':printf("85~100\n");case'B':printf("70~84\n");case'C':printf("60~69\n");case'D':printf("<60\n");default:printf("error\n");}162整理ppt根據(jù)表達式的取值,判斷其與哪一個常量表達式相等。如=表達式i,那么自語句i開始執(zhí)行,直到語句n+1止。假設與所有常量表達式值不相等,那么從default后的語句開始執(zhí)行。功能:163整理pptswitch(表達式){case常表1:語句1;

break;一般形式改為:以上存在一個問題:沒有完全起到分支作用。解決方法:增加break語句,使之跳出switch結構。164整理pptcase常表2:語句2;break;……case常表n:語句n;

break;default:語句n+1;}請大家修改以上例子,使之正確。165整理ppt注:1.常表值必須互不相等,否那么二異性。2.case順序無關緊要。3.

不一定非用break不可,有時幾種情況合并執(zhí)行一組語句。166整理pptswitch(grade){case'A':cas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論