2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  目錄</b></p><p>  第一章 課程設(shè)計(jì)的目的和要求1</p><p>  1.1 課程設(shè)計(jì)的目的1</p><p>  1.2 課程設(shè)計(jì)的要求1</p><p>  第二章 課程設(shè)計(jì)任務(wù)內(nèi)容3</p><p>  2.1 課程設(shè)計(jì)要求3</

2、p><p>  2.2 功能需求3</p><p>  2.3 功能模塊圖4</p><p>  第三章 詳細(xì)設(shè)計(jì)說(shuō)明5</p><p>  3.1 程序設(shè)計(jì)思路5</p><p>  3.2 函數(shù)說(shuō)明5</p><p>  3.2.1 main()主函數(shù)5</p><

3、;p>  3.2.2 menu_select菜單選擇函數(shù)7</p><p>  3.2.3 enter輸入函數(shù)8</p><p>  3.2.4 delete_text刪除函數(shù)9</p><p>  3.2.5 find函數(shù)10</p><p>  3.2.6 list函數(shù)11</p><p>  3.

4、2.7 save函數(shù)12</p><p>  3.2.8 load函數(shù)12</p><p><b>  3.3 調(diào)試14</b></p><p>  第四章 軟件使用說(shuō)明15</p><p>  第五章 課程設(shè)計(jì)心得與體會(huì)18</p><p>  附錄1 參考文獻(xiàn)19</p>

5、;<p>  附錄2 程序清單20</p><p><b>  簡(jiǎn)單的行編輯器</b></p><p>  第一章 課程設(shè)計(jì)的目的和要求</p><p>  此章節(jié)詳細(xì)介紹了課程設(shè)計(jì)的目的和要求。</p><p>  1.1 課程設(shè)計(jì)的目的</p><p>  課程設(shè)計(jì)的目的是通過(guò)

6、實(shí)踐環(huán)節(jié)的訓(xùn)練,使學(xué)生進(jìn)一步加深對(duì)C語(yǔ)言知識(shí)的綜合理解,提高C語(yǔ)言應(yīng)用技能,并結(jié)合專(zhuān)業(yè)特點(diǎn)培養(yǎng)學(xué)生計(jì)算機(jī)程序的應(yīng)用能力。</p><p>  結(jié)合計(jì)算機(jī)科學(xué)專(zhuān)業(yè)的特點(diǎn)是培養(yǎng)學(xué)生閱讀本專(zhuān)業(yè)相關(guān)領(lǐng)域C語(yǔ)言程序的能力,分析并掌握程序的設(shè)計(jì)思想和方法。通過(guò)課程設(shè)計(jì),培養(yǎng)學(xué)生查閱C語(yǔ)言相關(guān)資料能力、分析和閱讀程序的能力,應(yīng)用C語(yǔ)言基本知識(shí)設(shè)計(jì)小型應(yīng)用程序的能力。其中,需要掌握C語(yǔ)言中的結(jié)構(gòu)體,指針,函數(shù)(系統(tǒng)函數(shù),自定義函

7、數(shù)),文件操作等知識(shí),通過(guò)對(duì)系統(tǒng)的分析和設(shè)計(jì),進(jìn)一步鞏固C語(yǔ)言的學(xué)習(xí),以提高對(duì)開(kāi)發(fā)環(huán)境的進(jìn)一步認(rèn)識(shí)和綜合編程能力。</p><p>  在學(xué)習(xí)課程設(shè)計(jì)之前,要掌握好程序設(shè)計(jì)的基本概念、方法和思維方式。開(kāi)發(fā)程序的目的是為了解決問(wèn)題,而解決問(wèn)題首先需要找出合適的解決方案,然后用合適的語(yǔ)言把方案描述出來(lái)。顯然,該過(guò)程的關(guān)鍵是分析問(wèn)題并找出解決方案,而不是描述方案。因此,程序設(shè)計(jì)的首要目標(biāo),是培養(yǎng)解決問(wèn)題的基本思維方式,

8、其次才是語(yǔ)言知識(shí)。</p><p>  1.2 課程設(shè)計(jì)的要求</p><p>  程序設(shè)計(jì)報(bào)告應(yīng)該能夠反映學(xué)生完成課程設(shè)計(jì)題目的全部情況,包括對(duì)課程設(shè)計(jì)題目要求的分析、應(yīng)用程序的設(shè)計(jì)、程序的測(cè)試過(guò)程以及程序的運(yùn)行情況等,因此,編寫(xiě)課程設(shè)計(jì)報(bào)告是課程設(shè)計(jì)一個(gè)不容忽視的重要環(huán)節(jié)。一個(gè)高質(zhì)量的報(bào)告需要學(xué)生掌握以下幾點(diǎn):</p><p>  運(yùn)用有關(guān)課程的基礎(chǔ)理論和技能解

