高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案_第1頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案_第2頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案_第3頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案_第4頁(yè)
高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

精品高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案精品精品精品精品

1已知銀行整存整取存款不同期限的月息利率分別為:

0.315%期限一年

0.330%期限二年

月息利率=0.345%期限三年

0.375%期限五年

0.420%期限八年

要求輸入存錢的本金和期限,求到期時(shí)能從銀行得到的利息與本金的合計(jì)。

2輸入年份year和月month,求該月有多少天。判斷是否為閏年,可用如下C語(yǔ)言表達(dá)式:year%4==0&&year%100!=0||year%400==0。若表達(dá)式成立(即表達(dá)式值為1),則year為閏年;否則,表達(dá)式不成立(即值為0),year為平年。

3編寫一個(gè)簡(jiǎn)單計(jì)算器程序,輸入格式為:data1opdata2。其中data1和data2是參加運(yùn)算的兩個(gè)數(shù),op為運(yùn)算符,它的取值只能是+、-、*、/。

4輸入n值,輸出如圖所示矩形。5輸入n值,輸出如圖所示平行四邊形。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第1頁(yè)。6輸入n值,輸出如圖所示高為n的等腰三角形。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第1頁(yè)。7輸入n值,輸出如圖所示高為n的等腰三角形。8輸入n值,輸出如圖所示高和上底均為n的等腰梯形。9輸入n值,輸出如圖所示高和上底均為n的等腰空心梯形。10輸入n值,輸出如圖所示邊長(zhǎng)為n的空心正六邊型。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第2頁(yè)。11輸入n值,輸出如圖所示圖形。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第2頁(yè)。12輸入n值,輸出如圖所示圖形。13輸入n值,輸出如圖所示圖形。14輸入n值,輸出如圖所示圖形。15輸入n值,輸出如圖所示圖形。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第3頁(yè)。

16輸入n值,輸出如圖所示圖形。(例為n=6時(shí))高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第3頁(yè)。

17編寫程序,輸出如圖所示sin(x)函數(shù)0到2π的圖形。

18編寫程序,在屏幕上輸出一個(gè)由*號(hào)圍成的空心圓。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第4頁(yè)。

19編寫程序,在屏幕上繪制如圖余弦曲線和直線。若屏幕的橫向?yàn)閤軸,縱向?yàn)閥軸,在屏幕上顯示0~360度的cos(x)曲線與直線x=f(y)=45*(y-1)+31的迭加圖形。其中cos圖形用"*"表示,f(y)用"+"表示,在兩個(gè)圖形的交點(diǎn)處則用f(y)圖形的符號(hào)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第4頁(yè)。

20編寫程序,輸出如圖所示高度為n的圖形。

21編寫程序,輸出如圖所示高度為n的圖形。

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第5頁(yè)。

22輸入n值,輸出如圖所示圖形。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第5頁(yè)。

23輸入n值,輸出如圖所示的n×n(n<10)階螺旋方陣。

12345

161718196

152425207

142322218

131211109

圖4.19n=5時(shí)的螺旋方陣

24輸入n值,輸出如圖所示回型方陣。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第6頁(yè)。25輸出如圖所示的數(shù)字金字塔高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第6頁(yè)。26輸入n值,輸出如圖所示圖形。27輸入頂行字符和圖形的高,輸出如圖所示圖形。28輸入首字符和高后,輸出如圖所示回型方陣。

AAAAA高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第7頁(yè)。ABBBA高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第7頁(yè)。ABCBAABBBA

AAAAA圖4.24首字符為'A'、高為5的方陣

29輸入中心字符和高后,輸出如圖所示回型方陣。

XXXXXXYYYXXYZYXXYYYY

XXXXX

圖4.25中心字符為'Z'、高為5的方陣

30編寫程序,輸出如圖所示上三角形式的乘法九九表。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第8頁(yè)。

31編寫程序,輸出如圖所示下三角乘法九九表。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第8頁(yè)。

32編寫程序,輸入三角型的三條邊長(zhǎng),求其面積。注意:對(duì)于不合理的邊長(zhǎng)輸入要輸出數(shù)據(jù)錯(cuò)誤的提示信息。

33編寫程序求出555555的約數(shù)中最大的三位數(shù)是多少。

34編寫程序計(jì)算下列算式的值:直到某一項(xiàng)A<=0.000001時(shí)為止。輸出最后C的值。

35從鍵盤輸入任意的字符,按下列規(guī)則進(jìn)行分類計(jì)數(shù)。

第一類'0','1','2','3','4','5','6','7','8','9'

第二類'+','-','*','/','%','='

第三類其它字符

當(dāng)輸入字符'\'時(shí)先計(jì)數(shù),然后停止接收輸入,打印計(jì)數(shù)的結(jié)果。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第9頁(yè)。

36對(duì)從鍵盤上輸入的行、單詞和字符進(jìn)行計(jì)數(shù)。我們將單詞的定義進(jìn)行化簡(jiǎn),認(rèn)為單詞是不包含空格、制表符(\t)及換行符的字符序列。例如:"a+b+c",認(rèn)為是1個(gè)單詞,它由5個(gè)字符組成。又如:"xyabc",為2個(gè)單詞,6個(gè)字符。一般用[CTRL+D]作為文件結(jié)束標(biāo)記,其字符碼值為-1,當(dāng)輸入[CTRL+D]時(shí)表示文件輸入結(jié)束,停止計(jì)數(shù)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第9頁(yè)。

37編寫程序計(jì)算當(dāng)x=0.5時(shí)下述級(jí)數(shù)和的近似值,使其誤差小于某一指定的值epsilon(例如:epsilon=0.000001):

38編寫程序計(jì)算下式的值:

39編寫程序計(jì)算下列序列的值:

要求最后一項(xiàng)小于0.001時(shí)、或者當(dāng)N=20時(shí)尚未達(dá)到精度要求,則停止計(jì)算。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第10頁(yè)。

40已知求正弦sin(x)的近似值的多項(xiàng)式公式為:高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第10頁(yè)。

編寫程序,要求輸入x和ε,按上述公式計(jì)算sin(x)的近似值,要求計(jì)算的誤差小于給定的ε。

41從鍵盤輸入十個(gè)整數(shù),用插入法對(duì)輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出。

42輸入一個(gè)正整數(shù),要求以相反的順序輸出該數(shù)。例如輸入12345,輸出位54321。

43編寫程序,讀入一個(gè)整數(shù)N;若N為非負(fù)數(shù),則計(jì)算N到2×N之間的整數(shù)和;若N為一個(gè)負(fù)數(shù),則求2×N到N之間的整數(shù)和。分別利用for和while寫出兩個(gè)程序。

44求解愛因斯坦數(shù)學(xué)題。有一條長(zhǎng)階梯,若每步跨2階,則最后剩余1階,若每步跨3階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階,若每步跨7階,最后才正好一階不剩。請(qǐng)問,這條階梯共有多少階?

45一個(gè)自然數(shù)被8除余1,所得的商被8除也余1,再將第二次的商被8除后余7,最后得到一個(gè)商為a。又知這個(gè)自然數(shù)被17除余4,所得的商被17除余15,最后得到一個(gè)商是a的2倍。編寫程序求這個(gè)自然數(shù)。

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第11頁(yè)。

