《C語言程序設(shè)計》教學(xué)大綱與習(xí)題集_第1頁
《C語言程序設(shè)計》教學(xué)大綱與習(xí)題集_第2頁
《C語言程序設(shè)計》教學(xué)大綱與習(xí)題集_第3頁
《C語言程序設(shè)計》教學(xué)大綱與習(xí)題集_第4頁
《C語言程序設(shè)計》教學(xué)大綱與習(xí)題集_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計教學(xué)大綱The Program Language (C Program)課程編號:適用專業(yè):機械工程及自動化、電子科學(xué)與技術(shù)、自動化、信息工程總學(xué)時:64(講課:32上機實驗:32)學(xué)分:4執(zhí)筆人:李越輝審核人:孫踐知編寫日期:2003-10-10院(系、部)簽章一、課程的性質(zhì)和目的該課程是機械、電子、自動等專業(yè)學(xué)習(xí)計算機技術(shù)的一門主要課程,通過介紹一門算法語言,培養(yǎng)學(xué)生學(xué)習(xí)設(shè)計計算機程序的能力,為今后學(xué)習(xí)其它課程打好基礎(chǔ)。本課程屬于計算機基礎(chǔ)類課程。二、課程教學(xué)內(nèi)容和要求第一章 C語言概述(2學(xué)時)教學(xué)內(nèi)容:本講主要介紹了C語言的特點、基本結(jié)構(gòu)、基本輸入輸出語句和C程序的編輯、

2、編譯、運行方法。教學(xué)要求:要求了解C語言的特點,掌握C程序的基本結(jié)構(gòu),掌握輸入輸出函數(shù)scanf()和printf()的基本使用方法,熟悉C程序的編輯、編譯、調(diào)試和運行過程。第二章 基本數(shù)據(jù)類型(2學(xué)時)教學(xué)內(nèi)容:C語言的數(shù)據(jù)類型、數(shù)值數(shù)據(jù)的表示、文字數(shù)據(jù)的表示、變量的定義和賦值、C語言類型修飾符、表達式中數(shù)據(jù)類型轉(zhuǎn)換、計算機中數(shù)據(jù)的表示。教學(xué)要求:要求了解C語言數(shù)值數(shù)據(jù)和文字數(shù)據(jù)的表示方法,掌握C語言基本數(shù)據(jù)類型的存儲格式,掌握變量的定義和賦值,了解數(shù)據(jù)運算中類型的自動轉(zhuǎn)換和強制轉(zhuǎn)換。第三章 控制結(jié)構(gòu)(一)(2學(xué)時)教學(xué)內(nèi)容:程序設(shè)計的一般方法、結(jié)構(gòu)化程序設(shè)計、順序結(jié)構(gòu)、if語句、switc

3、h語句。教學(xué)要求:要求熟練掌握if語句和switch語句的使用,了解結(jié)構(gòu)化程序設(shè)計思想,并且可以按照一般程序設(shè)計方法完成簡單程序的設(shè)計過程。第四章 控制結(jié)構(gòu)(二)(2學(xué)時)教學(xué)內(nèi)容:主要介紹了C語言提供的三種循環(huán)結(jié)構(gòu)語句:while語句、do-while語句和for語句,介紹了循環(huán)結(jié)構(gòu)中常用的語句break、continue的使用以及循環(huán)的嵌套。教學(xué)要求:要求大家掌握這三種循環(huán)結(jié)構(gòu)的使用,理解break和continue在循環(huán)結(jié)構(gòu)中的不同作用,了解循環(huán)的嵌套。第五章 運算符和表達式(2學(xué)時)教學(xué)內(nèi)容:主要介紹了C語言的算術(shù)運算符、關(guān)系運算符、邏輯運算符、賦值運算符、自增和自減運算符、逗號運算符

