C語(yǔ)言程序設(shè)計(jì)課后習(xí)題答案章節(jié)練習(xí)題1-11章全含原題_第1頁(yè)
C語(yǔ)言程序設(shè)計(jì)課后習(xí)題答案章節(jié)練習(xí)題1-11章全含原題_第2頁(yè)
C語(yǔ)言程序設(shè)計(jì)課后習(xí)題答案章節(jié)練習(xí)題1-11章全含原題_第3頁(yè)
C語(yǔ)言程序設(shè)計(jì)課后習(xí)題答案章節(jié)練習(xí)題1-11章全含原題_第4頁(yè)
C語(yǔ)言程序設(shè)計(jì)課后習(xí)題答案章節(jié)練習(xí)題1-11章全含原題_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、習(xí)題11-1 簡(jiǎn)述什么是一般意義上的程序?什么是計(jì)算機(jī)程序?答:通常指完成某項(xiàng)工作的一整套活動(dòng)過(guò)程及活動(dòng)方式。計(jì)算機(jī)程序就是為使 HYPERLINK /s?wd=%E7%94%B5%E5%AD%90%E8%AE%A1%E7%AE%97%E6%9C%BA&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao t _blank 計(jì)算機(jī)執(zhí)行一個(gè)或多個(gè)操作,或執(zhí)行某一任務(wù),按序設(shè)計(jì)的 HYPERLINK /s?wd=%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%8C%87%E4%BB%A4&tn=SE_PcZhidaonwhc_ngpagmjz

2、&rsv_dl=gh_pc_zhidao t _blank 計(jì)算機(jī)指令的集合。1-2 簡(jiǎn)述程序設(shè)計(jì)的步驟與方法。答:(1)問(wèn)題分析:一般來(lái)說(shuō)程序要解決的是一個(gè)具體的問(wèn)題,所以程序設(shè)計(jì)人員需要具體問(wèn)題具體分析,在把任務(wù)交給計(jì)算機(jī)處理之前必須對(duì)問(wèn)題做出明確的分析與定義,確定問(wèn)題的條件及期望的結(jié)果,找出解決問(wèn)題的規(guī)律。(2)算法設(shè)計(jì):算法是解決問(wèn)題的步驟及其描述,是程序設(shè)計(jì)的核心內(nèi)容。算法是根據(jù)問(wèn)題分析中的具體要求而設(shè)計(jì)的,是對(duì)問(wèn)題處理過(guò)程的進(jìn)一步細(xì)化。(3)程序編碼:編碼就是使用計(jì)算機(jī)編程語(yǔ)言編寫(xiě)源程序代碼的過(guò)程。(4)調(diào)試運(yùn)行:指在計(jì)算機(jī)上調(diào)試程序。調(diào)試運(yùn)行程序有兩個(gè)目的:一是消除由于疏忽而引起

3、的語(yǔ)法錯(cuò)誤或邏輯錯(cuò)誤等;二是用各種可能的輸入數(shù)據(jù)對(duì)程序進(jìn)行測(cè)試,驗(yàn)證程序是否對(duì)各種合理的數(shù)據(jù)都能得到正確的結(jié)果,而對(duì)不合理的數(shù)據(jù)也能做適當(dāng)?shù)奶幚?。?)文檔編制:指整理并寫(xiě)出文字材料。文檔包括程序說(shuō)明文件和用戶(hù)操作手冊(cè)。 1-3 簡(jiǎn)述結(jié)構(gòu)化程序的主要特點(diǎn)。答:只有一個(gè)入口;只有一個(gè)出口;不包含死循環(huán)(永遠(yuǎn)都執(zhí)行不完的循環(huán));不包含死語(yǔ)句(永遠(yuǎn)也執(zhí)行不到的語(yǔ)句)。自頂向下,逐步求精,模塊化設(shè)計(jì),結(jié)構(gòu)化編碼。1-4 簡(jiǎn)述結(jié)構(gòu)化程序設(shè)計(jì)思想。答:(1)結(jié)構(gòu)化編碼為了使程序具有良好的設(shè)計(jì)風(fēng)格,編程時(shí)應(yīng)使用以下三種控制結(jié)構(gòu)進(jìn)行編程:順序結(jié)構(gòu):順序結(jié)構(gòu)用來(lái)控制一個(gè)操作序列,從開(kāi)始到結(jié)束順序執(zhí)行;選擇結(jié)構(gòu):

4、根據(jù)條件判定的結(jié)果去執(zhí)行不同分支中的語(yǔ)句。選擇結(jié)構(gòu)也稱(chēng)為分支結(jié)構(gòu),其為程序按不同情況自動(dòng)選擇步驟提供控制手段;循環(huán)結(jié)構(gòu):根據(jù)條件判定的結(jié)果決定是否重復(fù)多次執(zhí)行或者一次也不執(zhí)行同一組步驟。循環(huán)結(jié)構(gòu)也被稱(chēng)為重復(fù)結(jié)構(gòu),其為程序描述重復(fù)操作提供了控制手段。(2)結(jié)構(gòu)化程序的特點(diǎn)只有一個(gè)入口;只有一個(gè)出口;不包含死循環(huán)(永遠(yuǎn)都執(zhí)行不完的循環(huán));不包含死語(yǔ)句(永遠(yuǎn)也執(zhí)行不到的語(yǔ)句)。(3)結(jié)構(gòu)化程序的分析方法 結(jié)構(gòu)化程序設(shè)計(jì)對(duì)問(wèn)題采取所謂的“自頂向下,逐步求精”的方法進(jìn)行分析。(4)模塊化設(shè)計(jì)模塊化設(shè)計(jì)采取分治策略,將一個(gè)復(fù)雜的任務(wù)劃分成若干基本模塊,然后再對(duì)每一個(gè)模塊進(jìn)行具體化,逐步細(xì)化出一個(gè)個(gè)功能獨(dú)立