46編寫程序,用二分法求一元二次方程2x3-4x2+3x-6=0在(10,10)區(qū)間的根。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第11頁(yè)。47中國(guó)古代科學(xué)家祖沖之采用正多邊形逼近的割圓法求出了π的值。請(qǐng)編寫一程序,采用割圓法求出π的值,要求精確到小數(shù)點(diǎn)之后的第十位。48A、B、C、D、E五人在某天夜里合伙去捕魚,到第二天凌晨時(shí)都疲憊不堪,于是各自找地方睡覺。日上三竿,A第一個(gè)醒來(lái),他將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。B第二個(gè)醒來(lái),也將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。C、D、E依次醒來(lái),也按同樣的方法拿魚。編寫程序求出他們合伙至少捕了多少條魚。49一輛卡車違犯交通規(guī)則,撞人逃跑?,F(xiàn)場(chǎng)三人目擊事件,但都沒記住車號(hào),只記下車號(hào)的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的;丙是位數(shù)學(xué)家,他說:四位的車號(hào)剛好是一個(gè)整數(shù)的平方。請(qǐng)根據(jù)以上線索求出車號(hào)。50若一個(gè)口袋中放有12個(gè)球,其中有3個(gè)紅的,3個(gè)白的和6個(gè)黑的,每次從中任取8個(gè)球,編寫程序求出共有多少種不同的顏色搭配。51100匹馬馱100擔(dān)貨,大馬一匹馱3擔(dān),中馬一匹馱2擔(dān),小馬兩匹馱1擔(dān)。試編寫程序計(jì)算大、中、小馬的數(shù)目。52編寫程序,輸出用一元人民幣兌換成1分、2分和5分硬幣的不同兌換方法。53顯示200以內(nèi)的完全平方數(shù)和它們的個(gè)數(shù)。(完全平方數(shù):A2+B2=C2,求A、B、C)54設(shè)N是一個(gè)四位數(shù),它的9倍恰好是其反序數(shù)(例如:123的反序數(shù)是321),求N的值。55將一個(gè)數(shù)的數(shù)碼倒過來(lái)所得到的新數(shù)叫原數(shù)的反序數(shù)。如果一個(gè)數(shù)等于它的反序數(shù),則稱它為對(duì)稱數(shù)。求不超過1993的最大的二進(jìn)制的對(duì)稱數(shù)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第12頁(yè)。56編寫程序求解下式中各字母所代表的數(shù)字。

PEAR

-ARA

───────

PEA高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第12頁(yè)。57一個(gè)自然數(shù)的七進(jìn)制表達(dá)式是一個(gè)三位數(shù),而這個(gè)自然數(shù)的九進(jìn)制表示也是一個(gè)三位數(shù),且這兩個(gè)三位數(shù)的數(shù)碼順序正好相反,求這個(gè)三位數(shù)。58請(qǐng)驗(yàn)證2000以內(nèi)的哥德巴赫猜想,對(duì)于任何大于4的偶數(shù)均可以分解為兩個(gè)素?cái)?shù)之和。59如果一個(gè)正整數(shù)等于其各個(gè)數(shù)字的立方和,則稱該數(shù)為阿姆斯特朗數(shù)(亦稱為自戀性數(shù))。如407=43+03+73就是一個(gè)阿姆斯特朗數(shù)。編寫程序求1000以內(nèi)的所有阿姆斯特朗數(shù)。60任意輸入一個(gè)偶數(shù),請(qǐng)將它分解為兩個(gè)素?cái)?shù)之和。

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第13頁(yè)。

61如果整數(shù)A的全部因子(包括1,不包括A本身)之和等于B;且整數(shù)B的全部因子(包括1,不包括B本身)之和等于A,則將整數(shù)A和B稱為親密數(shù)。求3000以內(nèi)的全部親密數(shù)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第13頁(yè)。62猜數(shù)游戲。由計(jì)算機(jī)"想"一個(gè)數(shù)請(qǐng)人猜,如果人猜對(duì)了,則結(jié)束游戲,否則計(jì)算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對(duì)為止。計(jì)算機(jī)記錄人猜的次數(shù),以此可以反映出猜數(shù)者"猜"的水平。63編寫程序求出1000!后有多少個(gè)零。64求矩陣A[2*3]的轉(zhuǎn)置矩陣B[3*2]。設(shè)矩陣A為:

┏123┓┏14┓

A=┃┃B=┃25┃

┗456┛┗36┛65十個(gè)小孩圍成一圈分糖果,老師分給第一個(gè)小孩10塊,第二個(gè)小孩2塊,第三個(gè)小孩8塊,第四個(gè)小孩22塊,第五個(gè)小孩16塊,第六個(gè)小孩4塊,第七個(gè)小孩10塊,第八個(gè)小孩6塊,第九個(gè)小孩14塊,第十個(gè)小孩20塊。然后所有的小孩同時(shí)將自己手中的糖分一半給右邊的小孩;糖塊數(shù)為奇數(shù)的人可向老師要一塊。問經(jīng)過這樣幾次調(diào)整后大家手中的糖的塊數(shù)都一樣?每人各有多少塊糖?66輸入5×5的數(shù)組,編寫程序?qū)崿F(xiàn):

(1)求出對(duì)角線上各元素的和;

(2)求出對(duì)角線上行、列下標(biāo)均為偶數(shù)的各元素的積;

(3)找出對(duì)角線上其值最大的元素和它在數(shù)組中的位置。67編寫程序,以字符形式輸入一個(gè)十六進(jìn)制數(shù),將其變換為一個(gè)十進(jìn)制整數(shù)后輸出。68編寫程序,輸入一個(gè)十進(jìn)制整數(shù),將其變換為二進(jìn)制后儲(chǔ)存在一個(gè)字符數(shù)組中。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第14頁(yè)。69編寫程序,輸出1000以內(nèi)的所有完數(shù)及其因子。所謂完數(shù)是指一個(gè)整數(shù)的值等于它的因子之和,例如6的因子是1、2、3,而6=1+2+3,故6是一個(gè)完數(shù)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第14頁(yè)。70對(duì)數(shù)組A中的N(0<N<100=個(gè)整數(shù)從小到大進(jìn)行連續(xù)編號(hào),輸出各個(gè)元素的編號(hào)。要求不能改變數(shù)組A中元素的順序,且相同的整數(shù)要具有相同的編號(hào)。例如數(shù)組是:A=(5,3,4,7,3,5,6)則輸出為:(3,1,2,5,1,3,4)71現(xiàn)將不超過2000的所有素?cái)?shù)從小到大排成第一行,第二行上的每個(gè)數(shù)都等于它"右肩"上的素?cái)?shù)與"左肩"上的素?cái)?shù)之差。請(qǐng)編程求出:第二行數(shù)中是否存在這樣的若干個(gè)連續(xù)的整數(shù),它們的和恰好是1898?假如存在的話,又有幾種這樣的情況?