4、以及條件運算符的功能、結(jié)合性和優(yōu)先級。教學(xué)要求:要求掌握含有這些運算符的表達式值的判定,并且在編程中熟練運用這些運算符解決問題。第六章 函數(shù)(2學(xué)時)教學(xué)內(nèi)容:介紹C語言函數(shù)的概述、函數(shù)定義、函數(shù)的返回值、函數(shù)的調(diào)用、函數(shù)的遞歸調(diào)用。教學(xué)要求:要求掌握函數(shù)的定義、調(diào)用方式,了解函數(shù)形參和實參的特點,掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用,并能熟練編寫具有一定功能的函數(shù)。第七章 數(shù)組(2學(xué)時)教學(xué)內(nèi)容:介紹C語言中數(shù)組的定義和使用,其中重點介紹一維數(shù)組的定義、引用、初始化和作為函數(shù)參數(shù)時數(shù)據(jù)傳遞方式,此外對二維數(shù)組的定義、引用和初始化也作了詳細的說明。教學(xué)要求:要求熟練掌握一維數(shù)組的使用,了解的二維數(shù)組的

5、應(yīng)用,并且理解數(shù)組元素和數(shù)組名作函數(shù)參數(shù)的不同,進而靈活運用數(shù)組作函數(shù)參數(shù)編程。第八章 字符與字符串(2學(xué)時)教學(xué)內(nèi)容:主要介紹了C語言中單個字符的輸入輸出、字符數(shù)組與字符串、字符串的輸入和輸出函數(shù)、字符串的操作函數(shù)、二維字符串?dāng)?shù)組。教學(xué)要求:要求掌握字符和字符串的輸入輸出方法,掌握字符串的存儲特點以及常用字符串操作函數(shù)的使用,了解的二維字符串?dāng)?shù)組的使用。第九章 變量類別與編譯預(yù)處理(2學(xué)時)教學(xué)內(nèi)容:主要介紹了全局變量和局部變量以及自動變量、靜態(tài)變量和寄存器變量的特點和關(guān)系,介紹了編譯預(yù)處理命令中的宏定義和文件包含教學(xué)要求:要求掌握局部變量和全局變量的特點和使用方法,了解自動變量和靜態(tài)變量的

6、區(qū)別,掌握不帶參數(shù)的宏和帶參數(shù)的宏的使用,熟練運用“文件包含”功能。第十章 指針(一)(2學(xué)時)教學(xué)內(nèi)容:主要介紹了C語言中指針的基本概念和指向變量的指針變量、指向一維數(shù)組的指針變量和指向字符串的指針變量的定義及使用教學(xué)要求:要求掌握指針變量的定義和引用,掌握指向數(shù)組元素和字符串中字符的指針變量的使用,理解指針變量作函數(shù)參數(shù)與數(shù)組名或字符串作函數(shù)參數(shù)的關(guān)系。第十一章 指針(二)(2學(xué)時)教學(xué)內(nèi)容:主要介紹了返回指針值的函數(shù)、指向函數(shù)的指針、指針數(shù)組、指針與多維數(shù)組、指向指針的指針以及命令行參數(shù)教學(xué)要求:要求掌握分別指向函數(shù)、數(shù)組、指針的指針變量的定義和引用,掌握指針數(shù)組處理若干字符串的方法,掌

7、握main()函數(shù)形參的定義和使用,了解指向數(shù)組的指針與指針數(shù)組、指向函數(shù)的指針變量與定義返回值是指針的函數(shù)的區(qū)別。第十二章 結(jié)構(gòu)體、共用體和枚舉類型(4學(xué)時)教學(xué)內(nèi)容:主要介紹C語言中的三種類型的定義和使用,其中兩種是構(gòu)造類型:結(jié)構(gòu)體類型和共用體類型,一種是C語言的基本類型:枚舉類型。教學(xué)要求:要求掌握結(jié)構(gòu)體類型、共用體類型和枚舉類型的變量的定義,掌握結(jié)構(gòu)體類型和共用體類型變量及其成員的引用等基本操作,理解結(jié)構(gòu)體數(shù)組的應(yīng)用,理解結(jié)構(gòu)體和共用體變量存儲形式的不同,了解枚舉類型變量的處理方式。第十三章 指向結(jié)構(gòu)體的指針與鏈表(2學(xué)時)教學(xué)內(nèi)容:首先介紹了C語言中指向結(jié)構(gòu)體變量和結(jié)構(gòu)體數(shù)組的指針變

