




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
概述
實(shí)驗(yàn)一熟悉C程序的開(kāi)發(fā)環(huán)境
實(shí)驗(yàn)二
常量、變量及數(shù)據(jù)類型
實(shí)驗(yàn)三運(yùn)算符與表達(dá)式
實(shí)驗(yàn)四基本輸入、輸出
實(shí)驗(yàn)五選擇結(jié)構(gòu)程序設(shè)計(jì)
實(shí)驗(yàn)六循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
實(shí)驗(yàn)七數(shù)組
實(shí)驗(yàn)八字符數(shù)組與字符串
實(shí)驗(yàn)九函數(shù)
實(shí)驗(yàn)十結(jié)構(gòu)體與共用體
實(shí)驗(yàn)十一指針
實(shí)驗(yàn)十二文件管理
實(shí)驗(yàn)十三編譯預(yù)處理
第三部分
上機(jī)實(shí)驗(yàn)指導(dǎo)概
述一、實(shí)驗(yàn)?zāi)康腃語(yǔ)言程序設(shè)計(jì)課程上機(jī)實(shí)驗(yàn)的目的是讓學(xué)生加深對(duì)課堂講授內(nèi)容的理解,培養(yǎng)、訓(xùn)練學(xué)生程序設(shè)計(jì)和程序調(diào)試的能力。在每個(gè)實(shí)驗(yàn)中,除了對(duì)程序設(shè)計(jì)提出要求之外,對(duì)程序的調(diào)試方法也提出具體的要求,這樣就可以逐步培養(yǎng)學(xué)生分析、判斷、改正錯(cuò)誤的能力。“程序設(shè)計(jì)”是一門實(shí)踐性很強(qiáng)的課程,必須十分重視實(shí)踐環(huán)節(jié),必須保證有足夠的上機(jī)實(shí)驗(yàn)時(shí)間,最好能做到授課學(xué)時(shí)與實(shí)踐學(xué)時(shí)之比為1∶1。除了教學(xué)所安排的上機(jī)時(shí)間以外,還應(yīng)當(dāng)提倡學(xué)生多上機(jī)實(shí)踐。C語(yǔ)言程序設(shè)計(jì)課程上機(jī)實(shí)驗(yàn)的目的可以概括為如下幾個(gè)方面。1.加深對(duì)講授內(nèi)容的理解課堂上要講授許多關(guān)于C語(yǔ)言的語(yǔ)法規(guī)則,只記住這些語(yǔ)法規(guī)則是遠(yuǎn)遠(yuǎn)不夠的。學(xué)習(xí)C語(yǔ)言,不僅要熟練掌握其語(yǔ)言本身的特點(diǎn)、語(yǔ)法規(guī)則等,而且更重要的是要掌握分析問(wèn)題、解決問(wèn)題的方法,即鍛煉分析、分解及最終歸納整理出算法的能力。通過(guò)多次上機(jī)實(shí)踐就能自然、熟練地理解和掌握。2.熟練使用集成開(kāi)發(fā)環(huán)境程序的開(kāi)發(fā)環(huán)境包括所用的計(jì)算機(jī)系統(tǒng)的硬件環(huán)境和軟件環(huán)境。一個(gè)C語(yǔ)言源程序總是在一定的硬件和軟件環(huán)境支持下運(yùn)行的。讀者必須了解所使用計(jì)算機(jī)系統(tǒng)的基本操作方法,了解在該系統(tǒng)上如何編輯、編譯、連接和運(yùn)行一個(gè)C語(yǔ)言程序。3.學(xué)會(huì)調(diào)試程序的一般方法在程序設(shè)計(jì)中,要求掌握如何編寫程序并上機(jī)調(diào)試通過(guò)。因此,調(diào)試程序本身是程序設(shè)計(jì)課程一個(gè)重要的內(nèi)容和基本要求。調(diào)試程序中,要善于發(fā)現(xiàn)程序中的錯(cuò)誤,并且能很快地排除這些錯(cuò)誤,使程序能正確運(yùn)行。調(diào)試程序固然可以學(xué)習(xí)借鑒他人的經(jīng)驗(yàn),但主要還是要通過(guò)自己的直接實(shí)踐來(lái)積累經(jīng)驗(yàn),而且有些經(jīng)驗(yàn)是只可意會(huì)不可言傳的,別人的經(jīng)驗(yàn)不能代替自己的經(jīng)驗(yàn)。調(diào)試程序的能力是每個(gè)程序設(shè)計(jì)人員應(yīng)當(dāng)具備的一項(xiàng)基本能力。C語(yǔ)言程序設(shè)計(jì)的學(xué)習(xí)必須靈活主動(dòng)。也就是說(shuō),在做實(shí)驗(yàn)時(shí)千萬(wàn)不要在程序通過(guò)后就認(rèn)為完成任務(wù)了,而應(yīng)當(dāng)在已通過(guò)的程序基礎(chǔ)上做些改動(dòng),再進(jìn)行編譯、鏈接和運(yùn)行。有時(shí)候還需要設(shè)計(jì)一些測(cè)試的數(shù)據(jù)來(lái)驗(yàn)證程序是否正確,這樣的學(xué)習(xí)才會(huì)有真正的收獲。二、實(shí)驗(yàn)要求上機(jī)實(shí)驗(yàn)一般經(jīng)歷上機(jī)前的準(zhǔn)備(編程)、上機(jī)調(diào)試運(yùn)行和實(shí)驗(yàn)后的總結(jié)三個(gè)步驟。1.上機(jī)實(shí)驗(yàn)前的準(zhǔn)備工作在上機(jī)實(shí)驗(yàn)前應(yīng)做好準(zhǔn)備工作,以提高上機(jī)實(shí)驗(yàn)的效率。準(zhǔn)備工作主要包括以下幾個(gè)方面:(1)了解所用的計(jì)算機(jī)系統(tǒng)(包括C編譯系統(tǒng))的性能和使用方法。(2)復(fù)習(xí)與本實(shí)驗(yàn)有關(guān)的教學(xué)內(nèi)容,掌握本章的主要知識(shí)點(diǎn)。(3)按任課教師的要求獨(dú)立完成上機(jī)程序的編寫。手寫程序應(yīng)整齊清晰,并進(jìn)行人工檢查。(4)對(duì)程序中有疑問(wèn)且不能獨(dú)立解決的地方,應(yīng)做出標(biāo)記,以便在上機(jī)時(shí)給予注意或求助于實(shí)驗(yàn)指導(dǎo)教師。(5)準(zhǔn)備好運(yùn)行、調(diào)試和測(cè)試所需的數(shù)據(jù)。(6)準(zhǔn)備實(shí)驗(yàn)報(bào)告。2.上機(jī)實(shí)驗(yàn)的步驟及實(shí)驗(yàn)內(nèi)容安排上機(jī)實(shí)驗(yàn)時(shí)應(yīng)該一人一組,獨(dú)立上機(jī)。一般上機(jī)實(shí)驗(yàn)的步驟如下:(1)啟動(dòng)操作系統(tǒng)。(2)進(jìn)入C工作環(huán)境(例如:TurboC2.0、TurboC++3.0、VisualC++6.0或Win-TC集成環(huán)境)。(3)輸入自己編好的程序代碼。(4)人工檢查一遍已輸入的程序是否有錯(cuò),發(fā)現(xiàn)有錯(cuò),應(yīng)及時(shí)改正。(5)進(jìn)行編譯和鏈接。如果在編譯和鏈接過(guò)程中發(fā)現(xiàn)錯(cuò)誤,屏幕上會(huì)出現(xiàn)“報(bào)錯(cuò)信息”,根據(jù)提示找到出錯(cuò)的位置和原因,并及時(shí)加以改正,然后再進(jìn)行編譯和鏈接。如此反復(fù),直到順利通過(guò)為止。(6)運(yùn)行程序并分析運(yùn)行結(jié)果是否合理和正確。在運(yùn)行時(shí)要注意,當(dāng)輸入不同的數(shù)據(jù)時(shí)所得到的結(jié)果是否正確。(7)輸出程序清單和運(yùn)行結(jié)果。(8)對(duì)程序的運(yùn)行過(guò)程進(jìn)行記錄和思考,并記載在實(shí)驗(yàn)報(bào)告上。實(shí)驗(yàn)內(nèi)容的安排可根據(jù)習(xí)題量的多少和上機(jī)時(shí)間的長(zhǎng)短,教師可以指定習(xí)題的全部或一部分作為上機(jī)實(shí)驗(yàn)題。本書共包括13個(gè)實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)對(duì)應(yīng)于本書配套教材(《C語(yǔ)言程序設(shè)計(jì)》,柴世紅主編,西安電子科技大學(xué)出版社2011年2月出版)中一個(gè)完整的知識(shí)內(nèi)容,并包括多個(gè)備選的實(shí)驗(yàn)題目,題目設(shè)計(jì)由易到難、由淺入深,在每個(gè)完整的知識(shí)點(diǎn)后增加了實(shí)驗(yàn)思考題,使學(xué)生能更深刻地理解和掌握程序設(shè)計(jì)的算法和思想,在組織上機(jī)實(shí)驗(yàn)時(shí)可以根據(jù)條件做必要的調(diào)整,增加或減少某些部分的內(nèi)容。學(xué)生應(yīng)在實(shí)驗(yàn)前將教師指定的題目編好程序,然后上機(jī)輸入和調(diào)試。有些題目的算法可能不止一種,學(xué)生應(yīng)該嘗試使用多種算法解決同一個(gè)問(wèn)題,并比較不同算法的優(yōu)劣。3.整理實(shí)驗(yàn)結(jié)果并寫出實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)結(jié)束后,要整理實(shí)驗(yàn)結(jié)果并進(jìn)行認(rèn)真分析和總結(jié),根據(jù)教師要求寫出實(shí)驗(yàn)報(bào)告。書寫實(shí)驗(yàn)報(bào)告是整個(gè)實(shí)驗(yàn)過(guò)程的一個(gè)重要環(huán)節(jié)。通過(guò)寫實(shí)驗(yàn)報(bào)告,可以對(duì)整個(gè)實(shí)驗(yàn)作一個(gè)總結(jié),然后不斷積累經(jīng)驗(yàn),提高程序設(shè)計(jì)和調(diào)試的能力。實(shí)驗(yàn)報(bào)告主要包含以下內(nèi)容:(1)實(shí)驗(yàn)?zāi)康?。?shí)驗(yàn)的目的就是深入理解和掌握課程教學(xué)中的有關(guān)基本概念,應(yīng)用基本技術(shù)解決實(shí)際問(wèn)題,從而進(jìn)一步提高分析問(wèn)題和解決問(wèn)題的能力。因此,學(xué)生必須明確實(shí)驗(yàn)的目的。(2)實(shí)驗(yàn)內(nèi)容。每個(gè)實(shí)驗(yàn)都安排了多個(gè)實(shí)驗(yàn)題目,學(xué)生事先必須作好準(zhǔn)備,每個(gè)實(shí)驗(yàn)大約2學(xué)時(shí)做完,學(xué)生按照老師的要求完成指定的實(shí)驗(yàn)題目。(3)算法分析及主要語(yǔ)句說(shuō)明。本書中實(shí)驗(yàn)的安排由易到難,對(duì)一些有難度的題目給出了算法分析和程序注釋。在寫實(shí)驗(yàn)報(bào)告時(shí),對(duì)于書中未給出算法分析的題目,自己要給出算法分析及主要語(yǔ)句的說(shuō)明。
(4)完整的程序清單。需提供完整、清晰的程序代碼。(5)分析與思考。這部分的內(nèi)容包括:調(diào)試過(guò)程中遇到的問(wèn)題及解決辦法;調(diào)試程序的心得與體會(huì);對(duì)于最終未完成調(diào)試的題目,要認(rèn)真找出錯(cuò)誤并分析原因等。實(shí)驗(yàn)一熟悉C程序的開(kāi)發(fā)環(huán)境
一、實(shí)驗(yàn)?zāi)康?.熟悉TurboC2.0集成開(kāi)發(fā)環(huán)境。2.熟悉VisualC++?6.0集成開(kāi)發(fā)環(huán)境。3.熟悉Win-TC集成開(kāi)發(fā)環(huán)境。4.通過(guò)運(yùn)行簡(jiǎn)單的C程序,初步了解C源程序的結(jié)構(gòu)。二、實(shí)驗(yàn)要求
1.實(shí)驗(yàn)前要認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容,明確本實(shí)驗(yàn)的目的和要求,熟悉實(shí)驗(yàn)內(nèi)容和步驟。
2.實(shí)驗(yàn)中充分利用時(shí)間進(jìn)行程序輸入和調(diào)試工作,善于提出問(wèn)題。
3.實(shí)驗(yàn)完成后要立即對(duì)實(shí)驗(yàn)過(guò)程進(jìn)行總結(jié),對(duì)于沒(méi)有解決的問(wèn)題要記載,要認(rèn)真寫好實(shí)驗(yàn)報(bào)告。
4.本實(shí)驗(yàn)要求2學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:在TurboC2.0集成開(kāi)發(fā)環(huán)境中輸入并運(yùn)行下面的程序,這個(gè)程序的功能是在屏幕上輸出一行信息。#include<stdio.h>#include<stdlib.h>main(){printf("Hello,World!\n");system("pause");}代碼說(shuō)明:·為了方便,對(duì)程序的每一行都加了一個(gè)行號(hào),即每一行最前面的編號(hào),表示此行代碼所在的行數(shù),在實(shí)際程序編寫過(guò)程中不需要寫出來(lái)?!さ?1行,編譯預(yù)處理命令,包含標(biāo)準(zhǔn)輸入輸出頭文件stdio.h,因?yàn)榈?5行用到了格式化輸出函數(shù)printf()?!さ?2行,編譯預(yù)處理命令,包含標(biāo)準(zhǔn)庫(kù)函數(shù)頭文件stdlib.h,因?yàn)榈?6行用到了系統(tǒng)函數(shù)system("pause"),用來(lái)暫停以查看屏幕,并不是完成題目要求要必須用到的語(yǔ)句。另外還可用getch()函數(shù)來(lái)暫停以查看屏幕,用getch()函數(shù)時(shí)包含頭文件conio.h。TurboC2.0作為在DOS和Windows操作系統(tǒng)上學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的練習(xí)平臺(tái),具有操作簡(jiǎn)單、界面清晰的特點(diǎn),是C程序設(shè)計(jì)語(yǔ)言初學(xué)者較常用的平臺(tái)。TurboC2.0對(duì)計(jì)算機(jī)的要求低,并且編譯、鏈接的速度快,對(duì)于程序練習(xí)和一般的程序開(kāi)發(fā)都很合適。它的缺點(diǎn)就是不支持鼠標(biāo)操作,也不能同時(shí)編輯多個(gè)文件,而且不能使用漢字。下面是TurboC2.0中C程序的編寫步驟:(1)進(jìn)入TurboC2.0集成開(kāi)發(fā)環(huán)境:打開(kāi)“我的電腦”,進(jìn)入TurboC2.0所在的根目錄C盤(或其他盤),找到TC(或TurboC2)文件夾,雙擊進(jìn)入此文件夾,再找到TC.EXE,雙擊打開(kāi)如圖3-1所示的界面。可以看到,這個(gè)界面從上到下分成四個(gè)區(qū)域。最上面一行是TurboC2.0的主菜單,每個(gè)菜單項(xiàng)的首字母大寫并紅色顯示,按“Alt+紅色字母”就可以打開(kāi)相應(yīng)的下拉菜單。主菜單下面比較大的區(qū)域就是源程序編輯區(qū),編好的源程序就要輸?shù)竭@個(gè)區(qū)域。源程序編輯區(qū)下面是信息窗口,顯示編譯或鏈接時(shí)的信息。信息窗口下面是參考行,給出了一些操作提示信息。圖3-1TurboC2.0集成開(kāi)發(fā)環(huán)境界面(2)新建文件:按快捷鍵“Alt+F”,彈出“File”下拉菜單,選中“New”命令,按回車鍵,新建文件完成,如圖3-2所示。圖3-2新建文件(3)輸入源程序:從光標(biāo)所在處開(kāi)始輸入源程序,如圖3-3所示。圖3-3在編輯區(qū)輸入源程序(4)保存源程序:按鍵盤上快捷鍵“Alt+F”,彈出“File”下拉菜單,用方向鍵選中“Writeto”命令,按回車鍵,此時(shí)彈出重命名對(duì)話框,對(duì)源程序文件進(jìn)行重命名(包括路徑)。學(xué)生可以先在D盤(或E盤)下新建一個(gè)以自己的學(xué)號(hào)或自己名字的拼音命名的文件夾,然后將源程序保存在這個(gè)文件夾里。例如輸入“E:\2010\hello.C”,按回車鍵,如圖3-4所示。圖3-4保存源程序(5)編譯、鏈接、執(zhí)行源程序:按快捷鍵“Ctrl+F9”或執(zhí)行“Run”菜單下的“Run”命令,如圖3-5所示。圖3-5編譯、鏈接、執(zhí)行源程序(6)查看結(jié)果:如果沒(méi)有編譯或鏈接錯(cuò)誤,將出現(xiàn)如圖3-6所示的運(yùn)行結(jié)果;如果有錯(cuò)誤,則會(huì)在消息框給出錯(cuò)誤提示信息。圖3-6運(yùn)行結(jié)果按任意鍵將返回源程序編輯界面,若要再次查看結(jié)果,可按快捷鍵“Alt+F5”或執(zhí)行“Run”菜單下的“Userscreen”命令?!咀⒁狻咳绻麑?shí)驗(yàn)的上機(jī)環(huán)境是TurboC2.0集成開(kāi)發(fā)環(huán)境,學(xué)生在以后的實(shí)驗(yàn)中可以將自己編寫的程序放在一個(gè)專門的文件夾里,以便于集中管理和查看。可以按照以下步驟進(jìn)行操作:①在D盤創(chuàng)建一個(gè)以自己的學(xué)號(hào)命名的文件夾,例如D:\20100001。②然后在這個(gè)文件夾中創(chuàng)建TC.EXE的快捷方式。③用記事本編輯C語(yǔ)言源程序,并保存成*.C的文件(例如1-1.C),如圖3-7所示。圖3-7TC快捷方式和記事本編輯的源程序④用鼠標(biāo)左鍵將1-1.C的文件拖曳至TC.EXE快捷方式,即可打開(kāi)TurboC2.0集成開(kāi)發(fā)環(huán)境,如圖3-8所示。其余操作方法與前面介紹的相同。圖3-8將記事本編輯的源程序拖曳至TC快捷方式⑤如果要將相應(yīng)的可執(zhí)行文件和目標(biāo)文件都放在D:\20100001中,可以進(jìn)行如下設(shè)置:按快捷鍵“Alt+O”,打開(kāi)“Options”菜單,用方向鍵選中“Directories”,按回車鍵;接下來(lái)選中“Outputdirectory”,按回車鍵,在彈出的設(shè)置框里輸入“D:\20100001”,按回車鍵,最后退出菜單。這樣就把.EXE和.OBJ文件的存放目錄設(shè)置成了D:\20100001,如圖3-9所示。圖3-9設(shè)置輸出文件的路徑⑥按快捷鍵“Ctrl+F9”執(zhí)行程序,正確無(wú)誤之后關(guān)閉TurboC2.0集成開(kāi)發(fā)環(huán)境。此時(shí)可以在D:\20100001看到生成的1-1.EXE和1-1.OBJ,如圖3-10所示。圖3-10執(zhí)行程序后在輸出目錄生成的?.EXE和?.OBJ文件⑦如果實(shí)驗(yàn)的上機(jī)環(huán)境是TurboC2.0集成開(kāi)發(fā)環(huán)境,以后的實(shí)驗(yàn)都可以按照以上步驟去做。題目2:在VisualC++?6.0集成開(kāi)發(fā)環(huán)境中輸入并運(yùn)行下面的程序,這個(gè)程序的功能是計(jì)算12345+5432,并在屏幕上輸出。
#include<stdio.h>
main()
{
printf("\n12345+5432=%d\n",12345+5432);
}VisualC++?6.0是Windows操作系統(tǒng)上主流的可視化C語(yǔ)言集成開(kāi)發(fā)環(huán)境,具有使用方便、編程快速的特點(diǎn),可以使用漢字,有相當(dāng)多的程序員使用它,是大多數(shù)人認(rèn)為最好的C語(yǔ)言開(kāi)發(fā)環(huán)境。同時(shí),全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言的上級(jí)考試環(huán)境就是VisualC++?6.0。下面介紹VisualC++?6.0中C程序的編寫步驟:(1)進(jìn)入VisualC++?6.0集成開(kāi)發(fā)環(huán)境:依次點(diǎn)擊“開(kāi)始菜單→所有程序→MicrosoftVisualC++6.0→MicrosoftVisualC++6.0”,打開(kāi)如圖3-11所示的界面。圖3-11VisualC++?6.0集成開(kāi)發(fā)環(huán)境界面(2)創(chuàng)建工作空間:執(zhí)行“File”→“New”命令;在“New”對(duì)話框中,切換到“Workspaces”選項(xiàng)卡;輸入工作空間名(WorkspacesName)和保存位置(Location);然后單擊“OK”按鈕。如圖3-12所示。不管開(kāi)發(fā)幾個(gè)程序,一般每個(gè)人只需一個(gè)工作空間(當(dāng)然也可以每個(gè)程序一個(gè)),主要用于把個(gè)人的源碼及其相關(guān)資源集中在一起,以方便管理。圖3-12創(chuàng)建工作空間窗口(3)新建一空白工程:一個(gè)工程(或項(xiàng)目),一般是一套軟件的源程序及其資源的集合。執(zhí)行“File”→“New”命令;在“New”對(duì)話框中,切換到“Projects”選項(xiàng)卡;選中“Win32ConsoleAppliaction”(Win32控制臺(tái)應(yīng)用程序)和“Addtocurrentworkspace”(添加到當(dāng)前的工作空間),輸入工程名Projectname和保存位置Location;工程名Projectname一般要取與程序功能相關(guān)的名稱,如圖3-13所示。然后單擊“OK”按鈕,彈出如圖3-14所示的窗口,單擊“Anemptyproject”選項(xiàng),創(chuàng)建一個(gè)空白工程,單擊“Finish”按鈕,出現(xiàn)新工程信息窗口,如圖3-15所示,最后單擊“OK”按鈕,空白工程創(chuàng)建完成。圖3-13設(shè)置工程名稱窗口圖3-14選擇空白工程窗口圖3-15新工程信息窗口(4)添加、編輯、保存C源程序文件:執(zhí)行“File”→“New”命令;在“New”對(duì)話框中,切換到“Files”選項(xiàng)卡;選中“C++SourceFile”或者“TextFile”,輸入文件名(擴(kuò)展名必須為?.c),如圖3-16所示,然后單擊“OK”按鈕。在編輯窗口,輸入源程序,并保存,如圖3-17所示。圖3-16輸入源程序名對(duì)話框圖3-17保存源程序?qū)υ捒?5)編譯、鏈接、執(zhí)行源程序:執(zhí)行“Build”→“Execute”命令,或單擊“ExecuteProgram”圖標(biāo),或按快捷鍵“Ctrl+F5”,都會(huì)彈出如圖3-18所示的對(duì)話框。然后單擊“是”按鈕,查看結(jié)果。圖3-18編譯、鏈接、執(zhí)行源程序?qū)υ捒?6)查看結(jié)果:如果沒(méi)有編譯或鏈接錯(cuò)誤,將出現(xiàn)如圖3-19所示的運(yùn)行結(jié)果;如果有錯(cuò)誤,則會(huì)在消息框給出錯(cuò)誤提示信息。圖3-19運(yùn)行結(jié)果(7)退出VC++6.0環(huán)境。方法如同一般Windows窗口的退出。題目3:在Win-TC集成開(kāi)發(fā)環(huán)境中輸入并運(yùn)行下面的程序,這個(gè)程序的功能是在屏幕上輸出星號(hào)組成的圖案。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
printf("*\n");06
printf("***\n");07
printf("*****\n");08
printf("*******\n");09
getch();10
}代碼說(shuō)明:
·第01行,編譯預(yù)處理命令,包含標(biāo)準(zhǔn)輸入輸出頭文件stdio.h,因?yàn)榈?6行用到了格式化輸出函數(shù)printf()。
·第02行,編譯預(yù)處理命令,包含頭文件conio.h,因?yàn)榈?0行用到了getch()函數(shù)來(lái)暫停以查看屏幕。
·第05行到第08行,直接用格式化輸出函數(shù)printf()打印出星號(hào)圖案。Win-TC集成開(kāi)發(fā)環(huán)境是TurboC2.0編譯外殼程序,該軟件的特點(diǎn)就是在Windows下編輯TC源程序,能夠充分利用Windows的支持剪貼板和中文的優(yōu)點(diǎn)。與本書配套的《教材》中所有示例程序均是通過(guò)Win-TC集成開(kāi)發(fā)環(huán)境調(diào)試通過(guò)。下面是Win-TC集成開(kāi)發(fā)環(huán)境中C程序編寫的步驟:(1)進(jìn)入Win-TC集成開(kāi)發(fā)環(huán)境:依次點(diǎn)擊“開(kāi)始菜單→所有程序→Win-TC→Win-TC”,打開(kāi)如圖3-20所示的窗口,然后單擊“知道了”按鈕,打開(kāi)Win-TC界面,如圖3-21所示。圖3-20操作系統(tǒng)檢測(cè)警告窗口圖3-21Win-TC集成開(kāi)發(fā)環(huán)境界面圖3-20的窗口給出了一個(gè)規(guī)范的C語(yǔ)言源程序的范例。main()函數(shù)的返回值類型可以定義為int型,程序可以給操作系統(tǒng)返回一個(gè)整數(shù)值。所以,一般不要將main()函數(shù)的返回值類型寫成void類型。在Win-Tc環(huán)境中編寫程序,源程序末尾必須要加getch()或者system("pause")函數(shù)才能夠看到屏幕輸出的結(jié)果。而在前面介紹的TurboC2.0環(huán)境或VisualC++6.0環(huán)境中都可以不加getch()或者system("pause")函數(shù)。在TurboC2.0環(huán)境中可以用快捷鍵“Alt+F5”來(lái)查看屏幕。(2)新建文件:執(zhí)行“文件”→“新建”命令,如圖3-22所示。圖3-22新建文件窗口(3)輸入源程序:從光標(biāo)所在處開(kāi)始輸入源程序,如圖3-23所示。圖3-23在編輯區(qū)輸入源程序窗口輸入源程序時(shí),每一行代碼前都有自動(dòng)生成的行號(hào)。編輯時(shí)還可以使用復(fù)制、粘貼操作,所以會(huì)加快程序編輯的速度。編輯菜單下有編輯配置命令,可以設(shè)置編輯時(shí)的一些屬性,例如“顏色和字體設(shè)置”等。(4)保存源程序:執(zhí)行“文件”→“保存文件”命令,如圖3-24所示。在“另存為”對(duì)話框中選擇合適的路徑并輸入文件名,點(diǎn)擊“保存”按鈕。圖3-24保存源程序?qū)υ捒?5)編譯、鏈接、執(zhí)行源程序:按快捷鍵“Ctrl+F9”或執(zhí)行“運(yùn)行”菜單下的“編譯鏈接并運(yùn)行”命令,如圖3-25所示。圖3-25編譯、鏈接、執(zhí)行源程序?qū)υ捒?6)查看結(jié)果:如果沒(méi)有編譯或鏈接錯(cuò)誤,將出現(xiàn)如圖3-26所示的運(yùn)行結(jié)果;如果有錯(cuò)誤,則會(huì)在消息框給出錯(cuò)誤提示信息。(7)按任意鍵將返回源程序編輯界面。圖3-26運(yùn)行結(jié)果四、實(shí)驗(yàn)思考題1.如何用記事本編輯源程序,然后在TurboC2.0集成開(kāi)發(fā)環(huán)境中被調(diào)用?2.簡(jiǎn)述C語(yǔ)言源程序的結(jié)構(gòu)。實(shí)驗(yàn)二常量、變量及數(shù)據(jù)類型
一、實(shí)驗(yàn)?zāi)康?.掌握C語(yǔ)言的數(shù)據(jù)類型,熟悉整型、字符型、實(shí)型數(shù)據(jù)的常量表示。2.掌握如何定義一個(gè)整型、字符型、實(shí)型變量,以及對(duì)它們賦值的方法。3.了解數(shù)據(jù)的溢出錯(cuò)誤和舍入誤差。4.進(jìn)一步熟悉C程序的編輯、編譯、鏈接和運(yùn)行的過(guò)程。二、實(shí)驗(yàn)要求1.實(shí)驗(yàn)前復(fù)習(xí)常量、變量、數(shù)據(jù)類型的基本概念以及常量、變量的表示方法。2.認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容。3.本實(shí)驗(yàn)要求2學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:輸入并運(yùn)行下面的程序。(1)定義兩個(gè)整型變量并初始化,同時(shí)將其相加之和顯示出來(lái)。01
#include<stdio.h>02
#include<stdlib.h>03
04
main()05
{06
intx=10,y=100,z;0708
z=x+y;09
printf("z=%d",z);1011
system("pause");12
}步驟:打開(kāi)TurboC2.0環(huán)境,新建文件,輸入源程序,按快捷鍵“Ctrl+F9”運(yùn)行程序并查看結(jié)果。(2)從鍵盤輸入一個(gè)整數(shù),并將其值加1,然后顯示出來(lái)。01
#include<stdio.h>0
2#include<stdlib.h>
0304
main()05
{
06
intx;
07
08
scanf("%d",&x);
09
++x;
10
printf("%d",x);
11
12
system("pause");13
}步驟:打開(kāi)TurboC2.0環(huán)境,新建文件,輸入源程序,按快捷鍵“Ctrl+F9”運(yùn)行程序并查看結(jié)果。步驟:打開(kāi)TurboC2.0環(huán)境,新建文件,輸入源程序,按快捷鍵“Ctrl+F9”運(yùn)行程序并查看結(jié)果。題目2:上機(jī)調(diào)試下列程序,分析出運(yùn)行結(jié)果,并與上機(jī)運(yùn)行結(jié)果作對(duì)比。
01
#include<stdio.h>
02
#include<stdlib.h>
03
04
main()
05
{
06
floatx=45.982;
07
08
printf("x=%f\n",x);
09
10
system("pause");
11
}題目3:字符數(shù)據(jù)的輸出,分析出運(yùn)行結(jié)果,并與上機(jī)運(yùn)行結(jié)果作對(duì)比。
01
#include<stdio.h>
02
#include<stdlib.h>
03
04
main()
05
{
06
charc='A';
07
08
printf("c=%c\n",c);
09
printf("c=%d\n",c);
10
11
system("pause");
12
}題目4:上機(jī)調(diào)試下列程序,分析出運(yùn)行結(jié)果,并與上機(jī)運(yùn)行結(jié)果作對(duì)比。
01
#include<stdio.h>
02
#include<stdlib.h>
0304
main()05
{06
intx=32767,y=-32768;
07
08
printf("x=%d\n",x);
09
printf("x+1=%d\n",x+1);
10
printf("y=%d\n",y);
11
printf("y-1=%d\n",y-1);
12
13
system("pause");
14
}題目5:用sizeof運(yùn)算符求出本編譯系統(tǒng)中各種數(shù)據(jù)類型所占內(nèi)存字節(jié)數(shù),分析出運(yùn)行結(jié)果,并與上機(jī)運(yùn)行結(jié)果作對(duì)比。01
#include<stdio.h>02
#include<stdlib.h>
0304
main()05
{
06
printf("sizeof(int)=%d\n",sizeof(int));
07
printf("sizeof(short)=%d\n",sizeof(short));
08
printf("sizeof(long)=%d\n",sizeof(long));
09
printf("sizeof(float)=%d\n",sizeof(float));
10
printf("sizeof(double)=%d\n",sizeof(double));
11
printf("sizeof(char)=%d\n",sizeof(char));
12
13
system("pause");
14
}四、實(shí)驗(yàn)思考題1.為什么C語(yǔ)言中的每個(gè)數(shù)據(jù)都要屬于一個(gè)特定的類型?2.使用計(jì)算機(jī)編寫程序時(shí)如何選擇合適的數(shù)據(jù)類型?3.計(jì)算機(jī)中表示的數(shù)是連續(xù)的嗎?4.實(shí)型數(shù)據(jù)存儲(chǔ)時(shí)為什么會(huì)有誤差?實(shí)驗(yàn)三運(yùn)算符與表達(dá)式
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握C語(yǔ)言算術(shù)、賦值、自增、自減運(yùn)算符及相應(yīng)表達(dá)式。
2.掌握C語(yǔ)言關(guān)系、邏輯運(yùn)算符及相應(yīng)表達(dá)式。
3.掌握不同類型數(shù)據(jù)之間的賦值規(guī)律。
4.了解強(qiáng)制數(shù)據(jù)類型轉(zhuǎn)換以及運(yùn)算符的優(yōu)先級(jí)、結(jié)合性。
5.學(xué)會(huì)根據(jù)表達(dá)式編寫相應(yīng)程序,驗(yàn)證表達(dá)式結(jié)果的方法。二、實(shí)驗(yàn)要求1.實(shí)驗(yàn)前復(fù)習(xí)各種運(yùn)算符的作用以及表達(dá)式的值的類型。2.認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容。3.本實(shí)驗(yàn)要求2學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:已知:a=5,b=6,x=8.7,y=3.4(a,b整型,x,y浮點(diǎn)),計(jì)算算術(shù)表達(dá)式(float)(a+b)/2+(int)x%(int)y的值。試編程上機(jī)驗(yàn)證。①先判斷結(jié)果值類型,可設(shè)置一個(gè)此類型的變量用于記錄表達(dá)式結(jié)果,本例用s存放結(jié)果;②程序先給幾個(gè)變量賦初值,然后將表達(dá)式賦值給變量s;③最后打印變量s的值就是表達(dá)式的值。
01
#include<stdio.h>
02
main()
03
{
04
inta=5,b=6;
05
floatx=8.7,y=3.4;
06
doubles;
07
s=(float)(a+b)/2+(int)x%(int)y;
08
printf("(float)(a+b)/2+(int)x%%(int)y=%f\n",s);
09
getch();
10
}題目2:已知:a=10,x=8.3,y=5.9(a整型,x,y浮點(diǎn)),計(jì)算算術(shù)表達(dá)式x+a%3*(int)(x+y)%2/4的值。試編程上機(jī)驗(yàn)證。01
#include<stdio.h>02
main()03
{04
inta=10;05
floatx=8.3,y=5.9;06
doubles;07
s=x+a%3*(int)(x+y)%2/4;08
printf("x+a%%3*(int)(x+y)%%2/4=%f\n",s);09
getch();
10
}題目3:自增、自減運(yùn)算符練習(xí)。分析下面程序結(jié)果,并上機(jī)驗(yàn)證。01
#include<stdio.h>02
main()03
{
04
inta=5,b=6;
05
floatx=8.7,y=3.4;
06
printf("%d\t%d\n",++a,b+a++);
07
printf("%f\t%f\n",--y,x+y--);08
}題目4:賦值表達(dá)式練習(xí)。分析下面程序結(jié)果,并上機(jī)驗(yàn)證。01
#include<stdio.h>02
main()03
{04
inta,b;05
floatx,y;06
x=y=b=a=3;07
a+=a;08
y-=2;09
b*=2+3;10
x/=x+x;11
a%=(b%=2);12
a+=a-=a*=a;
13
printf("%d\t%d\n",a,b);
14
printf("%f\t%f\n",x,y);15}題目5:關(guān)系表達(dá)式練習(xí)。編程判斷兩個(gè)分?jǐn)?shù)12/345678999與34/567899999哪個(gè)大?01
#include<stdio.h>02
main()03
{04
doublex,y;05
x=12./345678999;06
y=34./567899999;07
printf("(x>y)==%d\n",x>y);08
}題目6:?jiǎn)柼?hào)表達(dá)式練習(xí)。分析下面程序結(jié)果,并上機(jī)驗(yàn)證。01
#include<stdio.h>02
main()03
{04
inta=5,b=6;05
floatx=8.7,y=3.4;06
printf("x<y?x:a<b?a:b=%f\n",x<y?x:a<b?a:b);07
}題目7:邏輯表達(dá)式練習(xí)。分析下面程序結(jié)果,并上機(jī)驗(yàn)證。
01
#include<stdio.h>
02
main()
03
{
04
charc; /*定義字符變量c*/
05
printf("pleaseinputacharacter\n");/*輸出信息*/
06
scanf("%c",&c); /*從鍵盤輸入字符*/
07
c=(c>='a'&&c<='z')?(c-32):c;/*條件運(yùn)算符使用*/
08
printf("%c\n",c); /*輸出結(jié)果*/
09
}題目8:逗號(hào)表達(dá)式練習(xí)。分析下面程序結(jié)果,并上機(jī)驗(yàn)證。01
#include<stdio.h>02
main()03
{04
inta,b,c,d;05
a=2,b=3,c=4;06
d=a,printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);07
}四、實(shí)驗(yàn)思考題1.總結(jié)賦值轉(zhuǎn)換原則。2.什么是自動(dòng)轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換?實(shí)驗(yàn)四基本輸入、輸出
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握格式輸入函數(shù)scanf()函數(shù)輸入各種類型數(shù)據(jù)的方法。
2.掌握格式輸出函數(shù)printf()函數(shù)輸出各種類型數(shù)據(jù)的方法。
3.掌握字符輸入、輸出函數(shù)getchar()和putchar()的使用方法。
4.理解C語(yǔ)言程序的順序結(jié)構(gòu)。二、實(shí)驗(yàn)要求
1.實(shí)驗(yàn)前復(fù)習(xí)基本輸入、輸出函數(shù)的用法。
2.認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容。
3.本實(shí)驗(yàn)要求2學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:用下面的scanf()函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,c1='A',c2='a'。請(qǐng)問(wèn)在鍵盤上如何輸入?正確輸入各數(shù)據(jù)后,請(qǐng)給出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<stdlib.h>0304
main()05
{06
inta,b;07
floatx,y;08
charc1,c2;09
10
scanf("a=%d
b=%d",&a,&b);
11
scanf("%f
%e",&x,&y);
12
scanf("%c
%c",&c1,&c2);
13
printf("a=%d,b=%d,x=%f,",a,b,x);
14
printf("y=%f,c1=%c,c2=%c\n",y,c1,c2);
15
16
system("pause");
17
}思考:如果第三個(gè)scanf()函數(shù)雙引號(hào)里面去掉空格字符,寫成:scanf("%c%c",&c1,&c2);按以上的內(nèi)容輸入,輸出將如何變化?題目2:編寫程序,在屏幕上輸出下列字符串。Hello,world!f:\test\a.txtShesays:"IliketheCprogramminglanguage!"參考程序如下:01#include<stdio.h>02#include<stdlib.h>
0304main()05
{06
printf("Hello,world!\n");07
printf("f:\\test\\a.txt\n");08
printf("Shesays:\"IliketheCprogramminglanguage!\"\n");0910
system("pause");11
}題目3:字符數(shù)據(jù)的輸入、輸出。從鍵盤輸入一個(gè)英文小寫字母,然后輸出對(duì)應(yīng)的大寫字母。試著完成下面的程序,并查看運(yùn)行結(jié)果是否正確。
01
#include<stdio.h>
02
#include<stdlib.h>
03
04
main()
05
{
06
charc;07
08
printf("Pleaseinputaalphabet:\n");
09
【1】=getchar();
10
putchar(【2】);
11
putchar('\n');
12
13
system("pause");
14
}題目4:(《教材》例4-8的程序)輸入一名學(xué)生的學(xué)號(hào)(7位數(shù)字)、生日(年-月-日)、性別(M:男;F:女)及三門功課(語(yǔ)文、數(shù)學(xué)、英語(yǔ))的成績(jī),現(xiàn)要求計(jì)算該學(xué)生的總分和平均分,并將該學(xué)生的全部信息輸出(包括總分、平均分)。輸入、輸出的形式如圖3-27所示。圖3-27題目4運(yùn)行結(jié)果題目5:已知三角形三邊長(zhǎng)分別為8,9,10,求此三角形的面積。要求:程序填空并寫出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<stdlib.h>03
#include<【1】>
0405
main()06
{07
inta=8,b=9,c=10;08
doubles,aera;0910
s=(a+b+c)/【2】;11
aera=sqrt(s*(【3】)*(【4】)*(【5】));12
printf("Theaeraofthistriagleis:%.3f\n",【6】);13
putchar('\n');1415
system("pause");16
}四、實(shí)驗(yàn)思考題1.用scanf()接收多個(gè)數(shù)值型數(shù)據(jù)時(shí),有哪些分隔數(shù)據(jù)項(xiàng)的方法?2.用scanf()如何正確輸入多個(gè)字符型數(shù)據(jù),有哪些方法?3.用scanf()如何正確接收多個(gè)字符串?dāng)?shù)據(jù),有哪些方法?4.如果字符串中有空格,能否用scanf()函數(shù)輸入?實(shí)驗(yàn)五選擇結(jié)構(gòu)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?.了解C語(yǔ)言表示邏輯量的方法(以0代表“假”,以非0代表“真”)。2.學(xué)會(huì)正確使用邏輯運(yùn)算符和邏輯表達(dá)式,熟練掌握if語(yǔ)句和switch語(yǔ)句。3.結(jié)合程序掌握一些簡(jiǎn)單的算法。二、實(shí)驗(yàn)要求1.做實(shí)驗(yàn)前復(fù)習(xí)關(guān)系表達(dá)式、邏輯表達(dá)式和if語(yǔ)句、switch語(yǔ)句。2.認(rèn)真預(yù)習(xí)本實(shí)驗(yàn)內(nèi)容。3.本實(shí)驗(yàn)要求4學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:將下列由程序流程圖(見(jiàn)圖3-28)描述的算法,轉(zhuǎn)換為C源代碼,然后輸入計(jì)算機(jī)并運(yùn)行。圖3-28程序流程圖題目2:輸入一個(gè)整數(shù),打印出它是奇數(shù)還是偶數(shù)。要求:程序填空,上機(jī)運(yùn)行并寫出運(yùn)行結(jié)果。參考程序如下:
01
#include<stdio.h>
02
#include<conio.h>
03
main()
04
{
05
inta;
06
rintf(“\nPleaseinputainteger:\n”);
07
scanf("%d",【1】);08
if(【2】)09
printf("Itisanoddnumber.\n");10
else11
printf("Itisanevennumber.\n");12
getch();13
}題目3:計(jì)算如下分段函數(shù)值:
具體要求如下:①
用if語(yǔ)句實(shí)現(xiàn)分支。自變量x與函數(shù)值均用單精度類型。
②
自變量x用scanf()函數(shù)輸入,且輸入前要有提示。結(jié)果的輸出采用以下形式:x=具體值,f(x)=具體值③
程序填空,上機(jī)運(yùn)行并分別輸入x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,運(yùn)行該程序,并寫出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{
05
floatx,y;06
printf("\nPleaseinputfloatx:\n");07
scanf("%f",【1】);08
if(【2】)09
y=x*x+x-6;10
elseif(【3】)11
y=x*x-5*x+6;12
else13
y=x*x-x-1;14
printf("\nx=%g,f(x)=%g\n",x,y);15
getch();16
}題目4:輸入一個(gè)年份,判斷是不是閏年。閏年的條件有兩個(gè):①能被4整除,但不能被100整除;②能被400整除。要求:程序填空并寫出運(yùn)行結(jié)果。參考程序如下:01
#include<stdio.h>02
#include<conio.h>03
main()04
{
05
intyear;06
printf("\nPleaseinputayear:\n");07
scanf("%d",【1】);08
if(year%4==0&&year%100!=0||【2】==0)09
printf("%disleap\n\n",
【3】);10
else11
printf("%disnotleap\n\n",【4】);12
getch();13
}
題目5:由鍵盤輸入3個(gè)整數(shù),判斷以此3個(gè)數(shù)為邊長(zhǎng)的三角形屬于什么類型(不等邊、等腰、等邊或不能構(gòu)成三角形)。要求:程序填空,并寫出運(yùn)行結(jié)果。參考程序如下:01
#include<stdio.h>02
#include<conio.h>
0304main()05{06
inta,b,c;07
printf("\nPleaseinputa,b,c:\n");08
scanf("%d%d%d",
【1】);09
if(【2】)10
if(【3】)11
printf(“Itisanequillateraltriangle.\n”);/*輸出是等邊三角形*/12
elseif(【4】)13
printf(“Itisanisoscelestriangle.\n”);/*輸出是等腰三角形*/14
else15printf("Itisascalenetriangle.\n");/*輸出是不等邊三角形*/16
else17printf("Itisnottriangle!\n");/*輸出不是三角形*/1819getch();20}題目6:根據(jù)百分制分?jǐn)?shù)決定成績(jī)等級(jí)如下:①80分(含)以上為A級(jí)。②70分(含)以上且80分以下為B級(jí)。③60分(含)以上且70分以下為C級(jí)。④60分以下為D級(jí)。用多分支語(yǔ)句if-elseif和switch兩種方法編寫程序,輸入一個(gè)百分制分?jǐn)?shù),輸出相應(yīng)的等級(jí)。要求:程序填空,并寫出運(yùn)行結(jié)果。方法一:
01
#include<stdio.h>
02
#include<conio.h>
03
main()
04
{
05
floatscore;
06
charrank;
07
printf("\nPleaseinputascore:\n");
08
scanf("%f",【1】);
09
if(【2】)
10
{11
printf("Inputerror!\n");/*輸入錯(cuò)誤*/12
getch();13
exit(0);/*結(jié)束程序*/14
}15
elseif(【3】)16
rank='A';17
elseif(【4】)18
rank='B';19
elseif(【5】)20rank='C';21
else22
rank='D';23
printf("%gisrank%c.\n",score,rank);24
getch();25
}方法二:
01
#include<stdio.h>
02
#include<conio.h>
03
main()
04
{
05
floatscore;intx;
06
charrank;
07
printf("\nPleaseinputascore:\n");
08
scanf("%f",【1】);
09
x=(int)score/10;10
if(score>100)11x=11;12
switch(x)13
{14case10:15case9:16case8:rank=【2】;break;17case7:rank=【3】;break;18case6:rank=【4】;break;19case5:20case4:21case3:22case2:23case1:24case0:rank=【5】;break;25default:printf("Inputerror!\n"); /*輸入錯(cuò)誤*/26getch();27exit(0); /*結(jié)束程序*/28}29printf("%gisrank%c.\n",score,rank);30getch();31}題目7:由鍵盤輸入3個(gè)整數(shù),按降序打印這3個(gè)數(shù)。請(qǐng)編寫程序并上機(jī)調(diào)試。
四、實(shí)驗(yàn)思考題如何判斷一個(gè)數(shù)n能否被3和5整除。實(shí)驗(yàn)六循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握在設(shè)計(jì)條件型循環(huán)結(jié)構(gòu)時(shí),如何正確地設(shè)定循環(huán)條件。
2.掌握如何正確地控制計(jì)數(shù)型循環(huán)結(jié)構(gòu)的循環(huán)次數(shù)。
3.練習(xí)并掌握選擇結(jié)構(gòu)與循環(huán)結(jié)構(gòu)的嵌套、多重循環(huán)的應(yīng)用。
4.掌握在程序設(shè)計(jì)中用循環(huán)的方法實(shí)現(xiàn)一些常用算法,加強(qiáng)調(diào)試程序的能力。二、實(shí)驗(yàn)要求1.復(fù)習(xí)while、do-while、for語(yǔ)句和continue、break語(yǔ)句。2.能夠用流程圖表示實(shí)驗(yàn)題目的算法。3.能夠獨(dú)立調(diào)試運(yùn)行實(shí)驗(yàn)題目。4.本實(shí)驗(yàn)要求4學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:分別用while循環(huán)和for循環(huán)計(jì)算:
1?+?2?+?3?+?…?+?100?=??要求:寫出程序并上機(jī)查看運(yùn)行結(jié)果。題目2:輸入一行字符,分別統(tǒng)計(jì)出其中大小寫英文字母、空格、數(shù)字和其他字母的個(gè)數(shù)。要求:程序填空,并寫出兩組運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03
#include<ctype.h>04
main()05
{06
charc; 07
intletter=0,capital=0,lower=0,space=0,digital=0,other=0;08
printf("\ninputalinecharacter:\n");09
while((c=getchar())!='\n')10
{11
if(【1】) /*統(tǒng)計(jì)大小寫字母的個(gè)數(shù)*/12{13letter++;14if(【2】)15lower++; /*統(tǒng)計(jì)小寫字母的個(gè)數(shù)*/16}17elseif(【3】)18space++; /*統(tǒng)計(jì)空格的個(gè)數(shù)*/19elseif(【4】)20digital++; /*統(tǒng)計(jì)數(shù)字的個(gè)數(shù)*/21else22other++; /*統(tǒng)計(jì)其他字符的個(gè)數(shù)*/23}24capital=letter-lower;25printf("Letter:%d(Capital:%dLowercase: %d)\n",letter,capital,lower);26
printf("Spaces:%d\nDigital:%d\nOther:
%d\n",space,digital,other);27
getch();28
}
題目3:求兩個(gè)正整數(shù)的最大公約數(shù)和最小公倍數(shù)。分析:求兩個(gè)正整數(shù)的最大公約數(shù)采用輾轉(zhuǎn)相除法:①輸入正整數(shù)m和n,保證m不小于n。②如果n≠0,則求r=m%n,然后m=n,n=r;重復(fù)此操作直到n=0。③如果n=0,則此時(shí)m就是最大公約數(shù),而最小公倍數(shù)是這兩數(shù)之積除以這兩個(gè)數(shù)的最大公約數(shù)得到的商。要求:程序填空,并寫出兩組運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
intm,n,r,a;06
printf("\nInput2positiveinteger:\n");07
scanf("%d%d",【1】);08
a=【2】;09
if(m<n)10
{11
m=m+n;12n=m-n;13m=m-n;14
}15
while(n!=0)16
{17
r=【3】;18
m=n;19
n=r;20
}21
printf(“Thelargestdivisoris:%d\n”,【4】);/*輸出最大公約數(shù)*/22
printf(“Thesmallestcommonmultipleis:%d\n”,a/m);/*輸出最小公倍數(shù)*/23getch();24}題目4:在屏幕上打印出下三角的乘法表,如圖3-29所示。試著完成下面的程序,并查看運(yùn)行結(jié)果是否正確。圖3-29乘法表01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j;06
for(i=1;i<=9;i++)07
{08
for(j=1;【1】;j++)09
printf("%d*%d=%-4d",i,j,【2】);10
printf("\n");11
}12
getch();13
}題目5:在屏幕上打印出1000以內(nèi)的素?cái)?shù),每行打印10個(gè),并統(tǒng)計(jì)個(gè)數(shù)。要求:程序填空,并寫出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j,prime,s=0;06
for(i=2;【1】;i++)07
{08prime=1;09for(j=2;j<=i-1;j++)10{11if(【2】)12{13prime=0;14break;15}16}17if(【3】)18{19printf("%6d",i);20s++;21if(【4】)22printf("\n");23}24}25printf("\nThesumofprimeis:%d",s);26getch();27}題目6:打印出如圖3-30所示的圖案。要求:程序填空,并寫出運(yùn)行結(jié)果。圖3-30*號(hào)圖案01
#include<stdio.h>02
#include<conio.h>03
main()
04
{05
inti,j;06
charspace='
';07
for(i=0;i<=3;i++)08
{
09
for(j=1;【1】;j++)10printf("%c",space);11for(j=1;j<=3;j++)12printf("*");13for(j=1;【2】;j++)14printf("%c",space);15for(j=1;j<=3;j++)16printf("*");17【3】;18
}19
}題目7:編程把下列數(shù)列延長(zhǎng)到第50項(xiàng):1、2、5、10、21、42、85、170、341、682、…屏幕輸出時(shí)要求格式對(duì)齊。要求:上機(jī)運(yùn)行,并寫出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03/*奇數(shù)項(xiàng)?=?前一偶數(shù)項(xiàng)?×?2?+?1,偶數(shù)項(xiàng)?=?前一奇數(shù)項(xiàng)?×?2*/04main()05{06inti;07
doubleresult;08
result=0;09
for(i=1;i<=50;i++)10
{11
if(i%2==1)12result=result*2+1;13else14result=result*2;15
printf("%-15.0f",result);16if(i%5==0)17printf("\n");18}19}四、實(shí)驗(yàn)思考題1.求解1000以內(nèi)的完數(shù)。如果一個(gè)數(shù)恰好等于它的所有因子(包括1但不包括自身)之和,例如:6的因子為1,2,3,且1?+?2?+?3?=?6,因此6是一個(gè)“完數(shù)”。計(jì)算并輸出1000以內(nèi)的所有“完數(shù)”之和,輸出形式為:完數(shù)1?+?完數(shù)2?+?…?=?和值。2.計(jì)算分?jǐn)?shù)序列:
前20項(xiàng)之和。3.在嵌套循環(huán)結(jié)構(gòu)中如何提高編寫程序的效率?4.如何避免死循環(huán)?實(shí)驗(yàn)七數(shù)
組
一、實(shí)驗(yàn)?zāi)康?.掌握數(shù)組的定義及初始化的規(guī)則。2.掌握C語(yǔ)言數(shù)組的基本用法。3.練習(xí)并掌握常用的排序算法。4.練習(xí)并掌握和數(shù)組有關(guān)的其他簡(jiǎn)單算法。二、實(shí)驗(yàn)要求1.實(shí)驗(yàn)前復(fù)習(xí)數(shù)組的定義以及數(shù)組元素的引用方法。2.能夠用程序流程圖來(lái)描述實(shí)驗(yàn)題目的算法。3.本實(shí)驗(yàn)要求4學(xué)時(shí)完成。三、實(shí)驗(yàn)內(nèi)容和步驟題目1:閱讀下面的程序,寫出運(yùn)行結(jié)果并說(shuō)出程序的功能,然后上機(jī)驗(yàn)證。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,f[10];06
f[0]=f[1]=1;07
for(i=2;i<10;i++)08
f[i]=f[i-1]+f[i-2];09
puts("\n");10
for(i=0;i<10;i++)
11
{12printf("%6d",f[i]);13if((i+1)%5==0)14puts("\n");15
}16getch();17
}題目2:從鍵盤上任意輸入10個(gè)整數(shù),按從小到大的順序顯示在屏幕上。以下采用選擇法排序。要求:程序填空,并寫出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j,a[10],p;60
printf("\nPleaseinput10integer:\n");70
for(i=0;i<10;i++)08
scanf("%d",【1】);09
printf("Beforesortint:\n");10
for(i=0;i<10;i++)11
{12
printf("%6d",a[i]);13
}14
for(i=0;i<10-1;i++)15
{16
p=i;17
for(j=i+1;j<10;j++)18if(【2】)19p=j;20if(p!=i)21{22a[p]=a[p]+a[i];23a[i]=a[p]-a[i];24a[p]=a[p]-a[i];25}26
}27
printf("\nAftersortint:\n");28
for(i=0;i<10;i++)29
{30
printf("%6d",【3】);31
}32printf("\n");33getch();34}題目3:將數(shù)列1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,1,5,10,10,5,1,…延長(zhǎng)到第55項(xiàng)。運(yùn)行下面的程序,并查看運(yùn)行結(jié)果是否正確。(提示:以上數(shù)列由楊輝三角構(gòu)成,本題要求給出楊輝三角的前10行,楊輝三角的前10行即有55個(gè)數(shù)。將楊輝三角存儲(chǔ)在二維數(shù)組中,如圖3-31所示,分析楊輝三角的形成規(guī)律及存儲(chǔ)規(guī)律,完成程序編碼上機(jī)調(diào)試。)圖3-31楊輝三角的存儲(chǔ)01
#include<stdio.h>02
#include<conio.h>03
main()04
{05
inti,j,a[10][10],p=0;06
for(i=0;i<10;i++)07
for(j=0;j<=i;j++)08{09if(j==0||j==i)10a[i][j]=1;11else12a[i][j]=a[i-1][j]+a[i-1][j-1];13printf("%6d",a[i][j]);14if(++p%10==0)15printf("\n");16}17printf("\n");18getch();19}題目4:請(qǐng)編程計(jì)算圖3-32給出的矩陣周邊元素之和。要求:編寫程序,輸出并記錄結(jié)果。圖3-32矩陣題目5:用篩選法求100以內(nèi)的素?cái)?shù)。篩選法求素?cái)?shù)的基本思路是:判斷100以內(nèi)的每一個(gè)數(shù),逐個(gè)找出非素?cái)?shù)并把它去除,使得最后剩下的全是素?cái)?shù)。具體算法:①先去掉1。②用2、3、4、…、100作為除數(shù),去除該數(shù)以后所有的數(shù),把該數(shù)的倍數(shù)標(biāo)注為0,表示該數(shù)已從數(shù)組中去除。③循環(huán)結(jié)束,數(shù)組中不為0的數(shù)即為100之內(nèi)的素?cái)?shù)。要求:上機(jī)運(yùn)行并寫出運(yùn)行結(jié)果。01
#include<stdio.h>02
#include<conio.h>03
04
main()05
{06
inti,j,a[100];07
for(i=2;i<100;i++)08
{09a[i]=i;10
}
1112
for(i=2;i<100;i++)13for(j=i+1;j<100;j++)14if(a[i]!=0&&a[j]!=0&&a[j]%a[i]==0)15a[j]=0;
1617j=1;18for(i=2;i<100;i++)19
if(a[i]!=0)20{21printf("%4d",a[i]);22if(j++%5==0)23printf("\n");24}25
26getch();27}四、實(shí)驗(yàn)思考題
1.題目2中的10個(gè)數(shù)據(jù)如何能夠隨機(jī)生成?
2.請(qǐng)將題目2中數(shù)據(jù)采用冒泡法排序思想編程。并說(shuō)明冒泡法和選擇法的排序區(qū)別。
3.如何將題目3的結(jié)果輸出成圖3-31所示的下三角形式?實(shí)驗(yàn)八字符數(shù)組與字符串
一、實(shí)驗(yàn)?zāi)康?/p>
1.掌握字符數(shù)組的定義、初始化、數(shù)組元素的引用以及輸入、輸出。
2.理解字符串的概念。
3.練習(xí)并掌握字符數(shù)組的處理方法。
4.掌握常用字符串處理函數(shù)。
5.掌握字符串的排序方法。二、實(shí)驗(yàn)要求
1.實(shí)驗(yàn)前復(fù)習(xí)C語(yǔ)言中字符串的表示方法。
2.能用程序流程圖來(lái)描述實(shí)驗(yàn)題目的算法。
3.本實(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 5間店面合同協(xié)議
- 建筑資質(zhì)外包合同協(xié)議
- 工程挖機(jī)購(gòu)買合同協(xié)議
- it敬業(yè)合同協(xié)議
- 工程模板清包合同協(xié)議
- 店面裝修供貨合同協(xié)議
- 建筑咨詢代理合同協(xié)議
- 開(kāi)發(fā)房屋合作合同協(xié)議
- 合同違約金補(bǔ)充協(xié)議
- 上門維修家電合同協(xié)議
- 2025年公路工程預(yù)制箱梁運(yùn)輸安裝合同
- DB31∕T 1243-2020 互花米草生態(tài)控制技術(shù)規(guī)范
- 經(jīng)濟(jì)效益評(píng)價(jià)的基本方法課件
- 大學(xué)生五一假期安全教育
- 2025年陜西華電新能源發(fā)電有限公司招聘筆試參考題庫(kù)含答案解析
- 廣東中考數(shù)學(xué)計(jì)算訓(xùn)練綜合檢測(cè)過(guò)關(guān)卷(解析版)
- 2024年09月江蘇2024年南通農(nóng)商行校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 信息化項(xiàng)目立項(xiàng)評(píng)審流程指引
- 消化道出血護(hù)理新進(jìn)展
- 內(nèi)蒙古能源集團(tuán)有限公司招聘筆試沖刺題2025
- 2025年廣東省煙草專賣局招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論