第一行:2357111317.....197919871993第二行:122424.....8672將1、2、3、4、5、6、7、8、9九個(gè)數(shù)字分成三組,每個(gè)數(shù)字只能用一次,即每組三個(gè)數(shù)不許有重復(fù)數(shù)字,也不許同其它組的三個(gè)數(shù)字重復(fù),要求將每組中的三位數(shù)組成一個(gè)完全平方數(shù)。73一個(gè)自然數(shù)的七進(jìn)制表達(dá)式是一個(gè)三位數(shù),而這個(gè)自然數(shù)的九進(jìn)制表示也是一個(gè)三位數(shù),且這兩個(gè)三位數(shù)的數(shù)碼順序正好相反,求這個(gè)三位數(shù)。74使用數(shù)組精確計(jì)算M/N(0<M<N<=100)的各小數(shù)位的值。如果M/N是無(wú)限循環(huán)小數(shù),則計(jì)算并輸出它的第一循環(huán)節(jié),同時(shí)要求輸出循環(huán)節(jié)的起止位置(小數(shù)的序號(hào))。

為了實(shí)現(xiàn)高精度計(jì)算結(jié)果,可將商M存放在有N(N>1)個(gè)元素的一維數(shù)組中,數(shù)組的每個(gè)元素存放一位十進(jìn)制數(shù),即商的第一位存放在第一個(gè)元素中,商的第二位存放在第二個(gè)元素中……,依次類推。這樣可使用數(shù)組來(lái)表示計(jì)算的結(jié)果。75使用數(shù)組完成兩個(gè)超長(zhǎng)(長(zhǎng)度小于100)正整數(shù)的加法。

為了實(shí)現(xiàn)高精度的加法,可將正整數(shù)M存放在有N(N>1)個(gè)元素的一維數(shù)組中,數(shù)組的每個(gè)元素存放一位十進(jìn)制數(shù),即個(gè)位存放在第一個(gè)元素中,十位存放在第二個(gè)元素中……,依次類推。這樣通過對(duì)數(shù)組中每個(gè)元素的按位加法就可實(shí)現(xiàn)對(duì)超長(zhǎng)正整數(shù)的加法。76使用數(shù)組完成兩個(gè)超長(zhǎng)(長(zhǎng)度小于100)正整數(shù)的加法。

為了實(shí)現(xiàn)高精度的加法,可將正整數(shù)M存放在有N(N>1)個(gè)元素的一維數(shù)組中,數(shù)組的每個(gè)元素存放一位十進(jìn)制數(shù),即個(gè)位存放在第一個(gè)元素中,十位存放在第二個(gè)元素中……,依次類推。這樣通過對(duì)數(shù)組中每個(gè)元素的按位加法就可實(shí)現(xiàn)對(duì)超長(zhǎng)正整數(shù)的加法。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第15頁(yè)。77使用數(shù)組完成兩個(gè)超長(zhǎng)(長(zhǎng)度小于100)正整數(shù)的乘法。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第15頁(yè)。78馬步遍歷問題:已知國(guó)際象棋棋盤有8*8共64個(gè)格子。設(shè)計(jì)一個(gè)程序,使棋子從某位置開始跳馬,能夠把棋盤上的格子走遍。每個(gè)格子只允許走一次。79八皇后問題:

在一個(gè)8×8的國(guó)際象棋盤,有八個(gè)皇后,每個(gè)皇后占一格;要求棋盤上放上八個(gè)皇后時(shí)不會(huì)出現(xiàn)相互"攻擊"的現(xiàn)象,即不能有量個(gè)皇后在同一行、列或?qū)蔷€上。問共有多少種不同的方法。80編制一個(gè)計(jì)算函數(shù)y=f(x)的值程序,其中:

-x+2.50<=x<2

y=2-1.5(x-3)*(x-3)2<=x<4

x/2-1.54<=x<6高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第16頁(yè)。

81編寫程序,實(shí)現(xiàn)比較兩個(gè)分?jǐn)?shù)的大小。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第16頁(yè)。82求這樣一個(gè)三位數(shù),該三位數(shù)等于其每位數(shù)字的階乘之和。

即:abc=a!+b!+c!83已知兩個(gè)平方三位數(shù)abc和xyz,其中數(shù)碼a、b、c、x、y、z未必是不同的;而ax、by、cz是三個(gè)平方二位數(shù)。編寫程序,求三位數(shù)abc和xyz。任取兩個(gè)平方三位數(shù)n和n1,將n從高向低分解為a、b、c,將n1從高到低分解為x、y、z。判斷ax、by、cz是否均為完全平方數(shù)。84找出一個(gè)二維數(shù)組中的鞍點(diǎn),即該位置上的元素是該行上的最大值,是該列上的最小值。二維數(shù)組也可能沒有鞍點(diǎn)。85將數(shù)字1、2、3、4、5、6填入一個(gè)2行3列的表格中,要使得每一列右邊的數(shù)字比左邊的數(shù)字大,每一行下面的數(shù)字比上面的數(shù)字大。編寫程序求出按此要求可有幾種填寫方法?86編寫一個(gè)函數(shù)實(shí)現(xiàn)將字符串str1和字符串str2合并,合并后的字符串按其ASCII碼值從小到大進(jìn)行排序,相同的字符在新字符串中只出現(xiàn)一次。87已知計(jì)算x的n階勒讓德多項(xiàng)式值的公式如下:

1(n=0)

Pn(x)=x(n=1)

((2n-1)*x*Pn-1(x)-(n-1)*Pn-2(x))/n(n>1)

請(qǐng)編寫遞歸程序?qū)崿F(xiàn)。88編寫函數(shù),采用遞歸方法實(shí)現(xiàn)將輸入的字符串按反序輸出。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第17頁(yè)。89編寫函數(shù),采用遞歸方法在屏幕上顯示如下楊輝三角形:

1

11

121

1331

14641

15101051

…………高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第17頁(yè)。90編寫函數(shù),采用遞歸方法將任一整數(shù)轉(zhuǎn)換為二進(jìn)制形式。91設(shè)有字母a、b、c,請(qǐng)編程用遞歸的方法產(chǎn)生由這些字母組成的,且長(zhǎng)度為n的所有可能的字符串。例如,輸入n=2,則輸出:

aaabacbabbbccacbcc92將一個(gè)數(shù)的數(shù)碼倒過來(lái)所得到的新數(shù),叫作原數(shù)的反序數(shù),如果一個(gè)數(shù)等于它的反序數(shù),則稱它為對(duì)稱數(shù)。編寫程序,采用遞歸算法求不超過1993的最大的二進(jìn)制的對(duì)稱數(shù)。93從1到n(n<1000)個(gè)自然數(shù)中選出r個(gè)數(shù)進(jìn)行組合,并按指定的格式輸出組合的結(jié)果。例如:n=5,r=3時(shí),共有10種組合,運(yùn)行程序,要按下面的格式輸出:

123

34

45

234

45

345

請(qǐng)用遞歸算法實(shí)現(xiàn)。94從鍵盤輸入十個(gè)整數(shù),用合并排序法對(duì)輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第18頁(yè)。95編寫程序,讀入一個(gè)以符號(hào)"."結(jié)束的長(zhǎng)度小于20字節(jié)的英文句子,檢查其是否為回文(即正讀和反讀都是一樣的,不考慮空格和標(biāo)點(diǎn)符號(hào))。例如:

讀入句子:MADAMI'MADAM.它是回文,所以輸出:YES

