版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C程序設(shè)計講義新疆大學軟件學院楊璇TOC\o"1-5"\h\z\o"CurrentDocument"第一章C程序設(shè)計概述 -1-1、程序的一般概念 -1-2、為什么要學習C語言 -1-3、怎樣學好C語言 -1-4、C語言概述 -1-計算機程序語言的發(fā)展歷程 -1C語言的發(fā)展過程 -3C程序結(jié)構(gòu)特征 -44>5C- ■■*■■?**■■■?■■■■■■*■■?**■?■****?*>*■*?*?*?***■*?*>*■*?■**?■****?*>*■*?*?*?***■*?*>*■*?■**?■**■*-5-6C語言的運イ丁環(huán)境 -5-7 一些必備的冃リ導(dǎo)知識 -5-\o"CurrentDocument"第二章 算法及其表示 -6-1、什么是算法 -6-2、算法的特性 -6-3、算法的表示 -6-4,傳統(tǒng)流程圖的畫法 -6-5、結(jié)構(gòu)化程序設(shè)計方法 -7-\o"CurrentDocument"第三章語法記號、數(shù)據(jù)類型、常量、變量、運算符和表達式 -8-1、語法記號 -8-1關(guān)鍵詞 -8-3分割符 -10-2、C語言的數(shù)據(jù)類型 -10-3、常量 -11 -1符號常量 -11-2整型常量 -12-3浮點型常量 -12-4字符型常量 -12-5字符串常量 -13-4、變量 -14-5、運算符和表達式 -151算術(shù)運算符和算術(shù)表達式 -16-2關(guān)系算符和關(guān)系表達式-16-3邏輯運算符和邏輯表達式 -17-4賦值運算符和賦值表達式 -19-5逗號運算符和逗號表達式 -19-6條件運算符和條件表達式 -20-6、各種數(shù)值型數(shù)據(jù)之間的混合運算 -20-\o"CurrentDocument"第四章基本的輸入輸出和簡單的程序設(shè)計 -21-1、常用的輸出函數(shù) -21-字符數(shù)據(jù)的輸出函數(shù) -21-格式化數(shù)據(jù)的輸出函數(shù) -22-z、巾用的輸入函數(shù) -24-1字符數(shù)據(jù)的輸入函數(shù) -242格式化數(shù)據(jù)的輸入函數(shù) -24-3、簡單C程序設(shè)計 -26-\o"CurrentDocument"第五章 分支結(jié)構(gòu)程序設(shè)計 -27-1、分支程序的基本結(jié)構(gòu) -27I二分支選擇結(jié)構(gòu) -27-1.2多分支選擇結(jié)構(gòu) -27-2、?ロ^02x下王/^ -27-2.1if語句的第一種形式 -272.2if 日ン^^—開クエ[ -30-2.3if語句的第三種形式(嵌套) -31-2.4if一和else的配對原則 -32-3、多分支語句及程序設(shè)計 -373.1switch語句的一般形式 -37-3.2使用switch語句注意點 -37-\o"CurrentDocument"第六章 循環(huán)結(jié)構(gòu)程序設(shè)計 -43-I、循環(huán)結(jié)構(gòu) -43-2、;^^^本的{/^^^1^句點) * * * * -43-2.1goto語句 -43-2.3do-whiIe語句 -45-2.4for語句 -47-3,循環(huán)嵌套 -48-4、輔助控制語句 -51-4.1break語句 -51-4.2continue語’可 -53-\o"CurrentDocument"第七章 數(shù)組 -55-1、數(shù)組的基本概念 -55-2、ー維數(shù)組 -552.1—維數(shù)組的定義 -55-2.2維數(shù)組的賦值 -55-2.3ー維數(shù)組的引用 -56-3、二維數(shù)組 -583.1ー維數(shù)組的疋義 -59-3.2—維數(shù)組的賦值 -59-3.3—纟隹ヌヌ纟且的弓I用 * * * * -60-4、字符數(shù)組 -61-4.1字符數(shù)組的定義、賦值和引用 -61-4.2字符數(shù)組的特殊點 -61-4.3字符串處理函數(shù)(重點) -62-\o"CurrentDocument"第八章函數(shù) -64-1、概述 -64-2、函數(shù)的基本操作 -642.1函數(shù)的定義(抽?。?-642.2函^^的尸明 -65-2.3函數(shù)的イ吏用 -67-2.4函數(shù)的參數(shù)(形參和實參,具有單向傳遞的特性) -67-3、數(shù)組作為函數(shù)的參數(shù) -68-4、函數(shù)的嵌套 -70-5、函數(shù)的遞歸 -71 -\o"CurrentDocument"第九章指針 -75-1、概述 -751地址和指針的概念 -75-指針變量的定義和使用 -77-指針變量作為函數(shù)的參數(shù) -79-2、數(shù)組與指針 -81-ー維數(shù)組與指針 -81-2ー維數(shù)組作為函數(shù)的參數(shù) -84-3、二維數(shù)組與指針 -861—纟隹ヌメ纟目的止 -86-指向二維數(shù)組的指針變量 -88-用指向二維數(shù)組的指針變量做函數(shù)的參數(shù) -90-4、字符串與指針 -91 -1指向字符串的指針變量 -91-4.2指向字符串的指針變量作為函數(shù)的參數(shù) -92-\o"CurrentDocument"第十章結(jié)構(gòu)體、鏈表、共用體和枚舉 -95-1、結(jié)構(gòu)體 -951.1問題的引出 -95-I-22口構(gòu)!4s?的疋義 -95-1.3結(jié)構(gòu)體變量的賦值和使用 -97-2、結(jié)構(gòu)體數(shù)組 -99-3、指向結(jié)構(gòu)體類型數(shù)據(jù)的指針 -993.I指向結(jié)構(gòu)體變量的指針 -99 -3.2指向結(jié)構(gòu)體數(shù)組的指針變量 -100-4、用結(jié)構(gòu)體變量和指向結(jié)構(gòu)體的指針作為函數(shù)的參數(shù) -101-5、鏈表 -1045.1簡單鏈表(靜態(tài)鏈表)的構(gòu)造和使用 -1045.2動態(tài)鏈表的構(gòu)造和使用 -1055.3動態(tài)鏈表的刪除操作 -107-5.4動態(tài)鏈表的插入^^作 * * * -109-6、共用體(聯(lián)ロ體’ "113-第")—章文件 -115-1、文件概述 -115-2、文件的操作 -115-2.1文件類型的指針 -1152.2文件的打開和關(guān)閉 -116-2.3文件字符的簡單讀寫 -1172.4文件塊的讀寫 -119-第一章C程序設(shè)計概述1、程序的一般概念在日常的生活中,做任何的事情,都需要有一定的操作來完成,這種按一定順序安排的工作就叫做程序?!纠?】:西紅柿炒雞蛋,制作過程如下:洗好西紅柿切好西紅柿打好雞蛋熱鍋放油炒雞蛋把雞蛋盛出來放油,炒西紅柿放入雞蛋放佐料炒出鍋裝盤以上就是ー個簡單的做事過程,在這個過程中,我們通過一系列的動作對對象(西紅柿、雞蛋、油、佐料)進行操作,制作完成了菜肴。受此思想的啟發(fā),我們以后的編程的方法也和此類似。預(yù)想編程,先學基礎(chǔ)(各種個樣的對象),再學方法,就按照這種思想進行下去。2、為什么要學習C語言(1)因為大家都在學:全國高校,是大學生都知道。(2)培養(yǎng)大家的邏輯思維能力。(3)開路先鋒的作用。3、怎樣學好C語言有同學問:老師,我的游戲(英語)水平為什么比不上其他同學?答案:練的太少?如果把你送到美國呆上5年,你的英語肯定好。學好C語言(計算機語言)的法寶只有一個:苦練、再苦練、再再苦練。4、C語言概述4.1計算機程序語言的發(fā)展歷程馮.諾依曼結(jié)構(gòu):r運算器1L 卜中央處理翳CPU主機L控制器J計算機JI存儲器II/O設(shè)備:鍵盤、顯示器等計算機語言經(jīng)歷了一個從低級到高級的發(fā)展過程,再此過程中,生活中的常識給與了許多啟發(fā)。機器語言面向?qū)ο髾C器語言面向?qū)ο竺嫦蜻^程ド圖是各種計算機語言出現(xiàn)的時序圖:4.2C語言的發(fā)展過程4.2C語言的發(fā)展過程4.3C語言的特點簡潔、緊湊、方便、靈活運算符類型豐富34種:算術(shù)運算符:+-*/%++-關(guān)系運算符:<<===>>=!=邏輯運算符:! &&II位運算符:《 >> ?I人&賦值運算符:=及其擴展條件運算符:?:逗號運算符:,指針運算符:*&求字節(jié)數(shù):sizeof強制類型轉(zhuǎn)換:(類型)分量運算符:.->下標運算符:ロ其它 :()-粧盛粧盛32short隹や皿長鈴些10口g單用度セCoat又又率靑宣セdouble.整維數(shù)值類型〈[浮點や?宿類52char敝組結(jié)キ勾體Wlruct用f本union枚舉類22enuxn指針類也空類処voidトー定義^^r^tyi>e€ief?具有較強的控制語句(為了程序的結(jié)構(gòu)化)if()~else?for()?while()?d〇?while()continuebreakswitchaotoreturnc程序的設(shè)計,相比之下,語法限制不太嚴格,自由度相對較高具有較強的底層操作功能生成目標代碼的質(zhì)量好,程序的執(zhí)行效率較高可移植性好4.4C程序結(jié)構(gòu)特征在C語言的學習過程中,需要經(jīng)歷?個從基礎(chǔ)ー提升一升華的過程,如圖所示:【例2】:ー個典型的C程序intmax(intx,inty)/*max函數(shù)*/{intz;if(x>y)z=x;elsez=y;return(z);)main() /?主函數(shù)?/{inta,b,c;scanf(n%d,%du,&a,&b);c=max(a,b);/?調(diào)用max函數(shù),求a和b中大數(shù)?/printf("max=%d\n",c);}程序:ー個C程序,是由函數(shù)組成的,必須有且只有一個主函數(shù),程序的運行從主函數(shù)開始,還從主函數(shù)結(jié)束(記住)。函數(shù):由函數(shù)首部和函數(shù)體組成。函數(shù)首部指定函數(shù)名、函數(shù)參數(shù)、類型函數(shù)體從{開始,到}結(jié)束,函數(shù)內(nèi)有語句群嶼模塊樹中iiSII?袤"造
程銷鈉費中基!出標版窿靂颼
型旗符)4.5C語言的上機步驟=qセ二「結(jié)克編譯執(zhí)行多函數(shù)刊星里一4.5C語言的上機步驟=qセ二「結(jié)克編譯執(zhí)行多函數(shù)刊星里一字file.源程序目標程序可執(zhí)行程序內(nèi)容程序設(shè)計語言機器語言機器語言可執(zhí)行不可以不可以可以文件名后綴X四.exeさ昊エ英?語句:包括說明性語句、可執(zhí)行語句。以;表示語句結(jié)束注釋:可以出現(xiàn)在程序的任何位置。用/?和?/括起來,必須成對出現(xiàn)格式:C語言沒有行的概念,書寫格式自由。習慣小寫字母,縮進格式。程序代碼的錄入,生成源程序?.C語法分析查錯,翻譯生成目標程序?磁與其它目標程序或庫鏈接裝配,生成可執(zhí)行程序*.exeC語言的運行環(huán)境TURBOCFORDOSTURBOCFORWINDOWSVISUALC++其他一些必備的前導(dǎo)知識要分清文本文件和非文本文件;學會一些常用的DOS命令(dircdmdcopy);
第二章算法及其表示1、什么是算法做事情的方法和步驟就叫做算法。在生活中,有些人做事情很漂亮,有寫人很糟糕?說明做事情的方法和步驟有差異。在程序設(shè)計中,表現(xiàn)為好的算法和不好的算法。一般情況下,算法分為數(shù)值算法和非數(shù)值算法。在各位今后的程序設(shè)計中,前期往往是數(shù)值算法占多,后期是非數(shù)值算法占多。2、算法的特性(1)有窮性;不要沒完沒了。(2)確定性;(3)有輸入和輸出(一個或多個)(4)有效性;3、算法的表示(1)自然語言法:班長今天早晨去有好買東西了!(2)N-S流程圖法;(3)傳統(tǒng)流程圖法;4、傳統(tǒng)流程圖的畫法工具;很多,常用的WORD,AUTOCAD,SMARTDRAW,VISIO傳統(tǒng)流程圖的基本構(gòu)成元素:連接線
連接線【例1】:中秋到了,班長買月餅分發(fā)給同學們。5、結(jié)構(gòu)化程序設(shè)計方法在程序設(shè)計中,要求結(jié)構(gòu)要清晰,對程序很重要,對你更重要。在程序設(shè)計中可以借鑒修房子的生活常例。在程序的整體設(shè)計上,要堅持“從上往下、逐步細化”的原則。在具體模塊的制作過程中,要堅持‘‘結(jié)構(gòu)化編碼”的原則。幾乎在所有的程序語言中,都支持三種基本的結(jié)構(gòu):順序、分支(選擇)、循環(huán)。練習:1,求3+5的和2、輸入兩個數(shù),比較大小,輸出最大的3、求1+2+3+..…+100的和。4、將A和B兩個磁帶的內(nèi)容互換。第三章語法記號、數(shù)據(jù)類型、常量、變量、
運算符和表達式1、語法記號C語言編寫的程序是由不同的語法記號組成的。所謂語法記號是指在程序中具有獨立含義的不可進一步分割的單位。在C語言中,語法記號共有5類:關(guān)鍵詞、標識符、常量、運算符和分隔符。關(guān)鍵詞所謂關(guān)鍵詞是指在C語言中預(yù)定義的符號,有固定的含義,分成5大類,共32個:存儲類別autoexternregisterstatic類型定義typedef流程控制breakcasecontinuedefaultdoelsegotoifreturnswitchwhilefor數(shù)據(jù)類型intlongshortfloatdoublecharsignedunsignedstructunionenumvoidconstvolatile運算符sizeof切記:你定義的任何名字不得與關(guān)鍵詞沖突。另外,在C語言中,還有一部分準關(guān)鍵詞,這些準關(guān)鍵詞也有固定的含義,允許你另作他用,但是,我強烈的建議大家不要對這些準關(guān)鍵詞另作它用。這些準關(guān)鍵詞主要有兩類:預(yù)處理命令:defineendifincludeifdeflineundef庫函數(shù)(系統(tǒng)函數(shù))名字:printfscanf下面,我們對這些關(guān)鍵詞的用途做ー說明:關(guān)鍵詞用途說明char致?lián)愋桐`個字節(jié)長的字符値short短整數(shù)iirt整數(shù)unsigned無符號類型,最高位不作符號位long長整數(shù)float單精度實數(shù)double雙精度實數(shù)用于定義結(jié)構(gòu)的關(guān)鍵詞union用于定義聯(lián)合(共用體)的關(guān)鍵詞void空類型,用它定義的對象不具有任何值muni定義枚舉類型的關(guān)鍵詞signed有符號類型,最高位作符號位const表明這個量在程序執(zhí)行過程中不可變voIatiIe表明這個量在程序執(zhí)行過程中可被啟含地改變
關(guān)鍵詞用途說明break退出最內(nèi)層的循環(huán)或switch語句caseswitch語句中的情況選擇continue流跳到下ー輪循環(huán)defaultswitch語句中其余情況標號do程在do...whiIe循環(huán)中的循環(huán)起始標記elseif語句中的另ー種選擇for控帶有初值、測試和増量的一種循環(huán)goto轉(zhuǎn)移到標號指定的地方if制語句的條件執(zhí)行return返回到調(diào)用函數(shù)switch從所有列出的動作中作出選擇whiIe在whiIe和d〇…whiIe循環(huán)中語句的條件執(zhí)行關(guān)鍵詞用途說明typedef用于定義同義數(shù)據(jù)類型auto存自動變量register儲寄存器類型static類靜態(tài)變量extern別外部變量說明運sizsof符計算表達式和類型的字節(jié)數(shù)標識符所謂標識符是指用戶自行定義的符號,用來標識變量、常量、函數(shù)、標號等,它的組成和命名要遵循以下的原則:只能由字母、數(shù)字、下劃線(-)組成,且第一個必須是字母或下劃線;大小寫敏感;不能使用關(guān)鍵詞;最長32個;同時,在命名過程中要注意:見名知意(最好使用英文單詞或單詞的組合,英文的重要性就出來了吧!)避免混淆(比如:1,1o,0)
常用大些字母標識常量標識符,變量等其他標識符用小寫字母表示;注意系統(tǒng)中帶(-)的標識符,不要混淆:【例1】:一道面試題。令a=l,b=l(是數(shù)字,還是字母,不知道),c=a+b,請問c=?【例2】:判斷下面標識符號的正確性sumSumM.D.JohndayDate3day5studentname#33lotus_l_2_3chara>babove$123分割符[](){}.:=;#2、C語言的數(shù)據(jù)類型俗話說“巧婦難為無米之炊”,原料和配料多了,做出好飯的可能性就大。在前面的學習過程中,我們知道C語言的ー個特點就是數(shù)據(jù)類型十分豐富,下面是C語言的數(shù)據(jù)總表:,短整型short(整型整型ini長整型!ong<基本類型\滓占型[單精度型。。ボ土I雙精度型double,字符類型charC數(shù)據(jù)類型く構(gòu)造類型r數(shù)組C數(shù)據(jù)類型く構(gòu)造類型r數(shù)組結(jié)構(gòu)struct聯(lián)合unionし枚舉類型emun指針類型空類型void定義類型tynedd,在學習過程中,應(yīng)首先認識基本的數(shù)據(jù)類型,因為其他的類型基本上就是這些基本類型派生出來的,見下表:類型符號關(guān)鍵詞所占位數(shù)數(shù)的表示范圍蟹型(有(signgiDini16 -32768?32767signedjshort16 -32768?32767signed)long32 -2147483648?2147483647元I1insignedini16 ?卜65535insignedshort16 (ル65535insignedlong32 (卜4294967295有float32±3.4e-38~3.4e38有double64±1.7e-308-1.7e308字符型贅char8-128-127元unsignedchar8〇?2"說明:數(shù)據(jù)類型所占字節(jié)數(shù)隨機器硬件不同而不同,上表以1好,到此為止,我需要回答大家一個問題,為什么這么煩BMPC機為例,要定義數(shù)據(jù)類型?原因有三;?規(guī)定數(shù)據(jù)占內(nèi)存的大小;?限定數(shù)據(jù)的取值范圍;?決定在其上所進行的操作;3、常量所謂常量,指在程序運行過程中其值不能改變的量。在C語言中,共有5類常量,分別是;符號常量、整型常量、浮點型常量、字符型常量、字符串常量。3.1符號常量所謂符號常量,是用標識符來代表常量。定義格式;#define符號常量常量比如:#definePRICE30【例3】:看下面的程序#definePRICE30main()(intnum,total;num=10;total=num*PRICE;printf(',total=%d,',total);getch();注意:一般用大寫字母:是宏定義預(yù)處理命令,不是C語句;3.2整型常量其實就是我們常用的整數(shù),它的表示方法有三種:十進制整數(shù):由0-9和正負號來表示;ハ進制整數(shù):由數(shù)字。開頭,后面跟0-7表示:十六進制整數(shù):由Ox或0X開頭,后面跟0-9,a-f,A-F表示;平時使用過程中,如果想提高計算速度,請使用WINDOWS自帶的計算器。關(guān)于整型常量的類型,可以根據(jù)以下的原則進行判斷:根據(jù)其值所在的范圍判斷如果在整型常量的后面加I或L,認為它是長整型數(shù):3浮點型常量其實就是我們熟悉的實數(shù),它的表示方法由兩種:十進制;指數(shù)形式:(在e或E的前面必須由數(shù)字,指數(shù)必須為整數(shù))12.3e3關(guān)于浮點性常量的類型,一般遵循以下的原則:如果不做特殊的規(guī)定,默認為double如果在浮點性常量的后面加f或F,認為它是float:4字符型常量所謂字符型常量,就是用單引號括起來的普通單個字符或轉(zhuǎn)義字符。比如:‘a(chǎn)''A''?‘へn''MOI'對于字符型常量,在內(nèi)存中存儲的是該字符的ASCII(參見附錄),比如:'A:65H97有了這個前提,對于字符常量的理解就容易了。對于轉(zhuǎn)義字符,反斜線后面跟ー個字符或ー個代碼值表示,常用的轉(zhuǎn)義字符如下:轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義V 換行\(zhòng)t橫向跳格(Tab)\v豎向跳格\b退格\r回車\f換行但不回車單引號\\反斜線ヽ“雙引號_\ddd_3位8進制數(shù)代表的字符\xhb2位16進制數(shù)代表的字符比如:TOC\o"1-5"\h\zuor 火ヘ012, '“40' @【例4】有如下程序,寫出運行結(jié)果。main()(printf("\101\x42C\n");printf("Isay:\"howareyou?\"\n");printf("\\Cprogram\\\n");printf("TurboVCV");getch();運行結(jié)果:提醒:對于轉(zhuǎn)義字符,千萬不要去背,但要求會査表和使用就可以了。3.5字符串常量對于字符常量,是由單引號括起來的普通字符或轉(zhuǎn)義字符。而對于字符串常量,是指由雙引號括起來的由一個或多個字符組成的字符序列。那么,字符常量和字符串常量由什么區(qū)別呢?從定義上來看:字符常量用單引號("),字符串常量用雙引號ぐ’”);從大小上來看:字符常量是單個,而字符串常量至少ー個:?從存儲上來看:字符串常量在存儲時,系統(tǒng)自動在其尾部加一個“'0”,而字符常量沒有。比如:匕’和"a"在內(nèi)存中的存儲格式分別如下:【例5】請問“hello”在內(nèi)存中占的空間是多少?he1I〇\04,變量所謂變量,顧名思義,就是其值可以改變的量。變量在使用時,必須定義且初始化,定義的格式如下:く數(shù)據(jù)類型><變量名字乂,〈變量名〉};比如:inta;intb;intc;以上的定義方法等同于:inta,b,c;對于變量:定義的時候,數(shù)據(jù)類型決定了變量存儲空間的大小和取值的范圍。對于變量的名字:要求時合法的標識符。在變量定義的同時,也可以對其直接賦值。比如:Inta=3;Floatb=4.5;Chara='b';特別注意:變量在定義的時候,要放在程序的開頭。[例6]請比較下面的程序main()main()(1inta,b=2;floatdata;a=l;data=(a+b)*2;printf(',data=%f\n,,,data);getch();}iinta,b=2;a=l;floatdata;data=(a+b)*2;printf("data"%f\n”,data);getch();)總結(jié):從C語言基本數(shù)據(jù)類型的角度來看,常量有5種,而變量只有3種,分別時:整形變量(短整形、整形、長整形)、浮點型變量(單精度和雙精度)、字符型變量。在C語言種,沒有字符串變量,在C語言種字符串常量要用數(shù)組來存儲。特別要求注意的是:由于字符變量在內(nèi)存種是以ASCII來存儲的(整數(shù)),故char和int、float可以進行算術(shù)運算?!纠?寫出一下程序的運行結(jié)果。#definePRICE12.5main(){intnum=3;
floattotal;charchl,ch2二'D';total=num*PRICE;chl=ch2-,A,+,a,;printf(utotal=%f,chl=%c\nM,total,ch1);getch();運行結(jié)果:【例8】:請□算inta;charch;【例8】:請□算inta;charch;a='D';ch=8+,0*;ch='E'+'a'/A’;ch=65;//a=68〃ch二‘8'//ch='e'〃ch二'A'5、運算符和表達式運算符是ー種程序記號,它簡明的描述了計算機對數(shù)據(jù)的操作。由運算符和數(shù)據(jù)組成的符號序列就稱為表達式。在C語言中,提供了豐富的運算符,序,但對于初學者來說,容易出錯。c語言的運算符:有靈活、方面的特點,可以寫出簡練、高效的程C
運
算
符算術(shù)運算符關(guān)系運算符C
運
算
符算術(shù)運算符關(guān)系運算符邏輯運算符位運算符賦值運算符條件運算符逗號運算符指針運算符求字節(jié)數(shù)*/%<==>&&11??I++—>=!==及其復(fù)合賦值運算符?:強制類型轉(zhuǎn)換:(類型.)分量運算符:.->下標運算符:[]它:()等在C語言運算符的學習過程中,有幾個注意點:運算符的功能(不同的運算符耍觸發(fā)計算機不同的操作,比如“*”觸發(fā)求枳的操作)與運算量的關(guān)系--ー要求運算量的個數(shù)(比如+-*/%等運算符要求兩個操作數(shù),有些運算符只需要ー個操作數(shù))--ー要求運算量的類型(比如+-*/可以對整數(shù)或浮點數(shù)進行運算,%只能對整數(shù)進行運算)運算符的優(yōu)先級別(先執(zhí)行“優(yōu)先級高”的操作)結(jié)合方向(如果碰到優(yōu)先級ー樣的情況,請按結(jié)合方向運算)結(jié)果的類型(就大不就小)算術(shù)運算符和算術(shù)表達式(1)基本的算術(shù)運算符在C語言中,提供了以下基本的算術(shù)運算符:單日運算符:-(負)ヽ+(正)雙目運算符:+、ー、*、%対于基本算術(shù)運算符的優(yōu)先級和結(jié)合性,請參照附錄。時間久了,大家就有感覺了。(2)模運算符在C語言中,%稱為模運算符(求余運算符),它要求操作數(shù)全部為整數(shù),實踐證明,它非常有用。例如:7%35%6(3)自增自減運算符在C語言中(其他語言也有),經(jīng)常會看到i++,i-,這種東東就叫做自增自減運算符。作用:使變量值加1或減1種類:前置:++i,-i;(先運算,再用結(jié)果)后置:i++,i-(先用結(jié)果,后運算)【例9】運算j=3;k=++j; (k=4;j=4)j=3;k=j++; (k=3;j=4)a=3;b=5;c={++a}*b; (c=20;a=4;b=5)a=3;b=5;c=(a++)*b; (c=15;a=4;b=5)特別提醒:++ー不能用于常量和表達式;如:5++,(a+b)++關(guān)系運算符和關(guān)系表達式在C語言中,提供了6個關(guān)系運算符:<><=>===!=在以上關(guān)系運算符的運用過程中,有一下的特點:關(guān)系運算符都是雙目運算符,遵循從左到右結(jié)合的原則;==和!=的優(yōu)先級別比其他的關(guān)系運算符要略低:關(guān)系運算符要求兩個操作數(shù),其結(jié)果是int類型,有兩個數(shù)表示結(jié)果(用1表示真,用〇表示假)【例10]c>a+b;//c>(a+b);a>b!=c;//(a>b)!=c;a==b<c;//a==(b<c)a=b<c;//a=(b<c)【例11】求結(jié)果inta=3,b=2,c=l,d,f;TOC\o"1-5"\h\za>b; (1)(a>b)==c; (1)b+c<a; (0)d=a>b; (1)f=a>b>c;(0)特別提醒:在關(guān)系運算符的運用過程中,有一些常用的情況發(fā)生,總結(jié)如下:情況ー:若a=0;b=0.5;x=0.3;則av=x<=b的值為多少?(0)情況二:5>2>7>8在C語言中是允許的:情況三:在程序設(shè)計過程中,經(jīng)常使用關(guān)系運算符的運算結(jié)果;inti=l,j=7,a;a=i+(j%4!=0);則a=2情況四:字符數(shù)據(jù)的比較按其ASCII進行。'a'v'b' 'a'>0 lA>>100情況五:應(yīng)該避免對浮點數(shù)做關(guān)系運算。原因:由于計算機存儲上的誤差,會出現(xiàn)錯誤的結(jié)果。如:1.0/3.0*3.0==1.0應(yīng)該改成:fabs(l.O/3.O*3.O-l.O)<le-6情況六:注意區(qū)分“="和“=="inta=0,b=1;if(a=b)printf("a=b");elseprintf("a!=b");5.3邏輯運算符和邏輯表達式在C語言中提供了3個邏輯運算符:&&(邏輯“與”)II(邏輯“或”)!(邏輯“非”)在中學學過,大家一起來填ー張表:ab!a!ba&&ballb真真假假真真真假假真假真假真真假假真假假真真假假注意:在C語言中,用〇表示段,用“非〇"表示真,關(guān)系和邏輯表達式的運行結(jié)果只有兩個(1或0);在邏輯運算符中,!的級別最高,依次是&&和II比如:我感覺a<=x&&x<=ba>b&&x>ya==bllx==y!alla>b【例12]請計算結(jié)果a=4;b=5;TOC\o"1-5"\h\z!a (0)a&&b (1)allb (1)!allb (1)4&&0II2 (1)5>3&&2H8<4-!0 (1)(1)在C語言邏輯運算符的學習過程中,有一個難點和重點,就是&&和II的短路特性。何為短路特性:&&和II是短路運算符,在進行邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只有在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,オ執(zhí)行該運算符。比如:a&&b&&c〃只有a為真時,オ運行后面的(逢假就斷)allbllc 〃只有a為假時,オ運行后面的(逢真就斷)x=y=z=l;++xll++y&&++z; 〃結(jié)果:x=2,y=l,z=lx=y=z=l;++x&&++yll++z; 〃結(jié)果:x=2,y=2,z=l【例13】請?zhí)羁誘OC\o"1-5"\h\z1、設(shè)x、y、z、t均為血型變量且初始值均為1,則執(zhí)行語句t=++xll++y&&++z;后,x的值為2 ,v的值為I,z的值為1 ,t的值為1 。2、設(shè)x、y、z、t均為int型變量且初始值均為1,則執(zhí)行語句t=(++xll++y)&&++z;后,x的值為2 ,v的值為1 ,z的值為」,t的值為1 。3、設(shè)x、y、z、t均為int型變量且初始值均為〇,則執(zhí)行語句t=++x&&++yll++z;后,x的值為1 ,v的值為1 ,z的值為3,t的值為‘〇4、設(shè)x、y、z、t均為int型變量且初始值均為〇,貝リ執(zhí)行語句t=++x&&++y&&++z;后,x的值為1 ,y的值為1 ,z的值為1 ,t的值為1 05、設(shè)x、y、z、t均為int型變量且初始值均為-1,貝リ執(zhí)行語句t=++x&&++y&&++z;后,x的值為〇,y的值為-1 ,z的值為-1 ,t的值為〇〇6、設(shè)x、y、z、t均為int型變量且初始值均為ー1,貝リ執(zhí)行語句t=++x&&++yll++z;后,x的值為O,v的值為ー1,z的值為〇,t的值為〇。
7、設(shè)x、y、z、t均為int型變量且初始值均為-1,則執(zhí)行語句t=++xll++y&&++z;后,x的值為O,v的值為0 ,z的值為ー1,t的值為。5.4賦值運算符和賦值表達式(1)簡單的賦值運算符和賦值表達式在C語言中,用可愛的“=”構(gòu)成賦值運算符和賦值表達式比如:a=3;d=fun();c=d+2在此過程中,千萬不要出現(xiàn):3=x-y*3;a+b=3;以上是非法的,要注意避免,千萬不要把中學的習慣帶進來。在進行賦值運算時,賦值號右邊表達式值自動轉(zhuǎn)化成其左邊變量的類型。比如:Floatf;IntI;1=10;F=l;則:f=10.0;在學習的過程中,經(jīng)常有好事者問表達式的值(典型的中國特色,以考試為主,以考倒人為樂),遇到這樣問題時,請記住一句話:表達式的值就是被賦值后變量的值。比如:a=b=c=5; 〃表達式的值5,a,b,c的值為5;a=(b=5); 〃表達式的值5,a,b的值為5;a=5+(c=6) 〃表達式的值11,a,的值為ll,c=6;a=(b=10)/(c=2)〃表達式的值5,a=5,b=IO,c=2;(2)復(fù)合賦值運算符在使用的過程中,經(jīng)常會看到在基本賦值運算符''="的前面有其他的運算符,從而形成了復(fù)合的賦值運算符。據(jù)說這種方法好處多多,可以提高編譯效果,簡化程序。比如:a+=3;b-=6;x*=y+8;y%=3
a+=3;b-=6;x*=y+8;y%=3
在使用的過程中,//b=b-6//x=x*(y+8)//y=y%3我們不強求,一切以你的喜好為準。5.5逗號運算符和逗號表達式看下面的表達式:a=3*5,a*4;看下面的表達式:a=3*5,a*4;a=3*5,a*4,a+5;//a=15,表達式=60//a=15,表達式=20大家看到以上的表達式時,千萬不要暈,它的運算法則非常簡單:逗號表達式的值,等于最后ー個表達式的值。【例14]計算表達式的值x=(a=3,6*3) 〃x=18,表達式=18x=a=3,6*a //x=3,表達式=18關(guān)于逗號表達式,不希望大家多用,容易亂,要求大家能看懂并能應(yīng)付考試就可以了。6條件運算符和條件表達式在編制選擇程序時,會遇到ー些情況,比如:If(a>b)max=a;elsemax=b;以上的程序,用到了if,大家可以看懂。遇到這樣的問題時,可以使用C語言唯一的一個三目運算符(條件運算符),為了便于大家記憶,我經(jīng)常把該運算符稱為“變態(tài)運算符”,如果采用該運算符,上面的程序可以改寫成:Max=a>b?a:b;Max=max>c?max:c;條件運算符和條件表達式在后面的學習要用到,在這里拿出來,主要時為了學習內(nèi)容的系統(tǒng)性。6、各種數(shù)值型數(shù)據(jù)之間的混合運算從上圖可以看出,int,float,char數(shù)據(jù)之間可以進行混合運算,至于如何運算,記住兩點就可以了:Char類型數(shù)據(jù)在計算機中是以ASCII存儲的,實際上是整數(shù),這就是它能參與數(shù)據(jù)運算的原因所在。就大不就小的原則(誰大誰厲害)好了,到此為止,我們學習C語言的第一個‘‘痛點”就渡過了,以后的學習,就可以使用計算機邊學邊練了。第四章基本的輸入輸出和簡單的程序設(shè)計在C程序設(shè)計中,經(jīng)常會遇到輸入輸出的問題。輸入:從輸入設(shè)備(鍵盤、鼠標、掃描儀)向計算機輸入數(shù)據(jù):輸出:從計算機向外部輸出設(shè)備(顯示器、打印機)輸出數(shù)據(jù);在C語言中,無!/O(沒有輸入輸出的語句),I/O的實現(xiàn)均通過C的庫函數(shù)。學習C語言的輸入輸出,只需要學會相關(guān)函數(shù)的使用就可以了。在C語言中,有一批標準的輸入輸出函數(shù),在使用的時候,要將有關(guān)函數(shù)的信息庫(以.h為擴展名,常被稱為頭文件)在程序的開頭用#include命令包含進來,包含格式有兩種:第一種:#include<stdio.h>第二種:include“stdio.h"1、常用的輸出函數(shù)在C語言中,常用的輸出函數(shù)有2個:字符數(shù)據(jù)的輸出:putchar(ch);格式化數(shù)據(jù)的輸出:printf();字符數(shù)據(jù)的輸出函數(shù)格式:intputchar(charch或轉(zhuǎn)義字符)功能:把字符ch輸出倒顯示器上;參數(shù):ch為字符常量、變量或表達式;返回值:正常,為輸出的ch。出錯:為eof(?l)【例1】 橫向輸出love#includeMstdio.h"main()(chara=T,b='o,,c='v;d=,e';putchar(a);putchar(b);putchar(c);putchar(d);getch();【例2]豎向輸出loveinclude“sldio.h”main()(chara=,r,b=,o,,c='v\d=,e,;putchar(a);putchar('\n');putchar(b);putchar(An,);putchar(c);putchar('\n');putchar(d);putchar(\n,);getch();}格式化數(shù)據(jù)的輸出函數(shù)格式:printf(控制字符串,參數(shù)1,參數(shù)2 )功能:按控制字符串,將參數(shù)轉(zhuǎn)化成一定的格式輸出:返回值:正常,返回輸出的字節(jié)數(shù);出錯:eof(-l)說明:參數(shù):合法的表達式,可以缺省;控制字符串:包含兩種信息-一格式說明:%【修飾符】轉(zhuǎn)換字符,用于指定輸出格式;-普通字符:包含轉(zhuǎn)義字符,原樣輸出(或執(zhí)行)主格式說明;d十進制整數(shù)inia=567;piintf(“。そ’,a);567x,X十六進制無符號整數(shù)inia=255;printfl22ix".a);ff0ハ進制無符號整數(shù)inia=65:prints二%0;a);101u不帶符號十進制整數(shù)inia=567;pnnifl“%ur,a);567c單個字符chara=65:printfl^^cl'.a);As字符串prinR%s”,“ABC”);ABCe,E指數(shù)形式浮點數(shù)(5)floata=567.789;printfi22ier,a);5.67789e+02f小數(shù)形式浮點數(shù)(6)floata=567.789;printfl二%口a);567.789000ge和件較短ー種fl03t3=567.789;primfi二%g二a);567.789注意:轉(zhuǎn)換字符決定數(shù)據(jù)的輸出類型;轉(zhuǎn)換字符與輸出項的個數(shù)應(yīng)該相同,按先后順序ーー對應(yīng);轉(zhuǎn)換字符與輸出項類型不一致,自動按指定個數(shù)輸出;【例3】include"stdio.h"main()(inta=5,b=6;floatc=5.6,d=7.5;chare='a',f='o';intsuml=a+b;floatsum2=c+d;printf("%d\n",suml);printf("%f\n",sum2);printf("%c",e);printf("%c",f);printf("mygod");
getch();}附加的格式說明:修飾符切 オ巨m榆出數(shù)據(jù)寬度,數(shù)據(jù)長度くm,左補空格;否則按實際榆出.n続度,對實數(shù).指定榆出n位小數(shù)(四舍五人)對字符串,指定截取的字符個數(shù)-按左對齊方式輸岀(稜省右對齊)0輸?出數(shù)值時在其左邊用〇填充以達到指定或缺省數(shù)據(jù)寬摩1在d,〇,x,u前,指定輸出為long型在e,f,目前,指定榆出為double型通過具體實例:【例4】整型數(shù)輸出inta=1234,longb=2269978;printf(、、%dA\n",a); //1234Aprintf(''%8dA\nw,a); // 1234Aprintf(、、%-8dA\n",a); //1234Aprintf(''%08dA\nw,a); //00001234Aprintf(''%81dA\n",b); //2269978A【例5】整型數(shù)輸出longa=65536;printf(''%81d,%d\n,z,a,a);【例6】printf(''%81d,%d\n,z,a,a);【例6】多種類型轉(zhuǎn)換inta=123;printf(''%d,%o,%X\n”,a,a,a)【例7】浮點數(shù)輸出floatf=123.456;printf(、、%f\n”,f);printf(''%010.2f\n",f);printf(?%5.2f\nw,f);printf3e\n",f);【例8】字符輸出//123,173,7B//123.456000//0000123.46//123.46// 1.23E+02 ????//W,87//87,W//w ,w//I23456789//12345678// 12345678charc='W';inti=87;printf(''%c,%d\n”,c,c)//W,87//87,W//w ,w//I23456789//12345678// 12345678printf(、、%-5c,%5c\n”,c,c);【例9】字符串輸出printf(、、%s\n","123456789");printf(''%.8s\n",''123456789");printf(''%12.8s\n",''123456789");printf(',%-12.8s\n",''123456789"); //123456782、常用的輸入函數(shù)在C語言中,提供了2個常用的輸入函數(shù):字符數(shù)據(jù)的輸入:getchar(void)格式化數(shù)據(jù)的輸入:scanf().1字符數(shù)據(jù)的輸入函數(shù)格式:intgetchar(void)功能:從鍵盤讀取一個字符返回值:正常,返回讀取的字符;錯誤,返回eof(-l)【例10】寫出程序的運行結(jié)果#include"stdio.h"#include"conio.h"main()(intc;printf("pleaseinputachar:");c=getchar();printf("%c >hex%x\n",c,c);getch();.2格式化數(shù)據(jù)的輸入函數(shù)格式:scanf(控制字符串,參數(shù)1,參數(shù)2,參數(shù)3….…)功能:從鍵盤讀入數(shù)據(jù),控制字符串用來指定格式,并將結(jié)果存到相應(yīng)的變量中(存儲單元)。返回值:正常,返回輸入數(shù)據(jù)的個數(shù)。出錯返回。.說明:參數(shù):變量的地址控制字符串:包含兩種信息-一格式說明:%【修飾符】,用來指定輸入數(shù)據(jù)的格式和類型:ー普通字符(不能是%),輸入時原樣輸出;轉(zhuǎn)換字符:d,O,s,c,s,f,e;【例11】基本包#include"stdio.h"include"conio.h"main(){inta;floatb;charc;printf("pleaseinputanumber<int>:n);scanf(H%dM,&a);printf("pleaseinputanumber<float>:n);scanf(H%f;&b);printf(Hpleaseinputanumber<char>:M);scanf(M%cM,&c);printf(ua=%d,b=%f,",a,b);getch();}(以上程序紅色部分實際上運行了,它把回車看做了一個字符)輔助格式:修飾符功 能1h用于d,〇,x前,指定輸入為short型整數(shù)1用于d,〇,x前,指定輸入為long型整數(shù)用于e,f前,指定輸入為double型實數(shù)m指定輸入數(shù)據(jù)寬度,遇空格或不可轉(zhuǎn)換字符則結(jié)束*抑制待,指定輸入項讀入后不賦給變量【例12I數(shù)據(jù)的截取Scanf(**%4d%2d%2d'\&jj,&mm,&gg);輸入:19991024請問:jj=1999 mm=10 gg=24在使用該函數(shù)進行多個數(shù)據(jù)的輸入時,常常輔之于分隔符,對于分隔符,要注意:一般以空格、TAB或者回車作為分隔符;如采用其他字符做分隔符,格式串中兩個格式說明符之間的其他字符,在輸入時要原樣輸入;字符型數(shù)據(jù),輸入時不能有分隔符,否則分隔符會被當作有效字符被輸入;輸入數(shù)值數(shù)據(jù)時,碰到ー下情況,認為該結(jié)束了:一遇到空格、TAB或回車;-一遇寬度結(jié)束;-遇非法輸入;【例13】寫出一下程序的輸入結(jié)果#include"stdio.h"#include"conio.h"main()inta,b,c;scanf(H%d%o%x';&a,&b,&c);printf(”a二%d,b二%d,c=%d");getch();)輸入:123123123_輸出:」23,83,291 [例14]字符輸入Scanf(t4%c%c%c,&cI,&c2,&c3);若輸入:abe;請問:cl二'a‘c2="c3='b';【例15I多數(shù)據(jù)輸入Scanf(%d%c%f',&a,&b,&c);若輸入:1234al230.26則:a=1234b='a'c=1233、簡單C程序設(shè)計【例16]求長方形的面積(要求,輸入兩邊的長,求面積)includenstdio.hH#include"conio.h"main()(floata,b,area;printf(upleaseinputtwonumber<float>:H);scanf(n%f,%f;&a,&b);area=a*b;printf(HThearea二%5.2F',area);getch();作業(yè):1、求三角形、圓、橢圓的面積;2、求圓柱、圓錐的體積;3、從鍵盤輸入小寫字母,輸出大寫字母;4,交換兩個變量的值;第五章分支結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)是程序設(shè)計的三種基本結(jié)構(gòu)之一,也被稱為選擇程序設(shè)計,在日常的編程過程中經(jīng)常遇到,很重要。1、分支程序的基本結(jié)構(gòu)二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)2、基本分支語句及程序設(shè)計在C語言中,使用if語句來完成基本的分支程序設(shè)計,它有三種形式。if語句的第一種形式lf(expr)statement【例1】輸入兩個數(shù),請按大小順序輸出(從大到小或從小到大)第一步:尋找算法(解決問題的關(guān)鍵)(如果a<b,就交換)第二步:繪制流程圖第三步:編制程序include“sldio.h"#include"conio.h"main()(inta,b,temp;print^^pleaseinputtwonumber<int>:*');scanf(H%d,%dM,&a,&b);if(a<b){temp=a;a=b;b=temp;}printf(,,%d,%dM,a,b);getch();)【例2】輸入3個數(shù),按順序輸出(從大到小,從小到大)#include"stdio.h"#include"conio.h"main(){inta,b,c,temp;printf("pleaseinputthreenumber<int>:H);scanf("%d,%d,%d”,&a,&b,&c);if(a<b){temp=a;a=b;b=temp;}if(a<c){temp=a;a=c;c=temp;}if(b<c){temp=b;b=c;c=temp;}prin氓"%d,%d,%d”,a,b,c);getch();【例3】輸入4個數(shù),按順序輸出(從大到小,從小到大)#include"stdio.h"#include"conio.h"main(){inta,b,c,d,temp;printf("pleaseinputthreenumber<int>:");scanf("%d,%d,%d,%d”,&a,&b,&c,&d);if(a<b){temp=a;a=b;b=temp;}if(a<c){temp=a;a=c;c=temp;}if(a<d){temp=a;a=d;d=temp;}if(b<c){temp=b;b=c;c=temp;}if(b<d){temp=b;b=d;d=temp;}if(c<d){temp=c;c=d;d=temp;}printf("%d,%d,%d,%d”,a,b,c,d);getch();請大家總結(jié)n個數(shù)順序輸出的規(guī)律。if語句的第二種形式If(expr)Statement1ElseStatement2【例4】輸入兩個數(shù),打印最大的(最小的)#include"stdio.h"#include"conio.h"main()(inta,b;printf("pleaseinputtwonumber<int>:n);scanf("%d%d,',&a,&b);if(a>b)printf(nThemax二%d”,a);elseprintf(HThemax二%d”,b);getch();}【例4】輸入兩個數(shù),打印最大的和最小的(用條件表達式)#include"stdio.h"#include"conio.h"main(){inta,b,max,min;printf("pleaseinputtwonumber<int>:n);scanf(n%d%dM,&a,&b);max二a>b?a:b;min二avb?a:b;printf(nThemax二%d,themin二%d”,max,min);getch();【例5】輸入三個數(shù),打印最大的和最小的(用if語句的第二種形式和條件表達式分別編寫)如果純用第二種形式,不好編(甚至編不出來),所以用條件表達式最好:#include"stdio.h"#include"conio.h*'main()inta,b,c,max,min;printf("pleaseinputthreenumber<int>:M);scanf(M%d,%d,%dM,&a,&b,&c);max=a>b?a:b;max=max>c?max:c;min=a<b?a:b;min=min<c?min:c;printf(uThemax=%d,themin=%dn,max,min);getch();if語句的第三種形式(嵌套)(1)嵌套的執(zhí)行過程(過篩子)(2)嵌套的一般形式(重點)iffexnrnif(exprl) if(exprl)statement!elsestatement!ヽ丿j{if(exprl) ヨ內(nèi)嵌if:statementl}:內(nèi)嵌if elsestatementlif(exprl)statement!elseif(exprl)jif(exprl)statementも;else statement!以內(nèi)嵌if(expr3)statement!elsestatementsヽノelse內(nèi)般If :if(expr3)statement兩:1 .‘ 內(nèi)嵌H:else statement4J【例6】輸入兩個數(shù),判斷其大小關(guān)系。#include"stdio.h"includeHconio.hMmain(){intx,y;printf(upleaseinputtwonumber<int>:n);scanf(H%d,%d",&x,&y);if(x!=y)if(x>y)printf("x>y");elseprintf("x<y");elseprintf("x==y");getch();以上的程序使用了嵌套的第三種形式(變形體),請大家用其他形式編寫該程序。if一和else的配對原則當發(fā)生嵌套的時候,有可能且一定會出現(xiàn)多個if和else。遇到這種情況的時候,一定要分清楚誰(if)和誰(else)是ー家子。If-else的配對原則:缺?。?else總是和它上面離他最近的未配對的if配對??穿`個圖:(if(……>嚴(……)?fif(……).1-else else "else ,以上的圖,展現(xiàn)了一種書寫格式(鋸齒狀),希望大家以后的編程過程中認真采用。在配對的過程中,要注意:書寫格式不能替代程序邏輯:分不清的時候,可以用加{}的方式予以界定;[例7] if(a==b)if(b==c)printf("a==b=c'');elseprintf("a!=b");問題:誰和誰配對?修改:if(a==b){if(b==c)printf(44a==b==cM);)elseprintf(44a!=b^^);else和if要配對使用;if后面的表達式類型任意;【例8】不同類型if(a==b&&x==y)if(3)if('a')if(a=2)if(s=2,s<0) 可以采用(推薦)復(fù)合語句;【例9】If(x<y)if(a<b)(r=a*a-b*b;s=a/b;)else(r=b*b-a*a;s=a/b?4;)ElseSkjfklsjdfklsjfkl等同:If(x<y)(Akldjfakljdf)ElseSkjfklsjdfklsjfkl?同一個條件可以用多種表達式;【例10]if(x)======if(x!=0)if(!x)======if(x==0)【例1丄】寫出程序旳運行結(jié)果#include"stdio.h"#includeuconio.h"main()(intx,y;scanf(M%d,%d*',&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(M%d,%dM,x,y);getch();)運行結(jié)果:錯了,沒有結(jié)果;修改:#includeustdio.hM
#include"conio.h"main()(intx,y;scanf("%d,%d",&x,&y);if(x>y){x=y;y=x;}else{x++;y++;}printf(H%d,%d\x,y);getch();【例12]求分段函數(shù)/(X)=0(x<0)2x+l(x>0)的值。用if語句:#include"stdio.h"#include"conio.1Tmain()(intx,y;printf(upleaseanumber:");scanf("%d",&x);if(x<0)y=0;elsey=2*x+l;printf("%d",y);getch();1用條件表達式:#include"stdio.h"#include"conio.h"main()(intx,y;printf("pleaseanumber:");scanf("%d",&x);y=x<0?0:2*x+l;printf("%d",y);getch();J1(%ヰ0)【例!3I求分段函數(shù)/(尤)=<_1(%=〇)的值#include"stdio.hM#include"conio.h1'main()(intx,y;printf("pleaseanumber:");scanf("%d",&x);if(x)y=l;elsey=-l;printf("%d",y);getch();[例14]_習題5.5#include"stdio.h"#include"conio.h"main()(intx,y;printf("pleaseanumber:");scanf("%d",&x);if(x<l)y=x;elseif(x>=10)y=3*x-ll;elsey=2*x-l;printf("%d",y);getch();3、多分支語句及程序設(shè)計3.1switch語句的一般形式Switch(表達式)(casev常量表達式く語句序列1>caseく常量表達式2>:〈語句序列2>casev常量表達式3>:く語句序列3>caseく常量表達式4>:く語句序列4>caseく常量表達式5>:く語句序列5>case〈常量表達式く語句序列n>default:<語句序列〉具體的執(zhí)行過程:請回想剛才我的現(xiàn)場舉例。[例15]ー個典型的應(yīng)用#include"stdio.h"#include"conio.h"main()(intx;scanf(H%dM,&x);switch(x)(casel:printf(nIloveyou1');case2:printf(HIbuloveyou**);case3:printf(nIveryfeichangloveyou");case4:printf("Iveryverybuloveyou");default:printf("Idon'tknow");}getch();2使用switch語句注意點常量表達式只能起到標號的作用,跳出必須使用break語句;【例16]ー個典型的應(yīng)用#include"stdio.h"include"conio.h"main(){intx;scanf(H%dM,&x);switch(x){case1iprintfC*1loveyou");break;case2:printf(nIbuloveyou1');break;case3:printf("Iveryfeichangloveyou");break;case4:printf(nIveryverybuloveyoun);break;default:printf(MIdon*tknow*');}getch();case后面是常量表達式(建議大家使用整數(shù)或字符表達式),且值必須互不相同【例17】一個典型的應(yīng)用#include"stdio.h"#include"conio.h"main(){intx;scanf(M%d",&x);switch(x)(casel:printf(nIloveyouM);break;case2:printf(uIbuloveyou°);break;case2:printf(nIveryfeichangloveyou");break;case3:printf(uIveryverybuloveyoun);break;default:printf(nIdon'tknow");}getch();)編譯錯誤(重復(fù)定義)main(){intx,y=l,t=2;scanf("%d",&x);switch(x)(casel:printf("Iloveyou");break;case2:printf("Ibuloveyou");break;casey4-t:printf("Iveryfeichangloveyou");break;case4:printf("Iveryverybuloveyou");break;default:printf("Idon'tknow");}getch();)case后面要有空格case后面可包含多個執(zhí)行語句,且不用加{卜【例18】一個典型的應(yīng)用main()(intx,y=l,t=2,m;scanf(M%d'\&x);switch(x)(casel:printf(HIloveyouH);break;case2:printf(,,Ibuloveyou");printf("akldjfklajdflkajsdklfjasdklf');m=y+t;printf(M%dM,m);break;case3:printf(nIveryfeichangloveyou");break;case4:printf(nIveryverybuloveyoun);break;default:printf(MIdon'tknow1');}getch();多個case語句可以共用ー組執(zhí)行語句Switch可以嵌套【例19]一個典型的應(yīng)用main()(intx=0,y=2,z=3;switch(x+l)(casel:switch(y==3)(casel:printf("&&");case2:printf("ur*);}case2:switch(z)(casel:printf("$$H);case2:printf(,******n);case3:printf(M%$%$");})getch();?Switch語句完全可以不用,用if就可以全部完成其功能;【例20】請自行設(shè)計ー個自動飲料機屏幕選擇功能(流程圖如下)main()intchoice;printf("========================歡迎使用天山牌自動飲料機========================\n");printf("請選擇飲料:'n");printffl.雪碧'n");primf("2.可樂'n");printf("3.啤酒'n");priinf("4.伊カ老窖'n");printf("5.香飄飄奶茶'n");scanf("%d",&choice);switch(choice)(case1:printf("雪碧透心涼");break;case2:printf("可樂,激情無限");break;case3:printf("人類沒有啤酒,世界將會怎樣)break;case4:primf("喝完老窖,老鼠找貓”);break;case5:printf("奶茶,我要香飄飄ッ;break;default:printf("對不起,你選擇的飲料未經(jīng)法律許可,不能出售");getch();【例21】用switch語句編程,根據(jù)成績打印出等級。main(){intscore,temp;printf(”請輸入成績:”);scanf("%d,',&score);if(score=100)temp=9;elsetemp=score/10;switch(temp)(case0:case5:printf(“不及格”);break;case6:primf("及格");break;case7:case8:printf(“良好");break;case9:printf(”優(yōu)秀”);break;default:printf(”非法操作”);)getch();}第六章循環(huán)結(jié)構(gòu)程序設(shè)計1、循環(huán)結(jié)構(gòu)使用一定的條件讓ー個程序執(zhí)行若干次,循環(huán)結(jié)構(gòu)也叫重復(fù)結(jié)構(gòu),可以完成重復(fù)、規(guī)律性的操作。2、基本的循環(huán)語句(重點)在C語言中,有4種語句可以構(gòu)成循環(huán)。Goto、while,do-while,for2.1goto語句【例1】請編寫程序,求z〃的值。main(){inti=l;longsum=0;repeat:if(i<=1000){sum=sum+i;i++;gotorepeat;)printf("sum=%ld",sum);getch();} 要求:能看懂別人的程序就可以了,不要求會用。2.2whiIe語句一般形式:whileく表達式〉〈語句序列〉注意點:先判斷條件,后執(zhí)行循環(huán)體;循環(huán)體有可能一次也不執(zhí)行:循環(huán)體可以為任意類型的語句;什么條件下跳出循環(huán)?1、條件不成立(為假);2、循環(huán)體內(nèi)遇到;breakreturngoto【例2】請用while編寫程序,求Z”的值?!?1main()(inti=l;longsum=0;while(i<=1000){sum=sum+i;i++;)printf(Hsum=%ldH,sum);getch();[例3]>Rn!(n=l-8)main()inti=l;longsum=l;while(i<=8)(sum=sum*i;i++;}printf(Hsum=%ldH,sum);getch();2.3do-whiIe語句一般的形式:do{循環(huán)體)whilev表達式》;(千萬不要忘記我:)【例4】請用do-while編寫程序,求エ”的值。main()inti=l;longsum=0;do{sum=sum+i;i++;}while(i<=1000);printf(,'sum=%ld,',sum);getch();注意:在使用while和do-while語句執(zhí)行同?個任務(wù)時,要注意初始條件。對于while語句來說,有可能一次循環(huán)也不執(zhí)行;但對于do-while語句來說,不管初始條件成不成立,均至少執(zhí)行?次?!纠?】請比較以下程序程序ー:main()inti=1001;longsum=0;while(i<=1000)sum=sum+i;i++;)printf("sum=%ld",sum);getch();}程序ニ:main(){inti=1001;longsum=0;do{sum二sum+i;訐+;}while(i<=1000);printf(Hsum=%ldM,sum);getch();J 【例6】統(tǒng)計輸入的整數(shù)個數(shù)(遇到“時結(jié)束,不在統(tǒng)計之列)程序ー:用do-whilemain(){intnum;intsum=0;do{printf("pleaseinputanumber:");scanf("%d",&num);sum++;}while(num!=-l);printf("sum=%d",sum-1);getch();}程序二:用whilemain(){intnum;intsum=0;while(num!=-l){printf("pleaseinputanumber:");scanf("%d",&num);sum++;}printf(',sum=%d'\sum-1);getch();4for語句一般形式:for(exprl;expr2;expr3)〈語句〉【例7】請用for編寫程序,求>,〃的值。?=1main(){inti;longsum=0;for(i=0;i<=1000;i++)sum=sum+i;printf(,,sum=%ld',,sum);getch();}特別提醒:for中的exprl-expr3類型任意,均可以省略,但是;不能省略for(;;);for可以轉(zhuǎn)換為while或者dowhile;exprl時初始化表達式,expr2是條件表達式,expr3是修正表達式;注意for的多樣性;[例8]編寫程序,在屏幕上輸出26個字母(小寫)第一種形式:第二種形式;(省略exprl)#include"stdio.h"main()(inti;for(i=0;i<26;i++)printf(“%c",'a'+i);#include"stdio.h”main()(inti=0;for(;i<26;i++)printf(“%c",'a'+i);getch();)getch();)第三種形式:(省略expr3,exprl)第四種形式:(省略exprl,打印語句)#includeustdio.hMmain()(inti=0;for(;i<26;)printf(,'%c";a'+(i++));#include"stdio.h"main()(inti=0;for(;i<26;putchar(*a'+i),i4-+);(注意空語句)
getch();}getch();)3、循環(huán)嵌套所謂循環(huán)嵌套,是指循環(huán)體中包含循環(huán)語句。在嵌套的過程中,三種循環(huán)語句可以互相嵌套,層數(shù)不限。外循環(huán)可以包含多個內(nèi)循環(huán),但是不能交叉。【例91_在屏幕上打印5_行5_列的“*”。第一種:用for#include"stdio.h"main(){introw,col;for(row=1;row<=5;row++){for(col=l;col<=5;col++)printf(n*H);printf(M\nH);}getch();}第二種:用whil
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 進行性延髓麻痹病因介紹
- T-CIE 232-2024 液氣換熱型水冷板式間接液冷數(shù)據(jù)中心設(shè)計規(guī)范
- 中考地理總復(fù)習七下第七章了解地區(qū)第九課時教材知識梳理
- 呼吸道職業(yè)暴露
- (報批版)塑料造粒環(huán)評報告書
- 商務(wù)勵志工作報告匯報模板33
- 重慶2020-2024年中考英語5年真題回-教師版-專題01 語法選擇
- 云南省曲靖市沾益區(qū)2024-2025學年七年級9月月考道德與法治試題(解析版)-A4
- 2023年汽車電噴項目融資計劃書
- 2023年變壓器、整流器和電感器項目融資計劃書
- (T8聯(lián)考)2025屆高三部分重點中學12月聯(lián)合測評語文試卷(含答案解析)
- 2024金屬非金屬礦山(露天礦山)安全管理人員試題及解析
- 山東省濟南市2023-2024學年高二上學期期末考試物理試題 附答案
- 《倉庫消防安全教育》培訓(xùn)
- 2023年中國氣象局在京單位招聘崗位考試真題
- NB/T 11127-2023在用鋼絲繩芯輸送帶報廢檢測技術(shù)規(guī)范
- 《政府績效管理》課程教學大綱
- 獸醫(yī)屠宰衛(wèi)生人員考試題庫及答案(415題)
- 2024-2030年版中國測繪行業(yè)發(fā)展機遇分析及投資策略研究報告
- Starter Unit 1 Hello!(單元說課稿) 2024-2025學年人教版英語七年級上冊
- 【碳足跡報告】天津中車唐車碳足跡報告-天津節(jié)能中心
評論
0/150
提交評論