9、決實(shí)際問(wèn)題;</p><p>  能用文字、圖形和現(xiàn)代設(shè)計(jì)方法系統(tǒng)地、正確地表達(dá)設(shè)計(jì)成果;</p><p>  分析應(yīng)用的功能構(gòu)成、數(shù)據(jù)對(duì)象及其關(guān)聯(lián),實(shí)現(xiàn)系統(tǒng)的類(lèi)的設(shè)計(jì); </p><p>  對(duì)所設(shè)計(jì)應(yīng)用進(jìn)行調(diào)試。</p><p>  第二章 課程設(shè)計(jì)任務(wù)內(nèi)容</p><p>  此章節(jié)主要從課程設(shè)計(jì)的要求,功能需求

10、兩方面講述課程設(shè)計(jì)的有關(guān)內(nèi)容。</p><p>  2.1 課程設(shè)計(jì)要求</p><p>  設(shè)置一個(gè)簡(jiǎn)單的行編輯器,每行以回車(chē)結(jié)束;</p><p>  數(shù)據(jù)以文件形式存儲(chǔ);</p><p>  編輯器具有查找、替換、修改數(shù)據(jù)的功能。</p><p><b>  2.2 功能需求</b><

11、/p><p>  該程序具有行的查找、替換、刪除的功能。</p><p>  行編輯器是文本編輯器的一種,針對(duì)行進(jìn)行編輯。現(xiàn)在看來(lái)當(dāng)然非常地老式,這種編輯器起源于操作員還使用電傳打字機(jī)的年代,也就是一個(gè)打印機(jī)連著鍵盤(pán),因?yàn)闆](méi)有顯示屏,也就無(wú)法在文檔中移動(dòng)光標(biāo)。</p><p>  行編輯器只能從事最基本的文本輸入與輸出。輸入、編輯、文檔顯示并不能同步地進(jìn)行。一般而言,用

12、戶無(wú)法直接輸入文本,而只能在文本終端上通過(guò)簡(jiǎn)要的命令,對(duì)已區(qū)”的做法顯然不是最恰當(dāng)?shù)?。較好的做法是,設(shè)立一個(gè)輸入緩沖區(qū),用以接受用戶輸入的一行字符,然后逐行存入用戶數(shù)據(jù)區(qū)。允許用戶輸入出差錯(cuò),并在發(fā)現(xiàn)有誤時(shí)可以及時(shí)更正。例如,當(dāng)用戶發(fā)現(xiàn)剛剛鍵入的一個(gè)字符是錯(cuò)的時(shí),可補(bǔ)進(jìn)一個(gè)退格符"#",以表示有文檔進(jìn)行添加或編寫(xiě)。命令和文本,以及編輯器的相應(yīng)輸出,會(huì)根據(jù)他們的輸入順序,從底部開(kāi)始逐一顯示。雖然命令一般會(huì)顯示被修改的行

13、,但如果要將行連同文檔中的上下文一起顯示,則需要另外單獨(dú)的命令。</p><p>  現(xiàn)在常見(jiàn)的編輯器,都是通過(guò)移動(dòng)光標(biāo),來(lái)選取要編輯的文本段落,與此不同的是,行編輯器只能對(duì)“當(dāng)前行”進(jìn)行編輯。一般也可在行內(nèi)進(jìn)行上下文匹配,或者選擇特定行,以決定哪部分文檔將被編輯或顯示。當(dāng)然,這些編輯每次都只能針對(duì)一行。</p><p>  一個(gè)簡(jiǎn)單的行編輯程序的功能是:接受用戶從終端輸入的程序或數(shù)據(jù),并

14、存入用戶的數(shù)據(jù)區(qū)。</p><p>  由于用戶在終端上進(jìn)行輸入時(shí),不能保證不出差錯(cuò),因此,若在編輯程序中,“每接受一個(gè)字符即存入用戶數(shù)據(jù)前一個(gè)字符無(wú)效;如果發(fā)現(xiàn)當(dāng)前鍵入的行內(nèi)差錯(cuò)較多或難以補(bǔ)救,則可以鍵入一個(gè)退行符"@",以表示當(dāng)前行中的字符均無(wú)效。</p><p><b>  2.3 功能模塊圖</b></p><p>