讀入句子:ABCDBA).它不是回文,所以輸出:NO高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第18頁(yè)。96編寫程序,其中包括一個(gè)函數(shù),此函數(shù)的功能是:對(duì)一個(gè)長(zhǎng)度為N的字符串從其第K個(gè)字符起,刪去M個(gè)字符,組成長(zhǎng)度為N-M的新字符串(其中N、M<=80,K<=N)。例如輸入字符串"Wearepoorstudents.",利用此函數(shù)進(jìn)行刪除"poor"的處理,輸出處理后的字符串是"Wearestudents."。97編寫函數(shù),通過指針將一個(gè)字符串反向。98編寫一個(gè)函數(shù)insert(s1,s2,ch),實(shí)現(xiàn)在字符串s1中的指定字符ch位置處插入字符串s2。99編寫程序?qū)⑤斎氲膬尚凶址B接后,將串中全部空格移到串首后輸出。100編寫程序,輸入字符串,分別統(tǒng)計(jì)字符串中所包含的各個(gè)不同的字符及其各自字符的數(shù)量。如:輸入字符串:abcedabcdcd

則輸出:a=2b=2c=3d=3e=1。

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第19頁(yè)。

101利用結(jié)構(gòu):structcomplx

{intreal;

intim;

};

編寫求兩個(gè)復(fù)數(shù)之積的函數(shù)cmult,并利用該函數(shù)求下列復(fù)數(shù)之積:

⑴(3+4i)×(5+6i)⑵(10+20i)×高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第19頁(yè)。102編寫成績(jī)排序程序。按學(xué)生的序號(hào)輸入學(xué)生的成績(jī),按照分?jǐn)?shù)由高到低的順序輸出學(xué)生的名次、該名次的分?jǐn)?shù)、相同名次的人數(shù)和學(xué)號(hào);同名次的學(xué)號(hào)輸出在同一行中,一行最多輸出10個(gè)學(xué)號(hào)。103編寫程序,實(shí)現(xiàn)輸入的時(shí)間屏幕顯示一秒后的時(shí)間。顯示格式為HH:MM:SS。程序需要處理以下三種特殊情況:

⑴若秒數(shù)加1后為60,則秒數(shù)恢復(fù)到0,分鐘數(shù)增加1;

⑵若分鐘數(shù)加1后為60,則分鐘數(shù)恢復(fù)到0,小時(shí)數(shù)增加1;

⑶若小時(shí)數(shù)加1后為24,則小時(shí)數(shù)恢復(fù)到0。104編寫程序,從鍵盤輸入3個(gè)學(xué)生的數(shù)據(jù),將它們存入文件student;然后再?gòu)奈募凶x出數(shù)據(jù),顯示在屏幕上。105編寫程序,從鍵盤輸入一行字符串,將其中的小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一個(gè)磁盤文件"test"中保存。106編寫程序,讀入磁盤上C語(yǔ)言源程序文件"test8.c",刪去程序中的注釋后顯示。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第20頁(yè)。

【編寫程序題參考答案

1參考答案:

#include<stdio.h>

main()

{intyear;

floatmoney,rate,total;/*money:本金rate:月利率total:本利合計(jì)*/

printf("Inputmoneyandyear=?");

scanf("%f%d",&money,&year);/*輸入本金和存款年限*/

if(year==1)rate=0.00315;/*根據(jù)年限確定利率*/

elseif(year==2)rate=0.00330;

elseif(year==3)rate=0.00345;

elseif(year==5)rate=0.00375;

elseif(year==8)rate=0.00420;

elserate=0.0;

total=money+money*rate*12*year;/*計(jì)算到期的本利合計(jì)*/

printf("Total=%.2f\n",total);

}

2參考答案:

#include<stdio.h>

main()

{intyear,month,days;

printf("Enteryearandmonth:");

scanf("%d%d",&year,&month);

switch(month)

{case1:case3:case5:case7:case8:case10:case12:

days=31;break;/*處理"大"月*/

case4:case6:case9:case11:

days=30;break;/*處理"小"月*/

case2:if(year%4==0&&year%100!=0||year%400==0)

days=29;/*處理閏年平月*/

elsedays=28;/*處理不是閏年平月*/

break;

default:printf("Inputerror!\n");/*月份錯(cuò)誤*/

days=0;

}

if(days!=0)

printf("%d,%dis%ddays\n",year,month,days);

}

3參考答案:

#include<stdio.h>

main()

{floatdata1,data2;/*定義兩個(gè)操作數(shù)變量*/

charop;/*操作符*/

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第21頁(yè)。printf("Enteryourexpression:");

scanf("%f%c%f",&data1,&op,&data2);/*輸入表達(dá)式*/

switch(op)/*根據(jù)操作符分別進(jìn)行處理*/

{case'+':/*處理加法*/

printf("%.2f+%.2f=%.2f\n",data1,data2,data1+data2);break;

case'-':/*處理減法*/

printf("%.2f-%.2f=%.2f\n",data1,data2,data1-data2);break;

case'*':/*處理乘法*/

printf("%.2f*%.2f=%.2f\n",data1,data2,data1*data2);break;

case'/':/*處理除法*/

if(data2==0)/*若除數(shù)為0*/

printf("Divisionbyzero.\n");

else

printf("%.2f/%.2f=%.2f\n",data1,data2,data1/data2);

break;

default:/*輸入了其它運(yùn)算符*/

printf("Unknownoperater.\n");

}

}

4分析:打印此圖形用兩重循環(huán)實(shí)現(xiàn)。

圖形要重復(fù)n行,故采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)循環(huán)n次,循環(huán)體內(nèi)部打印一行'*'號(hào),把上述思路表示為:

for(i=1;i<=n;i++)

打印一行'*'號(hào);

每行有n個(gè)'*'號(hào),再采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)n次循環(huán),循環(huán)內(nèi)部用格式輸出語(yǔ)句打印一個(gè)'*'號(hào),即:

for(j=1;j<=n;j++)

printf("*");

按照上述思路,實(shí)現(xiàn)打印矩形。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

printf("*");

printf("\n");

}

}

5分析:此圖形和上題的區(qū)別在于在每一行先要打印空格,然后再打印n個(gè)'*'號(hào),在上題第一層循環(huán)體內(nèi)打印'*'號(hào)的循環(huán)前面增加一個(gè)循環(huán)打印空格。每行空格的個(gè)數(shù)是逐行減少的,由于第一層循環(huán)的控制變量i是逐行增1,所以用一個(gè)固定值的數(shù)減去i就可實(shí)現(xiàn)對(duì)空格個(gè)數(shù)的控制,在此題中固定值可使用變量n。

參考答案:

main()

{inti,j,n;

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第22頁(yè)。printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n-i;j++)

printf("");

for(j=1;j<=n;j++)

printf("*");

printf("\n");

}

}

6分析:此題和上題的區(qū)別在于每行'*'的數(shù)量逐行減少,可以使用上題控制空格個(gè)數(shù)的思路來(lái)控制'*'號(hào)的個(gè)數(shù),請(qǐng)注意每行'*'的個(gè)數(shù)都是奇數(shù)。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n-i;j++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("*");

printf("\n");

}

}

7分析:此題圖形是第3題圖形的垂直反轉(zhuǎn),在編程上我們可以變換一個(gè)思路。對(duì)于圖形中的第i行(1≤i≤n),共需要輸出2n-i個(gè)字符,其中前面的i-1個(gè)字符為空格,后面的字符為'*'號(hào)。按照這一思路可以編寫出如下程序。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)/*重復(fù)輸出圖形的n行*/