8、量的使用,接著介紹了結(jié)構(gòu)體數(shù)據(jù)作為函數(shù)參數(shù)的使用,最后介紹了鏈表的概念和基本操作。教學(xué)要求:要求掌握指向結(jié)構(gòu)體變量和結(jié)構(gòu)體數(shù)組的指針變量的使用,掌握鏈表的概念,理解結(jié)構(gòu)體數(shù)據(jù)作為函數(shù)參數(shù)的使用,了解鏈表的基本操作。第十四章 文件(2學(xué)時)教學(xué)內(nèi)容:介紹C語言文件的概述、文件的打開和關(guān)閉、文件的輸入輸出、文件的其它常用函數(shù)。教學(xué)要求:要求掌握文件的打開、關(guān)閉,了解數(shù)據(jù)寫入文件和從文件中讀取的操作以及文件指針的定位,理解ASCII文件與二進制文件的不同特點。三、課程教學(xué)環(huán)節(jié)的安排和基本要求(一)課堂講授:采用多媒體教學(xué),教案為多媒體演示文稿,授課時的例題均采用實際軟件示范或者符合教學(xué)內(nèi)容的多媒體課

9、件,此外所有授課內(nèi)容及例題全部放入局域網(wǎng),供學(xué)生復(fù)習(xí)和預(yù)習(xí)。(二)上機實驗:要求按照教材中上機實驗要求一方面運行例題、鞏固課堂內(nèi)容,一方面根據(jù)實驗要求、結(jié)合例題編寫程序,培養(yǎng)學(xué)生編程的能力。(三)上機實驗內(nèi)容和要求:實驗一 (2學(xué)時)實驗內(nèi)容:1掌握C程序源文件的新建、打開、保存和關(guān)閉的方法。2掌握C程序的編輯、編譯、運行方法。3掌握基本輸入輸出函數(shù)scanf()和printf()的使用。實驗二 (2學(xué)時)實驗內(nèi)容:1掌握十進制、八進制、十六進制數(shù)的表示形式,并且可以用十進制、八進制、十六進制形式輸出整數(shù)。2了解C語言文字數(shù)據(jù)的表示方法,掌握字符與字符串的輸入輸出。3掌握變量的定義和賦值。4了

10、解數(shù)據(jù)運算中類型的自動轉(zhuǎn)換。5了解數(shù)據(jù)的強制轉(zhuǎn)換方法。實驗三 (2學(xué)時)實驗內(nèi)容:1了解簡單程序流程圖的畫法。2掌握if語句的使用。3掌握switch語句的使用。實驗四 (2學(xué)時)實驗內(nèi)容:1掌握C程序調(diào)試時設(shè)置斷點的方法。2掌握while語句使用。3掌握do-while語句使用。4掌握for語句使用。5理解break和continue在循環(huán)結(jié)構(gòu)中的不同作用。6了解循環(huán)的嵌套。實驗五 (2學(xué)時)實驗內(nèi)容:1掌握算術(shù)運算符的使用及其表達式值的判定。2掌握關(guān)系運算符的使用及其表達式值的判定。3掌握邏輯運算符的使用及其表達式值的判定。4掌握賦值運算符的使用及其表達式值的判定。5掌握自增和自減運算符的

11、使用及其前置方式和后置方式對表達式值的影響。6掌握逗號運算符的使用及其表達式值的判定。7掌握條件運算符的使用及其表達式值的判定。實驗六 (2學(xué)時)實驗內(nèi)容:1掌握C語言函數(shù)的定義和調(diào)用。2掌握函數(shù)形參和實參的特點。3掌握函數(shù)的嵌套調(diào)用。4掌握函數(shù)的遞歸調(diào)用。實驗七 (2學(xué)時)實驗內(nèi)容:1掌握一維數(shù)組的定義、引用、初始化。2了解二維數(shù)組的定義、引用和初始化。3掌握數(shù)組元素和數(shù)組名作為函數(shù)參數(shù)時數(shù)據(jù)傳遞方式,理解二者的不同。實驗八 (2學(xué)時)實驗內(nèi)容:1掌握字符和字符串的輸入輸出方法。2掌握常用字符串操作函數(shù)的使用。3了解的二維字符串?dāng)?shù)組的使用。實驗九 (2學(xué)時)實驗內(nèi)容:1掌握全局變量和局部變量

