語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)及題解_第1頁(yè)
語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)及題解_第2頁(yè)
語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)及題解_第3頁(yè)
語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)及題解_第4頁(yè)
語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)及題解_第5頁(yè)
已閱讀5頁(yè),還剩144頁(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章C語(yǔ)言程序的上機(jī)步 第2章TurboC2.0/3.0使用指 TurboC簡(jiǎn) TurboC2.0文件簡(jiǎn) TurboC2.0的啟 TurboC2.0集成開(kāi)發(fā)環(huán)境的使 TurboC2.0的配置文 TurboC調(diào)試系 常見(jiàn)的錯(cuò)誤類 程序調(diào) 第3章VisualC++環(huán)境下運(yùn)行C程 啟動(dòng) 新建/打開(kāi)C程序文 第4章實(shí)驗(yàn)概 第5章實(shí)驗(yàn)項(xiàng)目和課程設(shè) 課程設(shè)計(jì) 課程設(shè)計(jì) 課程設(shè)計(jì) 課程設(shè)計(jì) 第6章主習(xí)題參考答 設(shè)計(jì) 設(shè)計(jì) 設(shè)計(jì) 設(shè)計(jì) 附錄一C語(yǔ)言常見(jiàn)錯(cuò)誤總 一、編程的常見(jiàn)錯(cuò) 二、連接時(shí)的常見(jiàn)錯(cuò) 三、運(yùn)行時(shí)的常見(jiàn)錯(cuò) 附錄二C語(yǔ)言編譯常見(jiàn)錯(cuò)誤信息及處理方 1C語(yǔ)法錯(cuò) 連接錯(cuò) 運(yùn)行錯(cuò)1.1C編譯錯(cuò)誤通常是編程者了C語(yǔ)言的語(yǔ)則,如保留字輸入錯(cuò)誤、花括號(hào)不匹配對(duì)于編譯連接錯(cuò)誤,C語(yǔ)言編譯系統(tǒng)會(huì)提供出錯(cuò)信息,包括出錯(cuò)位置(行號(hào)、出錯(cuò)提int型變量,那么在該整數(shù)為偶數(shù)時(shí)正確,奇數(shù)時(shí)就會(huì)錯(cuò)誤,這些C語(yǔ)言提供的調(diào)試工具找出真正TurboC2.0VisualC++6.0C程序編譯、連2TurboC2.0/3.0TurboCTurboC是Borland公司的產(chǎn)品,Borland公司是一家專門從事軟件開(kāi)發(fā)、研制的大公司。該公司相繼推出了Turbo系列軟件,如TurboBASIC,TurboPascal,TurboProlog,這些軟件很受用戶歡迎。該公司在1987年首次推出TurboC1.0產(chǎn)品,其中使用了全然一新的集大大方便了程序的開(kāi)發(fā)。1988年,Borland公司又推出TurboC1.5版本,增加了圖形庫(kù)和文本窗口函數(shù)庫(kù)等,而TurboC2.0則是該公司 的。TurboC2.0在原來(lái)集成開(kāi)發(fā)環(huán)境的基礎(chǔ)上增加了查錯(cuò)功能,并可以在Tiny模式下直接生成“.COM”(數(shù)據(jù)、代碼和堆棧處Borland公司后來(lái)又推出了面向?qū)ο蟮某绦蜍浖黅urboC++,它繼承發(fā)展了TurboC2.0的集成開(kāi)發(fā)環(huán)境,并包含了面向?qū)ο蟮幕舅枷牒驮O(shè)計(jì)方法。1991年為了適用公司的Windows3.0版本,Borland公司又將TurboC++進(jìn)行了更新,即TurboC的新一代產(chǎn)品BorlandC++。TurboC2.0可運(yùn)行于IBM-PC系列微機(jī),包括XTAT及IBMDOS2.0它支持?jǐn)?shù)學(xué)協(xié)處理器,也可進(jìn)行浮點(diǎn)仿真,這將加快程序的執(zhí)行。INSTALL.EXE安裝程序文件TC.EXETCHELP.TCHTCHELP.TCH的駐留程序README關(guān)于TurboC的信息文件TCCONFIG.EXE配置文件轉(zhuǎn)換程序MAKE.EXE項(xiàng)目管理工具TCC.EXETLINK.EXETurboCC0?.OBJ不同模式啟動(dòng)代碼C?.LIB不同模式運(yùn)行庫(kù)GRAPHICS.LIB圖形庫(kù)FP87.LIB8087*.HTurboC*.BGI*.CTurboC例行程序(源文件MMedium(中型模式),LLarge(大模式),HHuge(巨大模式)。TurboC2.0安裝完畢的TurboC將在C盤根 中存放庫(kù)文件,INCLUDE子 中存放所有頭文件。運(yùn)行TurboC2.0時(shí),只要在TC子 下鍵入TC并回車TurboC2.0集成開(kāi)發(fā)環(huán)境,如圖圖2.1TurboC2.0進(jìn)入TurboC2.0集成開(kāi)發(fā)環(huán)境后,屏幕顯示畫面如圖2.1其中頂上一行為TurboC2.0主菜單,中間窗口為編輯區(qū),接下來(lái)是信息窗口,最一行為參考行。這四個(gè)窗口構(gòu)成了TurboC2.0TurboC2.0 Pick(選擇Writeto(存盤 Changedir(改 Oss(暫時(shí)退出C2.0所有菜單均采用這種方法進(jìn)行操作,以下不再說(shuō)明。花括號(hào){和}尖括號(hào)<(方括號(hào)[和]/**/雙引號(hào)"單引號(hào)運(yùn)行由Project/Projectname項(xiàng)指定的文件名或當(dāng)前編輯區(qū)的文件。如果對(duì)上次編譯后的Programreset(程序重啟Gotocursor(運(yùn)行到光標(biāo)處Traceinto(進(jìn)入在執(zhí)行一條調(diào)用其他用戶定義的子函數(shù)時(shí),若用Traceinto項(xiàng),則執(zhí)行長(zhǎng)條將到該Stepover(單步執(zhí)行Userscreen(用戶屏幕按【】【】可進(jìn) CompiletoOBJ(編譯生成目標(biāo)碼MakeEXEfile(生成執(zhí)行文件LinkEXEfile(連接生成執(zhí)行文件Buildall(建立所有文件PrimaryCfile(主C文件GetProjectname(項(xiàng)目名Breakmakeon(中止編譯Autodependencies(自動(dòng)依賴Clearproject(清除項(xiàng)目文件 Defaultchartype:規(guī)定charJumpoptimization:通過(guò)去除多余的跳轉(zhuǎn)和調(diào)整循環(huán)與開(kāi)關(guān)語(yǔ)句的辦法以Identifierlength:說(shuō)明標(biāo)識(shí)符有效字符的個(gè)數(shù),默認(rèn)為32 Errorstopafter:多少個(gè)錯(cuò)誤時(shí)停止編譯,默認(rèn)為25Warningstopafter:多少個(gè)警告錯(cuò)誤時(shí)停止編譯,默認(rèn)為100Map Allfiles:所有文件錯(cuò)誤C2.0的配置被改過(guò),則所做的改動(dòng)將存入配置文件中;選off時(shí)不存。Editautosave:是否在Run或S之前,自動(dòng)編輯的源文件Tabsize:設(shè)置制表鍵大小,默認(rèn)為8 TurboCdirectory:TurboC所在 Pickfilename:定義加載的pick文件名,如不定義則從currentpickfileSaveoptions(配置):保存所有選擇的編譯、連接、調(diào)試和項(xiàng)目到配置文件Callstack:在TurboCdebuggerFindfunction:在運(yùn)行TurboCdebugger考有關(guān)TurboC手冊(cè)。信息??梢杂孟率龇椒ńurboC2.0的配置:就會(huì)按這個(gè)配置文件中的內(nèi)容作為TurboC2.0若設(shè)置Options/Environment/Configautosave為on,則退出集成開(kāi)發(fā)環(huán)境時(shí),當(dāng)前的設(shè)置會(huì)自動(dòng)存放到TurboC2.0配置文件TCCONFIG.TC中。TurboC在啟動(dòng)時(shí)會(huì)自動(dòng)尋找這用TCINST設(shè)置TurboC的有關(guān)配置,并將結(jié)果存入TC.EXE中。TurboC在啟動(dòng)時(shí),TurboC2.0和TurboC3.0stdio.h、conio.hinclude這些問(wèn)題是由于沒(méi)有設(shè)置好路徑引起的,目前的TC2和TC3按安裝分類大概有兩種圖2.2OPTION> ]/includeLIB: 擇DOSS進(jìn)入DOS命令提示符狀態(tài)后,在命令行輸入“文件名.exe參數(shù)1參數(shù)2…”執(zhí)int{ printf("Themaxvalueis%d\n",printf("Thefirstbitofeachnumber變量max_value的初值應(yīng)為32767,這是在微型機(jī)上整型變量的最小值,但語(yǔ)句中_value=32767TurboC提供了一個(gè)調(diào)試程序,專門用來(lái)對(duì)程序進(jìn)行動(dòng)態(tài)調(diào)試,以發(fā)現(xiàn)程序中的各種邏輯錯(cuò)首先進(jìn)入TurboC的集成開(kāi)發(fā)環(huán)境,與程序調(diào)試有關(guān)的屏幕菜單有:圖2.3Break/watch項(xiàng)Addwatch允許鍵入一個(gè)變量名或一個(gè)表達(dá)式,調(diào)試程序把這個(gè)變量或表達(dá)式送入監(jiān)視窗希望監(jiān)視變量b[3],則可用Editwatch輸入b[3]并替換掉原監(jiān)視窗里的b[2]。選擇項(xiàng)Togglebreakpoint設(shè)置或去除一個(gè)斷點(diǎn)。為了設(shè)置一個(gè)斷點(diǎn).首先把光標(biāo)定在編輯窗口中某個(gè)語(yǔ)句所在行,然后選擇Togglebreakpoint項(xiàng),調(diào)試程序就在這個(gè)圖2.4Debugc:顯示字符 顯示字符串d:顯示十六進(jìn)制數(shù)f:圖2.5int{ printf("Themaxvalueprintf("Thefirstbitofeachnumber監(jiān)視和斷點(diǎn)菜單,選擇Togglebreakpoint,在第7行處設(shè)置一個(gè)斷點(diǎn),并用Addwatch功能把 程序運(yùn)行到第7個(gè)語(yǔ)句時(shí)停止,然后在運(yùn)行菜單(【Alt】+【R】)中選擇Stepover或直接菜單里再一次使用Togglebreakpoint或使用Clearallbreakpoints清除斷點(diǎn),并用Removeall3d",i+1,score[i]);i++;{}{inti,sum=0;{}fo語(yǔ)句的原意是輸出自然數(shù)1~0號(hào),實(shí)際上printf()語(yǔ)句不受for控制。為了更清楚地說(shuō)明這個(gè)問(wèn)題,上述語(yǔ)句可寫成如下形式:;=={intx=0;{}}該程序原意是當(dāng)x50x“=”,這樣,由于x賦了一個(gè)非零值,if語(yǔ)句的判定條件總是為真,每次循環(huán)都執(zhí)行pintf語(yǔ)句。只有將“=”改為“==錯(cuò)信息“unexpectedend_offile”,以表示文件在不期望的情況下結(jié)束。這一信息為查找這 該語(yǔ)句段原意是將從鍵盤輸入的字符,只要不等于自定義的一個(gè)結(jié)束標(biāo)志符號(hào)*,就高于賦值運(yùn)算符。因此c的值由getchar()函數(shù)返回的值是否等于*而定,若不相等,c為1;在使用字符數(shù)組時(shí),編譯器自動(dòng)給字符串末尾加上一個(gè)字符串結(jié)束標(biāo)志NULL(空字符),需要增加一個(gè)單元。例如:字符串“score”需要6個(gè)單元,而不是5個(gè)。{intx,y;}floata,b;{}{intcharfloatscore;scanf("%d%s%}{floatfloatdiv(float,float);scanf("%f%}floata,b;{}charTC提供了必要的調(diào)試和工具,下面按照使用過(guò)程予以介紹②按【Ctrl】+【F8】鍵或執(zhí)行菜單“Break/watch”中的“Togglebreakpoint”操作。【Ctrl】+【F7】鍵或菜單“Break/watch”中的“Addwatch”操作,屏幕上將會(huì)彈出小窗口供輸入查看變量,如圖2.6所示,我們輸入了變量i進(jìn)行查看。圖2.6行暫停,如圖2.7所示,查看(Watch)窗口中就會(huì)顯示查看變量i的當(dāng)前值。綠色光條表圖2.7TC中通過(guò)“結(jié)束程序運(yùn)行”(Programreset)來(lái)結(jié)束程序調(diào)試。按【Ctrl】+【F2】鍵或執(zhí)行菜單Run中的“Programreset”操作實(shí)現(xiàn)。下面用單步執(zhí)行功能來(lái)看一下for語(yǔ)句的執(zhí)行流程,如圖2.8所示。程序中把for(;;)分成三行,以便觀察執(zhí)行流程。先把光標(biāo)移動(dòng)到第四行,然后按【F4】鍵或執(zhí)行菜單Run中的“GotoCursor”操作,按【Ctrl】+【F7】鍵輸入查看變量i,由于此時(shí)i未賦過(guò)值,所以圖2.83章VisualC++C屬于VisualStudio集成開(kāi)發(fā)套件中一個(gè)重要的部分。相對(duì)于傳統(tǒng)的開(kāi)發(fā)環(huán)境,VisualC++能加上VisualC++比TC的可視化更加優(yōu)越,操作更加方便,調(diào)試方法更加多樣和靈活,使得開(kāi)發(fā)語(yǔ)言為C++,但該工具同樣可以用C語(yǔ)言進(jìn)行程序設(shè)計(jì),下面我們就對(duì)VisualC++進(jìn)行“VisualC++6.0”,可啟動(dòng)VC++,或者直接雙擊桌面上的圖標(biāo)“VisualC++6.0”,也可以啟動(dòng)VC++,屏幕上將顯示,如圖3.1所示的窗口。圖3.1VC++菜單欄:包含了VisualC++6.0++:提供了VisualC++6.0最常用的一些功能,如“保存”、“打開(kāi)”和“”編輯區(qū):進(jìn)行程序編輯的主要區(qū)域,在新建一個(gè)Csourcefile后,用戶可以在該區(qū)域進(jìn)圖3.2VC++ 在打開(kāi)的VC++界面上,可直接在編輯區(qū)輸入程序,由于完全是Windows界面,輸入及修改可借助鼠標(biāo)和菜單進(jìn)行,十分方便。初學(xué)者可以參考本書(shū)部分第一章的部分簡(jiǎn)單程會(huì)要求用戶保存程序,方法同上。如圖3.4所示。圖3.3圖3.4要生成可執(zhí)行文件,可使用VC++“編譯”菜單中的“構(gòu)件”菜單項(xiàng),如圖3.5所示,也可圖3.50error(s)0表示沒(méi)有任何錯(cuò)誤和警告。需要初學(xué)者注意的是,程序有時(shí)會(huì)出現(xiàn)幾個(gè)警告性信息圖3.6假致命性錯(cuò)誤(errors),如圖3.7所示,雙擊輸出窗口某行出錯(cuò)信息,程序編輯項(xiàng)(或快捷鍵【Ctrl】+【F5)執(zhí)行程序。3.7閉該窗口(Pressanykeytocontinue。3.83.93.10圖3.11關(guān)閉工作區(qū)a.c;a.exe;在打開(kāi)的“MS-DOS方式”窗口中輸入:a123.123.133、4i、sum的值是不正確的,因?yàn)樗麄冞€未被賦值。圖中左側(cè)的箭頭表示當(dāng)前程3.14Into”按鈕或【F11】鍵。當(dāng)想結(jié)束函數(shù)的單步執(zhí)行,可按“StepOut”按鈕或【Shift】3.15點(diǎn)所在行,再按“編譯微型條”中最右面的按鈕或【F9】鍵,該操作是一個(gè)開(kāi)關(guān),按一次菜單項(xiàng),屏幕上會(huì)顯示“Breakpoints3.16所示,窗口下方列出了所有斷點(diǎn),按“RemoveAll”按鈕,將取消所有斷點(diǎn)。斷點(diǎn)通常用于調(diào)試較長(zhǎng)的程序,可以避免使用“RuntoCursor(運(yùn)行程序到光標(biāo)處暫停)或【Ctrl】+【F10】功能,因?yàn)樵摴δ芙?jīng)常要3.16VisualC++中主要的功能進(jìn)行了介紹,對(duì)于其他的操作讀者可以自己試驗(yàn),或參考有關(guān)VisualC++手冊(cè)。4練地掌握C語(yǔ)言。5章CC語(yǔ)言源程序的特點(diǎn):C程序的一般構(gòu)造形式;C語(yǔ)言;第1章習(xí)題1.9;22.6;22.9;學(xué)時(shí)數(shù):433.4;33.7;學(xué)時(shí)數(shù):444.5;44.7;44.8;學(xué)時(shí)數(shù):4掌握C語(yǔ)言中定義函數(shù)的方法;55.6;55.9;66.2;66.5;學(xué)時(shí)數(shù):477.2;88.6。學(xué)時(shí)數(shù):499.2;99.4;99.9;學(xué)時(shí)數(shù):4和較復(fù)雜的算法,目的是進(jìn)一步激發(fā)學(xué)生的程序開(kāi)發(fā),提高學(xué)生的程序設(shè)計(jì)能力。名次運(yùn)動(dòng)員編號(hào) 第6章主習(xí)題參考答C語(yǔ)言具有哪些主要特點(diǎn)C語(yǔ)言的主要用途是什么已廣泛用于編寫各種應(yīng)用領(lǐng)域的應(yīng)用軟件,如數(shù)據(jù)庫(kù)管理軟件、CAD/CAM軟件、文字處答:CC程序都是由一個(gè)或多個(gè)函數(shù)組成,其中至少有一main()main()函數(shù)開(kāi)始執(zhí)行,程序在執(zhí)行中可以調(diào)用由編譯系統(tǒng)提供的各種printf("firstsecondthird");printf("\nfirstsecondthird\n");printf("first\nsecond\nthird\n");{int printf("Pleaseinputthetwointegers:iand printf("Theresultofi*i+j*jis /*調(diào)用printf函數(shù)輸出結(jié)果}原因:int為C語(yǔ)言關(guān)鍵字;32data是由數(shù)字開(kāi)頭;one_$含有'$',不合法。{ printf("\nPleaseinputafloatnumber:"); printf("\nThereciprocal }{ (x,y,z:\n"); printf("三個(gè)整數(shù)%d+%d+%d的和是:%d\n",x,y,z,sum);}TurboC{ TurboC }()初學(xué)者寫為%d或%x,詳細(xì)請(qǐng)參見(jiàn)主表2.7.1。1.9,scanf函數(shù)中,3個(gè)整數(shù)格式符%d3個(gè)整數(shù)時(shí)也應(yīng)該用逗號(hào)分開(kāi),而不是空格等其他符號(hào),否則會(huì)發(fā)生錯(cuò)誤。詳細(xì)請(qǐng)參見(jiàn)主2.7.2小()()1.81.9中,printf()CC語(yǔ)言的語(yǔ)法和算法知識(shí),還 將本次上機(jī)編程內(nèi)容到該文件夾中。如果編程是在機(jī)進(jìn)行,在下機(jī)時(shí),應(yīng)該將程序文件夾拷貝到U盤、移動(dòng)硬盤等設(shè)備中帶走。規(guī)范有利于程序的修改和查找,構(gòu)、聯(lián)合和枚舉。詳細(xì)請(qǐng)參見(jiàn)主2.1節(jié)。答:原因是:1.編譯系統(tǒng)會(huì)根據(jù)定義為變量分配內(nèi)存空間,分配空間的大小與數(shù)據(jù)類型有關(guān);2.系統(tǒng)可以根據(jù)變量的類型檢查對(duì)該變量的運(yùn)算是否合法,這樣就給程序員調(diào)試程序帶來(lái)方便。詳細(xì)參見(jiàn)主2.3節(jié)。 答:合法的有:123,0892和0xabc是整型常量;3. 但0.618E—6不規(guī)范;'M'和'\n'是字符常量;"Morning!"是字符串常量。3.8e—3.14不合法。詳細(xì)參見(jiàn)主2.2節(jié)。 該單元中;而字符串常量是將字符,并自動(dòng)在其末尾加上'\0'作為字符串結(jié)束標(biāo)志, 符,\n為換行,\\為反斜杠字符,\064ASCII52的字符'4'。詳細(xì)參見(jiàn)主2.2。 {intb=10;} {intx=30+x=30*5%8;}charcl,int (4)char(5)int (6)Int (7)inta,x;floatINTint和float;②關(guān)鍵字和參數(shù)間應(yīng)該空格,floatxcharif;錯(cuò)誤,if是Cvoidmain(){}符N和十進(jìn)制整數(shù)78轉(zhuǎn)換為八進(jìn)制的整數(shù)116。voidmain(){chari=′a′;charj=′b′;chark=′c′;char}chari=′a′;charj=′b′;chark=′c′;charm=′\101′;charinti=′a′;intj=′b′;intk=99;intm=′\101′;int是八進(jìn)制轉(zhuǎn)義字符,輸出的是ASCII碼為6578對(duì)應(yīng)的控制字符'A'和'N'。為這些字符對(duì)應(yīng)的ASCII碼。材2.5節(jié)。若(1(z>=y>=x)?1:0(1)0; (1)i小于jk(2)i和jk(3)i和jk(1<j||<k2i<k&&i<j3<k|jk4inmod(i,2)=1(6)i%j!=0 int { y=25;z=0;printf(″⑵%d\n″,x|y&~z);}1voidmain(){inti,j;floatk,m;scanf(″%f##%f″,&k,&m);}答:輸入:i=40**j=7856.89##2.3c1=′A′,c2=B′。請(qǐng)問(wèn)在鍵盤上如何輸入?答 /*Thisisaprogramwithsomeerrors.*/#include″stdio.h″voidmain{intx,y;} main(){ } main(){ } {intx,y,z;printf(″(1)%d\n″,x<y?y:x);}

x>=y,結(jié)果是1,再求1>=x,所以結(jié)果為0。{float //定義area為面積,per }{float }2.52%{float printf("sumis}C語(yǔ)言的初學(xué)者在編程序的時(shí)候,都容易忘記()和{}的匹配,往往缺小寫等。C語(yǔ)言名規(guī)范也不唯一,讀者可以根據(jù)實(shí)際需要選擇不同名方式。{int);}

if(i%j),直接使用了運(yùn)算結(jié)果進(jìn)行temp=i%jtemp進(jìn){int}{floatelseif(weight<=nomalw5)}

100i(i1)…1 {intprintf("pleaseinputainteger:\n");elseif(i>10){}

printf("resultis}{intprintf("pleaseinputainteger:\n");{}{}

printf("resultis}結(jié)果分析:第一種算法較容易理解;第二種算法中,需要大家注意的是當(dāng)(5<i<=10{int{}}初始值是32768int變量的取值范圍是什么?是3276832768。所以將max初始為32768max初始為main(){inti,y;printf(Pleaseinputafloatandainteger:");}{charch,operat;printf("pleaseinputadigitalexpression:");{{default:}}}main(){intn,i,j;double{for{}}}main(){int {}while(!(temp>=m));}以使用while、if等條件判斷語(yǔ)句完成,請(qǐng)讀者思考。{intnumber,digit;{}進(jìn)該程序,使它在輸入負(fù)數(shù)時(shí)也能工作。例如,如果輸入的數(shù)是4567,則輸出7654。main(){intif(number<0)sign=1;{ }3.10我們已經(jīng)了解到了怎么樣求出一個(gè)整數(shù)的各位,在本題中該方main(){inti,j,k;staticint printf("Pleaseinputashorttypeinteger:");{ while { }}7k=k*10number能與十、百、千、萬(wàn)……各輸入3567,輸出: 適合使用switch-case語(yǔ)句。main(){staticintcount;printf("Pleaseinputainteger:"); {{case0:printf("zero");case1:printf("one");case2:printf("two");case3:printf("three");case4:printf("four");case5:printf("five");case6:printf("six");case7:printf("seven");case8:printf("eight");case9:printf("nine} for(i=count;i<5;i++)printf("zero");}{{}}main(){inti=1;while(count<=10){{}}}main(){floatintsign;//printf("\nPleaseinputagroupofnumbers(endsign:0):");printf("Thefirstnumberis:%f\n",number);if(number<0)while{if((sign==1)&&(number<0)) printf("%9.3f",number); printf("%9.3f",number);}}main(){intintprintf("Pleaseinputtwointegers:");//{} {} //求出結(jié)}main(){intprintf("Pleaseinputtwointegers:");printf("Beingshiftednumberisi=0x%x\n",i);if(j>0){}{

printf("Circleleftshiftbits:%d\n",j); j=j;//需要先對(duì)j取絕對(duì)值printf("Circlerightshiftbits:%d\n",j);}printf("Aftershift:}main(){intint printf("Pleaseinputtwointegers:");printf("The%dthbitof%d}

printf("The%dthbitof%dwhiledo-while語(yǔ)句在用法上有區(qū)別,do-while語(yǔ)句需要用“;本章主要學(xué)習(xí)了各種控制語(yǔ)句的使用。在較為復(fù)雜的條件判斷語(yǔ)句中,if-else、case語(yǔ)語(yǔ)句進(jìn)行不同長(zhǎng)度的縮進(jìn),如case語(yǔ)句;對(duì)稱指一組相匹配的語(yǔ)句進(jìn)行相同的縮進(jìn),比如1,6,4,5,8。解題思路:按照主的算法提示,我們只要枚舉數(shù)組的下標(biāo),從0到數(shù)組長(zhǎng)度N的{inti;//定義循環(huán)變量{}{}}a[i]a[Ni1]N1,交換操作將進(jìn)行兩次:①a[ia[Ni1],②a[i]←→a[Ni1],最終的結(jié)果將不變。很多同學(xué)在設(shè)計(jì)算法的時(shí)候temp=a;//將atemp //將bb=temp;//tempaN1NN1N依次編號(hào)。第一個(gè)人(1號(hào))將燈全部打開(kāi),第二個(gè)人(2號(hào))22的倍數(shù)的燈關(guān)閉。第三個(gè)人(3個(gè)人操作之后,哪幾盞燈是點(diǎn)亮的?試編程求解這個(gè)問(wèn)題,N由鍵盤輸入。{intLamp[MaxN+1]={0};//初始化每盞燈的狀態(tài),0為關(guān)閉,1intn;//定義燈數(shù)量}運(yùn)行結(jié)果為:請(qǐng)輸入燈數(shù)量1491、0分別表示燈的明滅;二是需要對(duì)哪些燈進(jìn)行處理,這里使Lamp[j]=Lamp[j解題思路:首先主的算法提示按步分解數(shù)組下標(biāo)為0的元素不排序數(shù);用數(shù)組a待排序元素,n待排序的元素的個(gè)數(shù)i1到n1a[i]a[n]中的最小值,使用以下的方法:令minValue表示最小值,初值為更換minValue和minNum。{inta[n+1]={0};//用數(shù)組待排序的inti;//intminValue=0;//最小值{}{{}a[0]=a[i];//以a[0]a[i]a[minNum]}}用中,用數(shù)組一個(gè)序列時(shí),常采用這種方法,將下標(biāo)0的元素空置不用,而用下標(biāo)i對(duì)應(yīng)第i個(gè)元素。當(dāng)然,在定義數(shù)組長(zhǎng)度時(shí),其長(zhǎng)度要比序列的長(zhǎng)度大1。n21,2,3,…,n2這些數(shù)字放到這些格子里,使其每行的和、每列的和及兩條對(duì)角線的和都是一個(gè)相同的數(shù)。試編程由鍵盤輸入一個(gè)奇數(shù)n,輸出一個(gè)n階幻方。解題思路:首先主的算法提示按步分解填數(shù)字開(kāi)始,k開(kāi)始循環(huán),完成下面的(5)到(10;ka[i][j]ki,ji<0j<ni=n1,表示后一數(shù)放到與右上格同的下面,即i=1,j=n1;{intk=1;//定義賦值的數(shù),從1到25inti=0;{ {}{}}{}}AbcD,則輸出為DcbA。{charstr[100]="";//定義字符數(shù)組,字符inti;//定義循環(huán)變量printf("\n逆序輸出的結(jié)果是:");}{charstr[200];//定義字符數(shù)組,字符intintspace=0;//空格標(biāo)志,0表示新空格,1{')//{{}}

}:%}并序判斷并輸出得到最高分的學(xué)生的信息。需注意的是結(jié)構(gòu)數(shù)組的長(zhǎng)度要大于學(xué)生人數(shù)的最大值,以免出現(xiàn)數(shù)組越界錯(cuò)誤。struct 結(jié)構(gòu)date{intyear; intmonth; intday; struct {charname[20]; int; structdate double double Cdouble constint void student int n為學(xué)生人數(shù),idoubleavgC=0,maxC=0,minC=100; C語(yǔ)言平均成績(jī)、最高分、最低分doubleavgCal=0,maxCal=0,minCal=100; printf("請(qǐng)輸入學(xué)生人數(shù)(<=%d):",MaxStudent);scanf("%d",&n); { printf("(1男0女 printf("\t年printf("\t月printf("\t日 printf("C語(yǔ)言成績(jī):\t");scanf("%lf",&stus[i].C); 輸入C語(yǔ)言成績(jī)printf("微積分成績(jī):\t");scanf("%lf",&stus[i].Calculous); 累加C的成績(jī) 統(tǒng)計(jì)C語(yǔ)言的最低分} printf("%10s\t\t%14s\t%8s\t%8s\n","","生日","C","微積分");printf("%10s\t%2d\t%4d年%2d月%2d日\(chéng)t%8.4f\t%8.4f\n", printf("%10s\t\t%14s\t%8s\t%8s\n","","生日","C","微積分");printf("%10s\t%2d\t%4d年%2d月%2d日\(chéng)t%8.4f\t%8.4f\n", }量橫坐標(biāo)x和縱坐標(biāo)y唯一確定這個(gè)點(diǎn)。{void{doubleelseif(fabs((p3.yp1.y)/(p3.xp1.x)p2.yp1.y)/(p2.yp1.y))<1e7)//直線方程}用一個(gè)數(shù)組存放的信息,每本書(shū)包含書(shū)名、作者、年月、、借出structBookInfo//定義一本書(shū)的信息{charcharpublisher[100];intbrownum;intvoid{inti;int{printf("日期:\n");printf(":\n");}{{}}{printf(":\t%s\n",books[i].publisher);}}{inta[n]={10,2,8,22,16,4,10,6,14,20};//初始化數(shù)組,用于戰(zhàn)士的inti,k=0;//{}間來(lái)進(jìn)行,這樣不滿足C程序高效性和擴(kuò)展性的特點(diǎn)。作者使用的這種算法只多用了一個(gè)整數(shù)單元,先將最后一位戰(zhàn)士的數(shù)保存下位保齡球計(jì)分問(wèn)題。(以下省略10,則本輪得分即為兩次滾得的分?jǐn)?shù)之和;否則,本輪得分與下一輪依次計(jì)算本輪前兩輪的得分及本輪的暫時(shí)得分和狀態(tài),當(dāng)然如果本輪的狀態(tài)為normal,則constintspare=2;voidmain(){intgame[10]={0};//數(shù)組各輪得intstate1=0,state2=0;//inti,score,state;//i為循環(huán)變量,score當(dāng)前得分,state為本輪狀{{}}{}else{}{}}constintnum=1898;//累加和的值voidmain(){intprimesum=0;//累加和{}{printf("%d與%d之間的素?cái)?shù)差之和為}}個(gè)優(yōu)秀的算法才是設(shè)計(jì)一個(gè)完整的程序最重要的。面我們已經(jīng)了解到,程序錯(cuò)誤主q=*p:q是指針,*p是指針p細(xì)內(nèi)容請(qǐng)參考主5.1節(jié)。main{intchar}{char},pd,它由pd[0]~pd[3]4{char}{intintprintf("Thesumis}main{intint*p;for{}printf("Thesumis}main{chardata[]="Therearesomemistakesintheprogram";char*point;inti,length;}{chardata[]="therearesomemistakesintheprogram";char*point;inti,length;}string1string2string1stringl="thedaythemonththeyear";是同時(shí)進(jìn)行的。string1開(kāi)始循環(huán)后,string2string2的首string1中循環(huán)到的字母相同,如果相同,則兩個(gè)字符串開(kāi)始同時(shí)循環(huán),并記錄string2可能多次出現(xiàn),所以需要一個(gè)數(shù)組來(lái)保存多{charstring1[100],string2[10];//定義數(shù)組兩個(gè)字符串,暫定第一個(gè)在100內(nèi),第二個(gè)在10內(nèi){{}{{}{}}printf("出現(xiàn)%d次,起始位置分別是:",i);}程序分析:q=string2q進(jìn)行多次判斷,并且防止錯(cuò)誤。例如:q和p123個(gè)不同,請(qǐng)定義一個(gè)指針變量*++point的值等于什么?{charlongintprintf("pleaseenterthebeginningandtheendaddrinhex\n");{{ }}}算法分析:判斷字母和數(shù)字的方法是依靠ASCII碼進(jìn)行,所以對(duì)字符串中的每個(gè){charstr[100];//定義一個(gè)數(shù)組字符charint{}char類型的變量,初學(xué)者往往理解為是不能直接比較大小的,實(shí)際上直接比較大{char{ int{}}答:輸出結(jié)果為:234234{char*p,*q;{

{}}}

原型:voidtran(intarray[5][3]))。intb[3][5];{inti,j;}{intint{}{}}void,且不需要再使用return返回結(jié)果。count(char*str))。intb[3];//定義外部變量,用于各種字符的個(gè)voidcount(char*str)//{{}}void{charprintf("字符串%s中",str);printf("\n字母?jìng)€(gè)數(shù)}義一個(gè)字符數(shù)組str2[],用于判斷處理后的字符串。字符串str開(kāi)始循環(huán)后,如果是字{inti=0;{{}{}}}void{char}3153=1+125+27。寫一個(gè)函數(shù),找出所有滿足條件的數(shù)。(參考函數(shù)原型:intfind(intn))intfind(intn){inti,j,k;//i表示百位,j表示十位,kreturn}void{int{}}運(yùn)行結(jié)果 floatx1,x2;voids(inta,intb,int{ints;}{intif(a==0)//a0{}{}}

(通過(guò)調(diào)用對(duì)兩個(gè)正整數(shù)求最小公倍數(shù)的函數(shù)實(shí)現(xiàn))(參考函數(shù)原型:intfind(inti,intj))intfind(inti,int{int{}

{}{}

intprintf("5個(gè)整數(shù)的最小公倍數(shù)是jj的所有數(shù)進(jìn)行循環(huán)。在每求需要注意是的,jjj的值賦給一個(gè)中間變量s,利用s來(lái)進(jìn)行減操作,讓兩步操作不相互影響。intk[20];voidfind(int{inti,n,s;//i{{}}{}}{

int}約數(shù)(除了它本身以外)的和用函數(shù)實(shí)現(xiàn)(參考函數(shù)原型:intfactor(intj))。intk[40];intfactor(intj){for{{ 將每個(gè)因子賦給數(shù)組}for return}void{intfor(int{for(int{}}}函數(shù)實(shí)現(xiàn)將輸入的一組數(shù)據(jù)逆序輸出(參考函數(shù)原型:voidisort(inta[]))#defineN5voidisort(int{inti,temp;{}}{int}數(shù)原型:intmin(inta]),intminlocat(inta[])intmin(inta[])//{int{}return}intminlocat(inta[])//{int{{}}return}{intb,c;inti;}cmp(chars1[],chars2[]))。#defineN100intcmp(chars1[],char{v=s1[i]return}{intv;}copy(chars1[],chars2[]))voidcopy(chars1[],char{inti;}{chars1[100],s2[100];}分、最高分及平均成績(jī)利用子函數(shù)實(shí)現(xiàn)(參考函數(shù)原型:voidminmax(ints)#defineN10floatav;voidminmax(int{inti;{}}{int}np的情況下,計(jì)算并輸出結(jié)果(能輸出具體的組合情況則更好)(參考函數(shù)原型:floatf(intn))Cfloatf(intn){inti;{}return}{floatc;int{}}

01之間的實(shí)數(shù)(利用標(biāo)1000個(gè)數(shù)據(jù)點(diǎn)做試驗(yàn)(參考函數(shù)原型:floatpi(intn))。#defineN100floatpi(intn){long{;}}{float}(1rand()#defineN1000floatjf(intn){floatx,f,s=0,i;{}return}{float}定義比較兩個(gè)(假設(shè)均為18位,從第7到第14位代表出生年還是使用結(jié)構(gòu)指針參數(shù)(以出生年月日比較兩個(gè)的參考函數(shù)原型:intcmpyyyymmdd(char*s1,char*s2))。intcmpyyyymmdd(char*s1,char{intchar{temps1[i]=*(s1+6);//714}returnflag;}{intflag;}

struct{intnum; floatscore;}參考函數(shù)原型:voidsort(structstustructstu{intnum; floatscore;}boy[5]={{101,"Liming",'M',45},{102,"Zhangvoidsort(structstu{intchartemp char{{{tempnum=(ps+j)>num;(ps+j)>num=(ps+i)>num;(ps+i)>num=tempnum;tempname=(ps+j)>name;(ps+j)>name=(ps+i)>name;(ps+i)>name=tempname; =(ps+j)> ;(ps+j)> =(ps+i)> ;(ps+i)> tempscore=(ps+j)>score;(ps+j)>score=(ps+i)>score;(ps+i)>score=tempscore;}}}}{inti;{printf("學(xué)號(hào):%d,:%s,:%c,成績(jī):%5.2f\n",ps>num,ps>name,ps> }}函數(shù)中進(jìn)行錯(cuò)誤查找和修改,同時(shí)也滿足了C語(yǔ)言模塊化開(kāi)發(fā)的要求。20main()調(diào)用該函數(shù),并輸出結(jié)果。(要求:使用全局變量maxmin返回最大值和最小值)voidfun(intb[],intn){inti;}{int{}}intgysh,gbsh;//gysh為公約數(shù),gbshvoidfunc(inta,int{int{}}{int} {inti,j,k,temp,*p,n=10;{}}程序分析:本題也可以使用和習(xí)題7.3相似。文件一:主函數(shù)inta[10];{int}voidsort(){int{}}inta=10;void{externb;}intintx=100;inty=200;{intx=155;}#include<stdio.h>voidfun(inti,intj)voidmain(){voidfun(int,int);inti,j,k,l,x,y; }voidfun(inti,int{intx,y; }xy的值,在函數(shù)調(diào)用后,并不改變i和j的值。voidmain(){voidfloata=1.0,b=2.0,c=3.0;}void{intstaticintc=1;}inta;staticintb;void{staticintc;inte;}#defineSQUARE1(x)#defineSQUARE2(x)┆b=#defineMAX(a,b)(a>ba:b//二目運(yùn)算{intprintf("請(qǐng)輸入3個(gè)整數(shù):");max=MAX(a,b);//求a,b的最大值max=MAX(max,c);//max和c的最大值}{float}#defineprintf_msprintf("Inputtwointegers:")#defineinput(a,b)scanf("%d,%d",&a,&b)#defineshang(a,b)((a)/(b)){int}成了演員不能完成的工作,同時(shí)也讓影片更加。在C語(yǔ)言當(dāng)中,宏就扮演了一個(gè)unionbody{struct{unsignedcharunsignedintunionbodyswap(unionbody{unionbodyreturny;}{unionbody}改寫例8-15程序,將設(shè)置顯示器工作模式改為顯示器當(dāng)前工作模式。15號(hào)功能為讀當(dāng)前的顯示器工作模式。中斷服務(wù)后,AL中的返回int{intx;}{int}{union{{int

intinte.b=2;}enum{ half_dollar: {inti;} b11,b21,b30,b41modem{struct{unsignedb0:1;unsignedb1:1;unsignedb2:1;unsignedb3:1;unsigned}是程序設(shè)計(jì)的關(guān)鍵因一。{charch;elseif(argc>2)printf("Toomanyargumentsto{}{

{}}}“SoftwareEngineering”’寫入文件中去的程序。voidmain(){intFILE {}

{}}main(intargc,char{charch;int ifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){

}{count判斷后進(jìn)行統(tǒng)計(jì)}printf("File--%shas%d}main(intargc,char{charch;ifelseif{}elseif{

}{{putc(ch,newf寫入新文件中}}}重寫主9-6.cpp程序,將由命令行參數(shù)指定的文件在顯示屏上輸出,計(jì)算并{charch;intifelseif(argc>2)printf("Toomanyargumentstoelseif{

}{{if(ch=='\n')}}printf("\nFile--%s:has%dlines,%dchars.\n",}{int}{charch;intifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){

}{{if(ch=='\n'){if}}}printf("Thelongestlinehas%dchars.\n",max1);}#defineMAX5main(intargc,char{charc1,c2;intcrow=0,cchar=0;inti=0;intifprintf("usage:linenumfilename\n");{}elseif{

{{while{if{}}}}printf("line%d:startpositionis%d\n",row[j][0],row[j][1]);}main(intargc,char{charch;ifprintf("usage:linenumfilename\n");{}elseif{

}}{charch;intm,n;ifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){

}{{if(ch=='\n')}}}果是其他字符,則顯示該文件的下20行內(nèi)容。main(intargc,char{FILE*fp;intifelseif(argc>2)elseif((fp=fopen(argv[1],"r"))==NULL){

}{{if(c1=='\n'){}}}}參考程序{intintnCount,nRows,nCols,i,j,times; intGraphDriver=DETECT,GraphMode;for(i=0;i<100;i++) for(j=0;j<100;j++)initgraph(&GraphDriver,&GraphMode/*初始化屏幕顯示*/ for(times=1;times<200;times++){for{for{{case3:putpixel(nCols+210,120+nRows,BLACK);case2:resData[nRows][nCols]=orgData[nRows][nCols];}}}for}}struct{intintstruct{intfirst_num;intthird_num;intforth_num;intfifth_num;intsixth_num;inteighth_num;intninth_num;inttenth_num;NYNYadd添加、del刪除和save{charname[30];charmajor[30];charphone[20];charhome[30];}{{{printf("\noutofmemory");}inputs("entermajor",info>major,30);inputs("enterphone",info>phone,20);inputs("enterhome",info>home,30);}}inputs(char*prompt,char*s,intcount)//{{printf("\ntoo}voidsearch()//查找函數(shù),使用查{charstructaddress*info,*find();printf("not}

{structaddressFILE*fp;{printf("cannotopenfile");}}gStyle(1,2,2,1,2)=4表示與坐標(biāo)(2,2)在第1個(gè)方向上的最近的空格數(shù)為4。ConstDIR_UP=ConstDIR_UPRIGHT=ConstDIR_RIGHT=ConstDIR_RIGHTDOWN=ConstDIR_DOWN=5ConstDIR_LEFT=7gStyle(2,4,4,1,1)=1在(4,4)點(diǎn)相鄰的上方白棋數(shù)為1;gStyle(1,4,4,3,1)=2在(4,4)點(diǎn)相鄰的右方黑棋數(shù)為2;Fn表示先手n個(gè)棋子的活棋型,如:F4表示先手活四;Fn'n個(gè)棋子的沖棋型,如:F4'表示先手沖四;Lnn個(gè)棋子的活棋型,如:L3表示后手活三;Lnn個(gè)棋子的沖棋型,如:L3'表示后手沖三。AI也就不一樣。最后我們把分值最小的L1'值定為1,則我們就得到了下面各種棋型的分值,由C語(yǔ)言表示為:F數(shù)組表示先手,第一個(gè)下標(biāo)為0時(shí)表示沖型,第二個(gè)下標(biāo)表示棋子數(shù),則F2'對(duì)應(yīng)F[0][2];L0L2對(duì)應(yīng)F[1][2]。棋型的分值關(guān)系確定好了以后,把每一個(gè)可下點(diǎn)的四個(gè)方向的棋型值相加(包樣電腦的AI就更高了。 附錄一C使用了未定義的變量。C語(yǔ)言中對(duì)變量應(yīng)該先定義再使用,所有常量和變量必須float類型變量進(jìn)行求余scanf輸入變量時(shí)忘記加地址運(yùn)算符“&VC編譯器不能檢查,但scanf("%d,%d",&a,&b)3(空格)4,則會(huì)出現(xiàn)錯(cuò)誤,應(yīng)該輸入3,4。是n1,數(shù)組下標(biāo)由0開(kāi)始。floatdouble型遺漏或者沒(méi)有正確頭文件。應(yīng)該使用#include語(yǔ)句進(jìn)行①根據(jù)語(yǔ)則書(shū)寫雙精度數(shù)字。盡管C語(yǔ)言會(huì)自動(dòng)把整型轉(zhuǎn)換成雙精度型,但書(shū)寫雙精度型是個(gè)好習(xí)慣,讓C語(yǔ)言做強(qiáng)行轉(zhuǎn)換效率不高,有可能導(dǎo)致轉(zhuǎn)換錯(cuò)誤。②對(duì)二維或者數(shù)組定義和方法不對(duì)多個(gè)文件連接時(shí),應(yīng)該生成或者指定項(xiàng)目文件(.PRJ文件,否則編譯器無(wú)法查誤數(shù)目大于某一

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論