{for(j=1;j<=2*n-i;j++)/*重復(fù)輸出圖形一行中的每個(gè)字符*/

if(j<=i-1)printf("");/*輸出前面的空格*/

elseprintf("*");/*輸出后面的*號(hào)*/

printf("\n");

}

}

8分析:此題和第3題的區(qū)別僅是每行的'*'個(gè)數(shù)增加n-1個(gè)。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第23頁(yè)。scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n-i;j++)

printf("");

for(j=1;j<=2*i-1+(n-1);j++)

printf("*");

printf("\n");

}

}

9分析:對(duì)于空心圖形,我們可以在上題的基礎(chǔ)上,對(duì)于打印'*'號(hào)的循環(huán)進(jìn)行修改,僅在循環(huán)開始值(j=1)和循環(huán)結(jié)束值(j=2*(i-1)+n)時(shí)打印'*'號(hào),其它位置都打印空格。另一種思路是將每行打印的空格和'*'的兩個(gè)循環(huán)合為一體考慮,在判斷出需要打印'*'的兩個(gè)位置及第一行和最后一行相應(yīng)位置外,其余位置都打印空格。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=2*n+i-3;j++)

if(j==n-i+1||j>n-i+1&&(i==1||i==n))printf("*");

elseprintf("");

printf("*\n");

}

}

10分析:此圖形可以理解為兩個(gè)空心梯形反向連接而成,因此可以利用上題的思路進(jìn)行輸出。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)/*輸出圖形的上半部分(含中心行)*/

{for(j=1;j<=2*n-i-1;j++)

if(j==i)printf("*");

elseprintf("");

printf("*\n");

}

for(i=1;i<n;i++)/*輸出圖形的下半部分(不含中心行)*/

{for(j=1;j<=n+i;j++)

if(j==n-i)printf("*");

elseprintf("");

printf("*\n");

}

}高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第20頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第21頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第22頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第23頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第24頁(yè)。

11分析:此題與上題的區(qū)別在于打印'*'號(hào)的位置不同,編程時(shí)要找出應(yīng)打印'*'號(hào)的位置和兩個(gè)循環(huán)變量i、j以及行數(shù)n的關(guān)系。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)/*輸出圖形的上半部分(含中心行)*/

{for(j=1;j<=2*n-i;j++)

if(j==n-i+1||j>n-i+1&&i==1)printf("*");

elseprintf("");

printf("*\n");

}

for(i=1;i<n;i++)/*輸出圖形的下半部分(不含中心行)*/

{for(j=1;j<=3*(n-1)-i;j++)

if(j==i+1||j>i+1&&i==n-1)printf("*");

elseprintf("");

printf("*\n");

}

}

12參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(j==n-i+1||i==1||i==n)printf("*");

elseprintf("");

printf("\n");

}

}

13參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)/*輸出圖形的上半部分(含中心行)*/

{for(j=1;j<=n-i;j++)

if(j==1||j==n-i+1)printf("*");

elseprintf("");

printf("\n");

}

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第25頁(yè)。for(i=1;i<n;i++)/*輸出圖形的下半部分(不含中心行)*/

{for(j=1;j<=i+1;j++)

if(j==1||j==i+1)printf("*");

elseprintf("");

printf("\n");

}

}

14參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(j==1||j==i||j==n)printf("*");

elseprintf("");

printf("\n");

}

}

15參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n+i-1;j++)

if(j>n-i)printf("*");

elseprintf("");

printf("\n");

}

for(i=1;i<n;i++)

{for(j=1;j<=2*n-i-1;j++)

if(j>i)printf("*");

elseprintf("");

printf("\n");

}

}

16參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n+i-2;j++)

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第26頁(yè)。if(j==n-i+1)printf("*");

elseprintf("");

printf("*\n");

}

}

17分析:首先對(duì)圖形進(jìn)行設(shè)計(jì),坐標(biāo)的X軸和Y軸分別對(duì)應(yīng)屏幕的列和行,一個(gè)正弦函數(shù)的周期為0~360度,我們把一個(gè)步長(zhǎng)定義為10度,打印時(shí)每換一行等于函數(shù)的自變量增加10度;屏幕的列寬為80,函數(shù)值為0對(duì)應(yīng)屏幕的第40列,sin(x)的值在-1~1,變換成列數(shù)為以0為中心的-30~30,對(duì)應(yīng)屏幕上第10~70列。設(shè)計(jì)程序時(shí),控制換行的自變量i乘以10得到正弦函數(shù)的X值,調(diào)用庫(kù)函數(shù)sin()求出函數(shù)值再乘以30輸出的列寬,因?yàn)槲覀円云聊坏牡?0列為0點(diǎn),故再加上40得到應(yīng)在屏幕上顯示的點(diǎn)。

參考答案:

#definePAI3.14159

#include<math.h>

main()

{doublex;

inty,i,yy;

for(i=1;i<80;i++)/*打印圖形的第一行*/

if(i==40)printf("*");/*i控制打印的列位置*/elseprintf("-");

printf("\n");

for(x=10.0;x<=360.0;x+=10.)/*從10度到360度*/

{y=40+30*sin(x*PAI/180.0);/*計(jì)算對(duì)應(yīng)的列*/

yy=40>y?40:y;/*下一行要打印的字符總數(shù)*/

for(i=1;i<=yy;i++)/*控制輸出圖形中的一行*/

{if(i==y)printf("*");/*i控制打印的列位置*/

elseif(i==40)printf("|");/*打印中心的豎線*/

elseprintf("");

}

printf("\n");

}

}

18分析:首先設(shè)計(jì)屏幕圖形,如果預(yù)計(jì)圓形在屏幕上打印20行,所以定義圓的直徑就是20,半徑為10,圓的方程是X2×Y2=R2,因?yàn)閳D形不是從中心開始打印而是從邊沿開始,所以Y從10變化到-10,根據(jù)方程求出X,對(duì)求得的X值再根據(jù)屏幕行寬進(jìn)行必要的調(diào)整得到應(yīng)打印的屏幕位置。

參考答案:

#include<math.h>

main()

{doubley;

intx,m;

for(y=10;y>=-10;y--)/*圓的半徑為10*/

{m=2.5*sqrt(100-y*y);/*計(jì)算行y對(duì)應(yīng)的列坐標(biāo)m*/

for(x=1;x<30-m;x++)

printf("");/*輸出圓左側(cè)的空白*/

printf("*");/*輸出圓的左側(cè)*/

for(;x<30+m;x++)

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第27頁(yè)。printf("");/*輸出圓的空心部分*/

printf("*\n");/*輸出圓的右側(cè)*/

}

}

19參考答案:

#include<stdio.h>

#include<math.h>

main()

{doubley;

intx,m,n,yy;

for(yy=0;yy<=20;yy++)

{y=0.1*yy;

m=acos(1-y)*10;

n=45*(y-1)+31;

for(x=0;x<=62;x++)

if(x==m&&x==n)printf("+");

elseif(x==n)printf("+");

elseif(x==m||x==62-m)printf("*");

elseprintf("");

printf("\n");

}

}