5、的模塊。最下層模塊完成最具體的功能。每一個(gè)模塊都遵循高聚合性、低耦合性的分解原則。1-5 簡(jiǎn)述算法的概念以及特點(diǎn)。答:算法是指為解決某個(gè)特定問(wèn)題而采取的方法和步驟。這里所說(shuō)的算法一般是指用計(jì)算機(jī)解決問(wèn)題的方法和步驟,即計(jì)算機(jī)算法。一個(gè)算法的設(shè)計(jì)具備如下特點(diǎn):(1)有窮性。它包含兩個(gè)方面:一方面是指一個(gè)算法應(yīng)在有限的操作步驟內(nèi)完成;另一方面是指算法操作應(yīng)在有限的時(shí)間范圍內(nèi)完成;(2)確定性。算法中的每一個(gè)步驟都是確定的,即不能有二義性,這樣才能確保對(duì)于同一個(gè)算法,相同的輸入必然得出相同的執(zhí)行結(jié)果;(3)有零個(gè)或多個(gè)輸入。輸入是指算法所需要的外部信息。在計(jì)算機(jī)上實(shí)現(xiàn)的算法,是用來(lái)處理數(shù)據(jù)對(duì)象的,在

6、大多數(shù)情況下這些數(shù)據(jù)對(duì)象需要通過(guò)輸入來(lái)得到;(4)有一個(gè)或多個(gè)輸出。算法是有目的的操作,算法的目的是為了求解,這些解只有通過(guò)輸出才能得到。沒(méi)有輸出的算法是沒(méi)有意義的;(5)有效性。算法中的每一個(gè)步驟都應(yīng)當(dāng)能有效地執(zhí)行,并得到確定的結(jié)果。1-6 算法的描述方法有哪些?答:對(duì)算法的描述有自然語(yǔ)言、流程圖、N-S圖、偽代碼等表示方法。(1)自然語(yǔ)言自然語(yǔ)言即人們?nèi)粘I钪惺褂玫恼Z(yǔ)言。使用自然語(yǔ)言描述算法,通俗易懂,初學(xué)者容易掌握。(2)流程圖流程圖是一種被廣泛使用的算法描述方法,它用一些圖框和流程線(xiàn)來(lái)表示各種類(lèi)型的操作。(3)N-S圖這種流程圖中完全去掉了流程線(xiàn),算法的每一步都用一個(gè)矩形框來(lái)描述,把

7、一個(gè)個(gè)矩形框按執(zhí)行的次序連接起來(lái)就是一個(gè)完整的算法描述。(4)偽代碼偽代碼是一種近似高級(jí)語(yǔ)言但又不受語(yǔ)法約束的一種語(yǔ)言描述方式,它用一種介于自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)言之間的文字和符號(hào)來(lái)描述算法,用一行或幾行表示一個(gè)基本操作。它書(shū)寫(xiě)方便,格式緊湊,便于編碼實(shí)現(xiàn)。1-7 用流程圖表示求解n!。開(kāi)始始答:輸入ni=1,p=1i=n Np=p*ii=i+1 y輸出p結(jié) 束1-8 用N-S圖表示求解1100的累加和。答:i=1 sum=0i100sum=sum+ii=i+1輸出sum1-9 一個(gè)C語(yǔ)言程序的基本結(jié)構(gòu)是什么?答:(1)函數(shù)是C語(yǔ)言程序的基本單位C程序是由函數(shù)構(gòu)成的,一個(gè)C語(yǔ)言程序必須有且僅有一

8、個(gè)用main作為名字的函數(shù),這個(gè)函數(shù)通常被稱(chēng)為主函數(shù)。(2)函數(shù)由函數(shù)首部和函數(shù)體兩部分組成1) 函數(shù)首部就是每個(gè)函數(shù)在定義或聲明時(shí)的第一行,它包括函數(shù)名、函數(shù)類(lèi)型、形參名、形參類(lèi)型的說(shuō)明。 2) 函數(shù)體由函數(shù)首部下面最外層的一對(duì)大花括號(hào)中的內(nèi)容組成,它可以包括變量聲明和所調(diào)用函數(shù)的聲明,還可以包括若干執(zhí)行語(yǔ)句,聲明部分可以看作是對(duì)函數(shù)中“對(duì)象”的描述,執(zhí)行語(yǔ)句是對(duì)函數(shù)所要實(shí)現(xiàn)的“動(dòng)作”的描述。1-10 C語(yǔ)言程序的執(zhí)行過(guò)程是什么?答:(1) 編輯:編輯是用戶(hù)把編寫(xiě)好的C語(yǔ)言源程序輸入計(jì)算機(jī),并以文本文件的形式存放在磁盤(pán)上。其標(biāo)識(shí)為:“文件名.c”。(2) 編譯:編譯是把C語(yǔ)言源程序翻譯成用機(jī)

9、器語(yǔ)言表示的目標(biāo)文件。目標(biāo)程序的文件標(biāo)識(shí)是:“文件名.obj”。(3)連接:程序連接過(guò)程是用系統(tǒng)提供的連接程序(也稱(chēng)鏈接程序或裝配程序)將目標(biāo)程序、庫(kù)函數(shù)或其他目標(biāo)程序連接裝配成可執(zhí)行的目標(biāo)程序。可執(zhí)行程序的文件名為:“文件名.exe”,擴(kuò)展名“exe”是可執(zhí)行程序的文件類(lèi)型標(biāo)識(shí)。(4)執(zhí)行:執(zhí)行程序是指將可執(zhí)行的目標(biāo)程序投入運(yùn)行,以獲取程序處理的結(jié)果。如果程序運(yùn)行結(jié)果不正確,可重新回到第一步,重新對(duì)程序進(jìn)行編輯修改、編譯和運(yùn)行。1-11 編寫(xiě)一個(gè)程序,在屏幕上輸出以下圖形。 * * *答:int main() printf(“*”);printf(“*”);printf(“*”);print