15、  根據(jù)上面的功能需求分析,,可以將這個(gè)系統(tǒng)的設(shè)計(jì)分為如下六大模塊:</p><p>  輸入,替換,刪除,查找,修改,保存(見(jiàn)圖2-1)。</p><p>  圖 2-1功能模塊圖</p><p>  第三章 詳細(xì)設(shè)計(jì)說(shuō)明</p><p>  此章節(jié)通過(guò)程序設(shè)計(jì)思路,函數(shù)說(shuō)明兩大章節(jié)詳細(xì)的描述了程序的函數(shù)功能說(shuō)明,參數(shù)說(shuō)明等。</p&

16、gt;<p>  3.1 程序設(shè)計(jì)思路</p><p>  課程設(shè)計(jì)要求設(shè)計(jì)一個(gè)簡(jiǎn)單的行編輯器,該程序具有行的查找、替換、刪除等功能,設(shè)計(jì)這個(gè)程序是為了對(duì)行的各種功能進(jìn)行了解。定義一個(gè)結(jié)構(gòu)體來(lái)包含對(duì)行編輯器的一般操作,如輸入函數(shù)printf(),刪除需要一個(gè)刪除函數(shù)delete_text(),保存一個(gè)文件需要使用save()等,主函數(shù)模塊中需要運(yùn)用switch()多分支選擇語(yǔ)句和do while()

17、循環(huán)語(yǔ)句來(lái)調(diào)用上述所需要的函數(shù)。</p><p><b>  3.2 函數(shù)說(shuō)明</b></p><p>  3.2.1 main()主函數(shù)</p><p>  主函數(shù)是程序入口,采用模塊化設(shè)計(jì)。其主要功能有:1)使用一個(gè)主菜單來(lái)顯示編輯器的各項(xiàng)操作;2)運(yùn)用一個(gè)多選擇分支switch()語(yǔ)句來(lái)實(shí)現(xiàn)要進(jìn)行的操作;3)菜單函數(shù)通過(guò)do while

18、()循環(huán)中的get來(lái)輸出,內(nèi)嵌套switch語(yǔ)句來(lái)總體實(shí)現(xiàn)主函數(shù)的所有功能;其中用到了字符串?dāng)?shù)組argv,用來(lái)存放指向字符串參數(shù)的指針數(shù)組,即每一個(gè)元素指向一個(gè)參數(shù),整數(shù)argc,用來(lái)統(tǒng)計(jì)你運(yùn)行程序時(shí)送給main函數(shù)的命令行參數(shù)的個(gè)數(shù),代碼中包括六個(gè)case。程序如下(見(jiàn)圖3-1):</p><p>  char s[80],choice,fname[80]; </p><p>  //

19、struct line *info; </p><p>  int linenum=1; </p><p>  start=NULL; </p><p>  last=NULL; </p><p>  if(argc==2) load(argv[1]);/*裝入命令行上的文件 */ </p><p><b>

20、  do{ </b></p><p>  choice=menu_select(); </p><p>  switch(choice){ </p><p>  case 1:printf("\t行號(hào):"); </p><p><b>  gets(s); </b></p>

21、<p>  linenum=atoi(s); </p><p>  enter(linenum); </p><p><b>  break; </b></p><p>  case 2:delete_text(); </p><p><b>  break; </b></p>

22、<p>  case 3:list(); </p><p><b>  break; </b></p><p>  case 4:printf("\t文件名:"); </p><p>  gets(fname); </p><p>  save(fname); </p>&

23、lt;p><b>  break; </b></p><p>  case 5:printf("\t文件名:"); </p><p>  gets(fname); </p><p>  load(fname); </p><p><b>  break; </b></

24、p><p>  case 6:exi4t(0); </p><p><b>  } </b></p><p>  }while(1); </p><p>  圖3-1 main主函數(shù)</p><p>  3.2.2 menu_select菜單選擇函數(shù)</p><p>  這是

25、一個(gè)菜單顯示界面,顯示:輸入,刪除一行,顯示一行等,之后輸入數(shù)字選擇所需要的功能。定義整型變量c,使用printf輸出函數(shù)實(shí)現(xiàn)。程序如下(見(jiàn)圖3-2):</p><p>  char s[80]; </p><p><b>  int c; </b></p><p>  printf("\t\t1.輸入\n"); </