20分析:編程的關(guān)鍵為兩點(diǎn),一是使用控制輸出的行和列,這方面的內(nèi)容在前面已經(jīng)敘述,另一點(diǎn)是輸出的數(shù)字和所在行、列關(guān)系。此題第一行輸出的數(shù)字恰好是列數(shù),從第二行起每行的數(shù)字均比上一行增n。

參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

printf("%4d",(i-1)*n+j);

printf("\n");

}

}

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第24頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第25頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第26頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第27頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第28頁(yè)。

21分析:此題的關(guān)鍵是找到輸出數(shù)字和行、列數(shù)的關(guān)系。審查圖形中每行中數(shù)字的關(guān)系發(fā)現(xiàn),右邊數(shù)字和前面數(shù)字之差逐次增1;同列數(shù)字依然是這樣的關(guān)系,編程的關(guān)鍵轉(zhuǎn)換為找到每一行左方的第一個(gè)數(shù)字,然后利用行和列的循環(huán)變量進(jìn)行運(yùn)算就可得到每個(gè)位置的數(shù)字。用ai,j此表示第i行第j列的數(shù)字,則a11=1;由第i行第一列的數(shù)字推出第i+1行第一列的數(shù)字是ai+1,1=ai,1+i;同樣由第j列推出第j+1列的數(shù)字是ai,j+1=ai,j+i+j。另外只有當(dāng)j<i時(shí)才輸出數(shù)字。

參考答案:

main()

{inti,j,m,n,k=1;/*k是第一列元素的值*/

printf("Pleaseenterm="");

scanf("%d",&m);

for(i=1;i<=m;i++)

{n=k;/*n第i行中第1個(gè)元素的值*/

for(j=1;j<=m-i+1;j++)

{printf("%3d",n);

n=n+i+j;/*計(jì)算同行下一個(gè)元素的值*/

}

printf("\n");

k=k+i;/*計(jì)算下一行中第1個(gè)元素*/

}

}

22參考答案:

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(j<=i)printf("1");

elseprintf("%3d",j-i+1);

printf("\n");

}

}

23分析:可用不同的方案解決此問題,為了開闊讀者的思路,這里給出了兩個(gè)參考答案,其中第二個(gè)答案是使用了遞歸方法。

方案一:

首先尋找數(shù)字輸出數(shù)字和行列的關(guān)系。

每圈有四個(gè)邊,把每邊的最后一個(gè)數(shù)字算為下邊的開始,最外圈每邊數(shù)字個(gè)數(shù)是n-1個(gè),以后每邊比外邊一邊少兩個(gè)數(shù)字。

因?yàn)閿?shù)字是一行一行輸出的,再分析每行數(shù)字的規(guī)律。實(shí)際沒有的數(shù)字有三種規(guī)律:位于對(duì)角線之間的數(shù)字是上半圖增一,下半圖減一。對(duì)角線左側(cè)的各列,右側(cè)比左側(cè)增加了一圈數(shù)字,例如數(shù)字39和它左側(cè)的22比較,數(shù)字39所在的圈每邊4個(gè)數(shù)字,左側(cè)22加上一圈16個(gè)數(shù)字在加1就是39。同理,對(duì)角線右側(cè)的各列,則減少一圈的數(shù)字個(gè)數(shù)。

根據(jù)以上分析,用兩個(gè)對(duì)角線將圖形分為四個(gè)區(qū)域,如下圖所示,圖中黑斜體字為對(duì)角線上的數(shù)字。

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第29頁(yè)。1234567

2425262728298

2340414243309

22394849443110

21384746453211

20373635343312

19181716151413

為敘述方便我們稱四個(gè)區(qū)域?yàn)樯?、下、左、右區(qū)。設(shè)i、j為行列號(hào),n為圖形的總行數(shù),則滿足各區(qū)的范圍是,上區(qū):j>=i且j<=n-i+1;下區(qū):j<=i且j>=n-i+1;左區(qū):j<i且j<n-i+1;右區(qū):j>i且j>n-i+1。

現(xiàn)在問題是,如果知道一行在不同區(qū)域開始第一個(gè)位置的數(shù)字,然后該區(qū)后續(xù)的數(shù)字就可利用前面分析的規(guī)律得到。

對(duì)于右區(qū)開始各行第一個(gè)數(shù)字最易求出,為4*(n-1)-i+1。后續(xù)一個(gè)和同行前一個(gè)數(shù)字之差是4*[n-1-(j-1)*2]+1,其中方括號(hào)內(nèi)是每邊的數(shù)字個(gè)數(shù)。

對(duì)角線上的數(shù)字是分區(qū)點(diǎn),對(duì)角線上相臨數(shù)字仍然相差一圈數(shù)字個(gè)數(shù),讀者自行分析得到計(jì)算公式。

右區(qū)開始的第一個(gè)數(shù)字可以從上區(qū)結(jié)束時(shí)的數(shù)字按規(guī)律求出。

下述程序用變量s保存分區(qū)對(duì)角線上的數(shù)字。

參考答案一:

main()

{inti,j,k,n,s,m,t;

printf("Pleaseentern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{s=(i<=(n+1)/2)?1:3*(n-(n-i)*2-1)+1;

m=(i<=(n+1)/2)?i:n-i+1;/*m-1是外層圈數(shù)*/

for(k=1;k<m;k++)s+=4*(n-2*k+1);

for(j=1;j<=n;j++)

{if(j>=n-i+1&&j<=i)/*下區(qū)*/

t=s-(j-(n-i))+1;

if(j>=i&&j<=n-i+1)/*上區(qū)*/

t=s+j-i;

if(j>i&&j>n-i+1)/*右區(qū)*/

t-=4*(n-2*(n-j+1))+1;

if(j<i&&j<n-i+1)/*左區(qū)*/

{if(j==1)t=4*(n-1)-i+2;

elset+=4*(n-2*j+1)+1;

}

printf("%4d",t);

}

printf("\n");

}

}

方案二:

根據(jù)本題圖形的特點(diǎn),我們可以構(gòu)造一個(gè)遞歸算法。我們可以將邊長(zhǎng)為N的圖形分為兩部分:第一部分最外層的框架,第二部分為中間的邊長(zhǎng)為N-2的圖形。

對(duì)于邊長(zhǎng)為N的正方型,若其中每個(gè)元素的行號(hào)為i(1≤i≤N),列號(hào)為j(1≤j≤N),第1行第1列元素表示為高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第30頁(yè)。a1,1(a11=1),則有:

對(duì)于最外層的框架可以用以下數(shù)學(xué)模型描述:

上邊:a1,j=a1,1+j-1(j≠1)

右邊:ai,N=a1,1+N+i-2(i≠1)

下邊:ai,1=a1,1+4N-i-3(i≠1)

左邊:aN,j=a1,1+3N-2-j(j≠1)

對(duì)于內(nèi)層的邊長(zhǎng)為N-2的圖形可以用以下數(shù)學(xué)模型描述:

左上角元素:ai,i=ai-1,i-1+4(N-2i-1)(i>1)

