




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
結(jié)構(gòu)化程序設(shè)計(jì)綜合訓(xùn)練第一頁(yè),共七十三頁(yè),2022年,8月28日一、本課程的教學(xué)目的結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)是程序設(shè)計(jì)的兩種典型的思想和方法。目前高校開(kāi)設(shè)的程序設(shè)計(jì)課程也基本據(jù)此劃分為兩大系列。本課程以C語(yǔ)言為工具,通過(guò)布置一些程序,進(jìn)行結(jié)構(gòu)化程序化設(shè)計(jì)的綜合訓(xùn)練,該課程是計(jì)算機(jī)專業(yè)的一門實(shí)驗(yàn)課,通過(guò)該課程的學(xué)習(xí),達(dá)到以下目的:第二頁(yè),共七十三頁(yè),2022年,8月28日課程目的1.在軟件工程生命周期開(kāi)發(fā)方法的指導(dǎo)下,深入理解和真正掌握自頂向下、逐步求精的結(jié)構(gòu)化程序設(shè)計(jì)方法;2.掌握良好的程序設(shè)計(jì)編碼風(fēng)格;3.學(xué)習(xí)常用的算法設(shè)計(jì)的技術(shù);4.進(jìn)一步提高學(xué)生的程序調(diào)試能力;5.提高學(xué)生的程序編程興趣。第三頁(yè),共七十三頁(yè),2022年,8月28日二、教材:本課程是實(shí)踐性課程,主要以實(shí)驗(yàn)為主。第四頁(yè),共七十三頁(yè),2022年,8月28日三、課時(shí)的安排序號(hào)內(nèi)容講授(學(xué)時(shí))實(shí)驗(yàn)1結(jié)構(gòu)化程序方法的開(kāi)發(fā)流程1.52管理系統(tǒng)的開(kāi)發(fā)0.53.53游戲程序的開(kāi)發(fā)0.53.54篩選的算法設(shè)計(jì)技術(shù)0.53.55歸納的算法設(shè)計(jì)技術(shù)0.53.56分治的算法設(shè)計(jì)技術(shù)0.53.57最優(yōu)的算法設(shè)計(jì)技術(shù)0.53.58綜合程序開(kāi)發(fā)0.549總結(jié)2合計(jì)725第五頁(yè),共七十三頁(yè),2022年,8月28日四、其它說(shuō)明從三個(gè)方面考核每個(gè)實(shí)驗(yàn)的成績(jī):功能完成情況、實(shí)驗(yàn)報(bào)告以及程序風(fēng)格、界面設(shè)計(jì)以及操作方便性。第六頁(yè),共七十三頁(yè),2022年,8月28日結(jié)構(gòu)化開(kāi)發(fā)方法在60年代計(jì)算機(jī)發(fā)展初期,程序設(shè)計(jì)是少數(shù)聰明人干的事。他們的智力與技能超群,編寫的程序既能控制弱智的計(jì)算機(jī),又能讓別人看不懂、不會(huì)用。那個(gè)時(shí)期編程就跟捏泥巴一樣隨心所欲,人們就在這種美滋滋的感覺(jué)下熱情地編程,結(jié)果產(chǎn)生了一堆問(wèn)題:程序質(zhì)量低下,錯(cuò)誤頻出,進(jìn)度延誤,費(fèi)用劇增……。這些問(wèn)題導(dǎo)致了“軟件危機(jī)”。第七頁(yè),共七十三頁(yè),2022年,8月28日結(jié)構(gòu)化開(kāi)發(fā)方法在1968年,一群程序員、計(jì)算機(jī)科學(xué)家與工業(yè)界人士聚集一起共商對(duì)策。通過(guò)借鑒傳統(tǒng)工業(yè)的成功做法,他們主張通過(guò)工程化的方法開(kāi)發(fā)軟件來(lái)解決軟件危機(jī),并冠以“軟件工程”這一術(shù)語(yǔ)。軟件工程主要講述軟件開(kāi)發(fā)的道理,基本上是軟件實(shí)踐者的成功經(jīng)驗(yàn)和失敗教訓(xùn)的總結(jié)。第八頁(yè),共七十三頁(yè),2022年,8月28日結(jié)構(gòu)化開(kāi)發(fā)方法結(jié)構(gòu)化開(kāi)發(fā)方法是一種設(shè)計(jì)程序的技術(shù),采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的順序、選擇和循環(huán)三種基本控制結(jié)構(gòu)。它提出的原則可歸納為32字:“自頂向下,逐步細(xì)化;清晰第一,效率第二;書寫規(guī)范,縮進(jìn)格式;基本結(jié)構(gòu),組合而成?!钡诰彭?yè),共七十三頁(yè),2022年,8月28日1、結(jié)構(gòu)化開(kāi)發(fā)方法軟件有自己的“生命周期”。一個(gè)軟件從定義、開(kāi)發(fā)、使用和維護(hù),直到最終被廢棄,要經(jīng)歷一個(gè)漫長(zhǎng)的時(shí)期,通常把軟件經(jīng)歷的這個(gè)漫長(zhǎng)的時(shí)期成為生命周期。第十頁(yè),共七十三頁(yè),2022年,8月28日1、結(jié)構(gòu)化開(kāi)發(fā)方法軟件工程的開(kāi)發(fā)方法就是從時(shí)間角度對(duì)復(fù)雜的軟件問(wèn)題進(jìn)行分解,把軟件漫長(zhǎng)的生命周期依次分為若干個(gè)階段,每個(gè)階段有獨(dú)立的任務(wù),然后逐步完成每個(gè)階段的任務(wù)。前一個(gè)階段任務(wù)的完成是進(jìn)行后一個(gè)階段工作的前提和基礎(chǔ),而后一個(gè)階段任務(wù)的完成通常是前一個(gè)階段提出的解法更進(jìn)一步具體化,增加了更多的實(shí)現(xiàn)細(xì)節(jié)。第十一頁(yè),共七十三頁(yè),2022年,8月28日1、結(jié)構(gòu)化開(kāi)發(fā)方法在每一個(gè)階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審,若審查通不過(guò),則必須進(jìn)行必要的返工,返工后還要進(jìn)行審查。審查的一個(gè)主要標(biāo)志就是每個(gè)階段都應(yīng)該提交與所開(kāi)發(fā)的軟件完全一致的高質(zhì)量的文檔資料,文檔不僅是前后階段的通信工具,而且是軟件交付使用后進(jìn)行維護(hù)的依據(jù)。第十二頁(yè),共七十三頁(yè),2022年,8月28日1、結(jié)構(gòu)化開(kāi)發(fā)方法采用結(jié)構(gòu)化的開(kāi)發(fā)方法,使軟件開(kāi)發(fā)的全過(guò)程以一種有條不紊的方式進(jìn)行,保證了軟件的質(zhì)量,特別是提高了軟件的可維護(hù)性。第十三頁(yè),共七十三頁(yè),2022年,8月28日2、結(jié)構(gòu)化方法的開(kāi)發(fā)流程在結(jié)構(gòu)化開(kāi)發(fā)中,編碼只是軟件開(kāi)發(fā)的一個(gè)很小的階段,而且是處在實(shí)現(xiàn)階段。結(jié)構(gòu)化的開(kāi)發(fā)流程可以用如圖的瀑布模型來(lái)模擬:第十四頁(yè),共七十三頁(yè),2022年,8月28日瀑布模型第十五頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)問(wèn)題定義:
“要解決的問(wèn)題是什么”。問(wèn)題定義階段是整個(gè)過(guò)程中占用時(shí)間最少的階段。第十六頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)可行性研究:從經(jīng)濟(jì)、技術(shù)、法律等方面分析確定系統(tǒng)是否值得開(kāi)發(fā),及時(shí)建議停止項(xiàng)目開(kāi)發(fā),避免人力、物力、時(shí)間的浪費(fèi),并進(jìn)行方案選擇??尚行匝芯康哪康牟皇墙鉀Q問(wèn)題,而是確定問(wèn)題是否值得去解決??尚行匝芯堪ㄋ膫€(gè)方面的研究:經(jīng)濟(jì)可行性技術(shù)可行性法律可行性方案的選擇第十七頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)需求分析:準(zhǔn)確回答“系統(tǒng)必須做什么”這個(gè)問(wèn)。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和簡(jiǎn)明算法描述表示系統(tǒng)的邏輯模型。需求分析階段的任務(wù)不是具體的解決客戶的問(wèn)題防止系統(tǒng)的設(shè)計(jì)與用戶的實(shí)際需求不相符的后果。第十八頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)概要設(shè)計(jì):確定系統(tǒng)設(shè)計(jì)方案,軟件的體系結(jié)構(gòu)。確定軟件由哪些模塊組成以及這些模塊之間的相互關(guān)系。第十九頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)詳細(xì)設(shè)計(jì):描述應(yīng)該如何具體地實(shí)現(xiàn)系統(tǒng)。詳細(xì)設(shè)計(jì)每個(gè)模塊,確定實(shí)現(xiàn)模塊所需要的算法和數(shù)據(jù)結(jié)構(gòu)。第二十頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)軟件實(shí)現(xiàn)階段:進(jìn)行程序設(shè)計(jì)(編碼)和模塊測(cè)試。第二十一頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)綜合測(cè)試階段:測(cè)試的目的是以最小的代價(jià)(耗費(fèi)最少時(shí)間和最少工作量)發(fā)現(xiàn)盡可能多的不同類型的錯(cuò)誤。通過(guò)各種類型的測(cè)試,查出軟件設(shè)計(jì)中的錯(cuò)誤并改正,確保軟件質(zhì)量;還要在用戶的參與下進(jìn)行驗(yàn)收,才可交付使用。第二十二頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)大量的資料統(tǒng)計(jì)表明,軟件開(kāi)發(fā)組織將30%~40%的工作量花在測(cè)試上。而那些高可靠性、高安全性軟件的測(cè)試所花的時(shí)間更是其它開(kāi)發(fā)步驟總和的3到5倍。第二十三頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)真正實(shí)施測(cè)試之前要制定測(cè)試方案,測(cè)試方案包括預(yù)定要測(cè)試的功能,應(yīng)該輸入的測(cè)試數(shù)據(jù)和預(yù)期的結(jié)果。第二十四頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)測(cè)試和調(diào)試常常被說(shuō)成是一個(gè)回事,實(shí)際上是測(cè)試階段的不同任務(wù)。調(diào)試即排錯(cuò),是在已經(jīng)知道程序有問(wèn)題時(shí)要做的事情。測(cè)試則是在認(rèn)為程序能工作的情況下,為發(fā)現(xiàn)問(wèn)題而進(jìn)行的一整套確定的系統(tǒng)化的實(shí)驗(yàn)。第二十五頁(yè),共七十三頁(yè),2022年,8月28日軟件生命周期各階段的主要任務(wù)軟件運(yùn)行、維護(hù):程序的運(yùn)行與維護(hù)是整個(gè)程序開(kāi)發(fā)流程的最后一步。編寫程序的目的就是為了應(yīng)用,在程序運(yùn)行的早期,用戶可能會(huì)發(fā)現(xiàn)在測(cè)試階段沒(méi)有發(fā)現(xiàn)的錯(cuò)誤,需要修改。而隨著時(shí)間的推移,原有程序可能已滿足不了需要,這是就需要對(duì)程序進(jìn)行修改甚至升級(jí)。每次維護(hù)的要求及修改步驟都應(yīng)詳細(xì)準(zhǔn)確地記錄下來(lái),作為文檔保存。第二十六頁(yè),共七十三頁(yè),2022年,8月28日常用設(shè)計(jì)工具介紹三種常用的圖形方式的設(shè)計(jì)工具。第二十七頁(yè),共七十三頁(yè),2022年,8月28日層次圖用來(lái)描述軟件的層次結(jié)構(gòu),圖中的一個(gè)矩形框代表一個(gè)模塊,方框之間的連線表示調(diào)用關(guān)系。層次圖很適合在自頂向下設(shè)計(jì)軟件的過(guò)程中使用。第二十八頁(yè),共七十三頁(yè),2022年,8月28日第二十九頁(yè),共七十三頁(yè),2022年,8月28日程序流程圖是歷史最悠久使用最廣泛的描述軟件設(shè)計(jì)的方法。它的主要優(yōu)點(diǎn)是對(duì)控制流程的描述很直觀,便于初學(xué)者掌握。第三十頁(yè),共七十三頁(yè),2022年,8月28日第三十一頁(yè),共七十三頁(yè),2022年,8月28日盒圖是一種很好的支持結(jié)構(gòu)化程序設(shè)計(jì)思想的圖形工具,也稱為N-S圖。第三十二頁(yè),共七十三頁(yè),2022年,8月28日順序結(jié)構(gòu)塊1塊2塊3塊4條件TF塊1塊2選擇結(jié)構(gòu)CaseI=1,2,3T塊1塊2多分支選擇結(jié)構(gòu)F塊3塊當(dāng)條件成立時(shí)當(dāng)型循環(huán)塊直到條件成立時(shí)直到型循環(huán)第三十三頁(yè),共七十三頁(yè),2022年,8月28日偽代碼圖形工具表示設(shè)計(jì)比較直觀,但畫起來(lái)比較費(fèi)勁,所以描述設(shè)計(jì)還可以使用偽代碼這個(gè)常用的語(yǔ)言工具。偽代碼是一種“混合”語(yǔ)言,它使用一種語(yǔ)言——通常是某種自然語(yǔ)言的詞匯,同時(shí)卻使用某種結(jié)構(gòu)化程序設(shè)計(jì)的語(yǔ)法。第三十四頁(yè),共七十三頁(yè),2022年,8月28日偽代碼if九點(diǎn)以前do私人事務(wù);else9點(diǎn)到18點(diǎn)工作else下班;第三十五頁(yè),共七十三頁(yè),2022年,8月28日編碼應(yīng)注意的問(wèn)題第三十六頁(yè),共七十三頁(yè),2022年,8月28日全局變量全局變量的作用增加了函數(shù)間數(shù)據(jù)聯(lián)系的渠道。但是全局變量使函數(shù)的通用性降低了,因?yàn)楹瘮?shù)在執(zhí)行時(shí)要依賴于其所在的全局變量。如果將一個(gè)函數(shù)移到另一個(gè)文件中,還要將有關(guān)的全局變量以及其值一起移過(guò)去。但若該全局變量與其它文件的全局變量同名時(shí),就會(huì)出現(xiàn)問(wèn)題,降低了程序的可靠性和通用性。第三十七頁(yè),共七十三頁(yè),2022年,8月28日全局變量另外使用全局變量過(guò)多,會(huì)降低程序的清晰性,人們往往難以清楚地判斷出每個(gè)瞬間每個(gè)全局變量的值。在各個(gè)函數(shù)執(zhí)行時(shí)都可能改變?nèi)肿兞康闹?,程序容易出錯(cuò)。對(duì)于大型程序,模塊多,常常由不同的人來(lái)完成不同的模塊,如果全局變量隨意使用,更容易出現(xiàn)問(wèn)題,造成程序的混亂。因此,更應(yīng)該限制使用全局變量。第三十八頁(yè),共七十三頁(yè),2022年,8月28日變量的名字名字應(yīng)具有足夠的說(shuō)明性,以便使讀者能夠記住它們是干什么的。給每個(gè)全局變量聲明附一個(gè)簡(jiǎn)短的注釋也是非常有幫助的。第三十九頁(yè),共七十三頁(yè),2022年,8月28日變量的名字按常規(guī)方式使用的局部變量可采用極短的名字,如用i、j作為循環(huán)變量,p、q作為指針,s、t表示字符串等。第四十頁(yè),共七十三頁(yè),2022年,8月28日變量的名字現(xiàn)實(shí)中存在許多命名約定或者本地習(xí)慣。常見(jiàn)的如:指針采用以ptr結(jié)尾的變量名;全局變量用大寫開(kāi)頭或者g_開(kāi)頭做變量名;常量用完全由大寫拼寫的變量名等。命名約定能使代碼更易理解。第四十一頁(yè),共七十三頁(yè),2022年,8月28日表達(dá)式和語(yǔ)句同樣,我們也應(yīng)該以盡可能一目了然的形式寫好表達(dá)式和語(yǔ)句。第四十二頁(yè),共七十三頁(yè),2022年,8月28日采用縮進(jìn)程序結(jié)構(gòu),是使程序呈現(xiàn)出結(jié)構(gòu)清晰的最省力的方法。比較:n=0;for(n++;n<100;field[n++]=’\0’);或for(n++;n<100;field[n++]=’\0’);for(n=1;n<100;n++)field[n]=’\0’;第四十三頁(yè),共七十三頁(yè),2022年,8月28日使用表達(dá)式的自然形式。否定運(yùn)算的條件表達(dá)式比較難理解,比較:if(!(block_id<actblks)||!(block_id>=unblocks))…
if((block_id>=actblks)||(block_id<unblocks))…
第四十四頁(yè),共七十三頁(yè),2022年,8月28日分解復(fù)雜的表達(dá)式。C有很豐富的表達(dá)式語(yǔ)法結(jié)構(gòu)和很豐富的運(yùn)算符,因此應(yīng)該避免將一大堆東西塞進(jìn)一個(gè)結(jié)構(gòu)中。比較:*xp+=(x=2*k<(n-m)?c[k+1]:d[k--]));if(2*k<(n-m))x=c[k+1];elsex=d[k--];*xp+=x;第四十五頁(yè),共七十三頁(yè),2022年,8月28日當(dāng)心副作用。像++這一類運(yùn)算符具有副作用,它們除了返回一個(gè)值外,還將隱含地改變變量的值。這類表達(dá)式有時(shí)用起來(lái)很方便,但有時(shí)也會(huì)成為問(wèn)題,因?yàn)樽兞康娜≈挡僮骱透虏僮骺赡懿皇峭瑫r(shí)發(fā)生。第四十六頁(yè),共七十三頁(yè),2022年,8月28日宏#defineisupper(c)((c)>=’A’&&(c)<=’Z’)但如果它在下面的上下文中使用:while(isupper(c=getchar()))…那么,每當(dāng)遇到一個(gè)大于等于A的字符,程序就會(huì)丟掉它,而下一個(gè)字符將被讀入并去與Z做比較。因此,上面的實(shí)現(xiàn)是錯(cuò)誤。第四十七頁(yè),共七十三頁(yè),2022年,8月28日宏除了這個(gè)問(wèn)題外,由于宏是通過(guò)文本替換方式實(shí)現(xiàn)的,如果忘記給宏的體和參數(shù)加上括號(hào),將產(chǎn)生錯(cuò)誤。如:#definesquare(x)(x)*(x)…1/square(x)正確的宏應(yīng)該是:#definesquare(x)((x)*(x))所以建議:除了定義符號(hào)常量外,最好避免使用宏。第四十八頁(yè),共七十三頁(yè),2022年,8月28日注釋注釋是幫助讀者閱讀程序的一種手段,它們澄清情況,不是添亂。注釋要注意:對(duì)函數(shù)要進(jìn)行注釋:包括部分參數(shù)。對(duì)一些需要看大量代碼的才能夠確定這部分代碼的功能,需要進(jìn)行注釋不要瑣談明顯的東西。注釋不要與代碼矛盾。如果注釋的長(zhǎng)度超過(guò)代碼本身,可能就說(shuō)明這個(gè)代碼應(yīng)該修改了。第四十九頁(yè),共七十三頁(yè),2022年,8月28日C語(yǔ)言中常見(jiàn)的錯(cuò)誤忽略了“=”與“==”的區(qū)別。if(a=3)then…但C語(yǔ)言中,“=”是賦值運(yùn)算符,“==”是關(guān)系運(yùn)算符。如:if(a==3)a=b;第五十頁(yè),共七十三頁(yè),2022年,8月28日C語(yǔ)言中常見(jiàn)的錯(cuò)誤忘記加分號(hào)。分號(hào)是C語(yǔ)句中不可缺少的一部分,語(yǔ)句末尾必須有分號(hào)。a=1b=2if(a%3==0);I++;第五十一頁(yè),共七十三頁(yè),2022年,8月28日C語(yǔ)言中常見(jiàn)的錯(cuò)誤輸入變量時(shí)忘記加地址運(yùn)算符“&”。inta,b;scanf("%d%d",a,b);這是不合法的。Scanf函數(shù)的作用是:按照a、b在內(nèi)存的地址將a、b的值存進(jìn)去?!?a”指a在內(nèi)存中的地址。第五十二頁(yè),共七十三頁(yè),2022年,8月28日C語(yǔ)言中常見(jiàn)的錯(cuò)誤switch語(yǔ)句中漏寫break語(yǔ)句。例如:根據(jù)考試成績(jī)的等級(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";)}第五十三頁(yè),共七十三頁(yè),2022年,8月28日C語(yǔ)言中常見(jiàn)的錯(cuò)誤定義數(shù)組時(shí)誤用變量。intn;scanf("%d",&n);inta[n];第五十四頁(yè),共七十三頁(yè),2022年,8月28日C語(yǔ)言中常見(jiàn)的錯(cuò)誤在定義數(shù)組時(shí),將定義的“元素個(gè)數(shù)”誤認(rèn)為是可使的最大下標(biāo)值。main(){staticinta[10]={1,2,3,4,5,6,7,8,9,10};printf("%d",a[10]);}第五十五頁(yè),共七十三頁(yè),2022年,8月28日常見(jiàn)的內(nèi)存錯(cuò)誤未初始化的指針voidf2(intdatum){int*p2;
*p2=datum;...}第五十六頁(yè),共七十三頁(yè),2022年,8月28日常見(jiàn)的內(nèi)存錯(cuò)誤錯(cuò)誤的內(nèi)存釋放voidf3(){char*p;p=malloc(10);...free(p);...free(p);}第五十七頁(yè),共七十三頁(yè),2022年,8月28日常見(jiàn)的內(nèi)存錯(cuò)誤voidf8(){structx*xp;xp=(structx*)malloc(sizeof(structx));..free(xp);...returnxp.}第五十八頁(yè),共七十三頁(yè),2022年,8月28日常見(jiàn)的內(nèi)存錯(cuò)誤試圖修改常量intmain(intargc,char*argv[]){char*p="abcd";
*p='1';
return0;}第五十九頁(yè),共七十三頁(yè),2022年,8月28日常見(jiàn)的內(nèi)存錯(cuò)誤誤解傳值與傳引用#include<stdlib.h>#include<stdio.h>
voidget_str(char*p){p=malloc(sizeof("abcd"));strcpy(p,"abcd");
return;}
intmain(intargc,char*argv[]){char*p=NULL;get_str(p);printf("p=%p\n",p);return0;}第六十頁(yè),共七十三頁(yè),2022年,8月28日常見(jiàn)的內(nèi)存錯(cuò)誤char*get_str(void){char*str={"abcd"};
returnstr;}intmain(intargc,char*argv[]){char*p=get_str();printf("%s\n",p);
return0;}第六十一頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題1、頭文件中的ifndef/define/endif干什么用?2、#include<filename.h>和#include“filename.h”有什么區(qū)別?3、請(qǐng)寫出floatx與“零值”比較的if語(yǔ)句。4、
請(qǐng)寫出char*p與“零值”比較的if語(yǔ)句:第六十二頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題請(qǐng)簡(jiǎn)述以下兩個(gè)for循環(huán)的優(yōu)缺點(diǎn)for(i=0;i<N;i++){if(condition)DoSomething();elseDoOtherthing();}if(condition){for(i=0;i<N;i++)DoSomething();}else{for(i=0;i<N;i++)DoOtherthing();}第六十三頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題voidGetMemory2(char**p,intnum){*p=(char*)malloc(num);}voidTest(void){char*str=NULL;GetMemory(&str,100);strcpy(str,"hello"); printf(str); }第六十四頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題voidTest(void){char*str=(char*)malloc(100); strcpy(str,“hello”); free(str); if(str!=NULL) { strcpy(str,“world”); printf(str);}}第六十五頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題charstr[]=“Hello”; char*p=str;intn=10;請(qǐng)計(jì)算sizeof(str)=
sizeof(p)=
sizeof(n)=第六十六頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題voidFunc(charstr[100]){請(qǐng)計(jì)算sizeof(str)=}void*p=malloc(100);請(qǐng)計(jì)算sizeof(p)=第六十七頁(yè),共七十三頁(yè),2022年,8月28日測(cè)試題voidchange(int*data1,int*data2){int*temp;temp=data1;data1=data2;data2=temp;printf("change:data1=%d,data2=%d\n",*data1,*data2);return;}intmain(void){intx=25,y=87;change(&x,&y);p
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45230-2025數(shù)據(jù)安全技術(shù)機(jī)密計(jì)算通用框架
- 借用林地協(xié)議合同范本
- 包裝紙盒合同范本
- 北京車輛過(guò)戶合同范本
- 軍事拓展協(xié)議合同范本
- 企業(yè)價(jià)值咨詢合同范本
- 動(dòng)產(chǎn)個(gè)人抵押合同范本
- 人工勞務(wù)外包合同范本
- 企業(yè)綠化合同范本
- 農(nóng)業(yè)機(jī)械改裝項(xiàng)目合同范例
- 綜合交通運(yùn)輸體系認(rèn)知
- GM/T 0115-2021信息系統(tǒng)密碼應(yīng)用測(cè)評(píng)要求
- YY 0670-2008無(wú)創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- JJF 1458-2014磁軛式磁粉探傷機(jī)校準(zhǔn)規(guī)范
- GB/T 39935-2021塑料制品薄膜和片材抗粘連性的測(cè)定
- GB/T 324-2008焊縫符號(hào)表示法
- 機(jī)器人技術(shù) 第一章 緒論
- 馬工程教材 《公共財(cái)政概論》PPT-第八章 稅收
- GB/T 22544-2008蛋雞復(fù)合預(yù)混合飼料
- 高中生物 生態(tài)系統(tǒng)的能量流動(dòng)課件 新人教版必修3
- GB/T 14343-2008化學(xué)纖維長(zhǎng)絲線密度試驗(yàn)方法
評(píng)論
0/150
提交評(píng)論