26、p><p>  printf("\t\t2.刪除一行\(zhòng)n"); </p><p>  printf("\t\t3.顯示一行\(zhòng)n"); </p><p>  printf("\t\t4.文件存盤(pán)\n"); </p><p>  printf("\t\t5.裝入文件\n"

27、); </p><p>  printf("\t\t6.退出\n"); </p><p><b>  do{ </b></p><p>  printf("\n\n\t\t請(qǐng)按數(shù)字選擇:"); </p><p><b>  gets(s); </b></

28、p><p>  c=atoi(s); </p><p>  }while(c<0||c>6); </p><p>  return(c);</p><p>  圖3-2 menu_select菜單選擇函數(shù)</p><p>  3.2.3 enter輸入函數(shù)</p><p>  此函數(shù)是

29、將所需要的文本信息插在指定行端部,其中,使用到了內(nèi)存分配函數(shù),如果分配成功則返回指向被分配內(nèi)存的指針,否則返回空指針NULL。使用操作符sizeof,判斷數(shù)據(jù)類(lèi)型長(zhǎng)度符,其作用是返回一個(gè)對(duì)象或者類(lèi)型所占的內(nèi)存字節(jié)數(shù),程序中使用了if語(yǔ)句,printf輸出函數(shù),gets輸入函數(shù)(見(jiàn)圖3-3)。</p><p>  圖3-3 enter輸入函數(shù)</p><p>  3.2.4 delete_t

30、ext刪除函數(shù)</p><p>  此函數(shù)主要實(shí)現(xiàn)行編輯器的刪除功能,其中主要使用條件語(yǔ)句if…else…,輸入函數(shù)gets,輸出函數(shù)printf,代碼中atoi的作用是把字符串轉(zhuǎn)換成整型數(shù),并多次使用指針的指向語(yǔ)句,比如:info->next->prior=info->prior(見(jiàn)圖3-4)。</p><p>  圖3-4 delete_text刪除函數(shù)</p&

31、gt;<p>  3.2.5 find函數(shù)</p><p>  查找函數(shù)主要用來(lái)根據(jù)用戶的需要查找一行文本。程序如下(見(jiàn)圖3-5):</p><p>  struct line *info; </p><p>  info=start; </p><p>  while(info){ </p><p> 

32、 if(linenum==info->num) return(info); </p><p>  info=info->next; </p><p><b>  } </b></p><p>  return(NULL); </p><p>  圖3-5 find函數(shù)</p><p>

