《循環(huán)結(jié)構(gòu)作業(yè)2新【教學(xué)試題】》由會(huì)員分享,可在線閱讀,更多相關(guān)《循環(huán)結(jié)構(gòu)作業(yè)2新【教學(xué)試題】(7頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、循環(huán)結(jié)構(gòu)作業(yè)2:編程練習(xí) 注:請(qǐng)將調(diào)試成功的程序代碼拷貝到后面的作業(yè)模板中,打印出待提交,同時(shí)請(qǐng)保存好作業(yè)的電子版。1.編寫程序,要求找到用戶輸入的一串?dāng)?shù)中的最大值。程序需要提示用戶一個(gè)一個(gè)輸入數(shù)。當(dāng)用戶輸入0或負(fù)數(shù)時(shí), 程序必須顯示輸入的最大非負(fù)數(shù): Enter a number : 60 Enter a number : 38.3 Enter a number : 4.89 Enter a number : 100.62 Enter a number : 75.2295 Enter a number : 0 The largest number entered was 100.62 提示:
2、(1)程序開始設(shè)置一存放最大值的變量,如max,給一初值,循環(huán)輸入一數(shù)據(jù)和max比較大小,若輸入的數(shù)大,則將此值賦值給max,讓max中始終存儲(chǔ)兩者中的最大值。 (2)使用while循環(huán)。While(x0).;(3)試一下最后顯示最大值時(shí)用%g和%f有什么不同?2.編寫程序,要求用戶輸入兩個(gè)整數(shù)然后計(jì)算并顯示這兩個(gè)整數(shù)的最大公約數(shù)(GCD): Enter two integers: 12 28 Greatest common divisor :4提示:求最大公約數(shù)的經(jīng)典算法是Euclid算法,方法如下:分別讓變量m 和n存儲(chǔ)兩個(gè)數(shù)的值,始終保證m最后存儲(chǔ)的是兩個(gè)數(shù)中較大的值;用m除以n;把除數(shù)
3、保存在m中,而把余數(shù)保存在n中;如果n為0,那么停止操作,m中的值是GCD;否則,從m除以n開始重復(fù)上述除法過程。 (2)用While循環(huán)3.編寫程序可,實(shí)現(xiàn)1位或者多位數(shù)的反向輸出。例如輸入一個(gè)整數(shù)12345,則輸出一個(gè)整數(shù)54321。提示:(1)使用do_while循環(huán)重復(fù)執(zhí)行該數(shù)x對(duì)10的求余r和求商s操作,實(shí)現(xiàn)數(shù)字分離。(2)每次讓求出的商s重置該數(shù)x(即x=s),直到值達(dá)到0為止。(3)余數(shù)r則通過算式n=n*10+r重復(fù)累加到新數(shù)n上.4.編寫程序,將輸入的一個(gè)長(zhǎng)整型數(shù)x中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)返回。高位仍在高位,低位仍在低位。例如:程序運(yùn)行時(shí)輸入:1245789
4、02,程序輸出:24802. 若輸入:1357,輸出:05.編寫程序,要求顯示出單月的日歷。用戶說明這個(gè)月的天數(shù)和本月起始日是星期幾: Enter number of days in month:31 Enter starting day of the week(1=Sun, 7=Sat):3 SunMonTueWedThuFriSat 12345 6789101112 13141516171819 20212223242526 2728293031提示:(1) 程序提示用戶輸入打印月的天數(shù)n和第1天的順序號(hào),先輸出表頭。printf(%-5s%-5s%-5s%-5s%-5s%-5s%-5sn
5、,Sun,Mon,Tue,Wed,Tue,Fre,Sat);(2)上面既然規(guī)定了一個(gè)項(xiàng)的輸出占5個(gè)域?qū)?,那?號(hào)前面的項(xiàng)數(shù)(如本題是2)共空了2*5個(gè)空格,可以使用循環(huán)輸出這些空格。(3)用for循環(huán)輸出變量i從1到n的值。在循環(huán)中,用if語句判定i是否是一個(gè)星期的最后一天,如果是,就顯示一個(gè)換行符。如本題( i+2)%7=0 條件成立換行。 6.編寫程序(for),用符號(hào)(如*)輸出一個(gè)鉆石形狀。運(yùn)行程序輸入n值,則鉆石型的上三角就為n行,下三角為n-1行。如下圖為n=6的圖形。7. 編寫程序,利用公式PI/4=1-1/3+1/5-1/7+. 計(jì)算PI的近似值。 (1)給定項(xiàng)數(shù)計(jì)算。例如計(jì)算
6、到分母9999的那項(xiàng)為止,9999即是程序運(yùn)行時(shí)用戶輸入的項(xiàng)。 (2)給定精度計(jì)算。例如計(jì)算到累加項(xiàng)()1/n的絕對(duì)值小于等于10-6, 0.000001即是程序運(yùn)行時(shí)用戶輸入的精度。8. 斐波納契數(shù)列。有一種數(shù)列:0,1,1,2,3,5,8,13,21,34,。它以0和1開頭,接下來每個(gè)數(shù)是其前兩個(gè)數(shù)之和。數(shù)學(xué)家斐波納契(Fibonacci)首先發(fā)現(xiàn)并研究這種數(shù)列的性質(zhì)與應(yīng)用,該數(shù)列因此得名。自然界本身就存在這樣的數(shù)列,人們?cè)诿枋雎菪仙臄?shù)據(jù)時(shí)通常要用到它。該數(shù)列有個(gè)令人稱奇的特性:對(duì)于連續(xù)的兩個(gè)數(shù)來說,前一個(gè)數(shù)與后一個(gè)數(shù)之比趨向于常量0.618,后一個(gè)數(shù)與前一個(gè)數(shù)之比趨向于常量1.618
7、 。由于這兩個(gè)數(shù)在自然界的許多方面得到體現(xiàn),符合人類的審美標(biāo)準(zhǔn)因此被稱為“黃金分割率”。建筑師經(jīng)常按黃金分割率設(shè)計(jì)窗戶、房間和建筑物的長(zhǎng)寬比,明信片的長(zhǎng)寬也往往設(shè)計(jì)成這一比率。斐波納契數(shù)列的迭代形式如下: F0 = 0 (n=0) F1 = 1 (n=1) Fn = Fn-1 + Fn-2 (n=2)編寫程序,要求將范圍m,n之間所有的fibonacci數(shù)輸出。例如,0,30之間的fibonacci數(shù)有7個(gè),它們是:1 2 3 5 8 13 21 ;1000,32767之間有7個(gè),它們是:1597 2584 6765 10946 17711 28657 。(窮舉法一點(diǎn)兒也不陌生,幾乎在所有的程
8、序中都有它的影子,它是與邏輯緊密聯(lián)系在一起的。所謂窮舉也稱為蠻干(Brute Force)法,就是逐個(gè)訪問與處理所給定的大量數(shù)據(jù)與內(nèi)容,每個(gè)元素訪問且僅訪問一次。計(jì)算機(jī)所具有的高速計(jì)算的特性確實(shí)為窮舉法的廣泛應(yīng)用提供了良好的物質(zhì)基礎(chǔ),并發(fā)揮了高速度的優(yōu)勢(shì),從而使窮舉法能夠成為一種可行的算法?,F(xiàn)在程序設(shè)計(jì)中或多或少地都要用到它。很多問題除了用窮舉法還找不到別地方法去解答??梢姼F舉法做為沒有辦法的辦法而具備了通用行。當(dāng)然,由于它也顯得直接而簡(jiǎn)單,因而容易理解與普及,由此可見,不管喜歡與否窮舉法都是一種很重要的方法。)9完數(shù)的判斷。完數(shù)即“完美的數(shù)”。如果一個(gè)數(shù)恰好是小于它的各個(gè)不同因子之和,那么就
9、稱該數(shù)為完數(shù)。比如說,6的因子1、 2、 3 ,而6123,因此6就是一個(gè)完數(shù)。顯然,要判斷一個(gè)數(shù)是否是為完數(shù)的關(guān)鍵在于,對(duì)它進(jìn)行適當(dāng)?shù)囊蜃臃纸?,以得到小于它本身的所有因子。順乎自然的因子分解方法是遍歷試驗(yàn),也就是說,假設(shè)要判斷數(shù)n是否為完數(shù),那么就從1開始到數(shù)n-1,逐個(gè)看它是否為n的因子(能整除n)。將各個(gè)因子累加起來,最后與這個(gè)數(shù)進(jìn)行比較,如果相等該數(shù)就是完數(shù)。請(qǐng)編寫程序求解1000之內(nèi)的所有完數(shù)。10. 素?cái)?shù)的判斷。素?cái)?shù)定義:除了1和其本身之外,沒有其它的因子,這樣的數(shù)叫做素?cái)?shù)。編寫程序求出比x大的最初k(k1000)個(gè)素?cái)?shù)。最小的素?cái)?shù)是 2 。例如:程序運(yùn)行時(shí)輸入:7 10,輸出:1
10、1 13 17 19 23 29 31 37 41 43。若輸入:-7 10, 輸出:2 3 5 7 11 13 17 19 23 29。11. 輸入一行字符(回車結(jié)束),分別統(tǒng)計(jì)出其中英文字母、空格、數(shù)字字符和其它字符四類的各自的數(shù)目。提示: while( (c=getchar() !=n)。 。12. 翻譯密碼。為使電文保密,往往按一定規(guī)律將其轉(zhuǎn)換成密碼,收?qǐng)?bào)人再按約定的規(guī)律將其譯回原文。例如,可以按如下規(guī)律將電文變成密碼: 將字母A變成字母E,a變成e, 即變成其后的第4個(gè)字母. W變成A ,X變成B,Y變成C,Z變成D. 字母按上述規(guī)律轉(zhuǎn)換,非字母字符不變。例如“China!”轉(zhuǎn)換為“
11、Glmre!”.(請(qǐng)參看ASCII表,大寫字母后并非緊跟小寫字母,還有其它字符) 輸入一行字符,要求輸出其相應(yīng)的密碼。13.編寫程序可以把大寫字母格式的電話號(hào)碼翻譯成數(shù)值格式:Enter phone number: CALLATT2255288提示:字母在鍵盤上的對(duì)應(yīng)關(guān)系:2=ABC 3=DEF 4=GHI 5=JKL 6=MNO 7=PRS 8=TUV 9=WXY,如果原始的電話號(hào)碼包含非字母的字符(例如,數(shù)字或標(biāo)點(diǎn)符號(hào))那么保留下來不做變化:Enter phone number : 1-800-COL-LECT1-800-265-532814. 程序反復(fù)做以下工作:提示輸入學(xué)號(hào)(numbe
12、r),并提示結(jié)束標(biāo)記是什么(本程序用-1作為循環(huán)結(jié)束的標(biāo)記)。 由用戶輸入學(xué)號(hào)。程序隨后分別提示輸入各門課成績(jī)(如: course 1:),由用戶輸入學(xué)生3門課成績(jī),最后統(tǒng)計(jì)該學(xué)生3門課的平均成績(jī)并顯示。成績(jī)和平均分均為實(shí)型,顯示的平均分保留2位小數(shù)。當(dāng)用戶在提示信息“enter students number (-1 to end): ”后輸入-1時(shí)結(jié)束程序。*15. 飛機(jī)票有冗長(zhǎng)的標(biāo)識(shí)數(shù)字(位數(shù)不定),例如47715497443。為了有效,最后一位數(shù)字必須與以其他的數(shù)字為整體除以7后的余數(shù)相匹配。(例如4771549744除以7的余數(shù)為3.)編寫程序檢查機(jī)票號(hào)是否有效:Enter ticket number : 47715497443VALID提示:標(biāo)識(shí)數(shù)字很長(zhǎng),整型的幾種類型未必存儲(chǔ)的下,因此不要將這個(gè)標(biāo)識(shí)存成一個(gè)數(shù)值型,可以當(dāng)作字符一個(gè)一個(gè)讀取 ,如while(c=getchar()!=n),再進(jìn)行數(shù)字字符到相應(yīng)數(shù)值的轉(zhuǎn)換。第5單元 循環(huán)結(jié)構(gòu)程序作業(yè)2:編程練習(xí)姓名_ 專業(yè)年級(jí)_ 實(shí)驗(yàn)課選課時(shí)間_ 分?jǐn)?shù)_算法描述(求解步驟)程序代碼1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.7教資材料2