10、f(“*”); return 0;1-12 編程在屏幕上輸出以下信息。 * * A wonderful C program! * * 答:int main() printf(“*”);printf(“* A wonderful C program! *”);printf(“*”); return 0;1-13上機(jī)運(yùn)行本章的例1-6、例1-7,熟悉所用系統(tǒng)的上機(jī)方法和步驟。答:答案略2-1為什么C語(yǔ)言的字符型數(shù)據(jù)可以進(jìn)行數(shù)值運(yùn)算?答:在C語(yǔ)言中,字符型數(shù)據(jù)在內(nèi)存中是以 HYPERLINK /s?q=%E4%BA%8C%E8%BF%9B%E5%88%B6&ie=utf-8&src=internal

11、_wenda_recommend_textn t _blank 二進(jìn)制形式存放的,并不是真正的把一個(gè) HYPERLINK /s?q=%E5%AD%97%E7%AC%A6&ie=utf-8&src=internal_wenda_recommend_textn t _blank 字符存進(jìn)內(nèi)存里。在對(duì)字符型數(shù)據(jù)進(jìn)行相加減運(yùn)算的時(shí)候,系統(tǒng)首先將char型數(shù)據(jù)轉(zhuǎn)化成int型數(shù)據(jù)再進(jìn)行相加減運(yùn)算。由字符型數(shù)據(jù)在內(nèi)存的存儲(chǔ)方式來(lái)看,字符型數(shù)據(jù)是可以進(jìn)行數(shù)值運(yùn)算的,對(duì)字符型數(shù)據(jù)做數(shù)值運(yùn)算實(shí)際上就是對(duì)字符本身對(duì)應(yīng)的ASSIC碼進(jìn)行相應(yīng)的數(shù)值運(yùn)算。2-2簡(jiǎn)述字符a的特點(diǎn)。答:a是字符常量。(1)字符常量由單引號(hào)括

12、起來(lái)。(2)字符常量只能是單個(gè)字符。(3) 可以把一個(gè)字符常量賦予一個(gè)字符變量。(4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。2-3標(biāo)識(shí)符在命名時(shí),應(yīng)注意哪幾個(gè)方面?答:(1)在標(biāo)識(shí)符中,大小寫(xiě)字母是有區(qū)別的。(2)ANSI C 標(biāo)準(zhǔn)沒(méi)有規(guī)定標(biāo)示符的長(zhǎng)度,,但是各個(gè)版本的C語(yǔ)言編譯系統(tǒng)都有自己的規(guī)定。(3)標(biāo)識(shí)符雖然可以由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。(4)C語(yǔ)言規(guī)定,用戶(hù)選取的標(biāo)識(shí)符不能是C語(yǔ)言規(guī)定的保留字。2-4 程序中int m=12; m=15;為什么整型變量m的值在運(yùn)算后不是當(dāng)初的12,而是15?答:語(yǔ)句int m=12;在 HYPERLINK /s?q=%E7%A8%8B%

13、E5%BA%8F&ie=utf-8&src=internal_wenda_recommend_textn t _blank 程序編譯后,m的值是12。 HYPERLINK /s?q=%E8%AF%AD%E5%8F%A5&ie=utf-8&src=internal_wenda_recommend_textn t _blank 語(yǔ)句m=15;中“=”是賦值號(hào),將新的值15賦給了m,新的值15把舊的值12覆蓋了,所以m的值是15。2-5已知:int i,a;執(zhí)行語(yǔ)句“i=(a=2*3,a*5),a+6;”后,變量i的值是多少?答:變量i的值是30。2-6 已知:int x,a;執(zhí)行語(yǔ)句“a=(x=1

14、,x+,x+2);”后,變量a、x的值分別是多少?答:a的值是4,x的值是2。2-7 求下面算術(shù)表達(dá)式的值。 (1)x+a%3*(int)(x+y)%2/4 (設(shè)x=2.5,a=7,y=4.7) 答:2.5(2)(float)(a+b)/2+(int)x%(int)y (設(shè)a=2,b=3,x=3.5,y=2.5) 答:3.52-8 代數(shù)表達(dá)式sin30+1cosx QUOTE (sin60。+1)sin30。+1cosx 的C語(yǔ)言算術(shù)表達(dá)式如何寫(xiě)?答:#define PI 3.14159sqrt(sin(PI/180*30)+1)/cos(x)第3章習(xí)題答案3-1順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3

15、-2表達(dá)式語(yǔ)句、復(fù)合語(yǔ)句、空語(yǔ)句、程序控制語(yǔ)句及函數(shù)調(diào)用語(yǔ)句3-3有符號(hào)的十進(jìn)制形式整型數(shù)據(jù),無(wú)符號(hào)的十進(jìn)制形式整型數(shù)據(jù),無(wú)符號(hào)的八進(jìn)制形式整型數(shù)據(jù),無(wú)符號(hào)的十六進(jìn)制形式整型數(shù)據(jù),單個(gè)字符數(shù)據(jù),字符串?dāng)?shù)據(jù),實(shí)型數(shù)據(jù)。3-4scanf(),getchar()等。3-5#include int main()float p,k;printf(請(qǐng)輸入單位為磅的重量數(shù):n);scanf(%f,&p);k=0.4535924*p;printf(對(duì)應(yīng)的千克數(shù)為:%.3fn,k);return 0;3-6#include int main()float a,b,c,sum,average;printf(請(qǐng)輸入

16、高數(shù)成績(jī):n);scanf(%f,&a);printf(請(qǐng)輸入英語(yǔ)成績(jī):n);scanf(%f,&b);printf(請(qǐng)輸入計(jì)算機(jī)成績(jī):n);scanf(%f,&c);sum=a+b+c;printf(總成績(jī)?yōu)閟um=%fn,sum);average=sum/3;printf(平均成績(jī)?yōu)閍verage=%.2fn,average);return 0;3-7#include #define PI 3.1415926int main()float r,S,V;printf(請(qǐng)輸入球的半徑(厘米):n);scanf(%f,&r);S=4*PI*r*r;printf(球的表面積是S=%.2f平方厘米n