12、特點和關(guān)系。2掌握自動變量、靜態(tài)變量和寄存器變量的特點和關(guān)系。3掌握不帶參數(shù)的宏和帶參數(shù)的宏的使用。4熟練運用“文件包含”功能。實驗十 (2學(xué)時)實驗內(nèi)容:1掌握變量的直接引用和間接引用。2掌握指針變量的定義和引用。3掌握指向數(shù)組元素指針變量的使用。4掌握指向字符串中字符的指針變量的使用。5理解指針變量作函數(shù)參數(shù)與數(shù)組名或字符串作函數(shù)參數(shù)的關(guān)系。實驗十一 (2學(xué)時)實驗內(nèi)容:1掌握返回指針值的函數(shù)的定義。2掌握分別指向函數(shù)、數(shù)組元素、數(shù)組、指針的指針變量的定義和引用。3掌握指針數(shù)組處理若干字符串的方法。4掌握main()函數(shù)形參的定義和使用。5了解指向數(shù)組的指針與指針數(shù)組、指向函數(shù)的指針變量與

13、定義返回值是指針的函數(shù)的區(qū)別。實驗十二 (2學(xué)時)實驗內(nèi)容:1掌握結(jié)構(gòu)體類型、共用體類型和枚舉類型的變量的定義。2掌握結(jié)構(gòu)體類型和共用體類型變量及其成員的引用等基本操作。3理解結(jié)構(gòu)體數(shù)組的應(yīng)用。4理解結(jié)構(gòu)體和共用體變量存儲形式的不同。5了解枚舉類型變量的處理方式。實驗十三 (4學(xué)時)實驗內(nèi)容:1掌握指向結(jié)構(gòu)體變量和結(jié)構(gòu)體數(shù)組的指針變量的使用2掌握鏈表的概念。3理解結(jié)構(gòu)體數(shù)據(jù)作為函數(shù)參數(shù)的使用。4了解鏈表的基本操作。實驗十四 (4學(xué)時)實驗內(nèi)容:1掌握文件的打開、關(guān)閉。2了解數(shù)據(jù)寫入文件和從文件中讀取的函數(shù)的使用方法。3了解文件指針的定位的常用函數(shù)的使用方法。(四)作業(yè)量第1講 2第2講 2第3

14、講 2第4講 2第5講 2第6講 2第7講 2第8講 2第9講 2第10講 2第11講 2第12講 2第13講 2第14講 2(五)考核:采用題庫隨機抽體,上機測試,主要考核學(xué)生是否完全掌握C環(huán)境的使用以及基本的C程序結(jié)構(gòu)的使用,側(cè)重動手能力,以及學(xué)生對C語言的概念、程序設(shè)計方法和技巧等綜合能力的考核。四、本課程與其它課程的聯(lián)系本課程的先修課程是計算機文化基礎(chǔ),后續(xù)課程則是各專業(yè)的計算機應(yīng)用軟件或計算方法。本課程主要是作為各專業(yè)的計算機基礎(chǔ)類課程。五、建議教材及教學(xué)參考書建議教材:C程序設(shè)計(第二版),譚浩強著,清華大學(xué)出版社,1999教學(xué)參考書:邊用邊學(xué)C語言,郎建昭,清華大學(xué)出版社,200

