《C程序設(shè)計(jì)》doc版.doc_第1頁(yè)
《C程序設(shè)計(jì)》doc版.doc_第2頁(yè)
《C程序設(shè)計(jì)》doc版.doc_第3頁(yè)
《C程序設(shè)計(jì)》doc版.doc_第4頁(yè)
《C程序設(shè)計(jì)》doc版.doc_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

20161、 程序設(shè)計(jì)(用C語(yǔ)言編程實(shí)現(xiàn),并給出清楚的注釋。共9題,100分)。1. 張老師有五本不同的新書(shū),要借給A,B,C三位同學(xué),若每人每次只能借一本,則可以有多少種不同的借法?(10分)#include int _tmain(int argc, _TCHAR* argv)int a,b,c,i=0;for(a=0;a5;a+)for(b=0;b5;b+)for(c=0;c5;c+)if(a!=b)&(a!=c)&(b!=c)i+;printf(a: %d,b: %d,c: %dn,a,b,c);printf(Sum of the numbers: %dn,i);system(pause);return 0;2. 已知An為整數(shù)數(shù)組,試寫出實(shí)現(xiàn)下列算法的遞歸算法:A) 求數(shù)組的最大整數(shù)。B) 求n個(gè)整數(shù)的和。C) 求n個(gè)整數(shù)的平均值。(10分)#include int GetArrMax(int A,int n)if(n0)return 0;else if(n=1)return An-1;elsereturn (An-1GetArrMax(A,n-1)?GetArrMax(A,n-1):An-1);int GetArrSum(int A,int n)if(n0)return 0;else if(n=1)return An-1;return An-1+GetArrSum(A,n-1);int GetArrAve(int A,int n)if(n0)return 0;else if(n=1)return An-1;return (An-1+GetArrAve(A,n-1)/2;int _tmain(int argc, _TCHAR* argv)int B10=0;for(int i=0;i10;i+)Bi =1;int Max = GetArrMax(B,10);int Sum = GetArrSum(B,10);int Ave = GetArrAve(B,10);return 0;3. 設(shè)ha和hb分別是兩個(gè)非遞減有序單鏈表的表頭結(jié)點(diǎn)指針,試設(shè)計(jì)一個(gè)算法,將這兩個(gè)有序鏈表合并成一個(gè)非遞增有序的單鏈表。要求結(jié)果鏈表仍使用原來(lái)兩個(gè)鏈表的存儲(chǔ)空間,不另外占用其他的存儲(chǔ)空間。表中允許有重復(fù)數(shù)據(jù)。(10分)4. 用指向指針的方法對(duì)10個(gè)字符串排序并輸出。(10分)5. 編寫一個(gè)函數(shù)getbits,從一個(gè)16位的單元中取出某幾位(即該幾位保留原值,其余位為0)。函數(shù)調(diào)用形式為:getbits(value,n1,n2),value為該16位數(shù)的值,n1為欲取出的起始位,n2為欲取出的結(jié)束位。例如:getbits(0101675,5,8)表示對(duì)八進(jìn)制打印出來(lái)。注意,應(yīng)當(dāng)將這幾位數(shù)右移到最右端,然后用八進(jìn)制形式輸出。(10分)6. 魔術(shù)師表演節(jié)目,她將紅桃和黑桃全部迭在一起,牌面朝下放在手中,對(duì)觀眾說(shuō):最上面一張是黑桃A,翻開(kāi)后放在桌上。以后,從上至下每數(shù)兩張全依次放在最底下,第三張給觀眾看,便是黑桃2,放在桌上后再數(shù)兩張依次放在最底下,第三張給觀眾看,是黑桃3。如此下去,觀眾看到放在桌上上牌的順序是:黑桃 A 2 3 4 5 6 7 8 9 10 J Q K紅桃 A 2 3 4 5 6 7 8 9 10 J Q K問(wèn)魔術(shù)師手中牌的原始順序是什么(12分)?7. 編寫一個(gè)算法,檢查一個(gè)程序中的花括號(hào)、方括號(hào)是否配對(duì),若能夠全部配對(duì)則返回1,否則返回0.(12分)8. 編寫一個(gè)函數(shù),找出一個(gè)二維數(shù)組的鞍點(diǎn),即該位置上的元素在該行最大,在該列上最?。ㄒ部赡軟](méi)有鞍點(diǎn)),并分析函數(shù)的時(shí)間的復(fù)雜度。(12分)9. 一個(gè)長(zhǎng)方體P=(x,y,z)|0=x=L,0=y=W,0=z=H,大小為L(zhǎng)*W*H。長(zhǎng)方體表面有任意兩點(diǎn)A(x1,y1,z1)和B(x2,y2,z2),A,B兩點(diǎn)可由長(zhǎng)方體表面的折線連接。求出A和B的最短距離(L,W,H和點(diǎn)的坐標(biāo)都是整數(shù),0=L,W,H=1000)。(14分)3. 20151、 程序閱讀題(每題3分,共6分)(1)#define product(x) (x*x)int main()int i=3,j,k;j=product(i+);k=product(+i);printf(j=%d,k=%d,j,k);return 0;以上程序運(yùn)行結(jié)果:_j=9,k=25_(2) 有1020個(gè)西瓜,第一天賣了一半多兩個(gè),以后每天賣剩下的一半多兩個(gè),下面的程序統(tǒng)計(jì)賣完所需的天數(shù)。請(qǐng)?zhí)羁眨?include main()int day,x1,x2;day = 0;x1 = 1020;while(_x1!=0_)x2=_x1/2-2_;x1 = x2;day+;printf(day = %dn,day);2、 程序設(shè)計(jì)題(寫出完整的C語(yǔ)言程序,在程序中必須給出清楚的注釋,12題共計(jì)94分)。1. 寫一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)(3分)。#define MIN(a),(b) (a)(b)?(b):(a)2編寫函數(shù)將a、b的值進(jìn)行交換,要求不適用任何中間變量(4分)。Swp(a,b) a=ab; b=ab; a=ab; 3. 編寫函數(shù)getbits從一個(gè)16位的單元中取出以x1開(kāi)始至x2結(jié)束的某幾位,起始位與結(jié)束位都從左向右計(jì)算。同時(shí)編寫主函數(shù)調(diào)用getbits進(jìn)行驗(yàn)證(6分)。unsigned short getbits(unsigned short value, unsigned char x1,unsigned char x2)unsigned short temp = 0;temp = (tempx1)&(temp(16-x2);return temp;int main(void)unsigned a;unsigned char x1,x2;printf(input a:);scanf(%o,&a);printf(input start bit x1, and end bit x2:);scanf(%d,%d,&x1,&x2);printf(%dn,getbits(a,x1-1,x2);system(pause);return 0; 4. 求兩個(gè)正整數(shù)m和n的最大公約數(shù),要求采用非遞歸方法與遞歸方法分別實(shí)現(xiàn)(5分)。5. 輸入一行文字,找出其中大寫字母、小寫字母、空格、數(shù)字及其他字符各有多少(7分)?6. 用指向指針的指針的方法對(duì)5個(gè)字符串排序并輸出(8分)。7. 自定義字符型指針函數(shù),實(shí)現(xiàn)任意兩個(gè)字符串的連接,并返回連接之后的新字符串的首地址(8分)。8. 數(shù)字螺旋方陣的形式如圖一所示。請(qǐng)將螺旋方陣存放在nxn的二維數(shù)組中,并將其打印輸出,要求n由程序讀入,數(shù)字螺旋方陣由程序自動(dòng)生成(而非人為地初始化或賦值)(10分)9. 現(xiàn)有21根火柴,兩人輪流取,每人每次可以取1至4根,不可多取,也不能不取,誰(shuí)取最后一根火柴誰(shuí)輸。請(qǐng)編寫一個(gè)程序進(jìn)行人機(jī)對(duì)弈,要求人先取,計(jì)算機(jī)后取,計(jì)算機(jī)一方為“常勝將軍”(10分)。10. 編寫一個(gè)函數(shù)alloc(n),用來(lái)在內(nèi)存新開(kāi)辟一個(gè)連續(xù)的空間(n個(gè)字節(jié))。此函數(shù)的返回值是一個(gè)指針,指向新開(kāi)辟的連續(xù)空間的起始地址。再寫一個(gè)函數(shù)free(p),將地址p開(kāi)始的各單元釋放(不能再被程序使用,除非再度開(kāi)辟)。(10分)11. 采用單鏈表來(lái)存儲(chǔ)多項(xiàng)式的結(jié)構(gòu),并編寫一個(gè)產(chǎn)生多項(xiàng)式鏈表的函數(shù);基于多項(xiàng)式鏈表結(jié)構(gòu),編寫程序?qū)崿F(xiàn)兩個(gè)多項(xiàng)式相加的運(yùn)算(10分)。12. 在一個(gè)旅館中住著六個(gè)不同國(guó)籍的人,他們分別來(lái)自美國(guó)、德國(guó)、英國(guó)、法國(guó)、俄羅斯和意大利。他們的名字叫A、B、C、D、E和F。,名字的順序與上面的國(guó)籍不一定互相對(duì)應(yīng)的。現(xiàn)在已知:(1)A和美國(guó)人是醫(yī)生。(2)E和俄羅斯人是教書(shū)。(3)C和德國(guó)人是技師。(4)B和F曾經(jīng)當(dāng)過(guò)兵,而德國(guó)人從未參過(guò)軍。(5)法國(guó)人比A年齡大;意大利人比C年齡大。(6)B同美國(guó)人下周要去西安旅行,而C同法國(guó)人下周要去杭州度假。試問(wèn)由上述已知條件,A、B、C、D、E和F各是哪國(guó)人(12分)?2014(1) 用C語(yǔ)言編程實(shí)現(xiàn)(寫出完整的C語(yǔ)言程序,在程序中需給出清楚的注釋,共計(jì)100分)。1. 編寫兩個(gè)函數(shù),分別求兩個(gè)數(shù)的最大公約數(shù)和最小公倍數(shù),用主函數(shù)調(diào)用這兩個(gè)函數(shù)輸出結(jié)果。(8分)2. 編寫程序輸出1001000內(nèi)的可逆素?cái)?shù)??赡嫠?cái)?shù)是指:一個(gè)素?cái)?shù)將其各位數(shù)字的順序倒過(guò)來(lái)構(gòu)成的飯序數(shù)也是素?cái)?shù)。如157和751均為素?cái)?shù),它們是可逆素?cái)?shù)。(8分)3. 有兩個(gè)磁盤文件“A”和“B”,各存放若干個(gè)按升序排列的實(shí)數(shù)。寫一個(gè)程序,將“A”和“B”兩個(gè)文件中的實(shí)數(shù)存放到新文件“C”中,且“C”中的實(shí)數(shù)仍然以升序排列。(10分)4. 將一個(gè)5x5的矩陣中最大的元素放在中心,4個(gè)角分別放4個(gè)最小的元素(順序?yàn)閺淖蟮接?,從上到下順序依次從小到大存放),編寫一個(gè)函數(shù)實(shí)現(xiàn)之,用main函數(shù)調(diào)用。(10分)5. 用遞歸法將一個(gè)整數(shù)N轉(zhuǎn)換成字符串,例如輸入483,應(yīng)輸出字符串“483”。N的位數(shù)不確定,可以是任意位數(shù)的整數(shù)。(10分)6. 設(shè)有一個(gè)unsigned long 型整數(shù),現(xiàn)要分別將其前2個(gè)字節(jié)和后2個(gè)字節(jié)作為2個(gè)unsigned in型整數(shù)輸出(設(shè)一個(gè)int型數(shù)據(jù)占2個(gè)字節(jié)),編寫一個(gè)函數(shù)partition實(shí)現(xiàn)上述要求。要求在主函數(shù)輸入該long型整數(shù),在函數(shù)partition中輸出結(jié)果。(10分)7. 在主函數(shù)main中輸入10個(gè)不等長(zhǎng)的字符串,用另一個(gè)函數(shù)sort對(duì)它們進(jìn)行排序,然后在主函數(shù)main中輸出這10個(gè)已排好的字符串。要求用指針數(shù)組完成。(10分)8. 已知有兩個(gè)單鏈表A和B,其頭指針?lè)謩e為HA何HB,編寫一個(gè)函數(shù)從單鏈表A中刪除自第i個(gè)起的共m個(gè)元素,然后將它們插入到單鏈表B的第j個(gè)元素之前。(10分)9. M只猴子要選大王,選舉方法如下:所用猴子按照1.M編號(hào)圍坐一圈,從第1浩開(kāi)始按順序1,2,.,N(NM)報(bào)數(shù),凡報(bào)到N的猴子退出到圈外,再?gòu)南乱粋€(gè)猴子開(kāi)始繼續(xù)1,2,.,N報(bào)數(shù),報(bào)到N的猴子退出,如此循環(huán),直到圈內(nèi)只剩下一只猴子時(shí),這只猴子就是大王。給定M和最后一個(gè)出圈者的編號(hào)S,求最小的N?(12分)10. 有A、B、C、D、E五人,每人額頭上都貼了一張黑或白的紙,五人對(duì)坐。每人都可以看到其它人額頭上的紙的顏色。五人相互觀察后,A說(shuō):“我看見(jiàn)有三人額頭上貼的是白紙,一人額頭上貼的是黑紙。”B說(shuō):“我看見(jiàn)其它四人額頭上貼的都是黑紙?!盋說(shuō):“我看見(jiàn)一人額頭上貼的是白紙,其它三人額頭上貼的是黑紙?!盌說(shuō):“我看見(jiàn)四人額頭上貼的都是白紙?!盓什么也沒(méi)說(shuō)?,F(xiàn)在已知額頭上貼黑紙的人說(shuō)的都是謊話,額頭上貼白紙的人說(shuō)的都是實(shí)話。問(wèn)這五人誰(shuí)的額頭是貼白紙,誰(shuí)的額頭是貼黑紙?用C語(yǔ)言編程實(shí)現(xiàn)。(12分)2013(1) 程序閱讀題(每題5分,共20分)1. 當(dāng)a=1、b=3、c=5、d=4時(shí),執(zhí)行以下程序段后x的值是_2_ if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;else x=3;else x =6;else x=7;2. 下面程序的功能是在3個(gè)字符串中找出最小的。請(qǐng)?zhí)羁铡?include #include main()char s20,str320;int i;for(i=0;i3;i+)gets(stri);strcpy(s,(_);if(strcmp(str2,s)0) strcpy(_);printf(%sn,_);3. 以下程序運(yùn)行的結(jié)果是_main()int a3=1,2,3,4,5,0,(*pa)3,i;pa=a;for(i=0;i3;i+)if(i1_)0;i+);return i;(2) 程序設(shè)計(jì)題(要求用C語(yǔ)言實(shí)現(xiàn),共80分)1) 已知兩個(gè)單鏈表A與B分別表示兩個(gè)集合,其元素遞增排列,編寫一個(gè)函數(shù)求出A和B的交集C,要求C同樣以元素值遞增的單鏈表形式存儲(chǔ)(10分)。2) 編一程序,檢查你所使用的計(jì)算機(jī)系統(tǒng)的C編譯系統(tǒng)在執(zhí)行右移時(shí)時(shí)按照邏輯右移的原則還是按照算術(shù)右移的原則?如果是邏輯右移,請(qǐng)編寫一函數(shù)實(shí)現(xiàn)算術(shù)右移;如果是算術(shù)右移,請(qǐng)編寫一函數(shù)實(shí)現(xiàn)邏輯右移(10分)。3) 設(shè)有一個(gè)數(shù)列,包含10個(gè)數(shù),已按升序排列。現(xiàn)要求編寫程序,把從指定位置開(kāi)始的n個(gè)數(shù)按逆序重新排列并輸出新的完整數(shù)列。進(jìn)行逆序處理時(shí)要求使用指針?lè)椒?。(例如?、4、6、8、10、12、14、16、18、20,若要求把從第4個(gè)數(shù)開(kāi)始的5個(gè)數(shù)按逆序重新排列為2、4、6、16、14、12、10、8、18、20)(10分)4) 從3個(gè)紅球、5個(gè)白球、6個(gè)黑球中任意取出8個(gè)球,且其中必須要有紅球和白球。請(qǐng)編寫程序,輸出所有方案(10分)。5) 用條件編譯的方法實(shí)現(xiàn)以下功能:輸入一行電報(bào)文字,可以任選兩種輸出,一為原文輸出;一為將字母變成其下一字母(如“a”變成“b”.,“y”變成“z”,而“z”變成“a”。其它字符不變)(10分)。6) 采用順序結(jié)構(gòu)存儲(chǔ)串,編寫一個(gè)函數(shù),求串A和串B的一個(gè)最長(zhǎng)公共子串(15分)。7) 小張去旅游需要帶一些物品,有5種物品供選擇,每種物品的體積、重量、數(shù)量、價(jià)值分別如下表所示:物品編號(hào)體積(cm3)重量(kg)數(shù)量(個(gè))價(jià)值(元)130310425081053102102423583513020511現(xiàn)在限制總的體積最多為500cm3,總的總量最多為100kg,請(qǐng)問(wèn)小張能帶上的物品的最大總價(jià)值是多少?要求采用遞歸編程實(shí)現(xiàn)(15分)。201220111、 閱讀程序題(每題5分,共20分)1. 當(dāng)a=1,b=3,c=5,d=4時(shí),執(zhí)行完下面一段程序段后x的值是_if(ab)if(cd)x=1;elseif(ac)if(bd)x=2;else x=3;else x =6;else x=7;2. 下面程序的運(yùn)行結(jié)果是_#include main()int a,b;for(a=1,b=1;a=20)break;if(b%3=1)b+=3;continue;b-=5printf(%dn,a);3. 下面程序的運(yùn)行結(jié)果是_main()int a66,i,j;for(i=1;i6;i+)for(j=1;j6;j+)aij=(i/j)*(

溫馨提示

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