17、,S);V=PI*r*r*r*4/3;printf(球的體積是V=%.2f立方厘米n,V);return 0;3-8#include #include int main()int y;float p;printf(請(qǐng)輸入2016年后的某一年:);scanf(%d,&y);p=1500*pow(1+0.1),(y-2016);printf(生產(chǎn)總值是:%f萬(wàn)元n,p);return 0;3-9#include int main()char ch1,ch2,ch3,ch4,t;printf(請(qǐng)任意輸入4個(gè)字母:n);scanf(%c,%c,%c,%c,&ch1,&ch2,&ch3,&ch4);pr

18、intf(依次輸出字母:%c,%c,%c,%cn,ch1,ch2,ch3,ch4);t=ch1;ch1=ch3;ch3=t;t=ch2;ch2=ch4;ch4=t;printf(字母調(diào)換后輸出:%c,%c,%c,%cn,ch1,ch2,ch3,ch4);return 0;3-10#include #include int main()float a1=2,a2=5,t1=60,t2,s,v;s=0.5*a1*t1*t1;printf(乙物體的位移是:%fn,s);t2=sqrt(2*s/a2);printf(乙物體所需的時(shí)間為:%fn,t2);v=a2*t2;printf(乙物體當(dāng)時(shí)的速度是:

19、%fn,v);return 0;習(xí) 題 四(參考答案)4-1 C語(yǔ)言中的關(guān)系運(yùn)算符有哪些?它們的優(yōu)先順序是怎樣的?答:運(yùn)算符含 義優(yōu)先級(jí)小于優(yōu)先級(jí)相同(高)大于=大于或等于= =等于優(yōu)先級(jí)相同(低)!=不等于4-2 C語(yǔ)言中的邏輯運(yùn)算符有哪些?它們的優(yōu)先順序是怎樣的?答:運(yùn)算符含 義舉例說(shuō)明優(yōu)先級(jí)!邏輯非!x如果x為真,則!x為假;如果x為假,則!x為真高&邏輯與x&y如果x和y同時(shí)為真,則結(jié)果為真,否則結(jié)果為假中|邏輯或x|y如果x和y同時(shí)為假,則結(jié)果為假,否則結(jié)果為真低4-3 C語(yǔ)言中如何表示“真”和“假”?又是如何判斷一個(gè)表達(dá)式的“真”和“假”的?答:C語(yǔ)言中,以數(shù)值1代表“真”,以數(shù)值

20、0代表“假”。判斷表達(dá)式的值時(shí),任何非零值均代表“真”(1),零值代表“假”(0)。4-4 條件表達(dá)式的形式是怎樣的?“輸入兩個(gè)數(shù),求最小值”如何用條件表達(dá)式實(shí)現(xiàn)?答:條件表達(dá)式的一般形式為:表達(dá)式1? 表達(dá)式2: 表達(dá)式3#includeint main()int a,b,min;scanf(%d,%d,&a,&b);min=ab|bc 答:原式=0 (5) !(a+b+c)=0 答:原式=14-8 編寫(xiě)程序,輸入3個(gè)整數(shù),輸出其中最小的數(shù)。#include int main() int a,b,c,t; scanf(%d,%d,%d,&a,&b,&c); if(ab) t=a; a=b;

21、b=t; if(ac) t=a; a=c; c=t; if(bc) t=b; b=c; c=t; printf(%dn,a); return 0;4-9 編寫(xiě)程序,輸入一個(gè)非零實(shí)數(shù),判斷其正負(fù)性,若為正數(shù),求其平方,若為負(fù)數(shù),求其立方。#include int main() float a; scanf(%f,&a); if(a0)printf(%5.2fn,a*a); else printf(%5.2fn,a*a*a); return 0;4-10 編寫(xiě)程序,輸入一個(gè)整數(shù),判斷其能否同時(shí)被2和3整除。若能則輸出該整數(shù),若不能,則輸出“該數(shù)不能被2和3整除”。#include int main

22、() int a; scanf(%d,&a); if(a%2=0& a%3=0)printf(%dn,a); else printf(該數(shù)不能被2和3整除”); return 0;4-11 編寫(xiě)程序,輸入一個(gè)字符,判斷其是否為小寫(xiě)字母,若是則將它轉(zhuǎn)換成大寫(xiě)字母,否則不轉(zhuǎn)換,原樣輸出該字符。#include int main() char ch; scanf(%c,&ch); ch=(ch=A & ch=10 &x+1 0 x10&0 x=0 &2x-9 x0#includeint main()int x,y;scanf(%d,&x);if(x0)y=2*x-9;else if(x=0)y=0;

23、else if(x10)y=x+1;elsey=2*x+9;printf(y=%dn,y);return 0;4-13 某超市對(duì)啤酒進(jìn)行促銷(xiāo),每瓶原價(jià)5元,每人每次限購(gòu)100瓶,活動(dòng)如下:10瓶?jī)?nèi)無(wú)優(yōu)惠,10-29瓶每瓶?jī)?yōu)惠5%,30-49瓶每瓶?jī)?yōu)惠8%,50瓶以上每瓶?jī)?yōu)惠10%。編寫(xiě)程序,輸入購(gòu)買(mǎi)瓶數(shù),計(jì)算購(gòu)買(mǎi)所需金額。設(shè)n為購(gòu)買(mǎi)啤酒的瓶數(shù),d為折扣,則購(gòu)買(mǎi)啤酒的金額p的計(jì)算公式為:p=5*n*(1-d)。#includeint main()int n; float p,d; printf(input a number: ); scanf(%d,&n); if(n0&n=10&n=30&n=