33、  3.2.6 list函數(shù)</p><p>  顯示文本,顯示用戶在查找函數(shù)中選擇的文本。程序如下(見(jiàn)圖3-6):</p><p>  struct line *info; </p><p>  info=start; </p><p>  while(info){ </p><p>  ("%d:%s\n

34、",info->num,info->text); </p><p>  info=info->next; </p><p><b>  } </b></p><p>  printf("\n\n"); </p><p>  圖3-6 list函數(shù)</p>&l

35、t;p>  3.2.7 save函數(shù)</p><p>  將文件儲(chǔ)存在指定的文件夾里,以備以后查找使用。其中,定義了字符型的指針p,使用了while循環(huán)語(yǔ)句,輸出函數(shù)putc(見(jiàn)圖3-7)。</p><p>  圖3-7 save儲(chǔ)存函數(shù)</p><p>  3.2.8 load函數(shù)</p><p>  將文件以.txt的形式裝入,如果

36、文件打不開(kāi),則裝入不成功,如果文件正在裝入,結(jié)束后,按任意鍵退出。定義整型變量size,inch,其中,使用if判斷語(yǔ)句,while循環(huán)語(yǔ)句,printf輸出函數(shù),定義了字符型指針變量p,使用了指針的指向語(yǔ)句,如:start=start->next; info->prior=temp等(見(jiàn)圖3-8)。</p><p>  圖3-8 load函數(shù)</p><p><b>

37、;  3.3 調(diào)試</b></p><p>  編輯執(zhí)行時(shí),出現(xiàn)一個(gè)warming,錯(cuò)誤出現(xiàn)在menu_select()中,丟掉了return語(yǔ)句,return表示中止當(dāng)前函數(shù)的運(yùn)行,并將操作權(quán)返回給調(diào)用者,就算不寫(xiě),在函數(shù)執(zhí)行完畢后也會(huì)返回操作權(quán)給調(diào)用者。寫(xiě)return是一種清晰的風(fēng)格,可以防止一些意外的錯(cuò)誤。如圖所示:</p><p>  圖 3-9 調(diào)試框所顯示錯(cuò)誤<

38、;/p><p>  圖 3-10 錯(cuò)誤所在處</p><p>  圖 3-11 錯(cuò)誤修改后</p><p><b>  圖 3-12 編譯</b></p><p><b>  圖 3-13 執(zhí)行</b></p><p>  第四章 軟件使用說(shuō)明</p><p&

39、gt;  簡(jiǎn)單的行編輯器,主要包括五個(gè)內(nèi)容:第一,字符的按行錄入及儲(chǔ)存;第二,文件內(nèi)容的顯示;第三,文件內(nèi)容的查找;第四,文件內(nèi)容的替換第五,文件的修改。</p><p>  開(kāi)始進(jìn)入初始化界面,按數(shù)字進(jìn)行所需要的操作: </p><p><b>  圖4-1 主畫(huà)面</b></p><p>  按數(shù)字一,任意輸入行號(hào):</p>

40、<p><b>  圖4-2 輸入界面</b></p><p>  按數(shù)字二,選擇所需要?jiǎng)h除的行號(hào):</p><p><b>  圖4-3 刪除界面</b></p><p>  按數(shù)字三,顯示刪除后其余的行號(hào):</p><p><b>  圖4-4 顯示界面</b>

41、;</p><p>  按數(shù)字四,輸入某個(gè)文件命名,將該文件存盤(pán):</p><p><b>  圖4-5 存儲(chǔ)界面</b></p><p>  按數(shù)字五,將選定的文件裝入:</p><p><b>  圖4-6 裝入界面</b></p><p>  第五章 課程設(shè)計(jì)心得與體會(huì)

42、</p><p>  三周的課程設(shè)計(jì),終于結(jié)束了,這次課程設(shè)計(jì),讓我明白了很多,自己以前學(xué)的那些東西,只是皮毛,是為了應(yīng)付考試才看書(shū)學(xué)習(xí)的,自己根本沒(méi)有真正掌握所學(xué)的專(zhuān)業(yè)知識(shí),這次的課程設(shè)計(jì),下了很大功夫,一開(kāi)始,以為課程設(shè)計(jì)很簡(jiǎn)單,在網(wǎng)上隨便百度一個(gè)課程設(shè)計(jì)報(bào)告就可以了,可是沒(méi)想到,網(wǎng)上找的都不能用,代碼都是有錯(cuò)誤的,只好自己編寫(xiě)代碼,重新開(kāi)始好好看書(shū),學(xué)習(xí)C語(yǔ)言知識(shí),上網(wǎng)查閱資料,去圖書(shū)館翻閱有關(guān)書(shū)籍,每天想

43、的只有課程設(shè)計(jì),因?yàn)樽约夯A(chǔ)很差,編寫(xiě)起來(lái)代碼很困難,一開(kāi)始編寫(xiě)出來(lái)的代碼錯(cuò)誤很多,很沮喪,很傷心,想著這次課程設(shè)計(jì)一定完蛋了,停下來(lái)休息了一天繼續(xù)修改自己的程序,最終把代碼修改到完善,心里終于落下了一塊大石頭,以為一切搞定了,卻發(fā)現(xiàn),還有寫(xiě)報(bào)告這件重頭戲,每天繼續(xù)奔波于機(jī)房和圖書(shū)館之間,通過(guò)老師的幫助和自己不斷的努力,終于完成了報(bào)告??粗约旱膱?bào)告,又激動(dòng)又害怕,第一次自己下很大心血完成的東西,讓人很興奮,卻也擔(dān)心自己的報(bào)告得不到老師

44、的肯定。</p><p>  這次課程設(shè)計(jì),讓我明白了,一個(gè)報(bào)告里,最重要的是編寫(xiě)代碼以及流程圖,雖然自己基礎(chǔ)很差,不過(guò)通過(guò)這次課程設(shè)計(jì),我的專(zhuān)業(yè)知識(shí)提高了很多,明白了,只有通過(guò)真正的實(shí)踐,才能明白自己真正學(xué)了多少知識(shí),自己有多少知識(shí)能拿到實(shí)際中運(yùn)用,比如說(shuō)編寫(xiě)代碼時(shí),當(dāng)你把代碼編譯并讓其運(yùn)行,發(fā)現(xiàn)很多錯(cuò)誤,再回頭檢查錯(cuò)誤出在哪里,是很費(fèi)力的一件事情,因此分析和規(guī)劃代碼是很重要的,最重要的是要把整體的邏輯結(jié)構(gòu)寫(xiě)好