15、2精講多練C語言,馮博琴、劉路放編著,西安交通大學(xué)出版社,1997C語言與程序設(shè)計,夏寬理編著,復(fù)旦大學(xué)出版社,1994。六、必要說明本大綱列出的講課內(nèi)容為主要內(nèi)容,由于現(xiàn)在學(xué)生的程度參差不齊,教師可本著因材施教的原則,適當(dāng)增減。C語言程序設(shè)計習(xí)題集第1章 C語言概述11 c語言程序的總體結(jié)構(gòu)是怎樣的。 解:一個完整的c語言程序,是由一個、且只能由一個main()函數(shù)(又稱主函數(shù))和若干個其他函數(shù)結(jié)合而成的,或僅由一個main()函數(shù)構(gòu)成。12 c語言程序的基本單位是什么?它的結(jié)構(gòu)又如何? 解:函數(shù)是c語言程序的基本模塊單元。 任何函數(shù)(包括主函數(shù)main()都是由函數(shù)說明和函數(shù)體兩部分組成。

16、其一般結(jié)構(gòu)如下: 函數(shù)類型 函數(shù)名(函數(shù)參數(shù)表) 說明語句部分; 執(zhí)行語句部分; 13主函數(shù)main()在程序中的地位如何。程序總是從哪個函數(shù)開始執(zhí)行,到哪個函數(shù)執(zhí)行完后結(jié)束? 解:main()函數(shù)的作用相當(dāng)于其他高級語言中的主程序;其他函數(shù)的作用相當(dāng)于子程序。 一個c語言程序,總是從main()函數(shù)開始執(zhí)行,而不論其在程序中的位置。當(dāng)主函數(shù)執(zhí)行完畢時,亦即程序執(zhí)行完畢。習(xí)慣上,將主函數(shù)main()放在最前頭。 14 c語言的語句分為哪幾類? 解:按照語句功能或構(gòu)成的不同,可將c語言的語句分為五類。 控制語句、函數(shù)調(diào)用語句、表達式語句、空語句和復(fù)合語句。15執(zhí)行一個c語言程序的一般過程是什么?

17、解:運行一個c語言程序的一般過程,如下圖所示。啟動TC編輯或修改源程序連接編譯運行退出TC(結(jié)束)語法錯誤邏輯錯誤 1)啟動Tc,進入Tc集成環(huán)境。 2)編輯(或修改)源程序。 3)編譯。如果編譯成功,則可進行下一步操作;否則,返回2)修改源程序,再重新編譯,直至編譯成功。 4)連接。如果連接成功,則可進行下一步操作;否則,根據(jù)系統(tǒng)的錯誤提示進行相應(yīng)修改,再重新連接,直至連接成功。 5)運行。通過觀察程序運行結(jié)果,驗證程序的正確性。 6)退出Tc集成環(huán)境,結(jié)束本次程序運行。 16在Tc集成環(huán)境下,下列操作的快捷鍵分別是什么解:存盤:F2;編譯與連接:F9;運行:nF9;查看運行結(jié)果:Alt+F