24、50&n=100) d=0.1; printf(The price is %fn, p=5*n*(1-d); else printf(Sorry, error!n);return 0;4-14 編寫(xiě)程序,輸入一個(gè)112的數(shù)字,輸出其相應(yīng)的英文月份單詞。#includeint main()int x;printf(請(qǐng)輸入一個(gè)112的數(shù)字:);scanf(%d,&x);switch(x) case 1:printf(Januaryn);break; case 2:printf(Februaryn);break; case 3:printf(Marchn);break; case 4:printf(

25、Thursdayn);break; case 5:printf(Mayn);break;case 6:printf(Junen);break;case 7:printf(Julyn);break;case 8:printf(Augustn);break;case 9:printf(Septembern);break;case10:printf(Octobern);break;case 11:printf(Novembern);break;case 12:printf(Decembern);break; default:printf(輸入有誤n);return 0;4-15 某小學(xué)5年級(jí)6班班級(jí)

26、周一到周五每天的課外活動(dòng)如下:周一 科技活動(dòng)周二 社會(huì)活動(dòng)周三 藝術(shù)活動(dòng)周四 文藝活動(dòng)周五 勞技活動(dòng)編寫(xiě)程序,輸入代表星期幾的數(shù)字,得出相應(yīng)的活動(dòng)內(nèi)容(設(shè)周一到周五用1-5數(shù)字表示)。#includeint main()int x;printf(請(qǐng)輸入星期幾:);scanf(%d,&x);switch(x) case 1:printf(周一 科技活動(dòng)n);break; case 2:printf(周二 社會(huì)活動(dòng)n);break; case 3:printf(周三 藝術(shù)活動(dòng)n);break; case 4:printf(周四 文藝活動(dòng)n);break; case 5:printf(周五 勞技活動(dòng)

27、n);break; default:printf(輸入有誤n);return 0;4-16 用字符c、x、q、d代表“春季”(35月),“夏季”(68月),“秋季”(911月),“冬季”(12-2)月,設(shè)每月的時(shí)令水果為:月份時(shí)令水果月份時(shí)令水果月份時(shí)令水果1月獼猴桃5月草莓9月葡萄2月甘蔗6 月櫻桃10月梨子3月菠蘿7月桃子11月蘋(píng)果4月芒果8月西瓜12月桔子編寫(xiě)程序,從鍵盤(pán)輸入一個(gè)字符和數(shù)字,得出當(dāng)季當(dāng)月的時(shí)令水果。#includeint main()int x;char c;printf(請(qǐng)輸入字符和數(shù)字:);scanf(%c,%d,&c,&x);switch(c) case c:pri

28、ntf(季節(jié)為春季n); switch(x) case 3:printf(月份:3月 時(shí)令水果:菠蘿n);break; case 4:printf(月份:4月 時(shí)令水果:芒果n);break; case 5:printf(月份:5月 時(shí)令水果:草莓n);break; default:printf(數(shù)字輸入有誤n); break; case x:printf(季節(jié)為夏季n); switch(x) case 6:printf(月份:6月 時(shí)令水果:櫻桃n);break; case 7:printf(月份:7月 時(shí)令水果:桃子n);break; case 8:printf(月份:8月 時(shí)令水果:西瓜

29、n);break; default:printf(數(shù)字輸入有誤n); break; case q:printf(季節(jié)為秋季n); switch(x) case 9:printf(月份:9月 時(shí)令水果:葡萄n);break; case 10:printf(月份:10月 時(shí)令水果:梨子n);break; case 11:printf(月份:11月 時(shí)令水果:蘋(píng)果n);break; default:printf(數(shù)字輸入有誤n); break; case d:printf(季節(jié)為冬季n); switch(x) case 12:printf(月份:12月 時(shí)令水果:桔子n);break; case 1

30、:printf(月份:1月 時(shí)令水果:獼猴桃n);break; case 2:printf(月份:2月 時(shí)令水果:甘蔗n);break; default:printf(數(shù)字輸入有誤n); break; default:printf(字符輸入有誤n);return 0;習(xí) 題 五5-1 輸出200以?xún)?nèi)所有能被7整除的數(shù)。#include int main()int i;printf(200以?xún)?nèi)能被7整除的數(shù)有:n);for (i = 1;i=200;i+)if ( i % 7 ) = 0 ) /取200以?xún)?nèi)能整除7的數(shù)printf( %5d,i); /輸出return 0;5-2 輸入一行字符,

31、分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字和其他字符的個(gè)數(shù)。#includeint main()char c;int letters=0,space=0,digit=0,other=0;printf(請(qǐng)?輸?入?一?段?字?符?n);while(c=getchar()!=n)if(c=a&c=A&c=0&c=9)digit+;elseother+;printf(字?母?數(shù)y:%dn空?格?數(shù)y:%dn數(shù)y字?數(shù)y:%dn其?他?字?符?數(shù)y:%dn,letters,space,digit,other);return 0;5-3 求11000之間各位數(shù)字之和為15的數(shù)。#include int main

32、()int i,j,sum;for(i=1;i0);if(sum=15)printf(%5d,i);return 0;5-4 打印出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字的立方和正好等于該數(shù)本身。例如153是一個(gè)“水仙花數(shù)”,因?yàn)?53=13+53+33。#include int main()int i,j,k,n;for(n=100;n1000;n+)i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(%5d,n);return 0;5-5 找到所有這樣的三位數(shù),該三位數(shù)等于其每位數(shù)字的階乘之和,即abc=

33、a!+b!+c!。(如:145=1!+4!+5!)#include int fun(int i);int main() int n, a, b, c; printf(The number satisfied condition:n); for (n = 100; n 1000; n+) a = n / 100; b = (n / 10) % 10; c = n % 10; if (n = fun(a) + fun(b) + fun(c) printf(%4d = %d! + %d! + %d!n,n,a,b,c); return 0; int fun(int i) int n = 1; int

34、 s = 1; while (n = i) /*求階乘?的?算?法*/ s *= n; n += 1; return s; /*返回?所求的?階乘?值*/5-6 每行5個(gè)數(shù),分行輸出100以?xún)?nèi)所有的素?cái)?shù)。#include int main() int i,n,t=1; printf( 2);/單獨(dú)處|理2 for(i=3;i100;i+=2) for(n=3;n*n=i;n+=2) if(i%n=0) break; if(in*n)t+; printf(%5d,i);if(t%5=0) printf(n);return 0;5-7 從鍵盤(pán)上輸入兩個(gè)正整數(shù),求這兩個(gè)數(shù)的最大公約數(shù)與最小公倍數(shù)。#