若令:ai,j=fun(ai-1,i-1+4(N-2i-1),當(dāng):i<(N+1)/2且j<(N+1)/2時(shí),min=MIN(i,j),則有:

a2,2=fun(a1,1,min,min,n)

ai,j=fun(a2,2,i-min+1,j-min+1,n-2*(min-1))

我們可以根據(jù)上述原理,分別推導(dǎo)出i和j為其它取值范圍時(shí)的min取值。根據(jù)上述遞歸公式,可以得到以下參考程序。

參考答案二:

#include<stdio.h>

#defineMIN(x,y)(x>y)?(y):(x)

fun(inta11,inti,intj,intn)

{intmin,a22;

if(i==j&&i<=1)return(a11);

elseif(i==j&&i<=(n+1)/2)return(fun(a11,i-1,i-1,n)+4*(n-2*i+3));

elseif(i==1&&j!=1)return(a11+j-1);

elseif(i!=1&&j==n)return(a11+n+i-2);

elseif(i!=1&&j==1)return(a11+4*n-3-i);

elseif(i==n&&j!=1)return(a11+3*n-2-j);

else

{if(i>=(n+1)/2&&j>=(n+1)/2)min=MIN(n-i+1,n-j+1);

elseif(i<(n+1)/2&&j>=(n+1)/2)min=MIN(i,n-j+1);

elseif(i>=(n+1)/2&&j<(n+1)/2)min=MIN(n-i+1,j);

elsemin=MIN(i,j);

a22=fun(a11,min,min,n);

return(fun(a22,i-min+1,j-min+1,n-2*(min-1)));

}

}

main()

{inta11=1,i,j,n;

printf("Entern=");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

printf("%4d",fun(a11,i,j,n));

printf("\n");

}

}

24分析:此題的關(guān)鍵還是要找到輸出數(shù)字aij和行列數(shù)i、j的關(guān)系。為此將圖形分為四個(gè)區(qū)域如下圖:

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第31頁(yè)。33333

32223

32123高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第28頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第29頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第30頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第31頁(yè)。32223

33333(此圖n為5)高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第32頁(yè)。在左上區(qū)域,即i<=(n+1)/2、j<=(n+1)/2時(shí),輸出數(shù)字為(n+1)/2-i+1和(n+1)/2-j+1中的大者,記為max{(n+1)/2-i+1,(n+1)/2-j+1};在右上區(qū),即i<=(n+1)/2、j>(n+1)/2時(shí),輸出數(shù)字為max{(n+1)/2-i+1,j-n/2};在左下區(qū),即i>(n+1)/2、j<=(n+1)/2時(shí),輸出數(shù)字為max{i-n/2,(n+1)/2-j+1};在右下區(qū),即i>(n+1)/2、j>(n+1)/2時(shí),輸出數(shù)字為max{i-n/2,j-n/2}。

參考答案:

#definemax(x,y)((x)>(y)?(x):(y))

main()

{inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(i<=(n+1)/2)

if(j<=(n+1)/2)

printf("%4d",max((n+1)/2-i+1,(n+1)/2-j+1));

else

printf("%4d",max((n+1)/2-i+1,j-n/2));

elseif(j<=(n+1)/2)

printf("%4d",max(i-n/2,(n+1)/2-j+1));

else

printf("%4d",max(i-n/2,j-n/2));

printf("\n");

}

}

25分析:前面我們已經(jīng)見到過上下對(duì)稱的圖形,這是一個(gè)左右對(duì)稱的圖形,垂直中心線上的數(shù)字恰好是行號(hào),在每行位于圖形垂直中心線左方的數(shù)字是逐漸增加的,而右方是逐漸減小的。j==i是分區(qū)的標(biāo)志,左方輸出數(shù)字就是列數(shù)j,而右方的數(shù)字從i開始逐步減小1。

參考答案:

main()

{inti,j;

for(i=1;i<=9;i++)

{for(j=1;j<=9-i;j++)printf("");

for(j=1;j<=i;j++)printf("%2d",j);

for(j=i-1;j>=1;j--)printf("%2d",j);

printf("\n");

}

}

26分析:這類輸出字符的圖形和輸出數(shù)字的圖形考慮是近似的,因?yàn)樽址腁SCII碼就是一個(gè)整數(shù)。在字符碼值的變化過程中,應(yīng)該注意應(yīng)該判斷碼值是否超出字符的范圍,進(jìn)行必要的處理,為了保持程序的簡(jiǎn)潔,本題沒有考慮這個(gè)問題,在下題里對(duì)這個(gè)問題進(jìn)行了處理。

參考答案:

main()

{charc='Z';

inti,j,n;

printf("\nPleaseEntern:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{for(j=1;j<=n+i-2;j++)

if(j==n-i+1)printf("%c",c--);

elseprintf("");

printf("%c\n",c--);

}

for(i=1;i<n;i++)

{for(j=1;j<=2*(n-1)-i;j++)

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第33頁(yè)。if(j==i+1)printf("%c",c--);

elseprintf("");

printf("%c\n",c--);

}

}

27分析:此題與上題相近,區(qū)別在于輸出時(shí)字符的ASCII碼值的變化在圖形的中間一行為最大,同時(shí)一行的兩個(gè)字符是相同的。程序考慮在輸入字符時(shí)設(shè)計(jì)了一個(gè)循環(huán),保證輸入的是英文字母。字符變化后進(jìn)行了處理,程序中使用條件運(yùn)算。在字符碼值增加的過程中,首先判斷是大寫還是小寫字符,然后判斷字符碼值是否超出英文字母z(或Z),如果超出則重新賦為a(或A);在輸出圖象下半部分時(shí),ASCII碼值減少用同樣的思路進(jìn)行判斷。在判斷字符大小寫(條件語(yǔ)句的第一個(gè)判斷)時(shí),用的是兩個(gè)不同的值,請(qǐng)讀者自行思考為什么,用同一個(gè)值是否可以?

參考答案:

main()

{charc;

inti,j,n;

do

{printf("\nPleaseEntern,char:");

scanf("%d,%c",&n,&c);

}while(c<'A'||c>'Z'&&c<'a'||c>'z');

for(i=1;i<=n;i++)

{for(j=1;j<=n+i-2;j++)

if(j==n-i+1)printf("%c",c);

elseprintf("");

printf("%c\n",c++);

c=c<'a'?(c>'Z'?'A':c):(c>'z'?'a':c);

}

c-=2;

c=c<'Z'?(c<'A'?'Z':c):(c<'a'?'z':c);

for(i=1;i<n;i++)

{for(j=1;j<=2*(n-1)-i;j++)

if(j==i+1)printf("%c",c);

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第34頁(yè)。elseprintf("");

printf("%c\n",c--);

c=c<'Z'?(c<'A'?'Z':c):(c<'a'?'z':c);

}

}

28參考答案:

#definemax(x,y)((x)>(y)?(x):(y))

main()

{charc;

inti,j,n;

do

{printf("\nPleaseEntern,char:");

scanf("%d,%c",&n,&c);

}while(c<'A'||c>'Z'&&c<'a'||c>'z');

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(i<=(n+1)/2)

if(j<=(n+1)/2)

printf("%c",c-max((n+1)/2-i+1,(n+1)/2-j+1)+(n+1)/2);

else

printf("%c",c-max((n+1)/2-i+1,j-n/2)+(n+1)/2);

else

if(j<=(n+1)/2)

printf("%c",c-max(i-n/2,(n+1)/2-j+1)+(n+1)/2);

else

printf("%c",c-max(i-n/2,j-n/2)+(n+1)/2);

printf("\n");

}

}

29參考答案:

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第35頁(yè)。#definemax(x,y)((x)>(y)?(x):(y))

main()