18、5。第2章數(shù)據(jù)類型、運算符與表達式2.1 指出下列變量名中,哪些是合法的,哪些是非法的。如果非法,為什么?Int,char,345,ABdf,c&d,string*,_322,alpf_beat,JOHN.smith,3ab解:ABdf,_322,alpf_beat合法,其它的非法Int,char非法是因為它們都是C語言關(guān)鍵字;345,3ab非法是因為變量名不能以阿拉伯?dāng)?shù)字開頭;c&d,string*,JOHN.smith非法是因為變量名中只能由字母、數(shù)字和下劃線組成。2.2 計算下列表達式的值(1)a+b%3*(int)(a-b)/4 (設(shè)a=13.6,b=8)(2)(x+y)/2+(int

19、)x%(int)y (設(shè)x=4.5,y=2.5)(3)z*=3+6,z/z=z/2,z+=z-=z*=z (設(shè)z=6)解:(1) 15.600000;(2)3.500000;(3)0。第3章 順序結(jié)構(gòu)程序設(shè)計3.1 若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765, c1=a,c2=b。想得到以下輸出格式和結(jié)果,請寫出程序(包括定義變量類型和設(shè)計輸出)。 a=3b=4c=5 x=1.200000,y=2.400000,z=-3.600000 x+y=3.600y+z=-1.20z+x=-2.40 c1=aor97(ASCII) c2=bor98(

20、ASCII) (表示空格,下同)參考源程序如下:main() int a=3,b=4,c=5; long int u=51274,n=128765; float x=1.2,y=2.4,z=3.6; char c1=a,c2=b; printf(a=%2d b=%2d c=%2dn,a,b,c); printf(x=%f,y=%f,z=%fn,x,y,z); printf(x+y=%5.2f y+z=%5.2f z+x=%5.2fn,x+y,y+z,z+x); printf(u=%6ld n=%9ldn,u,n); printf(%s %s %d%sn,c1=a,or,c1,(ASCII);

21、printf(%s %s %d%sn,c2=a,or,c2,(ASCII); 3.2用scanf下面的函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82, c1=A,c2=a,問在鍵盤上如何輸入? main() int a,b;float x,y;char c1c2; scanf(a=%d_b=%d,&a,&b); scanf(_x=%f_y=%e,&x,&y); scanf(_c1=%c_c2=%c,&c1,&c2); 輸入方法如下:a=3b=7 x=8.5y=71.82 c1=Ac2=a3.2 設(shè)圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用s

22、canf輸入數(shù)據(jù),輸出計算結(jié)果,輸出時要求文字說明,取小數(shù)點后兩位數(shù)字。請編程序。 參考源程序: main() float r,h,C1,Sa,Sb,Va,Vb; scanf(%f,%f,&r,&h); C1=2*3.14*r; Sa=3.14*r*r; Sb=4*Sa; Va=4*3.14*r*r*r/3; Vb=Sa*h; printf(C1=%.2fn,C1); printf(Sa=%.2fnSb=%.2fnVa=%.2fnVb=%.2fn,Sa,Sb,Va,Vb); 3.3輸入一個華氏溫度,要求輸出攝氏溫度。公式為c=5(F-32)/9,輸出要求有文字說明,取位2小數(shù)。參考源程序如下:

23、 main() float F,c; scanf(%f,&F); c=5*(F-32)/9; printf(輸入的華氏溫度為:%.2f,則攝氏溫度為%.2f,f,c);3.4 已知三角形的三邊長,求其面積。解:假設(shè)輸入的三邊能構(gòu)成三角形,三角形的面積公式為: Area= 其中S=(a+b+c)/2。參考源程序如下:#include “math.h”Main() Float a,b,c,s,area;Printf(“請輸入三角形的三邊:”);Scanf(“%f,%f,%f”,&a,&b,&c);S=(a+b+c)/2.0;Area=sqrt(s*(s-a)*(s-b)*(s-c);Printf(

24、“三角形的三邊為:%7.2f, %7.2f, %7.2fn”,a,b,c);Prinft(“三角形的面積為:%7.2fn”,area); 第4章 選擇結(jié)構(gòu)程序設(shè)計4.1 寫出下面表達式的值(設(shè)a=1,b=2,c=3,x=4,y=3)(1)a+bc&b=c(2)!ab&b!=c|x+y=x+y)?c-a:y-x(4)!(x=a)&(y=b)&0(5)!(a+b)+c-1&b+c/2(6)a|1+a&b&c解:(1)0;(2)1;(3)2;(4)0;(5)1;(6)1。4.2有三個整數(shù)a、b、c,由鍵盤輸入,輸出其中最大的數(shù)。參考源程序:main() int a,b,c,t; scanf(%d %

25、d %d,&a,&b,&c); if(ab) if(ac) t=a; else t=c; else if(bc) t=b; else t=c; printf(%dn,t); 4.3給出一百分制成績,要求輸出成績等級A、B、C、D、E。90分以上為A,8089分為B,7079分為C,6069分為D, 60分以下為E。參考源程序:main() int number,md;char c1; scanf(%d,&number); md=number/10; switch(md) case 10: case 9: c1=A;break; case 8: c1=B;break; case 7: c1=C;

26、break; case 6: c1=D;break; case 5: case 4: case 3: case 2: case 1: case 0: c1=E;break; printf(%cn,c1); 4.4給一個不多于5位的正整數(shù),要求:求出它是幾位數(shù);分別打印出每一位數(shù)字;按逆順序打印出各位數(shù)字,例如原來為321,應(yīng)輸出123。參考源程序:main() int a,b,c,d,e,n;long m; scanf(%ld,&m); a=0.0001*m;b=10*(0.0001*m-a);c=100*(0.0001*m-a-0.1*b); d=1000*(0.0001*m-a-0.1*b

27、-0.01*c);e=m-10000*a-1000*b-100*c-10*d; if(a!=0) n=5,printf(%d%d,%d,%d,%d,%d%d%d%d%d%dn,n,a,b,c,d,e,e,d,c,b,a); else if(b!=0) n=4,printf(%d %d,%d,%d,%d %d%d%d%dn,n,b,c,d,e,e,d,c,b); else if(c!=0) n=3,printf(%d %d,%d,%d %d%d%dn,n,c,d,e,e,d,c); else if(d!=0) n=2,printf(%d %d,%d %d%dn,n,d,e,e,d); else