35、include int main() int p,r,n,m,temp;printf(請(qǐng)?輸?入?兩?個(gè)?正y整?數(shù)yn,m:);scanf(%d%d,&n,&m);if(nm)temp=n;n=m;m=temp;p=n*m;while(m!=0)r=n%m;n=m;m=r;printf(它們?的?最?大公?約?數(shù)y為a:%dn,n);printf(它們?的?最?小?公?倍?數(shù)y為a:%dn,p/n);return 0;5-8 鍵盤(pán)輸入整數(shù)n,輸出1+3+5+7+前n項(xiàng)的值(n100)。#include int main()int n,i,sum; scanf(%d,&n); for(i=1,

36、sum=0;i=n;i+) sum+=2*i-1; printf(%dn,sum);return 0;5-9 鍵盤(pán)輸入整數(shù)n,輸出s=1+(1+2)+(1+2+3)+ +(1+2+3+n)的值。#include int main()int i,j,n,sum=0; scanf(%d,&n); for (i = 0; i = n; i+) for (j = 1; j = i; j+)sum += j; printf(sum=%dn,sum);return 0;5-10 鍵盤(pán)輸入整數(shù)m,輸出1+1/2+1/3+1/4+1/m的值。#include int main()int m,k=1;doubl

37、e sum=0.0;printf(please input m:);scanf(%d,&m);dosum=sum+1.0/k;k+;while(k=m);printf(%f,sum);return 0;5-11 用公式求的近似值:/41-1/3+1/5-1/7+,直到最后一項(xiàng)的絕對(duì)值小于10-6為止。#include #include int main()int i = 1, sign = 1; double t = 1, pi = 0; while (fabs(t) = 1e-6) pi = pi + t; i = i + 2; sign = -sign; t = sign*1.0 / i;

38、 printf(pi=%f,4 * pi);return 0;5-12 用公式求e的近似值:e1+1/1! +1/2!+1/3!+1/n!,使誤差小于10-5。#include int main()double s=1,t=1;int i=1;while(1.0/t)=1e-6)t=t*i;s=s+1.0/t;i+;printf(%fn,s);return 0;5-13 從鍵盤(pán)輸入行數(shù)n,打印菱形圖案。*#include int main()int m,n,i,j;scanf(%d,&m);n=(m+1)/2;for(i=0; in; i+)for(j=0;jn-1-i;j+)printf(

39、);for(j=1; j=2*i+1; j+)printf(*);printf(n);for(i=1;in;i+)for(j=0;ji;j+)printf( );for(j=0;j2 *(n-i)-1;j+)printf(*);printf(n);return 0;5-14 猴子吃桃問(wèn)題。猴子第一天摘下若干個(gè)桃子,當(dāng)即吃了一半,不過(guò)癮,又多吃了一個(gè)。第二天早上又吃了剩下的桃子的一半,又多吃了一個(gè)。以后每天都吃了前一天剩下的一半多一個(gè),到第10天早上再想吃的時(shí)候,就剩下一個(gè)桃子了。求第一天共摘了多少個(gè)桃子。#include int main()int day,x1,x2; /*定義? day、x

40、1、x2 3 個(gè)?變?董-為a基本?整?型*/ day=9; x2=1; while(day0) x1=(x2+1)*2; /*第一?天的?桃子數(shù)y是?第二t天桃子數(shù)y加1后的?2倍?*/ x2=x1; day-; /*因?yàn)閍從后向前推?所以?天數(shù)y遞Y減?*/ printf(the total is %dn,x1); /* 輸?出?桃子的?總數(shù)y*/return 0;5-15 100匹馬馱100擔(dān)貨,大馬一匹馱3擔(dān),中馬一匹馱2擔(dān),小馬兩匹馱1擔(dān)。計(jì)算需要大馬、中馬和小馬的數(shù)目。#include int main()int i,j,k,n=0; for (i=0; i 34; i+) for

41、 (j=0; j=50; j+) k=100-i-j; if(k%2=0 & i*3+j*2+k/2 = 100) n+;printf(第%d組:o大馬%d,?中D馬%d,?小?馬%dn, n,i,j,k); return 0;習(xí)題6:【題6.1】定義一個(gè)int型的一維數(shù)組,包含10個(gè)成員,分別賦值為110, 然后將數(shù)組中的成員都向前移一個(gè)位置,即a0=a1, a1=a2, 最后一個(gè)成員的值是原來(lái)第一個(gè)成員的值,然后輸出這個(gè)數(shù)組。 #include #include int main(void) int arr=1,2,3,4,5,6,7,8,9,10; int i,temp; printf(

42、原數(shù)組為:n); for(i=0;i10;i+) printf(%d ,arri); printf(n); temp=arr0; for(i=0;i9;i+) arri=arri+1; arri=temp;/將arr0的值賦給temp,將arri+1賦給arri,最后將temp值賦給arri printf(向前移動(dòng)后的數(shù)組為:n); for(i=0;i10;i+) printf(%d ,arri); return EXIT_SUCCESS;【題6.2】有15個(gè)數(shù)按由大到小順序存放在一個(gè)數(shù)組中,輸入一個(gè)數(shù),要求用折半查找法找出該數(shù)是數(shù)組中第幾個(gè)成員的值。如果該數(shù)不在數(shù)組中,則輸出“無(wú)此數(shù)”。#i

