眾賞文庫(kù)
全部分類(lèi)
  • 抗擊疫情 >
    抗擊疫情
    病毒認(rèn)知 防護(hù)手冊(cè) 復(fù)工復(fù)產(chǎn) 應(yīng)急預(yù)案 防控方案 英雄事跡 院務(wù)工作
  • 成品畢設(shè) >
    成品畢設(shè)
    外文翻譯 畢業(yè)設(shè)計(jì) 畢業(yè)論文 開(kāi)題報(bào)告 文獻(xiàn)綜述 任務(wù)書(shū) 課程設(shè)計(jì) 相關(guān)資料 大學(xué)生活 期刊論文 實(shí)習(xí)報(bào)告
  • 項(xiàng)目策劃 >
    項(xiàng)目策劃
    土地準(zhǔn)備 規(guī)劃設(shè)計(jì) 開(kāi)工開(kāi)盤(pán) 項(xiàng)目綜合 竣工移交 售后移交 智慧方案 安全專(zhuān)項(xiàng) 環(huán)境影響評(píng)估報(bào)告 可行性研究報(bào)告 項(xiàng)目建議書(shū) 商業(yè)計(jì)劃書(shū) 危害評(píng)估防治 招投標(biāo)文件
  • 專(zhuān)業(yè)資料 >
    專(zhuān)業(yè)資料
    人文法律 環(huán)境安全 食品科學(xué) 基礎(chǔ)建設(shè) 能源化工 農(nóng)林牧畜 綜合待分類(lèi) 教育經(jīng)驗(yàn) 行政人力 企業(yè)管理 醫(yī)學(xué)衛(wèi)生 IT技術(shù) 土木建筑 考研專(zhuān)題 財(cái)會(huì)稅務(wù) 公路隧道 紡織服裝
  • 共享辦公 >
    共享辦公
    總結(jié)匯報(bào) 調(diào)研報(bào)告 工作計(jì)劃 述職報(bào)告 講話(huà)發(fā)言 心得體會(huì) 思想?yún)R報(bào) 事務(wù)文書(shū) 合同協(xié)議 活動(dòng)策劃 代理加盟 技術(shù)服務(wù) 求職簡(jiǎn)歷 辦公軟件 ppt模板 表格模板 融資協(xié)議 發(fā)言演講 黨團(tuán)工作 民主生活
  • 學(xué)術(shù)文檔 >
    學(xué)術(shù)文檔
    自然科學(xué) 生物科學(xué) 天文科學(xué) 醫(yī)學(xué)衛(wèi)生 工業(yè)技術(shù) 航空、航天 環(huán)境科學(xué)、安全科學(xué) 軍事 政學(xué) 文化、科學(xué)、教育、 交通運(yùn)輸 經(jīng)濟(jì) 語(yǔ)言、文字 文學(xué) 農(nóng)業(yè)科學(xué) 社會(huì)科學(xué)總論 藝術(shù) 歷史、地理 哲學(xué) 數(shù)理科學(xué)和化學(xué) 綜合性圖書(shū) 哲學(xué)宗教
  • 經(jīng)營(yíng)營(yíng)銷(xiāo) >
    經(jīng)營(yíng)營(yíng)銷(xiāo)
    綜合文檔 經(jīng)濟(jì)財(cái)稅 人力資源 運(yùn)營(yíng)管理 企業(yè)管理 內(nèi)控風(fēng)控 地產(chǎn)策劃
  • 教學(xué)課件 >
    教學(xué)課件
    幼兒教育 小學(xué)教育 初中教育 高中教育 職業(yè)教育 成人教育 高等教育 考研資源 試題真題 作業(yè)習(xí)題 課后答案 綜合教學(xué)
  • 土木建筑 >
    土木建筑
    專(zhuān)項(xiàng)施工 應(yīng)急預(yù)案 建筑規(guī)范 工藝方案 技術(shù)交底 施工表格 圖片圖集
  • 課程導(dǎo)學(xué) >
    課程導(dǎo)學(xué)
    醫(yī)學(xué)綜合 中醫(yī)養(yǎng)生 醫(yī)學(xué)研究 身心發(fā)展 醫(yī)學(xué)試題 影像醫(yī)學(xué) 醫(yī)院辦公 外科醫(yī)學(xué) 老年醫(yī)學(xué) 內(nèi)科醫(yī)學(xué) 婦產(chǎn)科 神經(jīng)科 醫(yī)學(xué)課件 眼鼻喉科 皮膚病科 腫瘤科 兒科醫(yī)學(xué) 康復(fù)醫(yī)學(xué) 全科醫(yī)學(xué) 護(hù)理學(xué)科 針灸學(xué)科 重癥學(xué)科 病毒學(xué)科 獸醫(yī) 藥學(xué)
    • 簡(jiǎn)介:第四章UNIX下的C語(yǔ)言開(kāi)發(fā)環(huán)境,,61程序設(shè)計(jì)環(huán)境,學(xué)習(xí)程序設(shè)計(jì)從程序語(yǔ)言開(kāi)始,但還應(yīng)了解程序執(zhí)行和程序與外界的交互問(wèn)題。,1理想態(tài)的程序運(yùn)行環(huán)境,,用戶(hù)程序直接控制和使用各種設(shè)備,完成各種操作。,針對(duì)一個(gè)簡(jiǎn)單程序,MAIN{INTCWHILECGETCHAREOFPUTCHARC},,認(rèn)為執(zhí)行過(guò)程為,在單用戶(hù)單任務(wù)環(huán)境中基本符合。,2多任務(wù)環(huán)境下程序執(zhí)行,多任務(wù)中每一時(shí)刻都會(huì)有多個(gè)用戶(hù)程序提出訪問(wèn)請(qǐng)求,因此會(huì)有,,如此混亂的情況,程序?qū)o(wú)法運(yùn)行。,為使多道環(huán)境中的程序正確執(zhí)行,需要OS管理。,,用戶(hù)程序需要系統(tǒng)核心區(qū)程序的管理,達(dá)到各自任務(wù)的執(zhí)行。,62基于系統(tǒng)支持的程序設(shè)計(jì),,1建立系統(tǒng)編程的思想,理解多道環(huán)境程序執(zhí)行狀況,轉(zhuǎn)換用戶(hù)程序是執(zhí)行主體的認(rèn)識(shí)。了解OS可提供的服務(wù)及服務(wù)方式。充分利用OS提供服務(wù)功能解決實(shí)際問(wèn)題。盡量使編寫(xiě)的程序最大限度的滿(mǎn)足系統(tǒng)平臺(tái)的支持能力。,1GCC與GDB,11UNIX和C語(yǔ)言C是一種在UNIX操作系統(tǒng)的早期就被廣泛使用的通用編程語(yǔ)言,它最早是由貝爾實(shí)驗(yàn)室的DENNISRITCHIE為了UNIX的輔助開(kāi)發(fā)而寫(xiě)的。C是所有版本的UNIX上的系統(tǒng)語(yǔ)言。幾乎任何一種計(jì)算機(jī)上都有至少一種能用的C編譯器;并且它的語(yǔ)法和函數(shù)庫(kù)在不同的平臺(tái)上都是統(tǒng)一的。80年代末期美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)AMERICANNATIONALSTANDARDSINSTITUTE發(fā)布了一個(gè)被稱(chēng)為ANSIC的C語(yǔ)言標(biāo)準(zhǔn),這保證了在不同平臺(tái)上的C的一致性。,7,1GCC與GDB,12GNUC編譯器GNUC編譯器GCC是一個(gè)全功能的ANSIC兼容編譯器,它是所有UNIX系統(tǒng)可用的C編譯器。GCC是可以在多種硬體平臺(tái)上編譯出可執(zhí)行程序的超級(jí)編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高2030。,8,31LINUX下C語(yǔ)言編程概述,1GCC與GDB,GCC編譯過(guò)程預(yù)處理,對(duì)源代碼文件中的文件包含INCLUDE、預(yù)編譯語(yǔ)句如宏定義DEFINE等進(jìn)行分析。編譯,就是把C/C代碼“翻譯”成匯編代碼。匯編,將第二步輸出的匯編代碼翻譯成符合一定格式的機(jī)器代碼,生成以O(shè)為后綴的目標(biāo)文件。鏈接,將上步生成的目標(biāo)文件和系統(tǒng)庫(kù)的目標(biāo)文件和庫(kù)文件鏈接起來(lái),最終生成了可以在特定平臺(tái)運(yùn)行的可執(zhí)行文件。,10,1GCC編譯流程解析如本章開(kāi)頭提到的,GCC的編譯流程分為了4個(gè)步驟,分別為預(yù)處理(PREPROCESSING);編譯(COMPILING);匯編(ASSEMBLING);鏈接(LINKING)。下面就具體來(lái)查看一下GCC是如何完成4個(gè)步驟的。首先,有以下HELLOC源代碼INCLUDEINTMAIN{PRINTF“HELLOTHISISOUREMBEDDEDWORLD\N“RETURN0},33GCC編譯器,(1)預(yù)處理階段在該階段,編譯器將上述代碼中的STDIOH編譯進(jìn)來(lái),并且用戶(hù)可以使用GCC的選項(xiàng)“E”進(jìn)行查看,該選項(xiàng)的作用是讓GCC在預(yù)處理結(jié)束后停止編譯過(guò)程。ROOTLOCALHOSTGCCGCC–EHELLOC–OHELLOI在此處,選項(xiàng)“O”是指目標(biāo)文件,由上表可知,“I”文件為已經(jīng)過(guò)預(yù)處理的C原始程序。以下列出了HELLOI文件的部分內(nèi)容TYPEDEFINT__GCONV_TRANS_FCTSTRUCT__GCONV_STEP,STRUCT__GCONV_STEP_DATA,VOID,__CONSTUNSIGNEDCHAR,__CONSTUNSIGNEDCHAR,__CONSTUNSIGNEDCHAR,UNSIGNEDCHAR,SIZE_T,,2“HELLOC“2INTMAIN{PRINTF“HELLOTHISISOUREMBEDDEDWORLD\N“RETURN0}由此可見(jiàn),GCC確實(shí)進(jìn)行了預(yù)處理,它把“STDIOH”的內(nèi)容插入到HELLOI文件中。,(2)編譯階段接下來(lái)進(jìn)行的是編譯階段,在這個(gè)階段中,GCC首先要檢查代碼的規(guī)范性、是否有語(yǔ)法錯(cuò)誤等,以確定代碼的實(shí)際要做的工作,在檢查無(wú)誤后,GCC把代碼翻譯成匯編語(yǔ)言。用戶(hù)可以使用“S”選項(xiàng)來(lái)進(jìn)行查看,該選項(xiàng)只進(jìn)行編譯而不進(jìn)行匯編,生成匯編代碼。ROOTLOCALHOSTGCCGCC–SHELLOI–OHELLOS以下列出了HELLOS的內(nèi)容,可見(jiàn)GCC已經(jīng)將其轉(zhuǎn)化為匯編了,感興趣的讀者可以分析一下這一行簡(jiǎn)單的C語(yǔ)言小程序是如何用匯編代碼實(shí)現(xiàn)的。FILE“HELLOC“SECTIONRODATAALIGN4LC0STRING“HELLOTHISISOUREMBEDDEDWORLD“TEXTGLOBLMAINTYPEMAIN,FUNCTIONMAINPUSHL?PMOVLESP,?PSUBL8,ESPANDL16,ESPMOVL0,?XADDL15,?XSECTIONNOTEGNUSTACK,““,PROGBITS,(3)匯編階段匯編階段是把編譯階段生成的“S”文件轉(zhuǎn)成目標(biāo)文件,讀者在此可使用選項(xiàng)“C”就可看到匯編代碼已轉(zhuǎn)化為“O”的二進(jìn)制目標(biāo)代碼了。如下所示ROOTLOCALHOSTGCCGCC–CHELLOS–OHELLOO,GCC編譯器,(4)鏈接階段在成功編譯之后,就進(jìn)入了鏈接階段。在這里涉及到一個(gè)重要的概念函數(shù)庫(kù)。讀者可以重新查看這個(gè)小程序,在這個(gè)程序中并沒(méi)有定義“PRINTF”的函數(shù)實(shí)現(xiàn),且在預(yù)編譯中包含進(jìn)的“STDIOH”中也只有該函數(shù)的聲明,而沒(méi)有定義函數(shù)的實(shí)現(xiàn),那么,是在哪里實(shí)現(xiàn)“PRINTF”函數(shù)的呢最后的答案是系統(tǒng)把這些函數(shù)實(shí)現(xiàn)都被做到名為L(zhǎng)IBCSO6的庫(kù)文件中去了,在沒(méi)有特別指定時(shí),GCC會(huì)到系統(tǒng)默認(rèn)的搜索路徑“/USR/LIB”下進(jìn)行查找,也就是鏈接到LIBCSO6庫(kù)函數(shù)中去,這樣就能實(shí)現(xiàn)函數(shù)“PRINTF”了,而這也就是鏈接的作用。函數(shù)庫(kù)一般分為靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)兩種。靜態(tài)庫(kù)是指編譯鏈接時(shí),把庫(kù)文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運(yùn)行時(shí)也就不再需要庫(kù)文件了。其后綴名一般為“A”。動(dòng)態(tài)庫(kù)與之相反,在編譯鏈接時(shí)并沒(méi)有把庫(kù)文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時(shí)由運(yùn)行時(shí)鏈接文件加載庫(kù),這樣可以節(jié)省系統(tǒng)的開(kāi)銷(xiāo)。動(dòng)態(tài)庫(kù)一般后綴名為“SO”,如前面所述的LIBCSO6就是動(dòng)態(tài)庫(kù)。GCC在編譯時(shí)默認(rèn)使用動(dòng)態(tài)庫(kù)。完成了鏈接之后,GCC就可以生成可執(zhí)行文件,如下所示。ROOTLOCALHOSTGCCGCCHELLOO–OHELLO運(yùn)行該可執(zhí)行文件,出現(xiàn)正確的結(jié)果如下。ROOTLOCALHOSTGCC/HELLOHELLOTHISISOUREMBEDDEDWORLD,GCC編譯選項(xiàng),GCC編譯器,1UNIX下的C語(yǔ)言開(kāi)發(fā)環(huán)境,GCC遵循的文件類(lèi)型規(guī)定C為后綴的文件,C語(yǔ)言源代碼文件;A為后綴的文件,是由目標(biāo)文件構(gòu)成的檔案庫(kù)文件;C,CC或CXX為后綴的文件,是C源代碼文件;H為后綴的文件,是程序所包含的頭文件;I為后綴的文件,是已經(jīng)預(yù)處理過(guò)的C源代碼文件;II為后綴的文件,是已經(jīng)預(yù)處理過(guò)的C源代碼文件;M為后綴的文件,是OBJECTIVEC源代碼文件;O為后綴的文件,是編譯后的目標(biāo)文件;S為后綴的文件,是匯編語(yǔ)言源代碼文件;S為后綴的文件,是經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件。,18,頭文件,頭文件是用來(lái)提供常量的定義和系統(tǒng)和函數(shù)調(diào)用的聲明,這些頭文件通常放在/USR/INCLUDE和其子目錄中。根據(jù)不同的LINUX版本,頭文件可能放在/USR/INCLUDE/SYS和/USR/INCLUDE/LINUXINCLUDE,庫(kù)函數(shù),庫(kù)函數(shù)是一些預(yù)先編譯好的函數(shù)的集合,這些函數(shù)可以有很好的重用性。通常來(lái)講,它們包含有相關(guān)的函數(shù)集合來(lái)完成一項(xiàng)常用任務(wù)。典型的庫(kù)函數(shù)有屏幕處理函數(shù)(CURSES和NCURSES庫(kù))和數(shù)據(jù)庫(kù)訪問(wèn)函數(shù)(DBM庫(kù))。標(biāo)準(zhǔn)系統(tǒng)函數(shù)通常存放在/LIB和/USR/LIB中。C編譯器需要被告知搜索哪個(gè)庫(kù),否則缺省情況下只搜索標(biāo)準(zhǔn)庫(kù)。傳統(tǒng)靜態(tài)庫(kù)AEXAMPLESARE/USR/LIB/LIBCAAND/USR/X11/LIB/LIBX11AFORTHESTANDARDCLIBRARYANDTHEX11LIBRARY共享庫(kù)SOONATYPICALLINUXSYSTEM,THESHAREDVERSIONOFTHESTANDARDMATHLIBRARYIS/USR/LIB/LIBMSO,1GCC與GDB,15GDB調(diào)試和分析選項(xiàng)GDB基本命令FILE裝入想要調(diào)試的可執(zhí)行文件;KILL終止正在調(diào)試的程序;LIST列出產(chǎn)生執(zhí)行文件的源代碼的一部分;NEXT執(zhí)行一行源代碼但不進(jìn)入函數(shù)內(nèi)部;STEP執(zhí)行一行源代碼而且進(jìn)入函數(shù)內(nèi)部;RUN執(zhí)行當(dāng)前被調(diào)試的程序;QUIT終止GDB;WATCH使你能監(jiān)視一個(gè)變量的值而不管它何時(shí)被改變;BREAK在代碼里設(shè)置斷點(diǎn),這將使程序執(zhí)行到這里時(shí)被掛起;MAKE使你能不退出GDB就可以重新產(chǎn)生可執(zhí)行文件;SHELL使你能不離開(kāi)GDB就執(zhí)行UNIXSHELL命令,21,1GCC與GDB,GDB調(diào)試舉例,/GDBTESTC/INCLUDEINTSUMINTMINTMAININTARGC,CHARARGV{INTI,N0SUM50FORI1I50I{NI}PRINTF“THESUMOF150ISD\N”,N},INTSUMINTM{INTI,N0FORI1IMI{NI}PRINTF“THESUMOF1DISD\N”,M,N},例GCCWALLGGDBTESTCOGDBTEST,22,1GCC與GDB,1啟動(dòng)GDB開(kāi)始調(diào)試,例1GDBGDBTEST,例2GDBGDBFILEGDBTEST,23,1GCC與GDB,2在GDB中查看源代碼,例GDBLIST,LIST也可以縮寫(xiě)為L(zhǎng),24,1GCC與GDB,3在GDB中設(shè)置斷點(diǎn),例1GDBBREAK9,BREAK也可以縮寫(xiě)為B,注意在GDB中利用行號(hào)設(shè)置斷點(diǎn),是指代碼運(yùn)行到對(duì)應(yīng)行號(hào)之前暫停;GDB中可以設(shè)置多個(gè)斷點(diǎn)。,25,1GCC與GDB,3在GDB中設(shè)置斷點(diǎn),例2GDBBREAKSUM,設(shè)置函數(shù)斷點(diǎn),在函數(shù)體開(kāi)始處,例3GDBBREAK10IFI10,設(shè)置條件斷點(diǎn),26,1GCC與GDB,4開(kāi)看斷點(diǎn)情況,例GDBINFOBREAK,27,1GCC與GDB,5運(yùn)行代碼,例GDBRUN,RUN也可以縮寫(xiě)為R,28,1GCC與GDB,6查看變量,例GDBPRINTI,PRINT也可以縮寫(xiě)為P;I為變量名,“N”是當(dāng)前變量值的引用標(biāo)記,29,1GCC與GDB,7單步運(yùn)行,單步運(yùn)行可以使用命令“STEP”和“NEXT”,它們之間的區(qū)別在于若有函數(shù)調(diào)用的時(shí)候“STEP”會(huì)進(jìn)入函數(shù)體,而“NEXT”不會(huì)進(jìn)入該函數(shù);,8恢復(fù)程序運(yùn)行,使用命令“CONTINUE”可以恢復(fù)程序正常運(yùn)行,直到遇到下一個(gè)斷點(diǎn)或者到程序結(jié)束;,GDB中程序有“運(yùn)行”、“暫?!焙汀巴V埂比N狀態(tài)?!皶和!睜顟B(tài)時(shí),函數(shù)的地址、參數(shù)、局部變量都被壓入“棧”中,故可以查看函數(shù)的各種屬性;函數(shù)處于“停止”狀態(tài)時(shí),“?!睍?huì)自動(dòng)撤銷(xiāo),也就無(wú)法查看函數(shù)的信息了。,30,2MAKE工程管理器,21為什么要使用MAKE工作量問(wèn)題對(duì)于擁有多個(gè)(上百個(gè))源文件的軟件項(xiàng)目,只需編寫(xiě)一次編譯過(guò)程,而不需要在每次源文件修改后重復(fù)輸入眾多的文件名和編譯命令進(jìn)行編譯;效率問(wèn)題MAKE能夠根據(jù)文件的時(shí)間戳自動(dòng)發(fā)現(xiàn)更新過(guò)的源文件,并通過(guò)讀入MAKEFILE文件來(lái)對(duì)更新的源文件進(jìn)行編譯而對(duì)其它文件只進(jìn)行鏈接操作。,31,2MAKE命令,22MAKEFILE的格式MAKEFILE是MAKE讀入的唯一配置文件,MAKEFILE文件通常包含如下內(nèi)容需要由MAKE創(chuàng)建的目標(biāo)體TARGET,通常是目標(biāo)文件或可執(zhí)行文件;要?jiǎng)?chuàng)建的目標(biāo)體所依賴(lài)的文件DEPENDENCY_FILE;創(chuàng)建每個(gè)目標(biāo)體時(shí)需要運(yùn)行的命令COMMMAND。,MAKEFILE格式TARGETDEPENDENCY_FILECOMMAND,COMMAND之前必須有個(gè)“TAB”,32,4鏈接特殊函數(shù)庫(kù),/FILENAMEISTEMPC/INCLUDEINTMAININTARGC,CHARARGV{DOUBLEVALUEVALUELOGARGCPRINTF“VALUEF\N“,VALUE}用命令GCC–OTEMPTEMPC編譯時(shí)出錯(cuò)。修改命令GCC–OTEMPTEMPC–LM這里指明編譯時(shí)與數(shù)學(xué)庫(kù)LIBMA相鏈接,則可正確編譯。,假設(shè)有程序TEMPC如下,
      下載積分: 4 賞幣
      上傳時(shí)間:2024-01-06
      頁(yè)數(shù): 33
      14人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:C語(yǔ)言程序設(shè)計(jì),第8章面向?qū)ο蠹夹g(shù)與C,81C的起源和特點(diǎn)82簡(jiǎn)單的C程序83C程序的上機(jī)實(shí)現(xiàn)84C的輸入和輸出85設(shè)置函數(shù)參數(shù)的默認(rèn)值86內(nèi)聯(lián)函數(shù)87重載函數(shù)88變量的引用89面向?qū)ο蟮母拍詈退枷?10類(lèi)和對(duì)象811構(gòu)造函數(shù)812析構(gòu)函數(shù)813繼承與派生類(lèi),81C的起源和特點(diǎn),早期的程序是用機(jī)器語(yǔ)言或者匯編語(yǔ)言編寫(xiě)最早的高級(jí)語(yǔ)言是20世紀(jì)50年代中期出現(xiàn)的FORTRAN50年代后期的ALGOL語(yǔ)言提出了塊結(jié)構(gòu)的思想60年代的SIMULA67語(yǔ)言首次提出了對(duì)象的概念70年代的ADA語(yǔ)言是一種基于對(duì)象的語(yǔ)言,支持?jǐn)?shù)據(jù)抽象類(lèi)型,隨后面出現(xiàn)的SMALLTALK語(yǔ)言豐富了面向?qū)ο蟮母拍?,是最具有影響的面向?qū)ο蟮恼Z(yǔ)言之一1972年在DECPDP11計(jì)算機(jī)上實(shí)現(xiàn)了最初的C語(yǔ)言1980年AT表示鍵入兩個(gè)實(shí)數(shù),分別賦給變量X和Y,相當(dāng)于C語(yǔ)言中的輸入命令SCANF“DD”,,82簡(jiǎn)單的C程序,例83上例82還可以用自定義函數(shù)的方法來(lái)實(shí)現(xiàn),82簡(jiǎn)單的C程序,C程序的一些簡(jiǎn)單特點(diǎn)完整的C源程序文件由一個(gè)或多個(gè)文件組成,每個(gè)文件可以包含若干個(gè)函數(shù)。在完整的C程序中,可能會(huì)出現(xiàn)許多函數(shù),但程序中有且僅有一個(gè)主函數(shù)MAIN,程序的執(zhí)行總是從主函數(shù)MAIN開(kāi)始執(zhí)行的,至于其它函數(shù)則是通過(guò)函數(shù)的嵌套調(diào)用來(lái)進(jìn)行;2在C中實(shí)現(xiàn)注釋有兩種方法,一種方法是可以沿用C語(yǔ)言中的’/’和’/’進(jìn)行注釋?zhuān)话氵m用于有多行注釋信息的情況;另一種是使用符號(hào)//進(jìn)行注釋?zhuān)?/之后本行的所有字符都是注釋內(nèi)容。如果注釋信息只有一行文字,通常使用//注釋?zhuān)?輸入/輸出時(shí)C程序經(jīng)常使用的頭文件IOSTREAMH頭文件,因?yàn)樵谶@個(gè)頭文件中定義了標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出操作,而C中經(jīng)常用到STDIOH這個(gè)頭文件;4C中主函數(shù)MAIN函數(shù)體也是用一對(duì)花括號(hào)’{‘和’}’括起來(lái),體內(nèi)每條語(yǔ)句仍然以分號(hào)結(jié)束。如果主函數(shù)MAIN沒(méi)有明確的返回值,在C中MAIN的返回值類(lèi)型就應(yīng)該定義為VOID類(lèi)型,而在C中MAIN的返回值類(lèi)型可以是VOID型的,但更多情況下默認(rèn)不寫(xiě)(其實(shí)是INT型的)。,83C程序的上機(jī)實(shí)現(xiàn),完整的C上機(jī)過(guò)程包括編輯、編譯和連接、運(yùn)行這三個(gè)環(huán)節(jié)若是在MSDOS方式下,可以使用TURBOC或者BORLANDC如果是在WINDOWS9X/2000/XP/2003平臺(tái)下,可以使用MICROSOFTVISUALC,84C的輸入和輸出,對(duì)于輸入/輸出,C除了保留C語(yǔ)言中的SCANF和PRINTF這兩個(gè)函數(shù)外,還增加了標(biāo)準(zhǔn)輸入流CIN和標(biāo)準(zhǔn)輸出流COUT,后者這兩個(gè)標(biāo)準(zhǔn)流在IOSTREAMH頭文件中有定義,841用COUT輸出842用CIN輸入,841用COUT輸出,在C中,用COUT和插入運(yùn)算符配合使用共同完成數(shù)據(jù)的鍵盤(pán)輸入,使用時(shí)可以不用指定數(shù)據(jù)類(lèi)型。FLOATXINTNCINXN作用從鍵盤(pán)上分別輸入一個(gè)實(shí)數(shù)和一個(gè)整數(shù),然后把實(shí)數(shù)賦給變量X,把整數(shù)賦給變量N。鍵入時(shí)注意兩個(gè)數(shù)之間要用空格分隔,輸入格式如下325↙上述的輸入語(yǔ)句相當(dāng)于C中的SCANF“FD”,,842用CIN輸入,例84用CIN和COUT實(shí)現(xiàn)的輸入和輸出舉例,85設(shè)置函數(shù)參數(shù)的默認(rèn)值,在進(jìn)行函數(shù)定義(或函數(shù)說(shuō)明)時(shí),C允許給一個(gè)或多個(gè)形參指定默認(rèn)值(亦稱(chēng)缺省值),使得函數(shù)調(diào)用更加方便,程序設(shè)計(jì)更加靈活。下面來(lái)看一個(gè)使用了參數(shù)默認(rèn)值的示例INTADD3INTINTA,INTB5,INTC8這是對(duì)用戶(hù)自定義函數(shù)ADD3INT進(jìn)行說(shuō)明的語(yǔ)句,本例中使用了三個(gè)形參A、B和C。在函數(shù)說(shuō)明時(shí)對(duì)后兩個(gè)參數(shù)B和C分別設(shè)置了默認(rèn)值,其中參數(shù)B的默認(rèn)值為5,參數(shù)C的默認(rèn)值為8。,85設(shè)置函數(shù)參數(shù)的默認(rèn)值,在設(shè)置函數(shù)默認(rèn)值時(shí)應(yīng)注意應(yīng)該從函數(shù)形參表中最右邊的那個(gè)參數(shù)開(kāi)始設(shè)置默認(rèn)值,指定順序應(yīng)從右向左。在已指定了默認(rèn)值的參數(shù)的右邊不允許再出現(xiàn)尚未指定默認(rèn)值的參數(shù)。因此在設(shè)置函數(shù)默認(rèn)值時(shí),既可以為形參表中的所有參數(shù)指定默認(rèn)值,也可以為形參表中最右邊的幾個(gè)連續(xù)參數(shù)指定默認(rèn)值當(dāng)函數(shù)被調(diào)用時(shí),如果指定了具體的實(shí)參表,則調(diào)用時(shí)的實(shí)參值將取代原來(lái)參數(shù)的默認(rèn)值;如果沒(méi)有給定實(shí)參值,將沿用參數(shù)原來(lái)的默認(rèn)值,85設(shè)置函數(shù)參數(shù)的默認(rèn)值,在設(shè)置函數(shù)默認(rèn)值時(shí)應(yīng)注意指定函數(shù)參數(shù)默認(rèn)值的這種語(yǔ)法現(xiàn)象在程序設(shè)計(jì)時(shí)可有可無(wú)。當(dāng)需要對(duì)函數(shù)參數(shù)設(shè)置默認(rèn)值時(shí),假如該函數(shù)還有函數(shù)聲明時(shí),則默認(rèn)的參數(shù)值就應(yīng)該設(shè)置在函數(shù)聲明部分而不能設(shè)置在函數(shù)的定義部分;如果程序中沒(méi)有函數(shù)聲明,默認(rèn)的參數(shù)值將設(shè)置在函數(shù)定義部分在給函數(shù)參數(shù)設(shè)置默認(rèn)值時(shí),被指定的默認(rèn)值不僅可以是常數(shù),也可以是表達(dá)式。全局變量可以被指定為參數(shù)的默認(rèn)值,但局部變量不行,因?yàn)槟J(rèn)參數(shù)的函數(shù)調(diào)用是在編譯時(shí)確定的,而局部變量在編譯時(shí)無(wú)法確定,85設(shè)置函數(shù)參數(shù)的默認(rèn)值,例85分析下面程序的輸出結(jié)果,要求熟悉默認(rèn)參數(shù)的用法,第一次調(diào)用由于沒(méi)有指定實(shí)參表,三個(gè)參數(shù)都采用原來(lái)的默認(rèn)值(1、2、3);第二次調(diào)用只有一個(gè)實(shí)參,指定了第一個(gè)參數(shù)的實(shí)參值,其余兩個(gè)參數(shù)沿用默認(rèn)值,此時(shí)的實(shí)參值為(4、2、3);第三次調(diào)用指定了兩個(gè)實(shí)參,指定了前兩個(gè)參數(shù)的實(shí)參值,第三個(gè)參數(shù)沿用默認(rèn)值,此時(shí)的實(shí)參值為(4、5、3);第四次調(diào)用指定了三個(gè)實(shí)參,表示三個(gè)參數(shù)全部都用新的實(shí)參值(4、5、6),原來(lái)設(shè)置的參數(shù)默認(rèn)值無(wú)效。,85設(shè)置函數(shù)參數(shù)的默認(rèn)值,例86分析程序的運(yùn)行結(jié)果,了解全局變量充當(dāng)參數(shù)的默認(rèn)值,86內(nèi)聯(lián)函數(shù),在設(shè)計(jì)程序時(shí),合理地使用函數(shù),能做到“一次定義,多次使用”,實(shí)現(xiàn)了程序代碼和數(shù)據(jù)的共享,減少了程序的目標(biāo)代碼。但是,調(diào)用函數(shù)時(shí)卻要花費(fèi)一定的時(shí)間和內(nèi)存空間來(lái)保存調(diào)用的現(xiàn)場(chǎng),程序效率有所降低,特別是對(duì)于那些需要頻繁調(diào)用、但本身代碼并不大的函數(shù),效率尤為不高。為了解決這個(gè)問(wèn)題,C引入了內(nèi)聯(lián)函數(shù)。當(dāng)一個(gè)使用了內(nèi)聯(lián)函數(shù)的源程序被編譯時(shí),編譯系統(tǒng)會(huì)把程序中出現(xiàn)的調(diào)用內(nèi)聯(lián)函數(shù)的語(yǔ)句,直接用內(nèi)聯(lián)函數(shù)的函數(shù)體來(lái)替換,這樣處理雖然增加了最終的目標(biāo)代碼,但卻節(jié)省了調(diào)用過(guò)程中的時(shí)間和空間的開(kāi)銷(xiāo),另外由于內(nèi)聯(lián)函數(shù)的代碼往往比較小,這樣做對(duì)程序執(zhí)行的影響也較小,效率較高。對(duì)于代碼小而且訪問(wèn)頻繁的函數(shù),適宜使用內(nèi)聯(lián)函數(shù)。,86內(nèi)聯(lián)函數(shù),內(nèi)聯(lián)函數(shù)的定義方法在定義函數(shù)時(shí),要求在函數(shù)首部的最左邊,也就是函數(shù)返回值的類(lèi)型名前面,加上內(nèi)聯(lián)函數(shù)的關(guān)鍵字INLINE,其余部分與傳統(tǒng)的函數(shù)定義相同。例定義一個(gè)用于計(jì)算兩個(gè)數(shù)之和的內(nèi)聯(lián)函數(shù)INLINEINTSUM2INTINTM,INTN{RETURNMN},86內(nèi)聯(lián)函數(shù),例87計(jì)算自然數(shù)1到10中各個(gè)數(shù)的立方值,86內(nèi)聯(lián)函數(shù),使用內(nèi)聯(lián)函數(shù)的注意要點(diǎn)內(nèi)聯(lián)函數(shù)內(nèi)不允許出現(xiàn)循環(huán)語(yǔ)句和開(kāi)關(guān)語(yǔ)句,如果一個(gè)內(nèi)聯(lián)函數(shù)包含了這些語(yǔ)句,則按普通函數(shù)處理內(nèi)聯(lián)函數(shù)的函數(shù)體一般不宜過(guò)大,以1至5行為宜在以后的講述中我們還會(huì)學(xué)到類(lèi),在類(lèi)體內(nèi)定義的成員函數(shù)都是內(nèi)聯(lián)函數(shù),87重載函數(shù),重載函數(shù)的定義重載函數(shù)是指同一個(gè)函數(shù)名稱(chēng)對(duì)應(yīng)著多個(gè)不同的函數(shù)實(shí)現(xiàn)例定義重載函數(shù)ABS,用來(lái)計(jì)算3個(gè)不同類(lèi)型數(shù)據(jù)的絕對(duì)值INTABSINTLONGABSLONGDOUBLEABSDOUBLE重載函數(shù)在功能上比較接近,在定義時(shí)要有所區(qū)別。各重載函數(shù)之間的差別主要表現(xiàn)在函數(shù)返回值的類(lèi)型、函數(shù)參數(shù)的類(lèi)型、函數(shù)參數(shù)的個(gè)數(shù)、函數(shù)參數(shù)的順序等方面的不同,系統(tǒng)會(huì)根據(jù)這些不同來(lái)選擇相應(yīng)的函數(shù)。僅僅靠函數(shù)返回值類(lèi)型的不同來(lái)定義重載函數(shù)是不行的,因此在使用重載函數(shù)時(shí),在函數(shù)名字相同的前提下要將上述的那些區(qū)別明顯地表現(xiàn)出來(lái)。,87重載函數(shù),使用重載函數(shù)時(shí)編譯系統(tǒng)會(huì)根據(jù)如下原則進(jìn)行選擇重載函數(shù)至少要在參數(shù)類(lèi)型、參數(shù)個(gè)數(shù)、參數(shù)順序上要有所不同,僅僅在函數(shù)返回值類(lèi)型上的不同是不夠的例在下面的三個(gè)函數(shù)聲明中INTMYFUNINT,DOUBLE/第一個(gè)函數(shù)/INTMYFUNDOUBLE,INT/第二個(gè)函數(shù)/VOIDMYFUNINT,DOUBLE/第三個(gè)函數(shù)/第一個(gè)函數(shù)和第二個(gè)函數(shù)可以重載,因?yàn)槎咴趨?shù)順序上不同;第二個(gè)函數(shù)和第三個(gè)函數(shù)也可以重載,因?yàn)樗鼈兊膮?shù)順序和返回值類(lèi)型都不同。但第一個(gè)函數(shù)和第三個(gè)函數(shù)的形參表相同,僅僅在返回值類(lèi)型上不同,因此它們是不能重載的。,87重載函數(shù),使用重載函數(shù)時(shí)編譯系統(tǒng)會(huì)根據(jù)如下原則進(jìn)行選擇在使用重載函數(shù)時(shí),需要逐一比較實(shí)參的類(lèi)型與被調(diào)用的重載函數(shù)中的形參類(lèi)型,從而決定調(diào)用哪個(gè)重載函數(shù)判斷過(guò)程如下查找是否存在一個(gè)嚴(yán)格匹配的重載函數(shù),如果找到了就調(diào)用那個(gè)函數(shù),否則將進(jìn)入第2步;通過(guò)內(nèi)部數(shù)據(jù)轉(zhuǎn)換查找一個(gè)匹配的,如果找到了就調(diào)用那個(gè)函數(shù),否則進(jìn)入第3步;通過(guò)用戶(hù)所定義的強(qiáng)制類(lèi)型轉(zhuǎn)換來(lái)查找一個(gè)匹配的,如果找到了就調(diào)用那個(gè)函數(shù),否則提示函數(shù)調(diào)用時(shí)出錯(cuò)。,87重載函數(shù),例假設(shè)重載函數(shù)FUN有如下兩種形式VOIDMYFUNINTVOIDMYFUNDOUBLE對(duì)于下列條件的函數(shù)調(diào)用,函數(shù)FUN的匹配情況如下MYFUN1//匹配VOIDMYFUNINT,為嚴(yán)格匹配MYFUN15//匹配VOIDMYFUNDOUBLE,為嚴(yán)格匹配MYFUN‘M’//匹配VOIDMYFUNINT,這是內(nèi)部數(shù)據(jù)轉(zhuǎn)換后的匹配MYFUNDOUBLE5//匹配VOIDMYFUNDOUBLE,這是強(qiáng)制類(lèi)型的匹配使用重載函數(shù)時(shí)的注意事項(xiàng)不能用類(lèi)型定義語(yǔ)句TYPEDEF定義的類(lèi)型名來(lái)區(qū)分重載函數(shù)的參數(shù)類(lèi)型在定義重載函數(shù)時(shí),應(yīng)注意同名函數(shù)應(yīng)該具有相同的功能,如果讓重載函數(shù)去執(zhí)行不同的功能,這是不好的編程風(fēng)格,例88下列程序中定義了求幾個(gè)整數(shù)最大值的重載函數(shù),閱讀程序?qū)懗鲞\(yùn)行結(jié)果,88變量的引用,881引用的概念882引用作函數(shù)參數(shù),881引用的概念,引用(REFERENCE)的定義簡(jiǎn)單地說(shuō),引用就是某個(gè)變量(或?qū)ο螅┑膭e名建立引用的格式類(lèi)型名INT,在上面這個(gè)例子中,INTINTINT(注意這四種書(shū)寫(xiě)格式中空格的位置),881引用的概念,例89閱讀程序?qū)懗鲞\(yùn)行結(jié)果,881引用的概念,引用是C中的概念,C中沒(méi)有這一概念,引用與指針不同,不能把二者混淆起來(lái)指針是變量,有獨(dú)立的內(nèi)存單元,而引用不是變量,引用和與它捆綁在一起的變量(或?qū)ο螅┱加猛粌?nèi)存單元;指針可以被引用,而引用不能再次被引用;指針可以作為數(shù)組元素,而引用不能作為數(shù)組元素。指針作為數(shù)組元素時(shí)該數(shù)組稱(chēng)為指針數(shù)組;可以有空的指針,但不能有空引用,882引用作函數(shù)參數(shù),在定義函數(shù)時(shí)形參可以是引用引用充當(dāng)函數(shù)參數(shù)時(shí)傳遞的是地址,與指針變量作函數(shù)參數(shù)所起的作用相同一般地,引用作函數(shù)參數(shù)時(shí)程序的可讀性要好些,這是因?yàn)楫?dāng)引用作函數(shù)形參時(shí),調(diào)用函數(shù)時(shí)的實(shí)參可以用變量名(或者表達(dá)式),這與傳統(tǒng)意義上的傳值調(diào)用相似。與之相反,如果是指針變量用作函數(shù)參數(shù),則函數(shù)調(diào)用時(shí)實(shí)參必須是地址,882引用作函數(shù)參數(shù),例810定義一個(gè)函數(shù)SWAP來(lái)交換兩個(gè)INT變量的值,要求用指針變量作函數(shù)參數(shù),882引用作函數(shù)參數(shù),例811定義一個(gè)函數(shù)SWAP來(lái)交換兩個(gè)INT變量的值,要求用引用作函數(shù)參數(shù),89面向?qū)ο蟮母拍詈退枷?891面向?qū)ο蟮母拍?92面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較893面向?qū)ο笙到y(tǒng)的特性,891面向?qū)ο蟮母拍?一、對(duì)象的概念對(duì)象有兩方面的含義,即在客觀世界中的含義和在程序世界中的含義客觀世界中的任何一個(gè)事物都可以看成對(duì)象在程序世界中,對(duì)象是問(wèn)題空間中的個(gè)體或事物的抽象表示,是其屬性和相關(guān)操作的結(jié)合體。屬性表示了對(duì)象的性質(zhì),屬性值刻劃了對(duì)象的所有可能的狀態(tài);與屬性相關(guān)的操作表示了對(duì)象的行為,施加給對(duì)象的操作會(huì)引起對(duì)象狀態(tài)的變化對(duì)象是面向?qū)ο笙到y(tǒng)中最基本的概念,是問(wèn)題空間中對(duì)客觀事物的一種抽象表示,也是應(yīng)用系統(tǒng)的基本組成單位,891面向?qū)ο蟮母拍?二、類(lèi)的概念在面向?qū)ο笙到y(tǒng)中,類(lèi)是一種抽象機(jī)制,它是對(duì)一組具有共同屬性和行為的對(duì)象的一般描述類(lèi)與對(duì)象的關(guān)系是一個(gè)抽象與具體的關(guān)系。類(lèi)是把從具體的對(duì)象中抽取出來(lái)的共同屬性所形成的一般化定義,是對(duì)象的抽象,而對(duì)象則是類(lèi)的一個(gè)實(shí)例,891面向?qū)ο蟮母拍?三、繼承的概念繼承是一個(gè)對(duì)象可以獲取另一個(gè)對(duì)象特性的機(jī)制類(lèi)和類(lèi)之間的繼承關(guān)系,是客觀世界中遺傳關(guān)系的直接模擬,它表示了類(lèi)與類(lèi)之間的內(nèi)在聯(lián)系類(lèi)有父類(lèi)和子類(lèi)之分,父類(lèi)也叫基類(lèi),子類(lèi)又叫派生類(lèi)。子類(lèi)除了可以沿用父類(lèi)的某些特征外,它還具有本身獨(dú)特的屬性和操作正是因?yàn)橛辛死^承,低層的類(lèi)只需定義特定于它的特征,就可以共享高層的類(lèi)特征了,891面向?qū)ο蟮母拍?四、消息的概念消息是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求。消息的發(fā)送方是一個(gè)要求提供服務(wù)的對(duì)象,而消息的接收方是一個(gè)能夠提供服務(wù)的對(duì)象在面向?qū)ο蟮南到y(tǒng)中,各對(duì)象之間是相互獨(dú)立的,對(duì)象之間通過(guò)消息進(jìn)行聯(lián)系,891面向?qū)ο蟮母拍?面向?qū)ο蟪绦蛟O(shè)計(jì)(OBJECTORIENTEDPROGRAMMING,簡(jiǎn)稱(chēng)OOP)從問(wèn)題空間中客觀存在的事物出發(fā)構(gòu)造軟件系統(tǒng),用對(duì)象這個(gè)封裝的單元來(lái)表示問(wèn)題空間中的客觀實(shí)體,用消息傳遞來(lái)建立對(duì)象之間的聯(lián)系,把相同屬性和相同行為的對(duì)象歸為一類(lèi),通過(guò)在不同層次上運(yùn)用抽象的原則,就可以得到較一般的類(lèi)和較特殊的類(lèi),892面向?qū)ο蠓椒ㄅc結(jié)構(gòu)化方法的比較,在問(wèn)題抽象階段。結(jié)構(gòu)化方法以算法為核心,按照數(shù)據(jù)變換的過(guò)程進(jìn)行分解,重點(diǎn)是描述數(shù)據(jù)變換的功能模塊。面向?qū)ο蠓椒ㄊ且詳?shù)據(jù)為核心,強(qiáng)調(diào)問(wèn)題空間中的對(duì)象模型在設(shè)計(jì)階段。結(jié)構(gòu)化方法采用自頂向下、逐步求精的指導(dǎo)思想,采用模塊化編程,各個(gè)模塊有可能保持較強(qiáng)的獨(dú)立性,但往往獨(dú)立于數(shù)據(jù)結(jié)構(gòu)。面向?qū)ο蠓椒ㄊ菑膶?duì)象出發(fā),將對(duì)象的數(shù)據(jù)結(jié)構(gòu)和相應(yīng)的操作代碼集中在一個(gè)封裝的實(shí)體內(nèi),對(duì)象和對(duì)象之間通過(guò)消息進(jìn)行聯(lián)系結(jié)構(gòu)化方法的程序模型算法數(shù)據(jù)結(jié)構(gòu)面向?qū)ο蠓椒ǖ某绦蚰P蛯?duì)象消息,893面向?qū)ο笙到y(tǒng)的特性,面向?qū)ο笙到y(tǒng)的三個(gè)特征封裝性、繼承性和多態(tài)性封裝性(ENCAPSULATION)在程序設(shè)計(jì)中,封裝性指的是把數(shù)據(jù)以及對(duì)數(shù)據(jù)的操作集中在一起所構(gòu)成的一個(gè)實(shí)體。用戶(hù)不必知道對(duì)象行為的實(shí)現(xiàn)細(xì)節(jié),只需要根據(jù)對(duì)象提供的外部接口來(lái)訪問(wèn)對(duì)象。因此從用戶(hù)的角度看,這些對(duì)象的行為就象包含在一個(gè)“黑匣子”里,是隱蔽的和不可見(jiàn)的。封裝性是一種信息隱藏技術(shù),系統(tǒng)設(shè)計(jì)員會(huì)清楚地標(biāo)明提供的服務(wù)接口,服務(wù)的具體實(shí)現(xiàn)卻被屏蔽封裝著,用戶(hù)和應(yīng)用程序員只能使用對(duì)象提供的操作功能而不清楚內(nèi)部數(shù)據(jù)或操作代碼的實(shí)現(xiàn)細(xì)節(jié)。采用對(duì)象封裝機(jī)制的目的在于將對(duì)象的使用者和設(shè)計(jì)者分開(kāi)。,893面向?qū)ο笙到y(tǒng)的特性,繼承性(INHERITANCE)繼承所表達(dá)的是類(lèi)與類(lèi)之間的相互關(guān)系,使得某類(lèi)對(duì)象可以繼承另一類(lèi)對(duì)象的特征和功能,實(shí)現(xiàn)了信息共享和代碼重用,減少了冗余。在繼承層次結(jié)構(gòu)中,父類(lèi)稱(chēng)為基類(lèi),子類(lèi)稱(chēng)為派生類(lèi)。具體地說(shuō),如果類(lèi)B繼承了類(lèi)A,則類(lèi)B中的對(duì)象就具有了類(lèi)A對(duì)象的一切特征(指數(shù)據(jù)屬性)和功能(指操作),我們就稱(chēng)類(lèi)A為基類(lèi)(或父類(lèi)),稱(chēng)類(lèi)B為類(lèi)A的派生類(lèi)(或子類(lèi))。繼承機(jī)制帶來(lái)的最大優(yōu)勢(shì)在于軟件系統(tǒng)易于擴(kuò)充,降低了軟件開(kāi)發(fā)的費(fèi)用和復(fù)雜性,因此面向?qū)ο蠓椒ǚ浅_m合于開(kāi)發(fā)大型軟件系統(tǒng)。,893面向?qū)ο笙到y(tǒng)的特性,多態(tài)性(POLYMORPHISM)多態(tài)性描述的是同一個(gè)消息可以根據(jù)發(fā)送消息對(duì)象的不同而采取不同的行為方式。C支持的多態(tài)性有兩種,即編譯時(shí)的多態(tài)和運(yùn)行時(shí)的多態(tài)。編譯時(shí)的多態(tài)是通過(guò)重載來(lái)實(shí)現(xiàn)的,到底執(zhí)行哪個(gè)重載版本在編譯時(shí)就可以知道,所以是相對(duì)靜態(tài)的多態(tài);運(yùn)行時(shí)的多態(tài)是通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的,到底運(yùn)行哪個(gè)函數(shù)版本需要在運(yùn)行時(shí)找出發(fā)送消息的對(duì)象來(lái)確定,編譯器在編譯時(shí)采用動(dòng)態(tài)聯(lián)編的手段。,810類(lèi)和對(duì)象,8101類(lèi)的定義8102對(duì)象的定義8103對(duì)象的成員表示,8101類(lèi)的定義,類(lèi)的定義格式分為兩大部分,即說(shuō)明部分和實(shí)現(xiàn)部分。說(shuō)明部分用來(lái)說(shuō)明該類(lèi)中的多個(gè)成員(包括被說(shuō)明的數(shù)據(jù)成員和成員函數(shù)),而實(shí)現(xiàn)部分用來(lái)描述說(shuō)明部分中成員函數(shù)的實(shí)現(xiàn)(或定義)。一般地,類(lèi)的說(shuō)明部分放在類(lèi)體內(nèi),告訴使用者“做什么”,而類(lèi)的實(shí)現(xiàn)部分放在類(lèi)體外,告訴使用者“怎么做”。當(dāng)然也有些簡(jiǎn)單的類(lèi)將說(shuō)明部分和實(shí)現(xiàn)部分合并在一起,都放在類(lèi)體內(nèi)。,8101類(lèi)的定義,類(lèi)的一般定義格式CLASS類(lèi)名//說(shuō)明部分{PUBLIC公有的數(shù)據(jù)和成員函數(shù)PRIVATE私有的數(shù)據(jù)和成員函數(shù)}//實(shí)現(xiàn)部分各成員函數(shù)的實(shí)現(xiàn),8101類(lèi)的定義,定義一個(gè)類(lèi)時(shí)要注意以下幾點(diǎn)CLASS是定義類(lèi)的關(guān)鍵字,習(xí)慣上用字母T開(kāi)頭的標(biāo)識(shí)符表示類(lèi)名,以區(qū)別對(duì)象名和函數(shù)名。類(lèi)體中包含的數(shù)據(jù)成員和成員函數(shù)的說(shuō)明或定義,用一對(duì)花括號(hào){和}括起來(lái)從訪問(wèn)權(quán)限上看,類(lèi)的成員分為三大類(lèi)公有的(PUBLIC)私有的(PRIVATE)受保護(hù)的(PROTECTED)成員函數(shù)必須在類(lèi)體內(nèi)給出原型說(shuō)明,位置在類(lèi)體內(nèi)或者類(lèi)體外。放在類(lèi)體內(nèi)的函數(shù)被默認(rèn)為是內(nèi)聯(lián)函數(shù),而放在類(lèi)體外定義的函數(shù)是一般函數(shù)。如果要定義內(nèi)聯(lián)函數(shù),只需在函數(shù)首部的最前面加上關(guān)鍵字INLINE,8101類(lèi)的定義,在類(lèi)體外定義成員函數(shù)時(shí)的格式{}其中作用域運(yùn)算符是用來(lái)標(biāo)識(shí)某個(gè)成員函數(shù)是屬于哪個(gè)類(lèi)的。,8101類(lèi)的定義,例812給出一個(gè)關(guān)于日期類(lèi)的定義。類(lèi)TDATE的體內(nèi)一共說(shuō)明了6個(gè)成員,其中3個(gè)成員函數(shù)是公有的PUBLIC,3個(gè)數(shù)據(jù)成員是私有的PRIVATE。為了敘述方便,我們把類(lèi)TDATE的定義內(nèi)容全部寫(xiě)入一個(gè)名叫TDATEH的頭文件中,8101類(lèi)的定義,例813定義類(lèi)的時(shí)候,成員函數(shù)的定義部分除了可以寫(xiě)類(lèi)體外(如例812所示),也可以寫(xiě)在類(lèi)體內(nèi)。,8102對(duì)象的定義,對(duì)象的定義格式如下類(lèi)名對(duì)象名表類(lèi)名是待定義的對(duì)象所屬的類(lèi)的名字,這個(gè)類(lèi)要求事先已經(jīng)定義好了在定義對(duì)象時(shí),直接用類(lèi)名就可以了,無(wú)需在類(lèi)名前再加上關(guān)鍵字CLASS對(duì)象名表中可以是一個(gè)或多個(gè)對(duì)象名,多個(gè)對(duì)象名之間用逗號(hào)分隔,可以是一般簡(jiǎn)單的對(duì)象名、指向?qū)ο蟮闹羔樏蛞妹?,或者是?duì)象數(shù)組名例為前面已經(jīng)有所定義了的類(lèi)TDATE定義了幾個(gè)對(duì)象TDATEDATE1,DATE2,PDATE,,8103對(duì)象的成員表示,一般對(duì)象的成員表示如下對(duì)象名數(shù)據(jù)成員名對(duì)象名成員函數(shù)名參數(shù)表指向?qū)ο蟮闹羔樀某蓡T表示如下對(duì)象指針名數(shù)據(jù)成員名對(duì)象指針名成員函數(shù)名參數(shù)表或者對(duì)象指針名數(shù)據(jù)成員名對(duì)象指針名成員函數(shù)名參數(shù)表,8103對(duì)象的成員表示,例814分析程序的運(yùn)行結(jié)果,類(lèi)TDATE定義在頭文件TDATEH之中(見(jiàn)例812)。程序中定義了兩個(gè)對(duì)象D1和D2,通過(guò)成員函數(shù)SETDATE分別給兩個(gè)對(duì)象的各數(shù)據(jù)成員賦值,調(diào)用成員函數(shù)ISLEAPYEAR判斷D1和D2對(duì)應(yīng)的年是否為閏年,通過(guò)調(diào)用成員函數(shù)PRINT在屏幕顯示D1和D2的私有數(shù)據(jù)成員年、月、日的值。,811構(gòu)造函數(shù),構(gòu)造函數(shù)(CONSTRUCTOR)是一種特殊的成員函數(shù)與類(lèi)中的其它成員函數(shù)不一樣,構(gòu)造函數(shù)不需要用戶(hù)調(diào)用,它是在建立一個(gè)對(duì)象時(shí)由系統(tǒng)自動(dòng)執(zhí)行,于是完成了對(duì)新建對(duì)象的初始化構(gòu)造函數(shù)的名字與類(lèi)名相同,它可以帶一個(gè)參數(shù)或者多個(gè)參數(shù),也可以沒(méi)有參數(shù)。在定義和說(shuō)明構(gòu)造函數(shù)時(shí),不必指明函數(shù)的類(lèi)型,因?yàn)樗鼪](méi)有返回值,更不需要加VOID類(lèi)型說(shuō)明構(gòu)造函數(shù)的說(shuō)明部分一般放在類(lèi)體中,至于函數(shù)定義部分,可以放在類(lèi)體內(nèi),也可以放在類(lèi)體外,例815利用構(gòu)造函數(shù)完成對(duì)新創(chuàng)建的對(duì)象的初始化,例816定義構(gòu)造函數(shù)給兩個(gè)不同的對(duì)象賦予不同的初值,例817定義一個(gè)重載的構(gòu)造函數(shù),811構(gòu)造函數(shù),默認(rèn)的構(gòu)造函數(shù)是無(wú)參數(shù)的空函數(shù),定義格式如下類(lèi)名默認(rèn)構(gòu)造函數(shù)名{}默認(rèn)構(gòu)造函數(shù)名與類(lèi)同名,由于無(wú)參數(shù),因此默認(rèn)構(gòu)造函數(shù)不能重載當(dāng)定義一個(gè)沒(méi)有給定初始值的對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用默認(rèn)構(gòu)造函數(shù),對(duì)新創(chuàng)建的對(duì)象進(jìn)行初始化。當(dāng)該對(duì)象的存儲(chǔ)屬性是外部的(EXTERN)或靜態(tài)的(STATIC),它的所有數(shù)據(jù)成員將被初始化為0(或空)。如果對(duì)象是自動(dòng)的(AUTO或省略存儲(chǔ)屬性),則在使用前必須對(duì)該對(duì)象賦初值,假設(shè)在沒(méi)有為對(duì)象賦初值之前就已經(jīng)使用了數(shù)據(jù)成員,那將是無(wú)意義的,812析構(gòu)函數(shù),析構(gòu)函數(shù)(DESTRUCTOR)與構(gòu)造函數(shù)(CONSTRUCTOR)的作用相反。當(dāng)對(duì)象的生存期結(jié)束時(shí),系統(tǒng)將自動(dòng)調(diào)用析構(gòu)函數(shù)來(lái)釋放這個(gè)對(duì)象析構(gòu)函數(shù)也是一種特殊的成員函數(shù),其函數(shù)名也與類(lèi)名相同,為了與構(gòu)造函數(shù)名區(qū)分開(kāi),特意在類(lèi)名前加上符號(hào),以示析構(gòu)析構(gòu)函數(shù)沒(méi)有參數(shù),也不能指定函數(shù)返回值類(lèi)型(包括VOID類(lèi)型),因此析構(gòu)函數(shù)不能重載,而且在一個(gè)類(lèi)中只能定義一個(gè)析構(gòu)函數(shù)析構(gòu)函數(shù)的說(shuō)明一般放在類(lèi)體內(nèi),它的函數(shù)體可以寫(xiě)在類(lèi)體內(nèi),也可以寫(xiě)在類(lèi)體外,812析構(gòu)函數(shù),在以下兩種情況下,析構(gòu)函數(shù)將由系統(tǒng)自動(dòng)執(zhí)行當(dāng)一個(gè)對(duì)象的生存期結(jié)束時(shí),將自動(dòng)調(diào)用析構(gòu)函數(shù)來(lái)釋放該對(duì)象使用NEW運(yùn)算符創(chuàng)建的對(duì)象,在使用DELETE運(yùn)算符釋放該對(duì)象時(shí),系統(tǒng)將自動(dòng)調(diào)用析構(gòu)函數(shù)如果類(lèi)中沒(méi)有定義析構(gòu)函數(shù),系統(tǒng)將自動(dòng)生成一個(gè)默認(rèn)的析構(gòu)函數(shù)。默認(rèn)析構(gòu)函數(shù)定義格式如下類(lèi)名默認(rèn)析構(gòu)函數(shù)名{}其中,默認(rèn)析構(gòu)函數(shù)名與類(lèi)名相同,該析構(gòu)函數(shù)不進(jìn)行任何操作。,例818分析下面程序的運(yùn)行結(jié)果,說(shuō)明構(gòu)造函數(shù)和析構(gòu)函數(shù)是如何被調(diào)用的。,812析構(gòu)函數(shù),813繼承與派生類(lèi),8131繼承與派生類(lèi)的概念8132派生類(lèi)的定義格式8133公有派生類(lèi)8134私有派生類(lèi)8135保護(hù)成員,8131繼承與派生類(lèi)的概念,繼承是C的一個(gè)重要機(jī)制,它能自動(dòng)地為一個(gè)類(lèi)提供來(lái)自另一個(gè)類(lèi)的數(shù)據(jù)和操作,使得用戶(hù)可以在一個(gè)現(xiàn)有的類(lèi)的基礎(chǔ)上,很快地建立起一個(gè)新的類(lèi),而不必從零開(kāi)始重新設(shè)計(jì),實(shí)現(xiàn)了代碼的共享和重用。,在左邊這個(gè)樹(shù)型結(jié)構(gòu)圖中,最高層是抽象的,以下每一層都是上一層的具體化,從圖中可以看出低層具有高層的特征。例如一旦選擇了丹頂鶴,就不用再說(shuō)丹頂鶴有羽毛長(zhǎng)翅膀了,因?yàn)檫@些特征丹頂鶴已經(jīng)從鳥(niǎo)類(lèi)中繼承了。,8131繼承與派生類(lèi)的概念,在面向?qū)ο蟮姆椒ㄖ?,繼承是針對(duì)類(lèi)而言的。通過(guò)繼承的機(jī)制,能夠通過(guò)已有的類(lèi)型來(lái)定義新的類(lèi)型。這樣,所定義的新類(lèi)型在擁有原來(lái)類(lèi)型屬性的同時(shí),還擁有新的屬性,我們稱(chēng)已存在的被用來(lái)生成新類(lèi)型的類(lèi)為基類(lèi),而從基類(lèi)中派生出來(lái)的新類(lèi)稱(chēng)為派生類(lèi)。在C中,派生類(lèi)可以從一個(gè)基類(lèi)(或多個(gè)基類(lèi))中派生得到。從一個(gè)基類(lèi)中派生的繼承方式稱(chēng)為單繼承,從多個(gè)基類(lèi)中派生的繼承方式稱(chēng)為多繼承。簡(jiǎn)單地說(shuō),單繼承方式的派生類(lèi)只有一個(gè)基類(lèi),而多繼承方式的派生類(lèi)有多個(gè)基類(lèi)。,8131繼承與派生類(lèi)的概念,圖82所示的為單繼承,類(lèi)B和類(lèi)C是兩個(gè)不同的派生類(lèi),但它們都是從類(lèi)A中派生出來(lái)的。圖83所示的是多繼承,類(lèi)Z是由類(lèi)X和類(lèi)Y這兩個(gè)類(lèi)派生出來(lái)的。,單繼承和多繼承舉例,8132派生類(lèi)的定義格式,單繼承派生類(lèi)的定義格式CLASS派生類(lèi)名繼承方式基類(lèi)名{派生類(lèi)新增成員的定義};其中派生類(lèi)是按指定的繼承方式從基類(lèi)中派生出來(lái)的,具體的繼承方式有以下三種PUBLIC代表公有繼承方式PRIVATE代表私有繼承方式PROTECTED代表保護(hù)繼承方式默認(rèn)的繼承方式為PRIVATE,8132派生類(lèi)的定義格式,多繼承派生類(lèi)的定義格式CLASS派生類(lèi)名繼承方式1基類(lèi)名1,繼承方式2基類(lèi)名2,{派生類(lèi)新增成員的定義};與單繼承派生類(lèi)的定義相比較,多繼承派生類(lèi)在定義格式上的基類(lèi)名較多,這些基類(lèi)名彼此之間用逗號(hào)分隔,而且每個(gè)基類(lèi)名前都有一個(gè)該基類(lèi)的繼承方式說(shuō)明默認(rèn)的繼承方式為私有繼承方式(PRIVATE),8132派生類(lèi)的定義格式,例819定義一個(gè)學(xué)生類(lèi)TSTUDENT,其數(shù)據(jù)成員包括學(xué)號(hào)、姓名和性別,對(duì)它進(jìn)行的操作是顯示每個(gè)學(xué)生的基本情況,若想在這個(gè)類(lèi)的基礎(chǔ)上再添加年齡和年級(jí)信息。由于涉及到類(lèi)中成員的修改,我們當(dāng)然可以?huà)侀_(kāi)原來(lái)的類(lèi)不管而重新定義一個(gè)新的類(lèi),但是利用類(lèi)的繼承方法實(shí)現(xiàn)起來(lái)更方便。在原有類(lèi)TSTUDENT的基礎(chǔ)上派生出一個(gè)新類(lèi)TNEWSTUDENT。請(qǐng)看下面的例820,8132派生類(lèi)的定義格式,例820定義一個(gè)派生類(lèi)(在例819的基礎(chǔ)上),本例中TSTUDENT為基類(lèi)(在例819中定義),TNEWSTUDENT是基類(lèi)TSTUDENT的派生類(lèi),使用的繼承方式為PUBLIC派生類(lèi)的成員函數(shù)NEWLIST調(diào)用了基類(lèi)的公有成員函數(shù)LIST來(lái)顯示學(xué)生的學(xué)號(hào)、姓名和性別,8132派生類(lèi)的定義格式,派生類(lèi)中的成員包括原來(lái)基類(lèi)中的成員和自己新增的成員對(duì)于派生類(lèi)中新增的成員,如果在派生類(lèi)定義中被定義為PRIVATE,它們只能通過(guò)同一類(lèi)的成員函數(shù)進(jìn)行訪問(wèn);如果被定義為PUBLIC,則可以被外界所使用對(duì)于那些從基類(lèi)中繼承過(guò)來(lái)的數(shù)據(jù)成員,并不是簡(jiǎn)單地把基類(lèi)中的PRIVATE和PUBLIC成員直接作為派生類(lèi)的私有成員和公有成員,而要根據(jù)基類(lèi)成員的訪問(wèn)權(quán)限和派生類(lèi)定義中的繼承方式共同決定(見(jiàn)表81),8133公有
      下載積分: 4 賞幣
      上傳時(shí)間:2024-01-06
      頁(yè)數(shù): 80
      11人已閱讀
      ( 4 星級(jí))
    • 下載積分: 6 賞幣
      上傳時(shí)間:2024-03-15
      頁(yè)數(shù): 7
      6人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:基于基于C的溫室大棚的溫室大棚SCARECROW云平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)云平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)呂志剛魯可心李亮亮摘要當(dāng)前,農(nóng)業(yè)生產(chǎn)中化肥、農(nóng)藥等化工產(chǎn)品的廣泛應(yīng)用,造成了土壤的污染。為了達(dá)到經(jīng)濟(jì)與生態(tài)環(huán)境的協(xié)調(diào)發(fā)展,開(kāi)發(fā)了基于WEB技術(shù)的云平臺(tái)服務(wù)系統(tǒng),實(shí)現(xiàn)對(duì)溫室大棚內(nèi)相關(guān)參數(shù)的采集分析,并提供便捷人性化數(shù)據(jù)服務(wù)。工作人員可通過(guò)電腦、手機(jī)APP以及其它移動(dòng)設(shè)備,查看溫室大棚監(jiān)控?cái)?shù)據(jù)及數(shù)據(jù)歷史曲線(xiàn),便于及時(shí)處理和分析溫室環(huán)境是否處于最佳狀態(tài)。本系統(tǒng)使用VISUALSTUDIO2012下的開(kāi)發(fā)環(huán)境,開(kāi)發(fā)了基于BS模式的云端服務(wù)平臺(tái)。同時(shí),結(jié)合SQLSERVER2008R2數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的存儲(chǔ)及管理功能。系統(tǒng)開(kāi)發(fā)簡(jiǎn)潔、穩(wěn)定運(yùn)行,便于維修管理,已成功應(yīng)用在溫室大棚的生產(chǎn)一線(xiàn)。【關(guān)鍵詞】溫室大棚數(shù)據(jù)曲線(xiàn)C語(yǔ)言BSSQLSERVERMVC目前,中國(guó)的科技工業(yè)正處于30狀態(tài),農(nóng)業(yè)是10,20,30并存的現(xiàn)狀。農(nóng)業(yè)40時(shí)代是集物聯(lián)網(wǎng)、大數(shù)據(jù)、移動(dòng)互聯(lián)以及云計(jì)算的全新模式。在我國(guó),溫室大棚的應(yīng)用以及開(kāi)發(fā)工作已經(jīng)相對(duì)成熟。但隨著大環(huán)境的智能化,傳統(tǒng)意義的農(nóng)業(yè)生產(chǎn)和大棚已經(jīng)與時(shí)代步伐相差甚遠(yuǎn)。本系統(tǒng)是基于現(xiàn)代科技智能化、環(huán)保可循性的40大環(huán)境下,實(shí)現(xiàn)一套完整經(jīng)濟(jì)智能化“生態(tài)系統(tǒng)”。本文設(shè)計(jì)的云端服務(wù)平臺(tái)可實(shí)現(xiàn)對(duì)指定溫室環(huán)境空氣、土壤、水質(zhì)等一系列參數(shù)的采集及分析預(yù)估,以實(shí)現(xiàn)整個(gè)“生態(tài)系統(tǒng)”的監(jiān)測(cè)。同時(shí)實(shí)現(xiàn)數(shù)據(jù)云端SQL數(shù)據(jù)3WEB云平臺(tái)設(shè)計(jì)利用MICROSOFTVISUALSTUDIO2012開(kāi)發(fā)工具下的、AJAX和SQL查詢(xún)實(shí)現(xiàn)WEB頁(yè)面的環(huán)境信息顯示、折線(xiàn)圖分析和控制指令發(fā)送等。通過(guò)操作人員正確輸入IP地址及端口可在移動(dòng)設(shè)備上隨時(shí)查看環(huán)境運(yùn)行參數(shù)。同時(shí)可遠(yuǎn)程發(fā)送控制指令,以實(shí)現(xiàn)設(shè)備的自動(dòng)調(diào)控,從而保證農(nóng)作物良好適宜的生長(zhǎng)環(huán)境,從而達(dá)到增產(chǎn)增收、提高品質(zhì)的目的。如圖3所示。31環(huán)境監(jiān)控功能環(huán)境監(jiān)控窗口保證環(huán)境各個(gè)參數(shù)的在線(xiàn)實(shí)時(shí)顯示,同時(shí)查看各種控制繼電器當(dāng)前的工作狀態(tài),從而提醒工作人員是否有必要開(kāi)啟控制指令。通過(guò)正確鏈接SQL數(shù)據(jù)庫(kù),將當(dāng)前采集的環(huán)境參數(shù)以及控制繼電器的狀態(tài)實(shí)時(shí)同步至WEB服務(wù)器,便于工作人員的及時(shí)處理查看。其中最為關(guān)鍵的就是鏈接環(huán)境數(shù)據(jù)庫(kù),使用鏈接語(yǔ)句SQLCONNECTIONCONNEWSQLCONNECTION(“SERVER““PERFECTWANANPC\SQLEXPRESS;DATABASE農(nóng)業(yè)數(shù)據(jù)庫(kù);TRUSTED_CONNECTIONYES;CONNECTTIMEOUT90“)確保正確鏈接數(shù)據(jù)庫(kù),采用“WINDOWS”驗(yàn)證方式登錄。采用CONOPEN()語(yǔ)句打開(kāi)已經(jīng)鏈接的數(shù)據(jù)庫(kù)。利用語(yǔ)句SQLCOMMCOMNEWSQLCOMM(“空氣溫度,空氣濕度,土壤溫度,土壤濕度,土壤酸堿,二氧化碳,氧氣濃度,PM25濃度,光照強(qiáng)度,雨量信息,煙霧濃度,水渾濁度,水含氧量,水電導(dǎo)率,水酸堿度,噴灌狀態(tài),通風(fēng)狀態(tài),遮陽(yáng)狀態(tài)FROM農(nóng)業(yè)數(shù)據(jù)庫(kù)“,CON)
      下載積分: 3 賞幣
      上傳時(shí)間:2024-05-22
      頁(yè)數(shù): 6
      13人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:C語(yǔ)言實(shí)訓(xùn)報(bào)告語(yǔ)言實(shí)訓(xùn)報(bào)告做完這個(gè)課程設(shè)計(jì),我們的自信一下子提高了;盡管對(duì)于有些人這種程序會(huì)很簡(jiǎn)單,可對(duì)我們C語(yǔ)言初學(xué)者來(lái)說(shuō),已經(jīng)很不容易了。這次體驗(yàn)為以后的學(xué)習(xí)計(jì)算機(jī)的我們?cè)鰪?qiáng)了信心。享受勞動(dòng)成果的滋味實(shí)在很美妙啊雖然對(duì)著電腦做程序,有點(diǎn)累有點(diǎn)熱,可是當(dāng)看到勞動(dòng)成果時(shí),真是別有一番滋味在心頭啊世上無(wú)難事,只怕有心人,的確如此。做完這個(gè)程序最大的收獲就是感受到了集體的力量,當(dāng)然個(gè)人的智慧也是很重要的哦忙碌了一個(gè)多星期,在大家的共同努力下,我們總算將此程序設(shè)計(jì)出來(lái)。盡管不是自己獨(dú)立完成,但仍然很高興,因?yàn)樵谠O(shè)計(jì)的過(guò)程中,讓我了解到要設(shè)計(jì)一個(gè)程序,查找資料是至關(guān)重要的,在他人的基礎(chǔ)上,再根據(jù)自己所學(xué)進(jìn)行修改與調(diào)試,最后設(shè)計(jì)出自己想要的程序,這過(guò)程艱辛,但只要你持之以恒,成功指日可待。另外平時(shí)扎實(shí)的基礎(chǔ)也很關(guān)鍵,因?yàn)槿绻闫綍r(shí)學(xué)得就不怎么樣,那么你面對(duì)這么一個(gè)比較有難度的程序,你可能會(huì)望而卻步,看他人的程序都是個(gè)難點(diǎn),更別說(shuō)讓你自己去設(shè)計(jì)。為了解決此。類(lèi)問(wèn)題,最好就是多向同學(xué),老師請(qǐng)教,不要怕難為情。C語(yǔ)言課程設(shè)計(jì)和現(xiàn)代計(jì)算機(jī)技術(shù)的實(shí)際應(yīng)用相結(jié)合,是我們?cè)诒倦A段學(xué)完理論課程之后對(duì)自己該方面的能力的一次很好的檢驗(yàn),從開(kāi)始的算法思路到運(yùn)行調(diào)試后的美觀的圖形界面以及另人興奮的可用程序,都是一個(gè)很好的學(xué)習(xí)和鍛煉的過(guò)程。使我們鞏固了原有的理論知識(shí),培養(yǎng)了我們靈活運(yùn)用和組合集成所學(xué)過(guò)知識(shí)及技能來(lái)分析、解決實(shí)際問(wèn)題的能力。使我們體會(huì)到自身知識(shí)和能力能在實(shí)際中的應(yīng)用和發(fā)揮。不但可以激發(fā)創(chuàng)新意識(shí),還可以開(kāi)發(fā)創(chuàng)造能力、培養(yǎng)溝通能力。這次實(shí)習(xí)時(shí)間雖然僅有一個(gè)星期,但確實(shí)使我受益非淺。通過(guò)實(shí)習(xí)我豐富了計(jì)算機(jī)操作經(jīng)驗(yàn),更加深了對(duì)C語(yǔ)言的了解,熟悉了其環(huán)境,更增強(qiáng)了對(duì)TURBOC的使用技巧。二十一世紀(jì)是計(jì)算機(jī)的世紀(jì),是一個(gè)全新的世紀(jì),計(jì)算機(jī)正逐步入侵我們的生活。剛開(kāi)始接觸計(jì)算機(jī)的時(shí)候感覺(jué)很新奇,那時(shí)覺(jué)得計(jì)算機(jī)很神秘,于是就產(chǎn)生了以后一定要熟練掌控計(jì)算機(jī)的念頭。大學(xué)的教育模式和中學(xué)有很大不同,從平常的課程安排和教學(xué)就可以知道,但是獨(dú)立完成課程設(shè)計(jì)和寫(xiě)論文這種任務(wù)對(duì)我們來(lái)說(shuō)無(wú)疑是一個(gè)很大的挑戰(zhàn)總之,這次設(shè)計(jì)程序讓我受益良多,我會(huì)好好珍惜像這種難得的機(jī)會(huì)。
      下載積分: 3 賞幣
      上傳時(shí)間:2024-03-16
      頁(yè)數(shù): 2
      8人已閱讀
      ( 4 星級(jí))
    • 下載積分: 3 賞幣
      上傳時(shí)間:2024-05-22
      頁(yè)數(shù): 5
      22人已閱讀
      ( 4 星級(jí))
    • 下載積分: 5 賞幣
      上傳時(shí)間:2024-03-15
      頁(yè)數(shù): 5
      18人已閱讀
      ( 4 星級(jí))
    • 下載積分: 8 賞幣
      上傳時(shí)間:2024-03-15
      頁(yè)數(shù): 32
      12人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:1、計(jì)算N的階乘N,N的取值在110之間。分別使用WHILE、DOWHILE和F語(yǔ)句實(shí)現(xiàn)。(三個(gè)程序)給循環(huán)變量賦初值循環(huán)條件循環(huán)體循環(huán)變量的增值2、輸入一行字符,分別統(tǒng)計(jì)輸入了多少個(gè)字母、數(shù)字、空格和其他字符。3、假設(shè)函數(shù)FX3X22X1,試?yán)肍循環(huán)語(yǔ)句分別求出1AMAXAMAXX;IF②AMINX;SCANF“F“X;PRINTF“NAMAXFNAMINFN“AMAXAMIN;7、使用循環(huán)語(yǔ)句輸出以下圖形
      下載積分: 5 賞幣
      上傳時(shí)間:2024-05-21
      頁(yè)數(shù): 15
      22人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:鄭州輕工業(yè)學(xué)院鄭州輕工業(yè)學(xué)院網(wǎng)絡(luò)高級(jí)編程實(shí)訓(xùn)報(bào)告實(shí)訓(xùn)名稱(chēng)基于TCP協(xié)議的網(wǎng)絡(luò)聊天程序姓名學(xué)號(hào)班級(jí)指導(dǎo)教師實(shí)訓(xùn)地點(diǎn)日期客戶(hù)端服務(wù)器端13程序基本功能描述如下1當(dāng)服務(wù)器開(kāi)啟服務(wù)后允許任何一個(gè)玩家通過(guò)客戶(hù)端登陸服務(wù)器。2每當(dāng)有玩家登錄或退出時(shí)每一個(gè)在線(xiàn)的玩家都會(huì)刷新玩家列表。3當(dāng)玩家登陸成功后可以通過(guò)服務(wù)器端與任何一個(gè)在線(xiàn)的玩家聊天14需求分析網(wǎng)絡(luò)聊天程序的系統(tǒng)結(jié)構(gòu)圖如下所示。用戶(hù)接口定義數(shù)據(jù)字典如下1用戶(hù)USER在網(wǎng)絡(luò)聊天程序中用戶(hù)是已登陸的玩家。用戶(hù)具有玩家的用戶(hù)名、客戶(hù)端與服務(wù)器之間建立的TC連接等屬性。在程序中用戶(hù)負(fù)責(zé)向服務(wù)器發(fā)送和接收數(shù)據(jù)。2用戶(hù)集合USERLIST在網(wǎng)絡(luò)聊天程序中用戶(hù)集合是所有已經(jīng)登陸服務(wù)器的玩家的列表。用戶(hù)集合包含所有已登陸的玩家的用戶(hù)名和TCP連接等信息。在程序中用戶(hù)集合負(fù)責(zé)添加、刪除用戶(hù)以及向客戶(hù)端發(fā)送和接收數(shù)據(jù)。1515設(shè)計(jì)說(shuō)明設(shè)計(jì)說(shuō)明151151界面設(shè)計(jì)界面設(shè)計(jì)服務(wù)器端服務(wù)器端玩家用戶(hù)用戶(hù)集合管理員通信接口用戶(hù)接口
      下載積分: 8 賞幣
      上傳時(shí)間:2024-03-14
      頁(yè)數(shù): 37
      15人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:題目描述題目標(biāo)題字符串比對(duì)題目描述有字符串A長(zhǎng)度100,B長(zhǎng)度10,計(jì)算B串在A串中出現(xiàn)的次數(shù)。解題思路1、用GETS語(yǔ)句從鍵盤(pán)輸入兩個(gè)字符串賦予A,B字符數(shù)組;2、建立兩層嵌套循環(huán),外循環(huán)至A串結(jié)束標(biāo)志為止,內(nèi)循環(huán)至B串結(jié)束標(biāo)志為止;3、內(nèi)循環(huán)中比對(duì)B串與A串的數(shù)據(jù),滿(mǎn)足條件時(shí)計(jì)數(shù),否則BREAK;4、所有循環(huán)結(jié)束后輸出計(jì)數(shù)值。輸入描述輸入為兩個(gè)字符串,第一個(gè)字符串長(zhǎng)度小于100,第二個(gè)字符串長(zhǎng)度小于10;輸出描述描述輸出為一個(gè)正整數(shù);樣式輸入輸入描述輸入為兩個(gè)正整數(shù),第一個(gè)100,第二個(gè)9;輸出描述描述輸出為一個(gè)正整數(shù);樣式輸入1003樣式輸出91題目標(biāo)題整數(shù)各位取奇數(shù)(卜勝賢)
      下載積分: 6 賞幣
      上傳時(shí)間:2024-03-17
      頁(yè)數(shù): 18
      20人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:通信專(zhuān)業(yè)課程設(shè)計(jì)二課程設(shè)計(jì)(論計(jì)(論文)文)設(shè)計(jì)設(shè)計(jì)論文論文題目題目C語(yǔ)言設(shè)計(jì)班級(jí)檔案管理語(yǔ)言設(shè)計(jì)班級(jí)檔案管理姓名___________________學(xué)號(hào)______________班級(jí)____________學(xué)院____電子信息工程學(xué)院電子信息工程學(xué)院_指導(dǎo)教師指導(dǎo)教師____________________2011年1月14日C語(yǔ)言設(shè)計(jì)班級(jí)檔案管理I目錄摘要II第1章緒論1第2章系統(tǒng)總體框架與功能分析221總體框架422功能分析4第3章模塊設(shè)計(jì)與分析4第4章類(lèi)的設(shè)計(jì)與分析441STUDENT類(lèi)圖441STUDENT類(lèi)說(shuō)明表4第5章功能測(cè)試4第6章總結(jié)4參考文獻(xiàn)14附錄15
      下載積分: 7 賞幣
      上傳時(shí)間:2024-05-21
      頁(yè)數(shù): 27
      10人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:實(shí)驗(yàn)一實(shí)驗(yàn)一一、實(shí)驗(yàn)名稱(chēng)一、實(shí)驗(yàn)名稱(chēng)替代密碼和置換密碼的實(shí)現(xiàn)二、實(shí)驗(yàn)?zāi)康亩?、?shí)驗(yàn)?zāi)康耐ㄟ^(guò)編程實(shí)現(xiàn)替代密碼算法和置換密碼算法,加深對(duì)古典密碼體系的了解,為以后深入學(xué)習(xí)密碼學(xué)奠定基礎(chǔ)。三、實(shí)驗(yàn)內(nèi)容三、實(shí)驗(yàn)內(nèi)容A替代密碼1、實(shí)驗(yàn)原理使用替代法進(jìn)行加密,將明文中的字符用其他字符替代后形成密文。最早的替代密碼是由JULIUSCAESAR發(fā)明的CAESAR(愷撒)密碼,又叫循環(huán)移位密碼。它的加密過(guò)程可表示為EMMKMODN其中,M為明文字母在字母表中的位置數(shù);N為字母表中的字母?jìng)€(gè)數(shù);K為密鑰;EM為密文字母在字母表中對(duì)應(yīng)的位置數(shù)。解密算法是MDL(LK)MOD26;2、算法設(shè)計(jì)使用兩個(gè)函數(shù)分別進(jìn)行加密和解密的過(guò)程,在主程序中通過(guò)選擇加密還是解密來(lái)調(diào)用不同函數(shù)進(jìn)行替代密碼的加密和解密過(guò)程實(shí)現(xiàn);3、函數(shù)接口加密INTENCRYPTPRINTF“輸入明文N“SCANF“S“AFI0AI0IBIAI64PRINTF“輸入一位密鑰N“SCANF“D“PRINTF“N“FI0BI0IMIBIK64PRINTF“S“RETURN0解密INTDECODEPRINTF“輸入密文N“5、測(cè)試結(jié)果截圖加密解密B1、實(shí)驗(yàn)原理
      下載積分: 6 賞幣
      上傳時(shí)間:2024-03-16
      頁(yè)數(shù): 13
      16人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:學(xué)生課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目數(shù)獨(dú)字謎游戲數(shù)獨(dú)字謎游戲?qū)I(yè)名稱(chēng)稱(chēng)軟件工程軟件工程2013年6月21日一、課程設(shè)計(jì)內(nèi)容一、課程設(shè)計(jì)內(nèi)容數(shù)獨(dú)字謎游戲數(shù)獨(dú)字謎游戲是在一個(gè)數(shù)獨(dú)字謎游戲數(shù)獨(dú)字謎游戲是在一個(gè)9X9的正方形內(nèi),給出一定的數(shù)的正方形內(nèi),給出一定的數(shù)字,讓玩家在剩余的空格之內(nèi)填寫(xiě)數(shù)字,最終使每一行,每一列,每一個(gè)字,讓玩家在剩余的空格之內(nèi)填寫(xiě)數(shù)字,最終使每一行,每一列,每一個(gè)3X3的小正方形都只有的小正方形都只有19,并且不重復(fù),這樣玩家就算通關(guān)的一款游戲。,并且不重復(fù),這樣玩家就算通關(guān)的一款游戲。二、二、技術(shù)路線(xiàn)技術(shù)路線(xiàn)33主函數(shù)主函數(shù)INTINTMAINMAIN()()VOIDVOIDMAINMAINPLAYSOUND“KANONGWAV“NULLSND_ASYNC|SND_LOOPPLAYSOUND“KANONGWAV“NULLSND_ASYNC|SND_LOOPA910“493761528“A910“493761528““582943167““582943167““716528349““716528349““139674852““139674852““658219734““658219734““247835691““247835691““975382416““975382416““821456973““821456973““364197285““364197285“INTINTB81C81Q0P0B81C81Q0P0INTINTKXKXDODOSETTEXTCOL14SETTEXTCOL14COUT0N“0N“SETTEXTCOL10SETTEXTCOL10COUTKCINKSWITCHKSWITCHKINTINTIJMNGSIJMNGSCASECASE11SRINTTIME0SRINTTIME0FGS0GS30GSFGS0GS30GS隨機(jī)在已經(jīng)布滿(mǎn)的隨機(jī)在已經(jīng)布滿(mǎn)的9X99X9宮格里,運(yùn)用隨機(jī)數(shù),并且宮格里,運(yùn)用隨機(jī)數(shù),并且以系統(tǒng)時(shí)間為參數(shù),隨機(jī)產(chǎn)生空白字符以系統(tǒng)時(shí)間為參數(shù),隨機(jī)產(chǎn)生空白字符低難度的數(shù)獨(dú),每次產(chǎn)生的空低難度的數(shù)獨(dú),每次產(chǎn)生的空白字符為白字符為2222個(gè)左右,個(gè)左右,MINT10RR_MAX10MINT10RR_MAX10NINT10RR_MAX10NINT10RR_MAX10AMNAMNBQMBQM將隨機(jī)產(chǎn)生的空白字符的坐標(biāo)分別存在將隨機(jī)產(chǎn)生的空白字符的坐標(biāo)分別存在BCBC兩個(gè)數(shù)兩個(gè)數(shù)組中組中CPNCPNQQPPB3010C3010B3010C3010DODO
      下載積分: 6 賞幣
      上傳時(shí)間:2024-03-15
      頁(yè)數(shù): 11
      22人已閱讀
      ( 4 星級(jí))
    • 簡(jiǎn)介:第3章簡(jiǎn)單的C程序設(shè)計(jì),哈爾濱工業(yè)大學(xué)計(jì)算機(jī)學(xué)院蘇小紅SXHHITEDUCN,C語(yǔ)言大學(xué)實(shí)用教程,內(nèi)容提要,字符輸入輸出函數(shù)格式輸入輸出函數(shù),C語(yǔ)言中的語(yǔ)句,變量聲明語(yǔ)句INTX,Y表達(dá)式語(yǔ)句III1空語(yǔ)句復(fù)合語(yǔ)句{TXXYYT}控制語(yǔ)句,順序結(jié)構(gòu)程序的基本操作,如何在程序中給變量賦值賦值表達(dá)式語(yǔ)句賦值表達(dá)式;TOTALMPOW1R,N如何進(jìn)行數(shù)據(jù)的輸入輸出輸入從標(biāo)準(zhǔn)輸入設(shè)備上輸入數(shù)據(jù)到計(jì)算機(jī)內(nèi)存輸出將計(jì)算機(jī)內(nèi)存中的數(shù)據(jù)送到標(biāo)準(zhǔn)輸出設(shè)備C語(yǔ)言中輸入輸出操作通過(guò)調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)來(lái)實(shí)現(xiàn)INCLUDE“STDIOH“在當(dāng)前目錄和TC指定的目錄中找該文件INCLUDE在由TC指定的文件目錄中找該文件,復(fù)合語(yǔ)句,在什么情況下使用復(fù)合語(yǔ)句條件語(yǔ)句和循環(huán)語(yǔ)句在語(yǔ)法上只允許帶一條語(yǔ)句當(dāng)分支和循環(huán)中需要進(jìn)行多項(xiàng)操作時(shí),{TXXYYT},被當(dāng)作一條語(yǔ)句來(lái)處理,,例31,MAIN{INTA0{INTA1PRINTF“INAD\N“,A}PRINTF“OUTAD\N“,A},INA1OUTA0,空語(yǔ)句,空語(yǔ)句有什么作用什么也不做,只表示語(yǔ)句的存在自頂向下程序設(shè)計(jì)時(shí)用在那些未完成的模塊中延時(shí)用的空循環(huán),MAIN{DATAINITIALZEDATAPROCESSDATAOUTPUT},DATAINITIALZE{},字符輸入輸出函數(shù),字符輸出函數(shù)PUTCHARCH輸出一個(gè)字符CH字符輸入函數(shù)GETCHAR無(wú)參數(shù)函數(shù)值為從輸入設(shè)備接收的字符,INCLUDEMAIN{CHARCHPRINTF“PRESSAKEYANDTHENPRESSENTER“CHGETCHARPRINTF“YOUPRESSED“PUTCHARCHPUTCHAR\N},運(yùn)行程序,PRESSAKEYANDTHENPRESSENTER,311,,,,,,,,A↙,YOUPRESSED,A,例32,該語(yǔ)句的作用是什么,格式輸出函數(shù),格式輸出函數(shù)PRINTF格式控制字符串,輸出項(xiàng)表列輸出若干個(gè)任意類(lèi)型的數(shù)據(jù)PRINTF“ADBF“,A,B,函數(shù)名,輸出表列,普通字符,,,,輸出常用輸出函數(shù)PRINTF將信息送到標(biāo)準(zhǔn)輸出(一般送到屏幕或特定窗口)PRINTF格式描述串,其他參數(shù)函數(shù)調(diào)用形式函數(shù)名,括號(hào),函數(shù)參數(shù),多個(gè)參數(shù)用逗號(hào)分隔,語(yǔ)句程序基本單位,以分號(hào)為結(jié)束符PRINTF“GOODMORNING\N“一個(gè)完成輸出的語(yǔ)句,PRINTF的功能PRINTF格式描述串,其他參數(shù)第一個(gè)參數(shù)應(yīng)是字符串,可以有其他參數(shù)。如果“格式描述串”里沒(méi)有,也沒(méi)有其他參數(shù),PRINTF輸出格式描述串。,PRINTF“WELCOME\NTO\NBEIJING\N“輸出三行字符WELCOMETOBEIJING,轉(zhuǎn)換描述(描述數(shù)據(jù)的輸出轉(zhuǎn)換方式)格式串中開(kāi)始的段意義特殊(“轉(zhuǎn)換描述”)每個(gè)轉(zhuǎn)換描述說(shuō)明一參數(shù)的輸出形式(轉(zhuǎn)換方式)。特別注意()轉(zhuǎn)換描述和“其他參數(shù)”個(gè)數(shù)一致。轉(zhuǎn)換描述和對(duì)應(yīng)參數(shù)的類(lèi)型必須一致。,輸出整數(shù)PRINTF”TESTDDD\N“,2,3,5,輸出長(zhǎng)整數(shù)PRINTF”TESTLDD“,3L,5,D以帶符號(hào)十進(jìn)制整數(shù)輸出O以八進(jìn)制無(wú)符號(hào)整數(shù)輸出(無(wú)前導(dǎo)0)X以十六進(jìn)制無(wú)符號(hào)整數(shù)輸出(無(wú)前導(dǎo)0X)U以十進(jìn)制無(wú)符號(hào)整數(shù)輸出C以字符形式輸出單個(gè)字符S輸出一個(gè)字符串F以小數(shù)形式輸出浮點(diǎn)數(shù)(6位小數(shù))E以標(biāo)準(zhǔn)指數(shù)形式輸出(6位小數(shù))G選用F,E中輸出寬度較小的一種格式,PRINTF格式字符,L長(zhǎng)整型整數(shù),加在D、O、X、U前LLONGDOUBLE型數(shù),加在F、E、G前M表示數(shù)據(jù)占用的最小寬度數(shù)據(jù)寬度大于M,按實(shí)際寬度輸出數(shù)據(jù)寬度小于M時(shí),補(bǔ)空格N對(duì)實(shí)數(shù)表示輸出N位小數(shù)對(duì)字符串表示最多輸出的字符個(gè)數(shù)改變輸出內(nèi)容的對(duì)齊方式缺省為右對(duì)齊,PRINTF附加格式說(shuō)明符,INCLUDEMAIN{FLOATF110015799,F21255,F317INTN1123,N245,N36PRINTF“PRINTFWITHOUTWIDTHORPRECISIONSPECIFICATIONS\N“PRINTF“F\NF\NF\N“,F1,F2,F3PRINTF“D\ND\ND\N“,N1,N2,N3PRINTF“PRINTFWITHWIDTHANDPRECISIONSPECIFICATIONS\N“PRINTF“52F\N61F\N30F\N“,F1,F2,F3PRINTF“\NM\N\N\N“,N1,N2,N3},例38,格式輸入函數(shù),格式輸入函數(shù)SCANF格式控制字符串,地址表列SCANF“D,F”,,格式輸入函數(shù),常見(jiàn)錯(cuò)誤SCANF“D,F\N”,SCANF“D,F”,A,BSCANF“72F“,,D以帶符號(hào)十進(jìn)制形式輸入整型數(shù)據(jù)O以八進(jìn)制無(wú)符號(hào)形式輸入(無(wú)前導(dǎo)0)X以十六進(jìn)制無(wú)符號(hào)形式輸入(無(wú)前導(dǎo)0X)C以字符形式輸入單個(gè)字符S輸入字符串,以非空字符開(kāi)始,遇第一個(gè)空白字符結(jié)束F以小數(shù)形式輸入浮點(diǎn)數(shù)E以標(biāo)準(zhǔn)指數(shù)形式輸入,SCANF格式字符,L加在D、O、X、U前輸入長(zhǎng)整型加在F、E前輸入雙精度型L加在F、E前輸入LONGDOUBLE型H加在D、O、X前輸入短整型M表示數(shù)據(jù)占用的寬度本輸入項(xiàng)在讀入后不賦給相應(yīng)的變量,SCANF附加格式說(shuō)明符,注調(diào)用函數(shù)PRINTF時(shí),F(xiàn)LOAT類(lèi)型的參數(shù)都是轉(zhuǎn)化為DOUBLE類(lèi)型后再傳遞的,所以F可以輸出DOUBLE和FLOAT兩種類(lèi)型的數(shù)據(jù),不必用LF輸出DOUBLE型數(shù)據(jù)。調(diào)用函數(shù)SCANF時(shí),如果是FLOAT類(lèi)型則對(duì)應(yīng)輸入轉(zhuǎn)換符為F,而DOUBLE類(lèi)型的輸入轉(zhuǎn)換符為L(zhǎng)F。例FLOATXDOUBLEYSCANF“FLF”,PRINTF“XF,YF”,X,Y,INCLUDEMAIN{INTA,BPRINTF“PLEASEINPUTAANDB“SCANF“DD“,PRINTF“AD,BD,ABD\N“,A,B,AB},PLEASEINPUTAANDB,A12,B34,AB46,1234↙,例,遇空格、TAB鍵時(shí)結(jié)束,INCLUDEMAIN{INTA,BPRINTF“PLEASEINPUTAANDB“SCANF“DD“,PRINTF“AD,BD,ABD\N“,A,B,AB},PLEASEINPUTAANDB,A12,B34,AB46,12↙,例,遇回車(chē)鍵時(shí)結(jié)束,34↙,INCLUDEMAIN{INTA,BPRINTF“PLEASEINPUTAANDB“SCANF““,PRINTF“AD,BD,ABD\N“,A,B,AB},PLEASEINPUTAANDB,A12,B34,AB46,1234↙,例,遇寬度時(shí)結(jié)束,INCLUDEMAIN{INTA,BPRINTF“PLEASEINPUTAANDB“SCANF““,PRINTF“AD,BD,ABD\N“,A,B,AB},PLEASEINPUTAANDB,A12,B3,AB15,123A↙,例,遇非法輸入時(shí)結(jié)束,INCLUDEMAIN{INTA,BPRINTF“PLEASEINPUTAANDB“SCANF“D,D“,PRINTF“AD,BD,ABD\N“,A,B,AB},PLEASEINPUTAANDB,A12,B34,AB46,12,34↙,例,這里逗號(hào)需要原樣輸入,INCLUDEMAIN{INTA,BPRINTF“PLEASEINPUTAANDB“SCANF“2D“,PRINTF“AD,BD,ABD\N“,A,B,AB},PLEASEINPUTAANDB,A12,B56,AB68,123456↙,例39,跳過(guò)一個(gè)輸入項(xiàng),INCLUDEMAIN{INTA,BSCANF“DD“,PRINTF“AD,BD\N“,A,B},問(wèn)題1當(dāng)要求程序輸出結(jié)果為A12,B34時(shí),用戶(hù)應(yīng)該如何輸入數(shù)據(jù),1234↙,輸入數(shù)據(jù)的格式控制例310,INCLUDEMAIN{INTA,BSCANF“DD“,PRINTF“AD,BD\N“,A,B},問(wèn)題2當(dāng)限定用戶(hù)輸入數(shù)據(jù)以逗號(hào)為分隔符,即輸入數(shù)據(jù)格式為12,34↙時(shí),應(yīng)修改程序中的哪條語(yǔ)句怎樣修改,SCANF“D,D“,,輸入數(shù)據(jù)的格式控制例310,INCLUDEMAIN{INTA,BSCANF“DD“,PRINTF“AD,BD\N“,A,B},問(wèn)題3語(yǔ)句SCANF“DD“,修改為SCANF“AD,BD“,時(shí),用戶(hù)應(yīng)該如何輸入數(shù)據(jù),A12,B34↙,輸入數(shù)據(jù)的格式控制例310,INCLUDEMAIN{INTA,BSCANF“DD“,PRINTF“AD,BD\N“,A,B},問(wèn)題4限定用戶(hù)輸入數(shù)據(jù)為以下格式為1234↙同時(shí)要求程序輸出結(jié)果為A12,B34,SCANF““,,輸入數(shù)據(jù)的格式控制例310,INCLUDEMAIN{INTA,BSCANF“DD“,PRINTF“AD,BD\N“,A,B},問(wèn)題5限定用戶(hù)輸入數(shù)據(jù)為以下格式為12↙34↙同時(shí)要求程序輸出結(jié)果為A“12“,B“34“,SCANF“DD“,PRINTF“A\“D\“,B\“D\“\N“,A,B,輸入數(shù)據(jù)的格式控制例310,INCLUDEMAIN{INTA,BSCANF“DD“,PRINTF“AD,BD\N“,A,B},問(wèn)題6設(shè)計(jì)程序使得用戶(hù)可以以任意字符(回車(chē)、空格、制表符、逗號(hào)、其它)作為分隔符進(jìn)行數(shù)據(jù)的輸入,SCANF“DCD“,,輸入數(shù)據(jù)的格式控制例310,INCLUDEMAIN{INTDATA1,DATA2,SUMCHAROPPRINTF“PLEASEENTERTHEEXPRESSIONDATA1DATA2\N“SCANF“DCD“,PRINTF“DCDD\N“,DATA1,OP,DATA2,DATA1DATA2},PLEASEENTERTHEEXPRESSIONDATA1DATA2,第1次測(cè)試,123↙,1231293141,,,C格式符存在的問(wèn)題及其解決例311,INCLUDEMAIN{INTDATA1,DATA2,SUMCHAROPPRINTF“PLEASEENTERTHEEXPRESSIONDATA1DATA2\N“SCANF“DCD“,PRINTF“DCDD\N“,DATA1,OP,DATA2,DATA1DATA2},PLEASEENTERTHEEXPRESSIONDATA1DATA2,第2次測(cè)試,123↙,12315,C格式符存在的問(wèn)題及其解決例311,INCLUDEMAIN{INTDATA1,DATA2,SUMCHAROPPRINTF“PLEASEENTERTHEEXPRESSIONDATA1DATA2\N“SCANF“DCD“,PRINTF“DCDD\N“,DATA1,OP,DATA2,DATA1DATA2},PLEASEENTERTHEEXPRESSIONDATA1DATA2,第3次測(cè)試,123↙,12315,C格式符存在的問(wèn)題及其解決例311,INCLUDEMAIN{INTACHARBFLOATCPRINTF“PLEASEINPUTANINTEGER“SCANF“D“,PRINTF“INTEGERD\N“,APRINTF“PLEASEINPUTACHARACTER“SCANF“C“,PRINTF“CHARACTERC\N“,BPRINTF“PLEASEINPUTAFLOATNUMBER“SCANF“F“,PRINTF“FLOATF\N“,C},PLEASEINPUTANINTEGER,希望得到的運(yùn)行結(jié)果,12↙,PLEASEINPUTANCHARACTER,A↙,PLEASEINPUTAFLOATNUMBER,35↙,INTEGER12,CHARACTERA,FLOATNUMBER3500000,C格式符存在的問(wèn)題及其解決例312,INCLUDEMAIN{INTACHARBFLOATCPRINTF“PLEASEINPUTANINTEGER“SCANF“D“,PRINTF“INTEGERD\N“,APRINTF“PLEASEINPUTACHARACTER“SCANF“C“,PRINTF“CHARACTERC\N“,BPRINTF“PLEASEINPUTAFLOATNUMBER“SCANF“F“,PRINTF“FLOATF\N“,C},PLEASEINPUTANINTEGER,結(jié)果好像很奇怪嘛,12↙,PLEASEINPUTANCHARACTER,CHARACTER,PLEASEINPUTAFLOATNUMBER,35↙,INTEGER12,,FLOATNUMBER3500000,C格式符存在的問(wèn)題及其解決例312,INCLUDEMAIN{INTACHARBFLOATCPRINTF“PLEASEINPUTANINTEGER“SCANF“D“,PRINTF“INTEGERD\N“,APRINTF“PLEASEINPUTACHARACTER“SCANF“C“,PRINTF“CHARACTERC\N“,BPRINTF“PLEASEINPUTAFLOATNUMBER“SCANF“F“,PRINTF“FLOATF\N“,C},C格式符存在的問(wèn)題及其解決例312,輸入數(shù)據(jù)12后,按的回車(chē)鍵被當(dāng)作有效字符讀給字符型變量B了。,INCLUDEMAIN{INTACHARBFLOATCPRINTF“PLEASEINPUTANINTEGER“SCANF“D“,PRINTF“INTEGERD\N“,APRINTF“PLEASEINPUTACHARACTER“GETCHAR/吸收掉前面輸入整型數(shù)據(jù)后面鍵入的回車(chē)字符/SCANF“C“,PRINTF“CHARACTERC\N“,BPRINTF“PLEASEINPUTAFLOATNUMBER“SCANF“F“,PRINTF“FLOATF\N“,C},PLEASEINPUTANINTEGER,程序修改后得到的運(yùn)行結(jié)果,12↙,PLEASEINPUTANCHARACTER,A↙,PLEASEINPUTAFLOATNUMBER,35↙,INTEGER12,CHARACTERA,FLOATNUMBER3500000,C格式符存在的問(wèn)題及其解決例312,INCLUDEMAIN{INTACHARBFLOATCPRINTF“PLEASEINPUTANINTEGER“SCANF“D“,PRINTF“INTEGERD\N“,APRINTF“PLEASEINPUTACHARACTER“SCANF“1S“,/第2種解決方案/PRINTF“CHARACTERC\N“,BPRINTF“PLEASEINPUTAFLOATNUMBER“SCANF“F“,PRINTF“FLOATF\N“,C},C格式符存在的問(wèn)題及其解決例312,這里S前面的符號(hào)是數(shù)字1,不是字母L的小寫(xiě)將程序的C改為1S用于讀入單個(gè)字符,由于1S完全忽略空格和回車(chē)符,可以避免回車(chē)符被作為單個(gè)字符讀入。,INCLUDEMAIN{INTDATA1,DATA2,SUMCHAROPPRINTF“PLEASEENTERTHEEXPRESSIONDATA1DATA2\N“SCANF“D1SD“,PRINTF“DCDD\N“,DATA1,OP,DATA2,DATA1DATA2},123↙,123↙,12↙↙3↙,再回頭來(lái)看例311,以任意分隔符輸入加法算式,可能嗎,這一章我們學(xué)習(xí)了,字符輸入函數(shù)GETCHAR字符輸出函數(shù)PUTCHAR格式輸入函數(shù)SCANF格式輸出函數(shù)PRINTF格式控制問(wèn)題難點(diǎn),幾點(diǎn)忠告,不要拘泥于細(xì)節(jié)不要死記硬背在使用中慢慢掌握,作業(yè),作業(yè)P6467,35,36課堂練習(xí)32,33,3413,
      下載積分: 4 賞幣
      上傳時(shí)間:2024-01-06
      頁(yè)數(shù): 45
      10人已閱讀
      ( 4 星級(jí))
    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服客服 - 聯(lián)系我們

    機(jī)械圖紙?jiān)创a,實(shí)習(xí)報(bào)告等文檔下載

    備案號(hào):浙ICP備20018660號(hào)