45、,這樣就不會(huì)出現(xiàn)大問(wèn)題,寫(xiě)代碼就要先找出核心的內(nèi)容,用多種方法來(lái)實(shí)現(xiàn)核心部分,這樣可以盡可能的避免發(fā)現(xiàn)邏輯或編譯不支持的錯(cuò)誤。</p><p>  通過(guò)這次的課程設(shè)計(jì),讓我初步學(xué)會(huì)了一個(gè)課程設(shè)計(jì)的基本方法有哪些,學(xué)會(huì)了如何借鑒別人的方法和經(jīng)驗(yàn),如何將所有的資料整合起來(lái)并加以運(yùn)用,這次報(bào)告的設(shè)計(jì),為以后課程設(shè)計(jì)以及畢業(yè)論文打下了很好的基礎(chǔ)。三周當(dāng)中,會(huì)因?yàn)槌绦虻氖露臒┮鈦y,不過(guò),人總是在挫折中成長(zhǎng)的,積累的失敗的

46、經(jīng)驗(yàn)多一些,對(duì)成長(zhǎng)有很大的幫助。這次的報(bào)告,有很多不盡人意的地方,很感謝荀老師的幫助,報(bào)告的完善,大部分都是在老師的幫助下完成的,這次的報(bào)告,融入了自己很大的心血,我覺(jué)得我的報(bào)告很好,以后,需要更加刻苦的學(xué)習(xí)自己的專(zhuān)業(yè)知識(shí),不斷的提高自己的能力。</p><p><b>  附錄1 參考文獻(xiàn)</b></p><p>  [1]譚浩強(qiáng)編著. C++程序設(shè)計(jì). 北京:清華

47、大學(xué)出版社,2005</p><p>  [2]譚浩強(qiáng)編著. C++程序設(shè)計(jì)解題與上機(jī)指導(dǎo). 北京:清華大學(xué)出版社,2005</p><p>  [3]譚浩強(qiáng)編著. C程序設(shè)計(jì)(第二版). 北京:清華大學(xué)出版社,1999</p><p>  [4]譚浩強(qiáng)編著. C程序設(shè)計(jì)設(shè)計(jì)解題與上機(jī)指導(dǎo)(第二版). 北京:清華大學(xué)出社,1999</p><p&

48、gt;  [5]黃迪明 主編 C++語(yǔ)言程序設(shè)計(jì)基礎(chǔ).北京:電子工業(yè)出版社 2003.6 </p><p>  [6]錢(qián)能 主編 C++程序設(shè)計(jì)教程.北京:清華大學(xué)出版社 1999.4 </p><p>  [7]鄭莉、董淵 編著 C++語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社 1999.12 </p><p>  [8]吳訪升 編著 C++程序設(shè)計(jì).北京: 機(jī)械工業(yè)出版

49、社 2002 </p><p>  [9]吳訪升 編著 C++程序設(shè)計(jì)學(xué)習(xí)指導(dǎo)與上機(jī)實(shí)踐.北京:機(jī)械工業(yè)出版社出版2002</p><p>  [10]孫淑霞等 C/C++程序設(shè)計(jì)教程(第2版),電子工業(yè)出版社,2007.2 </p><p>  [11]鄭莉 董淵C++語(yǔ)言程序設(shè)計(jì),清華大學(xué)出版社,鄭莉、董淵,1999.12</p><p>

50、;  [12]王正軍 Visual C++6.0程序設(shè)計(jì)從入門(mén)到精通 北京:人民郵電出版社2006.1</p><p><b>  附錄2 程序清單</b></p><p>  #include "stdio.h" </p><p>  #include "stdlib.h"</p><

51、;p>  struct line{ </p><p>  char text[81]; </p><p>  int num; /*行號(hào)*/ </p><p>  struct line *next; /*指向下一個(gè)輸入項(xiàng)目的指針 */ </p><p>  struct line *prior; /*指向前一個(gè)項(xiàng)目的指針 */ <

52、;/p><p><b>  }; </b></p><p>  struct line *start; /*指向表中第一個(gè)項(xiàng)目的指針 */ </p><p>  struct line *last; /*指向表中作后一個(gè)項(xiàng)目的指針 */ </p><p>  struct line *find(int),*dls_store

53、(struct line *); </p><p>  void patchup(int,int),delete_text(),list(),save(char *),load(char *); </p><p>  menu_select(); </p><p>  enter(int linenum); </p><p>  void m