43、nclude int main() int a15 = 99, 97, 87, 76, 65, 63, 59, 58, 51, 43, 32, 31, 28, 15, 6; int x, low, high, mid, n; n = 15; low = 0; high = n - 1; scanf(%d, &x); while (low amid) high = mid - 1;/若查找的值大于中點(diǎn)值,則上限索引值變?yōu)橹悬c(diǎn)索引減1 else if (x amid) low = mid + 1;/若x小于中點(diǎn)值,則將下限索引變?yōu)橹悬c(diǎn)索引加1。 else if (x = amid) printf(

44、%d is %dth number!n, x, mid+1);/若x值等于中點(diǎn)值,則輸出中點(diǎn)索引加1的值。 break; if (x != amid) printf(No match!n);/若遍歷完所有元素,找不到與x相等的中點(diǎn)值,則輸出找不到。 return 0;【題6.3】用篩選法求10100之間的素?cái)?shù)。# include# includevoid main()int a90,i,j,n=0;/查找的值有90個(gè)for(i=10;i=100;i+)ai=i;/將第i個(gè)值ai設(shè)為ifor(i=10;i=100;i+)/i從10開(kāi)始循環(huán) for(j=2;j=sqrt(i);j+) if(ai%

45、j=0) ai=0;/若ai對(duì)j取余數(shù)值為0,則ai不是素?cái)?shù)。 for(i=10;i=100;i+) if(ai!=0) printf(%d ,ai); n+;/若ai!=0,則為素?cái)?shù),將素?cái)?shù)個(gè)數(shù)n加1if(n%10=0) printf(n);/每輸出10個(gè)素?cái)?shù)換行【題6.4】將一個(gè)數(shù)組中的值按逆序重新存放。例如,原來(lái)順序?yàn)?, 2, 3, 4, 5,要求改為5, 4, 3, 2, 1。#include int main() int a5 = 1, 2, 3, 4, 5; int i = 0, tmp; for (i = 0; i 5/2; +i) tmp = a4-i; a4-i = ai;

46、 ai = tmp;/將a4-i的值賦給tmp,ai的值賦給a4-i,最后將tmp賦給ai,實(shí)現(xiàn)了逆序。 for (i = 0; i 5; +i) printf(%4d, ai);printf(n); return 0;【題6.5】找出一維數(shù)組中重復(fù)的數(shù)據(jù),并將其刪除。#include / 升序數(shù)組srcvoid sort(int *src, int len) int tem; for (int i = 0; i len; i+) for (int j = 0; j srcj+1) tem = srcj; srcj = srcj+1; srcj+1 = tem; int main() int

47、num10 = 0, 2, 5, 1, 1, 5, 4, 9, 2, 1, d; int i = 0, cnt; sort(num, 10); / 排序 d = num0; for (i = 1; i 10; i+) / 遍歷比較 if (numi != d) printf(%d , d); d = numi; if (num9 = d) printf(%dn, d); return 0;【題6.6】.利用隨機(jī)函數(shù)產(chǎn)生10個(gè)20以?xún)?nèi)的整數(shù),逆序輸出每個(gè)成員,再依次計(jì)算其中質(zhì)數(shù)(素?cái)?shù))的和,并輸出來(lái)。#include #include #include int main()int i,j,a10

48、,s=0;/c產(chǎn)生10個(gè)數(shù)srand(time(NULL);for(i=0;i10;i+)ai=rand()%20;printf(產(chǎn)生的隨機(jī)數(shù):n);for(i=0;i=0;i-)printf(%d ,ai);for(i=0;i10;i+)for(j=2;j1&ai%j=0) break;/值為0則說(shuō)明ai不是素?cái)?shù)。if(j=ai) s+=ai;/若ai的值與j相等,則說(shuō)明ai為素?cái)?shù),將素?cái)?shù)加起來(lái)求和。printf(n其中素?cái)?shù)的和=%d,s);return 0;【題6.7】編寫(xiě)程序,在3行4列的二維數(shù)組中查找第一次出現(xiàn)的負(fù)數(shù)。#include#include#includeint main()

49、 int a34 = 41,345,35,23, 41,345,-2,23, 41,345,35,23; int flag=1;/flag為1說(shuō)明元素值為正數(shù) for(int i=0;i3 & flag;i+) for(int j=0;j4;j+) if(aij0) printf(%d %d %dn,i,j,aij);/將打印出負(fù)值的行號(hào),列好,值依次輸出 flag=0; break; return 0;【題6.8】編寫(xiě)程序,輸出一個(gè)7行的Pascal三角形:#include#define M 7void main()int aMM, i , j ;for(i=0;iM;i+)for(j=0;

50、j=i;j+)if(i=j|j=0)aij=1;/若符合if條件,則滿(mǎn)足值為1elseaij=ai-1j+ai-1j-1;printf(%dt,aij);if(i=j)printf(n); 【題6.9】編寫(xiě)程序,用二維數(shù)組輸出沙漏形,圖形如下:#include stdio.hvoid main() int i,j,k; for(i=1;i=3;i+) for(j=1;ji;j+) printf( ); for(k=1;k=7-2*i;k+) printf(*);/前三行的形狀 printf(n); for(i=2;i=3;i+) for(j=1;j=3-i;j+) printf( ); for

51、(k=1;k=2*i-1;k+) printf(*);/后三行的形狀 printf(n); 【題6.10】有一段文字,共有2行,每行40個(gè)字符。請(qǐng)編寫(xiě)程序,分別統(tǒng)計(jì)出其中英文大寫(xiě)字母、英文小寫(xiě)字母、數(shù)字、空格及其他字符的個(gè)數(shù)。#include int main()int i,j,upp,low,dig,spa,oth;char text240;/設(shè)置2行,每行40個(gè)字符upp=low=dig=spa=oth=0;for (i=0;i2;i+) printf(please input line %d:n,i+1);gets(texti);/輸入字符for (j=0;j=A& textij=a &

