




已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1已知銀行整存整取存款不同期限的月息利率分別為:0.315% 期限一年0.330% 期限二年月息利率 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求輸入存錢的本金和期限,求到期時能從銀行得到的利息與本金的合計。2輸入年份year和月month,求該月有多少天。判斷是否為閏年,可用如下語言表達(dá)式:year%4=0 & year%100!=0 | year%400=0。若表達(dá)式成立(即表達(dá)式值為1),則year為閏年;否則,表達(dá)式不成立(即值為0),year為平年。3編寫一個簡單計算器程序,輸入格式為:data1 op data2。其中data1和data2是參加運算的兩個數(shù),op為運算符,它的取值只能是+、-、*、/。4輸入n值,輸出如圖所示矩形。5輸入n值,輸出如圖所示平行四邊形。6輸入n值,輸出如圖所示高為n的等腰三角形。7輸入n值,輸出如圖所示高為n的等腰三角形。8輸入n值,輸出如圖所示高和上底均為n的等腰梯形。9輸入n值,輸出如圖所示高和上底均為n的等腰空心梯形。10輸入n值,輸出如圖所示邊長為n的空心正六邊型。11輸入n值,輸出如圖所示圖形。12輸入n值,輸出如圖所示圖形。13輸入n值,輸出如圖所示圖形。14輸入n值,輸出如圖所示圖形。15輸入n值,輸出如圖所示圖形。16輸入n值,輸出如圖所示圖形。(例為n=6時)17編寫程序,輸出如圖所示sin(x) 函數(shù)0到2的圖形。18編寫程序,在屏幕上輸出一個由*號圍成的空心圓。19編寫程序,在屏幕上繪制如圖余弦曲線和直線。若屏幕的橫向為x軸,縱向為y軸, 在屏幕上顯示0360度的cos(x)曲線與直線x=f(y)=45*(y-1)+31的迭加圖形。其中cos圖形用*表示,f(y)用+表示,在兩個圖形的交點處則用f(y)圖形的符號。20編寫程序,輸出如圖所示高度為n的圖形。21編寫程序,輸出如圖所示高度為n的圖形。22輸入n值,輸出如圖所示圖形。23輸入n值,輸出如圖所示的nn(n10)階螺旋方陣。1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9圖4.19 n=5時的螺旋方陣24輸入n值,輸出如圖所示回型方陣。25輸出如圖所示的數(shù)字金字塔26輸入n值,輸出如圖所示圖形。27輸入頂行字符和圖形的高,輸出如圖所示圖形。 28輸入首字符和高后,輸出如圖所示回型方陣。A A A A A A B B B A A B C B A A B B B A A A A A A 圖 4.24 首字符為A、高為5的方陣29輸入中心字符和高后,輸出如圖所示回型方陣。X X X X X X Y Y Y X X Y Z Y X X Y Y Y YX X X X X圖4.25 中心字符為Z、高為5的方陣30編寫程序,輸出如圖所示上三角形式的乘法九九表。31編寫程序,輸出如圖所示下三角乘法九九表。32編寫程序,輸入三角型的三條邊長,求其面積。注意:對于不合理的邊長輸入要輸出數(shù)據(jù)錯誤的提示信息。33編寫程序求出555555的約數(shù)中最大的三位數(shù)是多少。34編寫程序計算下列算式的值:直到某一項A=0.000001時為止。輸出最后的值。35從鍵盤輸入任意的字符,按下列規(guī)則進(jìn)行分類計數(shù)。 第一類 0,1,2,3,4,5,6,7,8,9 第二類 +,-,*,/,%,= 第三類 其它字符當(dāng)輸入字符時先計數(shù),然后停止接收輸入,打印計數(shù)的結(jié)果。36對從鍵盤上輸入的行、單詞和字符進(jìn)行計數(shù)。我們將單詞的定義進(jìn)行化簡,認(rèn)為單詞是不包含空格、制表符(t)及換行符的字符序列。例如:a+b+c,認(rèn)為是個單詞,它由個字符組成。又如:xy abc,為個單詞,個字符。一般用CTRL+D作為文件結(jié)束標(biāo)記,其字符碼值為-1,當(dāng)輸入CTRL+D時表示文件輸入結(jié)束,停止計數(shù)。37編寫程序計算當(dāng)x=0.5時下述級數(shù)和的近似值,使其誤差小于某一指定的值epsilon(例如:epsilon=0.000001):38編寫程序計算下式的值:39編寫程序計算下列序列的值:要求最后一項小于0.001時、或者當(dāng)N=20時尚未達(dá)到精度要求,則停止計算。40已知求正弦sin(x)的近似值的多項式公式為:編寫程序,要求輸入x和,按上述公式計算sin(x)的近似值,要求計算的誤差小于給定的。41從鍵盤輸入十個整數(shù),用插入法對輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出。42輸入一個正整數(shù),要求以相反的順序輸出該數(shù)。例如輸入12345,輸出位54321。43編寫程序,讀入一個整數(shù);若為非負(fù)數(shù),則計算到2之間的整數(shù)和;若為一個負(fù)數(shù),則求到之間的整數(shù)和。分別利用for和while寫出兩個程序。44求解愛因斯坦數(shù)學(xué)題。有一條長階梯,若每步跨2階,則最后剩余1階,若每步跨3階,則最后剩2階,若每步跨5階,則最后剩4階,若每步跨6階則最后剩5階,若每步跨7階,最后才正好一階不剩。請問,這條階梯共有多少階? 45一個自然數(shù)被8除余1,所得的商被8除也余1,再將第二次的商被8除后余7,最后得到一個商為。又知這個自然數(shù)被17除余4,所得的商被17除余15,最后得到一個商是的2倍。編寫程序求這個自然數(shù)。46編寫程序,用二分法求一元二次方程2x3-4x2+3x-6=0在(10,10)區(qū)間的根。47中國古代科學(xué)家祖沖之采用正多邊形逼近的割圓法求出了的值。請編寫一程序,采用割圓法求出的值,要求精確到小數(shù)點之后的第十位。48A、B、C、D、E五人在某天夜里合伙去捕魚,到第二天凌晨時都疲憊不堪,于是各自找地方睡覺。日上三竿,A第一個醒來,他將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。B第二個醒來,也將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。C、D、E依次醒來,也按同樣的方法拿魚。編寫程序求出他們合伙至少捕了多少條魚。49一輛卡車違犯交通規(guī)則,撞人逃跑?,F(xiàn)場三人目擊事件,但都沒記住車號,只記下車號的一些特征。甲說:牌照的前兩位數(shù)字是相同的;乙說:牌照的后兩位數(shù)字是相同的;丙是位數(shù)學(xué)家,他說:四位的車號剛好是一個整數(shù)的平方。請根據(jù)以上線索求出車號。50若一個口袋中放有12個球,其中有3個紅的,3個白的和6個黑的,每次從中任取8個球,編寫程序求出共有多少種不同的顏色搭配。51100匹馬馱100擔(dān)貨,大馬一匹馱擔(dān),中馬一匹馱擔(dān),小馬兩匹馱擔(dān)。試編寫程序計算大、中、小馬的數(shù)目。52編寫程序,輸出用一元人民幣兌換成1分、2分和5分硬幣的不同兌換方法。53顯示200以內(nèi)的完全平方數(shù)和它們的個數(shù)。(完全平方數(shù):A2+B2=C2,求A、B、C)54設(shè)N是一個四位數(shù),它的9倍恰好是其反序數(shù)(例如:123的反序數(shù)是321),求N的值。55將一個數(shù)的數(shù)碼倒過來所得到的新數(shù)叫原數(shù)的反序數(shù)。如果一個數(shù)等于它的反序數(shù),則稱它為對稱數(shù)。求不超過1993的最大的二進(jìn)制的對稱數(shù)。56編寫程序求解下式中各字母所代表的數(shù)字。 57一個自然數(shù)的七進(jìn)制表達(dá)式是一個三位數(shù),而這個自然數(shù)的九進(jìn)制表示也是一個三位數(shù),且這兩個三位數(shù)的數(shù)碼順序正好相反,求這個三位數(shù)。 58請驗證2000以內(nèi)的哥德巴赫猜想,對于任何大于4的偶數(shù)均可以分解為兩個素數(shù)之和。59如果一個正整數(shù)等于其各個數(shù)字的立方和,則稱該數(shù)為阿姆斯特朗數(shù)(亦稱為自戀性數(shù))。如407=43+03+73就是一個阿姆斯特朗數(shù)。編寫程序求1000以內(nèi)的所有阿姆斯特朗數(shù)。60任意輸入一個偶數(shù),請將它分解為兩個素數(shù)之和。61如果整數(shù)的全部因子(包括,不包括本身)之和等于;且整數(shù)的全部因子(包括,不包括本身)之和等于,則將整數(shù)和稱為親密數(shù)。求3000以內(nèi)的全部親密數(shù)。62猜數(shù)游戲。由計算機(jī)想一個數(shù)請人猜,如果人猜對了,則結(jié)束游戲,否則計算機(jī)給出提示,告訴人所猜的數(shù)是太大還是太小,直到人猜對為止。計算機(jī)記錄人猜的次數(shù),以此可以反映出猜數(shù)者猜的水平。63編寫程序求出1000!后有多少個零。64求矩陣 A2*3 的轉(zhuǎn)置矩陣 B3*2。設(shè)矩陣 A 為: 1 2 3 1 4 A = B = 2 5 4 5 6 3 6 65十個小孩圍成一圈分糖果,老師分給第一個小孩10塊,第二個小孩2塊,第三個小孩8塊,第四個小孩22塊,第五個小孩16塊,第六個小孩4塊,第七個小孩10塊,第八個小孩6塊,第九個小孩14 塊,第十個小孩20塊。然后所有的小孩同時將自己手中的糖分一半給右邊的小孩;糖塊數(shù)為奇數(shù)的人可向老師要一塊。問經(jīng)過這樣幾次調(diào)整后大家手中的糖的塊數(shù)都一樣?每人各有多少塊糖?66輸入55的數(shù)組,編寫程序?qū)崿F(xiàn):(1)求出對角線上各元素的和;(2)求出對角線上行、列下標(biāo)均為偶數(shù)的各元素的積;(3)找出對角線上其值最大的元素和它在數(shù)組中的位置。67編寫程序,以字符形式輸入一個十六進(jìn)制數(shù),將其變換為一個十進(jìn)制整數(shù)后輸出。68編寫程序,輸入一個十進(jìn)制整數(shù),將其變換為二進(jìn)制后儲存在一個字符數(shù)組中。69編寫程序,輸出1000以內(nèi)的所有完數(shù)及其因子。所謂完數(shù)是指一個整數(shù)的值等于它的因子之和,例如6的因子是1、2、3,而6=1+2+3,故6是一個完數(shù)。70對數(shù)組A中的N(0N100個整數(shù)從小到大進(jìn)行連續(xù)編號,輸出各個元素的編號。要求不能改變數(shù)組中元素的順序,且相同的整數(shù)要具有相同的編號。例如數(shù)組是:A=(5,3,4,7,3,5,6) 則輸出為:(3,1,2,5,1,3,4)71現(xiàn)將不超過2000的所有素數(shù)從小到大排成第一行,第二行上的每個數(shù)都等于它右肩上的素數(shù)與左肩上的素數(shù)之差。請編程求出:第二行數(shù)中是否存在這樣的若干個連續(xù)的整數(shù),它們的和恰好是1898?假如存在的話,又有幾種這樣的情況?第一行:2 3 5 7 11 13 17 . 1979 1987 1993 第二行: 1 2 2 4 2 4 . 8 672將1、2、3、4、5、6、7、8、9九個數(shù)字分成三組,每個數(shù)字只能用一次,即每組三個數(shù)不許有重復(fù)數(shù)字,也不許同其它組的三個數(shù)字重復(fù),要求將每組中的三位數(shù)組成一個完全平方數(shù)。73一個自然數(shù)的七進(jìn)制表達(dá)式是一個三位數(shù),而這個自然數(shù)的九進(jìn)制表示也是一個三位數(shù),且這兩個三位數(shù)的數(shù)碼順序正好相反,求這個三位數(shù)。74使用數(shù)組精確計算M/N(0MN=100)的各小數(shù)位的值。如果M/N是無限循環(huán)小數(shù),則計算并輸出它的第一循環(huán)節(jié),同時要求輸出循環(huán)節(jié)的起止位置(小數(shù)的序號)。為了實現(xiàn)高精度計算結(jié)果,可將商存放在有()個元素的一維數(shù)組中,數(shù)組的每個元素存放一位十進(jìn)制數(shù),即商的第一位存放在第一個元素中,商的第二位存放在第二個元素中,依次類推。這樣可使用數(shù)組來表示計算的結(jié)果。 75使用數(shù)組完成兩個超長(長度小于)正整數(shù)的加法。為了實現(xiàn)高精度的加法,可將正整數(shù)存放在有()個元素的一維數(shù)組中,數(shù)組的每個元素存放一位十進(jìn)制數(shù),即個位存放在第一個元素中,十位存放在第二個元素中,依次類推。這樣通過對數(shù)組中每個元素的按位加法就可實現(xiàn)對超長正整數(shù)的加法。76使用數(shù)組完成兩個超長(長度小于)正整數(shù)的加法。為了實現(xiàn)高精度的加法,可將正整數(shù)存放在有()個元素的一維數(shù)組中,數(shù)組的每個元素存放一位十進(jìn)制數(shù),即個位存放在第一個元素中,十位存放在第二個元素中,依次類推。這樣通過對數(shù)組中每個元素的按位加法就可實現(xiàn)對超長正整數(shù)的加法。 77使用數(shù)組完成兩個超長(長度小于)正整數(shù)的乘法。78馬步遍歷問題:已知國際象棋棋盤有8*8共64個格子。設(shè)計一個程序,使棋子從某位置開始跳馬,能夠把棋盤上的格子走遍。每個格子只允許走一次。79八皇后問題:在一個的國際象棋盤,有八個皇后,每個皇后占一格;要求棋盤上放上八個皇后時不會出現(xiàn)相互攻擊的現(xiàn)象,即不能有量個皇后在同一行、列或?qū)蔷€上。問共有多少種不同的方法。80編制一個計算函數(shù)y=f(x)的值程序,其中:-x + 2.5 0= x 2y= 2 - 1.5(x-3)*(x-3) 2= x 4x/2 - 1.5 4= x 1)請編寫遞歸程序?qū)崿F(xiàn)。88編寫函數(shù),采用遞歸方法實現(xiàn)將輸入的字符串按反序輸出。89編寫函數(shù),采用遞歸方法在屏幕上顯示如下楊輝三角形:1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 90編寫函數(shù),采用遞歸方法將任一整數(shù)轉(zhuǎn)換為二進(jìn)制形式。91設(shè)有字母a、b、c,請編程用遞歸的方法產(chǎn)生由這些字母組成的,且長度為n的所有可能的字符串。例如,輸入n=2,則輸出:aaabacba bb bc ca cb cc92將一個數(shù)的數(shù)碼倒過來所得到的新數(shù),叫作原數(shù)的反序數(shù),如果一個數(shù)等于它的反序數(shù),則稱它為對稱數(shù)。編寫程序,采用遞歸算法求不超過1993的最大的二進(jìn)制的對稱數(shù)。93從到n(n1000)個自然數(shù)中選出個數(shù)進(jìn)行組合,并按指定的格式輸出組合的結(jié)果。例如:n=5,r=3時,共有10種組合,運行程序,要按下面的格式輸出:請用遞歸算法實現(xiàn)。94從鍵盤輸入十個整數(shù),用合并排序法對輸入的數(shù)據(jù)按照從小到大的順序進(jìn)行排序,將排序后的結(jié)果輸出。95編寫程序,讀入一個以符號.結(jié)束的長度小于20字節(jié)的英文句子,檢查其是否為回文(即正讀和反讀都是一樣的,不考慮空格和標(biāo)點符號)。例如: 讀入句子:MADAM IM ADAM. 它是回文,所以輸出:YES讀入句子:ABCDBA). 它不是回文,所以輸出:NO96編寫程序,其中包括一個函數(shù),此函數(shù)的功能是:對一個長度為N 的字符串從其第K個字符起,刪去M個字符,組成長度為N-M的新字符串(其中N、M=80,K=N)。例如輸入字符串We are poor students.,利用此函數(shù)進(jìn)行刪除poor的處理,輸出處理后的字符串是We are students.。97編寫函數(shù),通過指針將一個字符串反向。98編寫一個函數(shù)insert(s1,s2,ch),實現(xiàn)在字符串s1中的指定字符ch位置處插入字符串s2。99編寫程序?qū)⑤斎氲膬尚凶址B接后,將串中全部空格移到串首后輸出。100編寫程序,輸入字符串,分別統(tǒng)計字符串中所包含的各個不同的字符及其各自字符的數(shù)量。如:輸入字符串: abcedabcdcd則輸出:a=2 b=2 c=3 d=3 e=1。101利用結(jié)構(gòu):struct complx int real;int im;編寫求兩個復(fù)數(shù)之積的函數(shù)cmult,并利用該函數(shù)求下列復(fù)數(shù)之積: (3+4i)(5+6i) (10+20i)(30+40i102編寫成績排序程序。按學(xué)生的序號輸入學(xué)生的成績,按照分?jǐn)?shù)由高到低的順序輸出學(xué)生的名次、該名次的分?jǐn)?shù)、相同名次的人數(shù)和學(xué)號;同名次的學(xué)號輸出在同一行中,一行最多輸出10個學(xué)號。103編寫程序,實現(xiàn)輸入的時間屏幕顯示一秒后的時間。顯示格式為HH:MM:SS。程序需要處理以下三種特殊情況: 若秒數(shù)加1后為60,則秒數(shù)恢復(fù)到0,分鐘數(shù)增加1; 若分鐘數(shù)加1后為60,則分鐘數(shù)恢復(fù)到0,小時數(shù)增加1; 若小時數(shù)加1后為24,則小時數(shù)恢復(fù)到0。104編寫程序,從鍵盤輸入3個學(xué)生的數(shù)據(jù),將它們存入文件student;然后再從文件中讀出數(shù)據(jù),顯示在屏幕上。105編寫程序,從鍵盤輸入一行字符串,將其中的小寫字母全部轉(zhuǎn)換成大寫字母,然后輸出到一個磁盤文件test中保存。106編寫程序,讀入磁盤上語言源程序文件test8.c,刪去程序中的注釋后顯示?!揪帉懗绦蝾}參考答案1參考答案:#include main( ) int year;float money,rate,total; /* money:本金 rate:月利率 total:本利合計*/printf(Input money and year =?);scanf(%f%d, &money, &year); /* 輸入本金和存款年限 */if(year=1) rate=0.00315; /* 根據(jù)年限確定利率 */else if(year=2) rate=0.00330;else if(year=3) rate=0.00345;else if(year=5) rate=0.00375;else if(year=8) rate=0.00420;else rate=0.0;total=money + money * rate * 12 * year; /* 計算到期的本利合計 */printf( Total = %.2fn, total);2參考答案:#include main( ) int year, month, days;printf(Enter year and month:);scanf(%d%d, &year, &month);switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; /* 處理大月 */case 4: case 6: case 9: case 11: days=30; break; /* 處理小月 */case 2: if(year%4=0&year%100!=0 | year%400=0)days=29; /* 處理閏年平月 */else days=28; /* 處理不是閏年平月 */break;default: printf(Input error!n); /* 月份錯誤 */days=0;if( days!=0 )printf(%d, %d is %d daysn, year, month, days);3參考答案:#include main ( ) float data1, data2; /* 定義兩個操作數(shù)變量 */char op; /* 操作符 */printf(Enter your expression:);scanf(%f%c%f, &data1, &op, &data2); /* 輸入表達(dá)式 */switch(op) /* 根據(jù)操作符分別進(jìn)行處理 */ case + : /* 處理加法 */printf(%.2f+%.2f=%.2fn, data1, data2, data1+data2); break;case - : /* 處理減法 */printf(%.2f-%.2f=%.2fn, data1, data2, data1-data2); break;case * : /* 處理乘法 */printf(%.2f*%.2f=%.2fn, data1, data2, data1*data2); break;case / : /* 處理除法 */if( data2=0 ) /* 若除數(shù)為0 */printf(Division by zero.n);elseprintf(%.2f/%.2f=%.2fn, data1, data2, data1/data2);break;default: /* 輸入了其它運算符 */printf(Unknown operater.n);4分析:打印此圖形用兩重循環(huán)實現(xiàn)。圖形要重復(fù)n行,故采用循環(huán)結(jié)構(gòu)實現(xiàn)循環(huán)n次,循環(huán)體內(nèi)部打印一行*號,把上述思路表示為:for(i=1;i=n;i+)打印一行*號;每行有n個*號,再采用循環(huán)結(jié)構(gòu)實現(xiàn)n次循環(huán),循環(huán)內(nèi)部用格式輸出語句打印一個*號,即:for(j=1;j=n;j+)printf(*);按照上述思路,實現(xiàn)打印矩形。參考答案:main() int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n;i+) for(j=1;j=n;j+)printf(*);printf(n);5分析:此圖形和上題的區(qū)別在于在每一行先要打印空格,然后再打印n個*號,在上題第一層循環(huán)體內(nèi)打印*號的循環(huán)前面增加一個循環(huán)打印空格。每行空格的個數(shù)是逐行減少的,由于第一層循環(huán)的控制變量i是逐行增1,所以用一個固定值的數(shù)減去i就可實現(xiàn)對空格個數(shù)的控制,在此題中固定值可使用變量n。參考答案: main( ) int i,j,n;printf(nPlease Enter n:);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ù)量逐行減少,可以使用上題控制空格個數(shù)的思路來控制*號的個數(shù),請注意每行*的個數(shù)都是奇數(shù)。參考答案:main( ) int i,j,n;printf(nPlease Enter n:);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),在編程上我們可以變換一個思路。對于圖形中的第i行(1in),共需要輸出2n-i個字符,其中前面的i-1個字符為空格,后面的字符為*號。按照這一思路可以編寫出如下程序。參考答案:main( ) int i,j,n;printf(nPlease Enter n:);scanf(%d, &n);for( i=1;i=n;i+ ) /* 重復(fù)輸出圖形的n行 */ for( j=1;j=2*n-i;j+ ) /* 重復(fù)輸出圖形一行中的每個字符 */if(j=i-1) printf( ); /* 輸出前面的空格 */else printf(*); /* 輸出后面的*號 */printf(n);8分析:此題和第3題的區(qū)別僅是每行的*個數(shù)增加n-1個。參考答案:main( ) int i,j,n;printf(nPlease Enter n:);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分析:對于空心圖形,我們可以在上題的基礎(chǔ)上,對于打印*號的循環(huán)進(jìn)行修改,僅在循環(huán)開始值(j=1)和循環(huán)結(jié)束值(j=2*(i-1)+n)時打印*號,其它位置都打印空格。另一種思路是將每行打印的空格和*的兩個循環(huán)合為一體考慮,在判斷出需要打印*的兩個位置及第一行和最后一行相應(yīng)位置外,其余位置都打印空格。參考答案:main( ) int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n;i+) for(j=1;jn-i+1 & (i=1|i=n) printf(*);else printf( );printf(*n);10分析:此圖形可以理解為兩個空心梯形反向連接而成,因此可以利用上題的思路進(jìn)行輸出。參考答案:main( ) int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n;i+) /* 輸出圖形的上半部分(含中心行) */ for(j=1;j=2*n-i-1;j+)if(j=i) printf(*);else printf( );printf(*n);for(i=1;in;i+) /* 輸出圖形的下半部分(不含中心行) */ for(j=1;j=n+i;j+)if(j=n-i) printf(*);else printf( );printf(*n);11分析:此題與上題的區(qū)別在于打印*號的位置不同,編程時要找出應(yīng)打印*號的位置和兩個循環(huán)變量i、j以及行數(shù)n的關(guān)系。參考答案:main( ) int i,j,n;printf(nPlease Enter n:);scanf (%d, &n);for(i=1;i=n;i+) /* 輸出圖形的上半部分(含中心行) */ for(j=1;jn-i+1 & i=1) printf(*);else printf( );printf(*n);for(i=1;in;i+) /* 輸出圖形的下半部分(不含中心行) */ for(j=1;ji+1 & i=n-1) printf(*);else printf( );printf(*n);12參考答案:main( ) int i,j,n;printf(nPlease Enter n:);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(*);else printf( );printf(n);13參考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d, &n);for(i=1;i=n;i+) /* 輸出圖形的上半部分(含中心行) */ for(j=1;j=n-i;j+)if(j=1 | j=n-i+1) printf(* );else printf( );printf(n);for(i=1;in;i+) /* 輸出圖形的下半部分(不含中心行) */ for(j=1;j=i+1;j+)if(j=1 | j=i+1) printf(* );else printf( );printf(n);14參考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d,&n);for(i=1;i=n;i+) for(j=1;j=n;j+)if(j=1 | j=i | j=n) printf(*);else printf( );printf(n);15參考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d,&n);for(i=1;i=n;i+) for(j=1;jn-i) printf(*);else printf( );printf(n);for(i=1;in;i+) for(j=1;ji) printf(*);else printf( );printf(n);16參考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d,&n);for(i=1;i=n;i+) for(j=1;j=n+i-2;j+)if(j=n-i+1) printf(*);else printf( );printf(*n);17分析:首先對圖形進(jìn)行設(shè)計,坐標(biāo)的X軸和Y軸分別對應(yīng)屏幕的列和行,一個正弦函數(shù)的周期為0360度,我們把一個步長定義為10度,打印時每換一行等于函數(shù)的自變量增加10度;屏幕的列寬為80,函數(shù)值為0對應(yīng)屏幕的第40列,sin(x)的值在-11,變換成列數(shù)為以0為中心的-3030,對應(yīng)屏幕上第1070列。設(shè)計程序時,控制換行的自變量i乘以10得到正弦函數(shù)的X值,調(diào)用庫函數(shù)sin()求出函數(shù)值再乘以30輸出的列寬,因為我們以屏幕的第40列為0點,故再加上40得到應(yīng)在屏幕上顯示的點。參考答案:#define PAI 3.14159#include main( ) double x;int y,i,yy;for(i=1;i80;i+) /* 打印圖形的第一行 */if(i=40) printf(*); /* i控制打印的列位置 */ else printf(-);printf(n);for(x=10.0;xy ? 40 : y; /* 下一行要打印的字符總數(shù) */for (i=1;i=yy;i+) /* 控制輸出圖形中的一行 */ if(i=y) printf(*); /* i控制打印的列位置 */else if(i=40) printf(|); /* 打印中心的豎線 */else printf( );printf(n);18分析:首先設(shè)計屏幕圖形,如果預(yù)計圓形在屏幕上打印20行,所以定義圓的直徑就是20,半徑為10,圓的方程是X2Y2=R2,因為圖形不是從中心開始打印而是從邊沿開始,所以Y從10變化到-10,根據(jù)方程求出X,對求得的X值再根據(jù)屏幕行寬進(jìn)行必要的調(diào)整得到應(yīng)打印的屏幕位置。參考答案:#include main( ) double y;int x,m;for(y=10;y=-10;y-) /* 圓的半徑為10 */ m = 2.5 * sqrt(100-y*y); /* 計算行y對應(yīng)的列坐標(biāo)m */for(x=1;x30-m;x+) printf( ); /* 輸出圓左側(cè)的空白 */printf(*); /* 輸出圓的左側(cè) */for(;x30+m;x+) printf( ); /* 輸出圓的空心部分 */printf(*n); /* 輸出圓的右側(cè) */19參考答案:#include #include main( ) double y;int x, 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(+);else if(x=n) printf(+);else if(x=m | x=62-m) printf(*);else printf( );printf(n);20分析:編程的關(guān)鍵為兩點,一是使用控制輸出的行和列,這方面的內(nèi)容在前面已經(jīng)敘述,另一點是輸出的數(shù)字和所在行、列關(guān)系。此題第一行輸出的數(shù)字恰好是列數(shù),從第二行起每行的數(shù)字均比上一行增n。參考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d,&n);for(i=1;i=n;i+) for(j=1;j=n;j+)printf(%4d,(i-1)*n+j);printf(n);21分析:此題的關(guān)鍵是找到輸出數(shù)字和行、列數(shù)的關(guān)系。審查圖形中每行中數(shù)字的關(guān)系發(fā)現(xiàn),右邊數(shù)字和前面數(shù)字之差逐次增1;同列數(shù)字依然是這樣的關(guān)系,編程的關(guān)鍵轉(zhuǎn)換為找到每一行左方的第一個數(shù)字,然后利用行和列的循環(huán)變量進(jìn)行運算就可得到每個位置的數(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)ji時才輸出數(shù)字。參考答案:main( ) int i,j,m,n,k=1; /* k是第一列元素的值 */printf(Please enter m= );scanf(%d,&m);for(i=1;i=m;i+) n=k; /* n第i行中第1個元素的值 */for(j=1;j=m-i+1;j+) printf(%3d,n);n = n+i+j; /* 計算同行下一個元素的值 */printf(n);k=k+i; /* 計算下一行中第1個元素 */ 22參考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d,&n);for(i=1;i=n;i+) for(j=1;j=n;j+)if(j=i 且 j=n-i+1 ;下區(qū):j=n-i+1 ;左區(qū):ji 且 ji 且 jn-i+1 ?,F(xiàn)在問題是,如果知道一行在不同區(qū)域開始第一個位置的數(shù)字,然后該區(qū)后續(xù)的數(shù)字就可利用前面分析的規(guī)律得到。對于右區(qū)開始各行第一個數(shù)字最易求出,為4*(n-1)-i+1。后續(xù)一個和同行前一個數(shù)字之差是4*n-1-(j-1)*2+1,其中方括號內(nèi)是每邊的數(shù)字個數(shù)。對角線上的數(shù)字是分區(qū)點,對角線上相臨數(shù)字仍然相差一圈數(shù)字個數(shù),讀者自行分析得到計算公式。右區(qū)開始的第一個數(shù)字可以從上區(qū)結(jié)束時的數(shù)字按規(guī)律求出。下述程序用變量s保存分區(qū)對角線上的數(shù)字。參考答案一:main() int i,j,k,n,s,m,t;printf(Please enter n:);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;km;k+) s+=4*(n-2*k+1);for(j=1;j=n-i+1 & j=i & ji & jn-i+1) /* 右區(qū) */t-=4*(n-2*(n-j+1)+1;if(ji & jn-i+1) /* 左區(qū) */ if(j=1) t=4*(n-1)-i+2;else t+=4*(n-2*j+1)+1;printf(%4d,t);printf(n); 方案二:根據(jù)本題圖形的特點,我們可以構(gòu)造一個遞歸算法。我們可以將邊長為N的圖形分為兩部分:第一部分最外層的框架,第二部分為中間的邊長為N-2的圖形。對于邊長為N的正方型,若其中每個元素的行號為i(1iN),列號為j(1jN),第1行第1列元素表示為a1,1(a11=1),則有:對于最外層的框架可以用以下數(shù)學(xué)模型描述:上邊: a1,j=a1,1+j-1 (j1)右邊: ai,N=a1,1+N+i-2 (i1)下邊: ai,1=a1,1+4N-i-3 (i1)左邊: aN,j=a1,1+3N-2-j (j1)對于內(nèi)層的邊長為N-2的圖形可以用以下數(shù)學(xué)模型描述:左上角元素:ai,i=ai-1,i-1+4(N-2i-1) (i1)若令:ai,j=fun(ai-1,i-1+4(N-2i-1),當(dāng):i(N+1)/2且j(N+1)/2時,min=MIN(i,j),則有:a2,2 = fun(a1,1, min, min, n)ai,j=fun(a2,2
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國內(nèi)銷型苦丁茶數(shù)據(jù)監(jiān)測研究報告
- 廣東省汕尾市陸豐市碣石鎮(zhèn)2024-2025學(xué)年三年級上學(xué)期期中測試語文試卷(含答案)
- 幼教面試試題試題及答案
- 英美概況考試試題及答案
- 2025年軍隊文職人員招聘之軍隊文職教育學(xué)題庫檢測試卷B卷附答案
- 采購與供應(yīng)商分包合同(2篇)
- 詞牌名的文化內(nèi)涵與寫作技巧:小學(xué)高年級語文古詩教學(xué)教案
- 化學(xué)反應(yīng)與能量化學(xué)科學(xué)教案
- 學(xué)前教育中的寓言故事啟示讀后感
- 房地產(chǎn)行業(yè)智慧社區(qū)與智能家居開發(fā)方案
- 人教版新起點三年級下冊英語同步練習(xí)試題(全冊)
- 2025年全球及中國大型不銹鋼鑄件行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 帶電粒子在磁場中的運動與臨界問題-2025年高考物理易錯題專練(解析版)
- 2025年湖南信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 課題申報參考:低空經(jīng)濟(jì)視角下城市基礎(chǔ)設(shè)施網(wǎng)絡(luò)融合建模與空間聯(lián)合優(yōu)化選址研究
- 【語文】第18課《井岡翠竹》教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 2025年度汽車行業(yè)薪資水平及員工激勵機(jī)制3篇
- 失語癥的分類及臨床特征
- 循環(huán)流化床鍋爐操作工安全技術(shù)操作規(guī)程模版(3篇)
- AI賦能媒體行業(yè)提升工作效率與質(zhì)量
- 《少兒汽車知識講座》課件
評論
0/150
提交評論