54、ain(int argc,char *argv[]) </p><p><b>  { </b></p><p>  char s[80],choice,fname[80]; </p><p>  // struct line *info; </p><p>  int linenum=1; </p>&l

55、t;p>  start=NULL; </p><p>  last=NULL; </p><p>  if(argc==2) load(argv[1]);/*裝入命令行上的文件 */ </p><p><b>  do{ </b></p><p>  choice=menu_select(); </p>

56、<p>  switch(choice){ </p><p>  case 1:printf("\t行號(hào):"); </p><p><b>  gets(s); </b></p><p>  linenum=atoi(s); </p><p>  enter(linenum); <

57、/p><p><b>  break; </b></p><p>  case 2:delete_text(); </p><p><b>  break; </b></p><p>  case 3:list(); </p><p><b>  break; <

58、/b></p><p>  case 4:printf("\t文件名:"); </p><p>  gets(fname); </p><p>  save(fname); </p><p><b>  break; </b></p><p>  case 5:print

59、f("\t文件名:"); </p><p>  gets(fname); </p><p>  load(fname); </p><p><b>  break; </b></p><p>  case 6:exit(0); </p><p><b>  } <

60、;/b></p><p>  }while(1); </p><p><b>  } </b></p><p>  /* 顯示菜單,供用戶選擇 */ </p><p>  menu_select() </p><p><b>  { </b></p>&l

61、t;p>  char s[80]; </p><p><b>  int c; </b></p><p>  printf("\t\t1.輸入\n"); </p><p>  printf("\t\t2.刪除一行\(zhòng)n"); </p><p>  printf("\t

62、\t3.顯示一行\(zhòng)n"); </p><p>  printf("\t\t4.文件存盤(pán)\n"); </p><p>  printf("\t\t5.裝入文件\n"); </p><p>  printf("\t\t6.退出\n"); </p><p><b>  

63、do{ </b></p><p>  printf("\n\n\t\t請(qǐng)按數(shù)字選擇:"); </p><p><b>  gets(s); </b></p><p>  c=atoi(s); </p><p>  }while(c<0||c>6); </p>&l

64、t;p>  return(c); </p><p><b>  } </b></p><p>  /*將文本插在指定行端部 */ </p><p>  enter(int linenum) </p><p><b>  { </b></p><p>  struct l

65、ine *info; </p><p>  //char t[81]; </p><p><b>  for(;;){ </b></p><p><b>  /* */ </b></p><p>  info=(struct line *)malloc(sizeof(struct line)); &

66、lt;/p><p>  if(!info){ </p><p>  printf("\t! 內(nèi)存不夠!\n"); </p><p>  return(NULL); </p><p><b>  } </b></p><p>  printf("%d:",line

67、num); </p><p>  gets(info->text); </p><p>  info->num=linenum; </p><p>  if(*info->text){ </p><p>  if(find(linenum)) patchup(linenum,1); </p><p>

68、  if(*info->text) start=dls_store(info); </p><p><b>  } </b></p><p>  else break; </p><p>  linenum++; </p><p><b>  } </b></p><p&g

69、t;  return(linenum); </p><p><b>  } </b></p><p>  /*當(dāng)文本內(nèi)容插在文件中間時(shí)其下面的內(nèi)容的行號(hào)必須增加1,而 */ </p><p>  /*刪除時(shí),被刪除的文本后面的行號(hào)必須減1 */ </p><p>  void patchup(int n,int incr

70、) </p><p><b>  { </b></p><p>  struct line *i; </p><p>  i=find(n); </p><p>  while(i){ </p><p>  i->num=i->num+incr; </p><p&g

71、t;  i=i->next; </p><p><b>  } </b></p><p><b>  } </b></p><p>  /*按行號(hào)排序后插入 */ </p><p>  struct line *dls_store(struct line *i) </p><