52、 textij=0 & textij=9)dig+;else if (textij= )spa+;elseoth+;printf(nupper case: %dn,upp);printf(lower case: %dn,low);printf(digit : %dn,dig);printf(space : %dn,spa);printf(other : %dn,oth);return 0;習(xí)題7:7-1 變量所在存儲(chǔ)單元的地址信息也是一種數(shù)據(jù),C語(yǔ)言中用專(zhuān)門(mén)的一種數(shù)據(jù)類(lèi)型來(lái)表示地址信息,這就是指針類(lèi)型。如果把內(nèi)存單元的地址用一個(gè)變量來(lái)保存,則這個(gè)變量就稱(chēng)為指針變量?!白兞康闹羔槨笔侵缸兞康牡刂?/p>

53、數(shù)據(jù)。7-2 數(shù)組名和指針變量均表示地址,但它們本質(zhì)不同。數(shù)組名是數(shù)組的首地址,是地址常量;指針變量是變量。7-3 用字符數(shù)組和字符指針變量都能實(shí)現(xiàn)對(duì)字符串的操作,使用時(shí)應(yīng)注意以下三方面存儲(chǔ)內(nèi)容不同,輸入字符串時(shí)有區(qū)別。 賦值方式不同。指針變量的值是可以改變的。7-4 20 9 97-5 p!=q *p=*q7-6 mig7-7 135797-8 1 3 5 7 9 11 3 5 1 4 97-9 略7-10 略7-11 略7-12 給定5個(gè)字符串,輸出其中最大的字符串,要求用指針實(shí)現(xiàn)。參考程序如下:(選擇法排序)#include #include main( )int i,j,temp;ch

54、ar str510,*p5;printf(請(qǐng)輸入5個(gè)字符串:n);for(i=0;i5;i+)gets(stri);/*輸入5個(gè)字符串存入字符數(shù)組str*/for(i=0;i5;i+) pi=stri;/*讓指針數(shù)組元素pi指向字符數(shù)組str的第i行*/*注意stri不是數(shù)組元素,而是第i行的首地址*/for(i=0;i=3;i+) for(j=i+1;j0) /*若pi指向的字符串大于pj指向的串*/ temp=pi; pi=pj;pj=temp; /*則交換指針值*/printf(這5個(gè)字符串按從小到大的順序排列為:n);for(i=0;i5;i+) puts(pi);程序的一次運(yùn)行結(jié)果:

55、請(qǐng)輸入5個(gè)字符串:acdefabdefabcefabcdfabcde這5個(gè)字符串按從小到大的順序排列為:abcdeabcdfabcefabdefacdef8-1 編寫(xiě)一個(gè)函數(shù)int mod(int x,int y),來(lái)計(jì)算并輸出整數(shù)x、y的商及余數(shù)。#includevoid main()int a,b;void mod(int x,int y);printf(請(qǐng)輸入兩個(gè)整型數(shù):);scanf(%d%d,&a,&b);mod(a,b);void mod(int x,int y)int a,b;a=x/y;b=x%y;printf(兩數(shù)的商為: %d/%d=%dn,x,y,a);printf(兩數(shù)

56、的余數(shù)為: %d%d=%dn,x,y,b);8-2 編寫(xiě)一個(gè)函數(shù),判斷某年是否為閏年,若為閏年則返回1,否則返回0。#includeint leap(int x) if(x%4=0 & x%100!=0 | x%400=0) return(1); else return(0);void main()int y;printf(enter Year y:);scanf(%d,&y);printf(leap(%d)=%dn,y,leap(y);if(leap(y)=1) printf(%d是閏年。n,y); else printf(%d不是閏年。n,y);8-3 編寫(xiě)函數(shù),求方程ax2+bx+c=0

57、的解,并將結(jié)果作為函數(shù)值返回。其中的a、b、c作為函數(shù)的形式參數(shù)。#include#includeint equation(int a,int b, int c,float *p1,float *p2) float d; d=sqrt(b*b-4*a*c);if(d=0) *p1=(-b+d)/(2*a); *p2=(-b-d)/(2*a); return 1; else printf(該方程無(wú)實(shí)根。n);return 0;void main()int i,j,k;float x1,x2;printf(輸入 a*x*x+b*x+c中的a,b,c:);scanf(%d,%d,%d,&i,&j,&

58、k);if(equation(i,j,k,&x1,&x2)!=0) printf(兩實(shí)根為: x1=%.2f, x2=%.2fn,x1,x2);8-4 編寫(xiě)函數(shù)pow(x,n)來(lái)計(jì)算xn,其中x為浮點(diǎn)數(shù),n為正整數(shù),而返回值為浮點(diǎn)數(shù)。例如,pow(5.0,2)=25.0。#includefloat pow(float x,int n);void main() float x;int n;printf(請(qǐng)輸入浮點(diǎn)數(shù) x:); scanf(%f,&x); printf(請(qǐng)輸入整數(shù) n:); scanf(%d,&n); printf(%.0f的%d次方為: %.2fn,x,n,pow(x,n);fl

59、oat pow(float x,int n) int i;float multi;multi=1;for(i=0;in;i+) multi=x*multi; return(multi);8-5 編寫(xiě)函數(shù)int prime(int m),其功能是判斷m值是否是素?cái)?shù),若是素?cái)?shù),則返回1,否則返回0。#include#includeint prime(int m)int n;for(n=2;nsqrt(m);n+)if(m%n=0) return 0;return 1;void main()int x,y;printf(enter a number x:);scanf(%d,&x); y = pri

60、me(x);printf(prime(%d)=%dn,x,y);if(y=1) printf(%d是素?cái)?shù)。n,x); else printf(%d不是素?cái)?shù)。n,x);8-6 編寫(xiě)一個(gè)函數(shù),返回一維實(shí)型數(shù)組前n個(gè)元素的最大值、最小值和平均值。數(shù)組、n和最大值、最小值、平均值均作為函數(shù)的形式參數(shù),本函數(shù)無(wú)返回值(用指針?lè)椒▽?shí)現(xiàn))。voidfun(floata,intn,float*pmax,float*pmin,float*aver)/*完善函數(shù)功能*/intmain()floata100;floatmax,min,aver;inti,n;printf(請(qǐng)輸入一個(gè)數(shù)作為一維數(shù)組的長(zhǎng)度:n);sca

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論