28、n=1,printf(%d %d %dn,n,e,e); 4.5企業(yè)發(fā)放的獎金根據(jù)利潤提成。利潤(I)低于或等于10萬元的,獎金可提10%;利潤高于10萬元,低20萬元(100000I200000)時,低于10萬元的部分按10%提成,高于1000000元的部分,可提成7.5%;2000000I4000000,低于20萬元的部分仍按上述方法提成(下同)高于20萬元的部分按5%提成;4000000I6000000時,高于40萬元的部分按3%提成,600000010000000時,超過100萬元的部分按1%提成。從鍵盤輸入當(dāng)月利潤I,求應(yīng)發(fā)獎金總數(shù)。 要求:用if語句編程序;用switch語句編程序

29、。 用if語句編程序: main() int a,b,c,d,e;float d1=0.01,d2=0.015,d3=0.03,d4=0.05,d5=0.075,d6=0.10; double jj,k;long i; scanf(%ld,&i); k=0.00001*i;a=k-10;b=k-6;c=k-4;d=k-2;e=k-0; if(a0) a=0; if(b0) b=0; if(c0) c=0; if(d0) d=0; jj=a*d1+(b-a)*d2+(c-b)*d3+(d-c)*d4+(e-d)*d5+(k-e)*d6; printf(jj=%.3fn,100000*jj); 用

30、switch語句編程序: main() int a,b,c,d,e,n,x;float d1=0.01,d2=0.015,d3=0.03,d4=0.05,d5=0.075,d6=0.10; double jj,k;long i; scanf(%ld,&i); k=0.00001*i;a=k-10;b=k-6;c=k-4;d=k-2;e=k-0;x=k; switch(x) case 0:e=0; case 1:d=0; case 3:c=0; case 5:b=0; case 9:a=0; default:n=0; jj=a*d1+(b-a)*d2+(c-b)*d3+(d-c)*d4+(e-d

31、)*d5+(k-e)*d6; printf(jj=%.3fn,100000*jj); 4.6輸入四個整數(shù),要求按大小順序輸出。 參考源程序:main() int a,b,c,d,t;scanf(%d,%d,%d,%d,&a,&b,&c,&d); if(ab) t=a,a=b,b=t; if(ac) t=a,a=c,c=t; if(ad) t=a,a=d,d=t; if(bc) t=b,b=c,c=t; if(bd) t=b,b=d,d=t; if(c1) h=0; else h=10; printf(%dn,h); 第5章 循環(huán)結(jié)構(gòu)程序設(shè)計5.1求n!(n=1-20),(即求1!+2!+3!+

32、4!+5!+20!)參考源程序: main() int n,i=1;long sum=0,s=1; scanf(%d,&n); while(i=n) s=s*i;sum=sum+s;i+; printf(sum=%ldn,sum); 5.2輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。 main() long m,n,i=1,j,s; scanf(%ld,%ld,&m,&n); for(;i=m&i=n) j=m; else j=n; for(;!(j%m=0&j%n=0);j+); printf(s=%ld,j=%ldn,s,j); 5.3輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字

33、和其他字符的個數(shù)。參考源程序: #includestdio.h main() char c;int i=0,j=0,k=0,l=0; while(c=getchar()!=n) if(c=65&c=97&c=48&c=57) j+; else if(c=32) k+; else l+; printf(i=%d,j=%d,k=%d,l=%dn,i,j,k,l); 5.4求Sn=a+aa+aaa+aaaaa(有n個a)之值,其中a是一個數(shù)字。例如:2+22+222+2222+22222(n=5),n由鍵盤輸入。參考源程序: #includemath.h main() int n,sum=0,i=1