72、;p><b>  { </b></p><p>  struct line *old,*p; </p><p>  if(last==NULL){ </p><p>  i->next=NULL; </p><p>  i->prior=NULL; </p><p><b&

73、gt;  last=i; </b></p><p>  return(i); </p><p><b>  } </b></p><p><b>  p=start; </b></p><p>  old=NULL; </p><p>  while(p){ &l

74、t;/p><p>  if(p->num){ </p><p><b>  old=p; </b></p><p>  p=p->next; </p><p><b>  } </b></p><p><b>  else{ </b></p

75、><p>  if(p->prior){ </p><p>  p->prior->next=i; </p><p>  i->next=p; </p><p>  p->prior=i; </p><p>  return start; </p><p><b&

76、gt;  } </b></p><p>  i->next=p; </p><p>  i->prior=NULL; </p><p>  p->prior=i; </p><p>  return(i); </p><p><b>  } </b></p>

77、;<p><b>  } </b></p><p>  old->next=i; </p><p>  i->next=NULL; </p><p>  i->prior=old; </p><p><b>  last=i; </b></p><

78、p>  return start; </p><p><b>  } </b></p><p>  /*刪除一行 */ </p><p>  void delete_text() </p><p><b>  { </b></p><p>  struct line *

79、info; </p><p>  char s[80]; </p><p>  int linenum; </p><p>  printf("\t行號(hào):"); </p><p><b>  gets(s); </b></p><p>  linenum=atoi(s); &l

80、t;/p><p>  info=find(linenum); </p><p>  if(info){ </p><p>  if(start==info){ </p><p>  start=info->next; </p><p>  if(start) start->prior=NULL; </p&

81、gt;<p>  else last=NULL; </p><p><b>  } </b></p><p><b>  else{ </b></p><p>  info->prior->next=info->next; </p><p>  if(info!=la

82、st) </p><p>  info->next->prior=info->prior; </p><p>  else last=info->prior; </p><p><b>  } </b></p><p>  free(info); </p><p>  pa

83、tchup(linenum+1,-1); </p><p><b>  } </b></p><p><b>  } </b></p><p>  /*查找一行文本 */ </p><p>  struct line *find(int linenum) </p><p>&

84、lt;b>  { </b></p><p>  struct line *info; </p><p>  info=start; </p><p>  while(info){ </p><p>  if(linenum==info->num) return(info); </p><p> 

85、 info=info->next; </p><p><b>  } </b></p><p>  return(NULL); </p><p><b>  } </b></p><p>  /*顯示文本 */ </p><p>  void list() </p

86、><p><b>  { </b></p><p>  struct line *info; </p><p>  info=start; </p><p>  while(info){ </p><p>  ("%d:%s\n",info->num,info->tex

87、t); </p><p>  info=info->next; </p><p><b>  } </b></p><p>  printf("\n\n"); </p><p><b>  } </b></p><p><b>  /*存文

88、件 */ </b></p><p>  void save(char *fname) </p><p><b>  { </b></p><p>  struct line *info; </p><p><b>  char *p; </b></p><p> 

89、 FILE *fp; </p><p>  if((fp=fopen("text.txt","w"))==NULL){ </p><p>  printf("\t文件打不開(kāi)!\n"); </p><p><b>  exit(0); </b></p><p>&

90、lt;b>  } </b></p><p>  printf("\t正在存入文件:\n"); </p><p>  info=start; </p><p>  while(info){ </p><p>  p=info->text; </p><p>  while(*p

91、) putc(*p++,fp); </p><p>  //putc('\r',fp); </p><p>  putc('\n',fp); </p><p>  info=info->next; </p><p><b>  } </b></p><p> 

92、 fclose(fp); </p><p><b>  } </b></p><p>  /*裝入文件 */ </p><p>  void load(char *fname) </p><p><b>  { </b></p><p>  struct line *info

93、,*temp; </p><p><b>  char *p; </b></p><p>  FILE *fp; </p><p>  //int t,size,inct; </p><p>  int size,inct; </p><p>  if((fp=fopen("text.t

94、xt","r"))==NULL){ </p><p>  printf("\t文件打不開(kāi)!\n"); </p><p><b>  exit(0); </b></p><p><b>  } </b></p><p>  while(start){

95、</p><p>  temp=start; </p><p>  start=start->next; </p><p>  free(temp); </p><p><b>  } </b></p><p>  printf("\n\t正裝入文件 !\n"); <

96、;/p><p>  size=sizeof(struct line); </p><p>  start=(struct line*)malloc(size); </p><p>  if(!start){ </p><p>  printf("\n\t內(nèi)存已經(jīng)用完!"); </p><p><b

97、>  return; </b></p><p><b>  } </b></p><p>  info=start; </p><p>  p=info->text; </p><p><b>  inct=1; </b></p><p>  whil

98、e((*p=getc(fp))!=EOF){ </p><p><b>  p++; </b></p><p>  while((*p=getc(fp))!='\n') p++; //getc(fp); /*丟掉'\n' */ </p><p><b>  *p='\0'; <

99、/b></p><p>  info->num=inct++; </p><p>  info->next=(struct line*)malloc(size); </p><p>  if(!info->next){ </p><p>  printf("\n\t內(nèi)存已經(jīng)用完!"); </p

100、><p><b>  return; </b></p><p><b>  }</b></p><p>  info->prior=temp; </p><p>  temp=info; </p><p>  info=info->next; </p>

101、<p>  p=info->text; </p><p><b>  } </b></p><p>  temp->next=NULL; </p><p>  last=temp; </p><p>  free(info); </p><p>  start->pri

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論