{charc;

inti,j,n;

do

{printf("\nPleaseEntern,char:");

scanf("%d,%c",&n,&c);

}while(c<'A'||c>'Z'&&c<'a'||c>'z');

for(i=1;i<=n;i++)

{for(j=1;j<=n;j++)

if(i<=(n+1)/2)

if(j<=(n+1)/2)

printf("%c",c-max((n+1)/2-i+1,(n+1)/2-j+1)+1);

else

printf("%c",c-max((n+1)/2-i+1,j-n/2)+1);

else

if(j<=(n+1)/2)

printf("%c",c-max(i-n/2,(n+1)/2-j+1)+1);

else

printf("%c",c-max(i-n/2,j-n/2)+1);

printf("\n");

}

}

30參考答案:

#include<stdio.h>

main()

{inti,j;

for(i=1;i<10;i++)

printf("%4d",i);

printf("\n--------------------------------------\n");

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第36頁(yè)。for(i=1;i<10;i++)

{for(j=1;j<10;j++)

if(j<i)printf("");

elseprintf("%4d",i*j);

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第32頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第33頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第34頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第35頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第36頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第37頁(yè)。

31參考答案:

#include<stdio.h>

main()

{inti,j;

for(i=1;i<10;i++)

printf("%4d",i);

printf("\n--------------------------------------\n");

for(i=1;i<10;i++)

{for(j=1;j<10;j++)

if(j<10-i)printf("");

elseprintf("%4d",(10-i)*j);

printf("\n");

}

}

32參考答案:

#include"math.h"

main()

{intflag=0;

floata,b,c,s;

do

{printf("Pleaseenterabc:");

scanf("%f%f%f",&a,&b,&c);

if(a>b+c||b>a+c||c>a+b)

flag=1;

}while(flag);

s=(a+b+c)/2;

printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c)));

}

33參考答案:

#include<stdio.h>

main()

{intj;

longn;/*使用長(zhǎng)整型變量,以免超出整數(shù)的表示范圍*/

printf("Pleaseinputnumber:");

scanf("%ld",&n);

for(j=999;j>=100;j--)/*可能取值范圍在999到100之間,j從大到小*/

if(n%j==0)/*若能夠整除j,則j是約數(shù),輸出結(jié)果*/

{printf("Themaxfactorwith3digitsin%ldis:%d.\n",n,j);

break;/*控制退出循環(huán)*/

}

}

34參考答案:

#defineE0.000001

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第38頁(yè)。main()

{floatx,y=1,s=0;

printf("Pleaseenterx=");

scanf("%f",&x);

while(1/y>E)

{s=s+1/y;

y=y*x;

}

printf("S=%f\n",s);

}

35參考答案:

#include<stdio.h>

main()

{intclass1,class2,class3;

charch;

class1=class2=class3=0;/*初始化分類計(jì)數(shù)器*/

do

{ch=getch();

switch(ch)

{case'0':case'1':case'2':case'3':case'4':

case'5':case'6':case'7':case'8':case'9':

class1++;break;/*對(duì)分類1計(jì)數(shù)*/

case'+':case'-':case'*':case'/':case'%':case'=':

class2++;break;/*對(duì)分類2計(jì)數(shù)*/

default:class3++;break;/*對(duì)分類3計(jì)數(shù)*/

}

}while(ch!='\\');/*字符'\'在C程序中要使用轉(zhuǎn)義符'\\'*/

printf("class1=%d,class2=%d,class3=%d\n",class1,class2,class3);

}

36分析:程序的關(guān)鍵是怎樣判斷一個(gè)單詞。由單詞的定義已知它是用空格、制表符或換行符分隔開的,兩個(gè)字符之間沒有空格、制表符或換行符,則認(rèn)為是一個(gè)單詞中的兩個(gè)字符。

參考答案:

#defineEOF-1

#defineYES1

#defineNO0

#include<stdio.h>

main()/*對(duì)輸入的行、字符和單詞進(jìn)行計(jì)數(shù)統(tǒng)計(jì)*/

{intc,nl,nc,nw,inword;

inword=NO;/*inword=NO已處理的最后一個(gè)字符是空格、\t或\n*/

/*inword=YES已處理的最后一個(gè)字符不是空格、\t或\n*/

nl=nc=nw=0;/*行、字符、字計(jì)數(shù)器置0*/

while((c=getchar())!=EOF)

{++nc;/*進(jìn)行字符計(jì)數(shù)*/

if(c=='\n')

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第39頁(yè)。++nl;/*進(jìn)行行計(jì)數(shù)*/

if(c=='\t'||c=='\n'||c=='')

inword=NO;/*如果讀入的字符是空格、\t或\n,則置inword為NO*/

else/*讀入的字符不是空格、\t或\n*/

if(inword==NO)/*如果前一個(gè)字符是空格、\t或\n*/

{inword=YES;/*則讀入的字符為一個(gè)單詞的第一個(gè)字符*/

++nw;/*置inword為YES,進(jìn)行單詞計(jì)數(shù)*/

}

}

printf("Lines=%d\nWords=%d\nChars=%d\n",nl,nw,nc);/*輸出結(jié)果*/

}

37參考答案:

#defineE0.000001

#include"math.h"

main()

{inti,k=1;

floatx,y,t=1,s,r=1;

printf("Pleaseenterx=");

scanf("%f",&x);

for(s=x,y=x,i=2;fabs(r)>E;i++)

{t=t*(i-1);

y=y*x*x;

k=k*(-1);

r=k*y/t/(2*i-1);

s=s+r;

}

printf("S=%f\n",s);

}

38參考答案:

main()

{inti;

floats=0;

for(i=1;i<=100;i++)

s=s+i;

for(i=1;i<=50;i++)

s=s+i*i;

for(i=1;i<=10;i++)

s=s+1.0/i;

printf("Result=%f\n",s);

}

39參考答案:

main()

{inti;

floats=1;

高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第40頁(yè)。for(i=1;i<=20&&1.0/i/(i+1)>0.001;i++)

s=s+1.0/i/(i+1);

printf("Result=%fi=%d\n",s,i);

}

40參考答案:

#include<math.h>

main()

{floatx,eps,s,y=0,y0,t;

intn,j;

printf("Enterx&eps:");

scanf("%f%f",&x,&eps);

n=t=j=1;

s=x;

do

{y0=y;

if(n%2==0)y=y-s/t;

elsey=y+s/t;

s*=x*x;/*求x的乘方*/

t*=(j+1)*(j+2);/*求n!*/

j+=2;

n++;

}while(fabs(y0-y)>eps);/*控制誤差*/

printf("sin(%f)=%f\n",x,sin(x));/*輸出標(biāo)準(zhǔn)sin(x)的值*/

printf("%d,sin(%f)=%f\n",n,x,y);/*輸出計(jì)算的近似值*/

}高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第37頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第38頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第39頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第40頁(yè)。高級(jí)語(yǔ)言程序設(shè)計(jì)編寫程序題+答案全文共84頁(yè),當(dāng)前為第41頁(yè)。

41參考答案:

main()

{inti,j,num,a[10];

for(i=0;i<10;i++)

{printf("EnterNo.%d:",i+1);

scanf("%d",&num);

for(j=i-1;j>=0&&a[j]>num;j--)

a[j+1]=a[j];

a[j+1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論