34、,s=2; scanf(%d,&n); while(i=100&x1000) a=0.01*x;b=10*(0.01*x-a);c=x-100*a-10*b; if(x=(pow(a,3)+pow(b,3)+pow(c,3) printf(%5d,x);x+; 5.6一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如,6的因子為1、2、3,而6=1+2+3,因此6是完數(shù)。編程序找出1000之內(nèi)的所有完數(shù),并按下面格式輸出其因子:6itsfactorsare1、2、3參考源程序: main() int m,i,j,s; for(m=6;m10000;m+) s=1; for(i=2;im;i

35、+) if(m%i=0) s=s+i; if(m-s=0) printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if(m%j=0) printf(%d ,j);printf(n); 或 main() int m,i,j,s; for(m=6;m1000;m+) s=m-1; for(i=2;im;i+) if(m%i=0) s=s-i; if(s=0) printf(%5d its fastors are 1 ,m);for(j=2;jm;j+) if(m%j=0) printf(%d ,j);printf(n); 5.7有一分數(shù)序列: 2/1,3/

36、2,5/3,8/5,13/8,21/13求出這個數(shù)列的前20項之和。參考源程序: main() int i=1,n;double t,x=1,y=2,s,sum=0; scanf(%ld,&n); while(i=n) s=y/x;sum=sum+s;t=y;y=y+x;x=t;i+; printf(%fn,sum); 5.8一球從100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地時共經(jīng)過多少米?第10次反彈多高?參考源程序: main() int i,n;double h=100,s=100; scanf(%d,&n); for(i=1;i=n;i+) h*=0.5

37、;if(i=1) continue;s=2*h+s; printf(h=%f,s=%fn,h,s); 5.9猴子吃桃問題。猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個。第二天早上又將剩下的桃子吃掉一半,又多吃一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少桃子。參考源程序: main() int i=1,sum=0; for(;i=0.00001); printf(%.3fn,x1); 5.11用二分法求方程在(-10,10)之間的根 2x3-4x2+3x-6=0參考源程序: main() double x1,x2,

38、y1,y2;x1=-10;x2=10; doy1=2*x1*x1*x1-4*x1*x1+3*x1-6; x1=x1-y1/(6*x1*x1-8*x1+3);while(y1!=0); doy2=2*x2*x2*x2-4*x2*x2+3*x2-6; x2=x2-y2/(6*x2*x2-8*x2+3);while(y2!=0); printf(x1=%.3f,x2=%.3fn,x1,x2); 5.12打印以下圖案 * * * * * * *參考源程序: #includemath.h main() int i=1,k,l,m; for(;i=49;i+) k=i%7;l=3-fabs(i-1)/7-

39、3);m=fabs(i-4-7*(i-1)/7); if(k=1) printf(n); if(m=l) printf(*); else printf( ); printf(n); 第6章 數(shù)組6.1用篩選法求100以內(nèi)的素數(shù)。參考源程序: main() int i,j,a100; for(i=2;i100;i+) ai=i; for(j=2;j=i;j+) if(ji) if(ai%j=0) break; if(ai-j=0) printf(%5d,ai); printf(n); 或 #includemath.h main() static int i,j,k,a98; for(i=2;i1

40、00;i+) ai=i;k=sqrt(i); for(j=2;j=ai;j+) if(j=k+1) printf(%5d,ai); printf(n); 6.2求一個矩陣對角線元素之和。解:以3*3矩陣為例,參考源程序如下: main() int i=0,j=0,a33,s1,s2; for(i=0;i3;i+) for(j=0;j0;i-) if(aiai-1) t=ai-1;ai-1=ai;ai=t; for(i=0;i10;i+)printf(%5d,ai);printf(n); 6.4將一個數(shù)組的值按逆序重新存放,例如,原來順序為:8,6,5,4,1。要求改為:1,4,5,6,8。參考

41、源程序: main() int i,b10; for(i=0;i-1;i-) printf(%5d,bi); printf(n);6.5 打印出以下楊輝三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 參考源程序:main() static int m,n,k,b1515; b01=1; for(m=1;m15;m+) for(n=1;n=m;n+) bmn=bm-1n-1+bm-1n; printf(%-5d,bmn);printf(n); 6.6找出一個二位數(shù)組中的鞍點,即該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點。參考源程序:#define N 10#define M 10main()int I,j,m,n,flag1,flag2,aNM,max,maxj;/*輸入二維數(shù)組array1*/printf(“輸入二維數(shù)組的行數(shù):”);scanf(“%d”,&n);pri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論