復(fù)試06-14上機(jī)真題及答案_第1頁
復(fù)試06-14上機(jī)真題及答案_第2頁
復(fù)試06-14上機(jī)真題及答案_第3頁
復(fù)試06-14上機(jī)真題及答案_第4頁
復(fù)試06-14上機(jī)真題及答案_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、航空航天大學(xué)計(jì)算機(jī)系復(fù)試 06-14 上機(jī)及復(fù)試上機(jī)指導(dǎo)1.本只是提供輔助作用,關(guān)鍵還是研友平時(shí)動(dòng)手能力練習(xí)和對(duì)算法、數(shù)據(jù)結(jié)構(gòu)的理解,參加過 ACM 的有一定優(yōu)勢(shì) 沒參加過的也不用緊張,北航的上機(jī)題相對(duì)于和,難度上小很多,多練習(xí)的話,問題不大;2.上機(jī)時(shí),可以快速閱讀所有的題目,按照從易到難的次序做題,保證會(huì)的一定得分;3.熟悉編程環(huán)境,熟悉 c 的常用函數(shù);4.為了快速測(cè)試代碼的正確性,尤其是矩陣輸入的情況,可以利用標(biāo)準(zhǔn)輸入重定向,freopen(“c:input.txt”,”r”,stdin);加快測(cè)試過程;5.注意程序邊界條件的測(cè)試;6.如果你疑問,或者提供的材料有問題,歡迎們: 提供北

2、航計(jì)算機(jī)報(bào)考和選導(dǎo)師指導(dǎo),或者到給留言。14 年上機(jī)題第一題,階乘數(shù)。輸入一個(gè)正整數(shù),輸出時(shí),先輸出這個(gè)數(shù)本身,跟著一個(gè)逗號(hào),再輸出這個(gè)數(shù)的各位數(shù)字的階乘和,等號(hào),階乘和的計(jì)算結(jié)果,并判斷階乘和是否等于原數(shù),如果相等輸出 Yes,否則輸出 No。題目說明輸入的正整數(shù)以及其各位階乘和都不會(huì)超出型的表示范圍。輸入樣例 1:145輸出樣例 1:145,1!+4!+5!=145Yes輸入樣例 2:1400輸出樣例 2:1400,1!+4!+0!+0!=27No第二題,五子棋。輸入一個(gè) 19*19 的矩陣,只包含數(shù)字 0、1、2,表示兩人下五子棋的狀態(tài),1、2 分別表示兩人的棋子,0 表示空格。要求判斷

3、當(dāng)前狀態(tài)下是否有人獲勝(橫向、豎向或者斜線方向連成 5 個(gè)同色棋子)。題目說明輸入樣例保證每條線上至多只有連續(xù) 5 個(gè)同色棋子,并且保證至多只有1 人獲勝。如果有人獲勝,輸出獲勝者(1或 2)加一個(gè)冒號(hào),接著輸出獲勝的五連珠的第一個(gè)棋子的坐標(biāo),從上到下從左到右序號(hào)最小的為第一個(gè),序號(hào)從 1 開始果無人獲勝,輸出 no。如樣例略。第三題,排版題。輸入若干行字符,表示某的演職員表,每行只有一個(gè)冒號(hào),冒號(hào)前面是職位,冒號(hào)后面是,要求把各行冒號(hào)對(duì)齊,刪除多余空格后輸出。先輸入一個(gè)數(shù)字,表示排版要求的冒號(hào)位置,該位置號(hào)保證比各行冒號(hào)前的最大字符數(shù)還要大。再輸入若干行字符,最多 50 行,每行最多100

4、個(gè)字符,除空格、制表符和回車之外都是有效字符,要求每行的冒號(hào)處于格式要求的位置,冒號(hào)兩邊與有效單詞之間各有一個(gè)空格,冒號(hào)前面的單詞之間只有一個(gè)空格(刪除多余的空格和制表符),在冒號(hào)左邊右對(duì)齊,前面全由空格填充,冒號(hào)后面的單詞之間也只有一個(gè)空格,在冒號(hào)右邊左對(duì)齊,最后一個(gè)單詞后不加空格直接換行。 13 年上機(jī)題第一題,給一個(gè)真分?jǐn)?shù)的分子分母,輸出約分后的分子分母,送分題,25 分;第二題,簡(jiǎn)單版八皇后,15 分;第三題,給出一個(gè)標(biāo)準(zhǔn)輸入的正數(shù)(開頭末尾沒有多余的 0),輸出其科學(xué)表示結(jié)果。比如:輸入0.000002,輸出 2e-6;輸入 123.456,輸出1.23456e2;輸入 123456

5、,輸出 1.23456e212 年上機(jī)題1.【問題描述】某些整數(shù)能分解成若干個(gè)連續(xù)整數(shù)的和的形式,例如151515= 1= 4= 7+23455 + 68某些整數(shù)不能分解為連續(xù)整數(shù)的和,例如:16輸入:一個(gè)整數(shù)N(N = 10000)輸出:整數(shù) N 對(duì)應(yīng)的所有分解組合,按照每個(gè)分解中的最小整數(shù)從小到大輸出,每個(gè)分解占一行,每個(gè)數(shù)字之間有一個(gè)空格(每行最后保留一個(gè)空格);如果沒有任何分解組合,則輸出 NONE。根據(jù)題目,任何可以進(jìn)行分解的整數(shù),必然滿足(m+n)(n-m+1)/2 的形式,可以所有m 和n 組合,如果滿足則輸出,否則輸出 None。嘗試#include #include main

6、()n;while(scanf(%d,&n) != EOF) begin,end;found = 0; for(begin=1;beginn;begin+)for(end=begin+1;endn;end+)/ 連續(xù)整數(shù)求和sum = (begin + end)*(end-begin+1)/2; if(sum = n) / 可以分解,輸出結(jié)果found = 1;i; for(i=begin;i=end;i+)prf(%d ,i);prf(n);if(found = 0)prf(NONEn);return 0;代碼:解題思路:2.【問題描述】小島面積1 1 1 1 1 1111011 00 01

7、 01 01 1001110 11 01 10 01 1上面矩陣的中的 1 代表海岸線,0 代表小島。求小島面積(即被 1 中包圍的 0 的個(gè)數(shù))。注意:僅求這樣的 0,該 0 所在行中被兩個(gè) 1 包圍,該 0 所在列中被兩個(gè) 1 包圍。輸入:第一行輸入一個(gè)整數(shù)N,表示輸入方陣的維數(shù)輸入一個(gè)N 維方陣輸出:小島面積樣例輸入:61111011101111000011 10 00 11 11 01 1110101樣例輸出:8理解題目本身意思,可以發(fā)現(xiàn)對(duì)于矩陣中的 0 是否屬于內(nèi)陸,取決于該 0 所處的行和列上,如果 0 滿足,如下條件則 O 為內(nèi)陸,否則不是。0 所在的行,0 的左邊和右邊必須有

8、10 所在的列,0 的上面和下面必須有 1所以,解題思路就是,遍歷所有的行和列,改行或列,最左面和最右面(或者最上面和最下面)1 的坐標(biāo),然后當(dāng)遇到 0,判斷是否處于是,則是內(nèi)陸,面積加 1,否則不加。代碼:#include #include 的值的中間,#define DEBUG_BUAA_122main()N; /矩陣維數(shù)island100100;/輸入島數(shù)據(jù)的方陣解題思路:data1004;#ifdef DEBUG_BUAA_122 freopen(/Users/bwiunbuaa/tmp/oj/buaa_122.in,#endif /* JOBDU_H_ */ while(scanf(

9、%d,&N) != EOF)i,j;/初始化r,stdin);memset(data,-1,100*4*sizeof(/讀入數(shù)據(jù) for(i=0;iN;i+)for(j=0;jN;j+);scanf(%d,&islandij);for(i=0;iN;i+)for(j=0;jN;j+)if(islandij = 1) /小島邊界if(datai0 = -1) datai0 = j;if(dataj2 = -1) dataj2 = i;datai1 = j;dataj3 = i;area = 0; for(i=0;iN;i+)for(j=0;j dataj2 & i datai1)area+;da

10、tai0& j /prf(i=%d,j=%dn,i,j); for debugprf(%dn,area);return 0;3.【問題描述】統(tǒng)計(jì)關(guān)鍵字出現(xiàn)位置輸入:一行標(biāo)準(zhǔn)c 語言代碼(字符個(gè)數(shù)小于 300),統(tǒng)計(jì)出該字符串中關(guān)鍵字的 if,while,for 所在的位置,按照關(guān)鍵字出現(xiàn)的順序依次輸出。注意雙引號(hào)內(nèi)的不需要統(tǒng)計(jì)。輸入:一行標(biāo)準(zhǔn)c 語言代碼,字符個(gè)數(shù)小于 300輸出:關(guān)鍵字 if,while,for 對(duì)應(yīng)的位置,按照關(guān)鍵字出現(xiàn)的順序依次輸出。輸出格式為:關(guān)鍵字,后跟冒號(hào),然后是出現(xiàn)的位置。掃描到關(guān)鍵字就輸出,每個(gè)輸出占一行。樣例輸入:#include #include main(

11、) main() i = 0; if(i = 0) prf(YES); return 0;ifwhile = 0;forif = 1;char if_for_while= a;char *str = while; while(ifwhile = 0) ifwhile = 1;forif = 0; if(forif= 0) if_for_while = b; if(ifwhile = 1) if_for_while = c; return 0;樣例輸出:if:43 while:88 if:133if:170首先把輸入字符串切分為一個(gè)個(gè)的單詞,然后對(duì)每個(gè)單詞進(jìn)行匹配。注意 c 語言中的 strto

12、k 函數(shù),不能夠返回位置(當(dāng)分隔符連續(xù)時(shí),比如+=,計(jì)算出前導(dǎo)的分割符有幾個(gè)),所以不能滿足本題的要求,必須自己寫獲取單詞的函數(shù)(反正也不復(fù)雜啦)。因?yàn)榭紤]到引號(hào),的解決方案是首先對(duì)輸入字符串進(jìn)行預(yù)處理,將“”內(nèi)的每個(gè)字符都替換為#,然后再進(jìn)行單詞分割(切詞),最后進(jìn)行匹配。具體步驟:輸入源碼字符串預(yù)處理,將”內(nèi)的每個(gè)字符替換為#一次獲取源碼中的單詞,看是否為查找的,如果是則輸出#include#include #include#define #define#defineDEBUG_BUAA_123 MAX_WORD_LEN 128MAX_LEN 300代碼:解題思路:#define KW_N

13、UM 3/* 將一段源代碼中間的,位于雙引號(hào)“”的以#代替*/void replaceQuota(char buf) i;len = strlen(buf); quotaL = 0,quotaR = 0;for(i=0;ilen;i+) if(bufi = )if(quotaL = 0) /左引號(hào)quotaL = 1;else /右引號(hào)quotaL = quotaR = 0;elseif(quotaL = 1) /該字符屬于引號(hào)之間的,替換為#bufi =#;/ 判斷字符是否為分隔符isdelim(char ch)switch(ch)case case case case case case

14、case case casecase :=:,:;:(:):return1;default:return 0;/* 從input數(shù)組下標(biāo)處開始一個(gè)單詞,返回的單詞放在word數(shù)組中* 返回下次查找開始的位置*/getWord(char input, len = strlen(input); i;isbegin = 0;,char word)wfor(i= 0;i=len) ? -1:i; /如果到文件結(jié)尾了,返回-1main()char input300;char wordMAX_WORD_LEN;#ifdef DEBUG_BUAA_123 freopen(/Users/bwiunbuaa/t

15、mp/oj/buaa_123.in,#endif /* JOBDU_H_ */r, stdin);char delim = ,();,+-*/=?:;/單詞分隔符while(gets(input) != NULL)/首先對(duì)input進(jìn)行預(yù)處理,將引號(hào)中間的字符都轉(zhuǎn)化為# replaceQuota(input);beg_= 0;dobeg_= getWord(input,beg_,word);wlen = strlen(word);/判斷是否為指定的關(guān)鍵字if(strcmp(if,word) = 0)f(if:%dn,beg_-wlen+1);/位置以1開始,而不是0,所pr以要加1else i

16、f(strcmp(while,word) = 0)prf(while:%dn,beg_-wlen+1);else if(strcmp(for,word) = 0)prf(for:%dn,beg_-wlen+1);whieg_= 0);return 0;11 年上機(jī)題1.【問題描述】孿生數(shù)定義: 如果 A 的約數(shù)(因數(shù),包含 1,但不包含A 本身)之和等于 B , B 的約數(shù)(因數(shù))之和等于 A , A 和 B 稱為孿生數(shù)(A 和B 不相等)。試找出正整數(shù) M 和 N 之間的孿生數(shù)。輸入:從控制臺(tái)輸入兩個(gè)正整數(shù)M 和N(1=MN=20000),中間用一個(gè)空格分隔。輸出:在標(biāo)準(zhǔn)輸出上輸出符合題目描

17、述的 M 和 N 之間的全部孿生數(shù)對(duì)(包括 M 和 N)。每行輸出一對(duì)孿生數(shù),用一個(gè)空格隔開,小的先輸出;各行孿生數(shù)按照第一個(gè)數(shù)從小到大的順序輸出,一對(duì)孿生數(shù)只輸出一次。 如果沒有符合要求的孿生數(shù)對(duì),則輸出字符串“NONE”。輸入樣例20 300200 250輸出樣例 220 284 NONE樣例說明樣 例 1 輸 入 的 區(qū) 間 為 20,300 , 其 間 有 一 對(duì) 孿 生 數(shù) 對(duì) , 即 : 220(1+2+4+5+10+11+20+22+44+55+110=284)和 284(1+2+4+71+142=220)。樣例 2 輸入的區(qū)間是200,250,其間沒有孿生數(shù)對(duì),所以輸出字符串:

18、NONE。評(píng)分標(biāo)準(zhǔn)該題要求輸出區(qū)間中的所有孿生數(shù)對(duì),共有 5 個(gè)測(cè)試點(diǎn),提交程序文件名為 exle1.c 或exle1.cpp。這題目很簡(jiǎn)單,比較每對(duì)數(shù)的約數(shù)和,看是否滿足條件,如果滿足則輸出。#include #include /計(jì)算x約數(shù)的和yinzisum(x)i=1,sum=0;if(x = 1) return 0; while(i y)max=x; min=y;elsemax=y; min=x;* array=(*)malloc(sizeof()*(max-min+1);for(i=0;imax-min+1;i+) arrayi=yinzisum(min+i);for(i=0;ima

19、x-min+1;i+) for(j=i+1;jmax-min+1;j+)if(arrayi=j+min & arrayj=i+min)prf(%d %dn,i+min,j+min);flag=1;if(flag=0)prreturnf(NONEn);1;* s=(*)malloc(sizeof()*(max-min+1)2.【問題描述】先輸入兩個(gè)矩陣 A 和 B,然后輸入替換位置(左上角),編寫程序?qū)⒕仃?A 中從替換位置開始的子矩陣(與B 同樣大?。┨鎿Q為B,并輸出替換后的矩陣?!据斎胄问健繌目刂婆_(tái)先輸入矩陣A 的行數(shù)和列數(shù)(行數(shù)和列數(shù)均大于等于 1,小于等于 20),然后在新的行上輸入矩陣

20、 A 的各行數(shù)字(以一個(gè)空格分隔的整數(shù))。再以同樣的方式輸入矩陣 B。最后輸入替換位置(用一個(gè)空格分隔的兩個(gè)整數(shù)表示,行數(shù)和列數(shù)都從 1 開始計(jì)數(shù),因此兩個(gè)整數(shù)都大于等于 1)。若替換位置超出了矩陣 A 的行數(shù)或列數(shù),則原樣輸出矩陣A?!据敵鲂问健吭跇?biāo)準(zhǔn)輸出上分行輸出替換后的矩陣,每行中各數(shù)字之間以一個(gè)空格分隔?!据斎霕永?1】5 610 234 -200 23 10 98 8 3000100 -1 1 2 035 02000829937399385 963 496 899【輸出樣例 1】10 2 34 -200 232000 100 9 9 9 08 7 85 963 496 8【樣例 1

21、說明】輸入的矩陣 A 為 5 行 6 列,矩陣 B 是 2 行 3 列,替換位置為第 3 行的第 3 列,即:將 A 中第 3 行第 3 列開始的、行數(shù)為 2 列數(shù)為 3 的子矩陣替換為B?!据斎霕永?2】3 410 22 7635 034 -156 -2000 98299239 99 93【輸出樣例 2】10 22 7635 034 -19 99 9【樣例 2 說明】輸入的矩陣 A 為 3 行 4 列,矩陣 B 是 2 行 3 列,替換位置為第 2 行的第 3 列,即:將 A 中第 2 行第 3 列開始的、行數(shù)為 2 列數(shù)為 3 的子矩陣替換為B。但該子矩陣超出了A 的范圍,所以只實(shí)現(xiàn)了部分

22、替換?!驹u(píng)分標(biāo)準(zhǔn)】該題要求輸出替換后的矩陣, 共有 5 個(gè)測(cè)試點(diǎn),提交程序文件名為 exle2.c 或exle2.cpp。很簡(jiǎn)單,略。解題思路:#include #include void main ()x0,y0,i,j,x1,y1,x2,y2;prf(輸入矩陣行列數(shù)行,列:);scanf(%d%d,&x0,&y0);* array0=( for(i=0;ix0;i+)array0i=(for(i=0;ix0;i+)*)malloc(sizeof(*)*x0);*)malloc(sizeof()*y0);for(j=0;jy0;j+)scanf(%d,&array0ij);prf(輸入矩陣行

23、列數(shù)行,列:);scanf(%d%d,&x1,&y1);* array1=(*)malloc(sizeof(*)*x1); for(i=0;ix1;i+)array1i=(*)malloc(sizeof()*y1); for(i=0;ix1;i+)for(j=0;jy1;j+)scanf(%d,&array1ij);prf(輸入替換坐標(biāo)行,列:);scanf(%d%d,&x2,&y2); for(i=0;ix0 & ix1;i+)for(j=0;jy0 & jy1;j+)array0i+x2-1j+y2-1=array1ij; for(i=0;ix0;i+)for(j=0;jy0;j+)prf

24、(%d ,array0ij);phar(n);3. 【問題描述】從鍵盤輸入包含擴(kuò)展符-的字符串,將其擴(kuò)展為等價(jià)的完整字符,例如將 a-d 擴(kuò)展為 abcd,并輸出擴(kuò)展后的字符串。代碼:要求:只處理a-z、A-Z、0-9范圍內(nèi)的字符擴(kuò)展,即只有當(dāng)擴(kuò)展符前后的字符同時(shí)是小寫字母、大寫字母或數(shù)字時(shí)才進(jìn)行擴(kuò)展,其它情況不進(jìn)行擴(kuò)展,原樣輸出。例如:a-R、 D-e、0-b、4-B 等字符串都不進(jìn)行擴(kuò)展?!据斎胄问健繌逆I盤輸入包含擴(kuò)展符的字符串【輸出形式】輸出擴(kuò)展后的字符串【輸入樣例 1】ADEa-g-m02【輸出樣例 1】ADEabcdefghijklm02【輸入樣例 2】cdeT-bcd【輸出樣例 2

25、】cdeT-bcd【樣例說明】將樣例 1 的輸入 ADEa-g-m02 擴(kuò)展為:ADEabcdefghijklm02;樣例 2 的輸入 cdeT-bcd 中,擴(kuò)展符前的字符為大寫字母,擴(kuò)展符后的字符為小寫字母,不在同一范圍內(nèi),所以不進(jìn)行擴(kuò)展?!驹u(píng)分標(biāo)準(zhǔn)】結(jié)果完全正確得 15 分,共 5 個(gè)測(cè)試點(diǎn),每個(gè)測(cè)試點(diǎn) 3expand.cpp。分,提交程序文件expand.c 或很簡(jiǎn)單,略。#include #include getindex(char ch)index=-1; if(ch=a & ch=0 & ch=A & ch=Z) index=2;return index;代碼:解題思路:main(

26、)char str300,ch; ch=getchar();i=0,j; while(ch!=n)stri=ch; ch=getchar(); i+;stri=0; for(i=0;stri!=0;i+)if(stri=-)if(getindex(stri-1)=getindex(stri+1) getindex(stri-1)!=-1)ch=stri-1+1; while(chstri+1)&phar(ch);ch+;elsep return 0;har(stri);2010 年上機(jī)(回憶版)241.利用公式求 cos(x)=1-x /2!+x /4!-公式已給,重要的就是注意細(xì)節(jié)(比如階乘

27、的最好用 double 類型),二級(jí) C 語言的難度。#include #include void main()char str0200,str1200,str400,ch; ch=getchar();i=0,j,k;while(ch!=n)str0i=ch; ch=getchar(); i+;str0i=0; i=0;ch=getchar();while(ch!=n)str1i=ch; ch=getchar(); i+;str1i=0; i=j=k=0;while(str0i!=0& str1j!=0)if(str0istr1j) if(str1j=strk-1)j+;elsestrk=st

28、r1j; j+;k+;elseif(str0i=strk-1)i+; j+;elsestrk=str0i; i+;j+; k+;if(str0i=0)while(str1j!=0)if(str1j!=strk-1) strk+=str1j+;elsej+;elsewhile(str0i!=0)if(str0i!=strk-1) strk+=str0i+;elsei+;length = strlen(str);for(i=0;ilength;i+)prf(%c,stri);#include #include void main()i,j,k,l;scanf(%d,&n);* array0=(fo

29、r(i=0;in;i+)*)malloc(sizeof()*n);scanf(%d,array0+i);* array1=(for(i=0;in;i+)*)malloc(sizeof()*n);scanf(%d,array1+i); for(i=0;in;i+)j=l=0;for(ii=0;ii+)if(array0i=array0ii) j+;for(k=0;kn;k+) if(array1k=array0i)l+;if(j!=l)prf(not equal!n);exit(0);prf(equal! n);09 年上機(jī)題1、【問題描述】3.兩個(gè)整數(shù)數(shù)組(無序,可有重復(fù)元素),判斷兩個(gè)整數(shù)數(shù)

30、組是否完全相同(重復(fù)元素的話,重復(fù)次數(shù)也要相同)代碼:立方根的 近迭代方程是 y(n+1) = y(n)*2/3 + x/(3*y(n)*y(n),其中 y0=x.求給定的 x 經(jīng)過 n 次迭代后立方根的值。輸入:輸入有多組數(shù)據(jù)。每組一行,輸入 x n。輸出:迭代 n 次后的立方根,double 精度,保留小數(shù)點(diǎn)后面六位。樣例輸入:3000000 28樣例輸出:144.224957#include #include buaa_func_091()double x,y; i,n;while(scanf(%lf%d,&x,&n)y=x; for(i=1;i=n;i+) y=y*2/3+x/(3*y

31、*y); prf(%.6fn,y);return 0;!= EOF)2、數(shù)組排序輸入一個(gè)數(shù)組的值,求出各個(gè)值從小到大排序后的次序。輸入:輸入的第一個(gè)數(shù)為數(shù)組的長度,后面的數(shù)為數(shù)組中的值,以空格分割輸出:各輸入的值按從小到大排列的次序。sleinput:4-3 75 12 -3output: 1 3 2 1代碼:#include # define N 10000del(a,n);bubblesort(a,n);n);locate( main()a,b,aN,bN,i,j,n,num,z;while(scanf(%d,&n)!=EOF)for(i=0;in;i+)scanf(%d,&ai); bi

32、=ai;bubblesort(a,n); num=del(a,n);for(z=0;zn-1;z+)prf(%d ,locate(a,bz,num);prf(%dn,locate(a,bn-1,num);return 0;del(a,n)i,j,k; for(i=0,j=i+1;jn;j+)if(ai!=aj)if(k=j-i-1)!=0) while(jn)aj-k=aj; j+; i+;j=i; n=n-k;if(an-2=an-1)代碼:n-;return n;bubblesort(a,n)i,j,temp; for(i=0;in;i+)for(j=i;jaj)temp=ai;ai=aj

33、; aj=temp;return 0;locate(a,b,n)i,j,k; for(i=0;in;i+)if(ai=b)return i+1;3、字符串的查找刪除給定文件 filext 按要求輸出 fileout.txt。輸入: 無空格的字符串輸出: 將 filext 刪除輸入的字符串(不區(qū)分大小寫),輸出至 fileout.txtsle輸入:in輸出:將 filext 中的 In、IN、iN、in 刪除,每行中的空格全部提前至行首,輸出至 fileout.txtfilext 中的值為:#include main()prf( Hi );輸出的 fileout.txt 為 #clude tma

34、()prtf(Hi);代碼:#include #include #include main()char a100; i,n,j;char c; scanf(%s,a); n=strlen(a); i=0;c=getchar(); while(c=getchar()!=EOF)if(tolower(c)=tolower(ai)i+;if(i=n)i=0;elseif(i=0)if(c!= )pelsehar(c);for(j=0;ji;j+)phar(aj);i=0;if(c!= )phar(c);08 年上機(jī)題1.素?cái)?shù)輸入一個(gè)整數(shù),要求輸出所有從 1 到這個(gè)整數(shù)之間個(gè)位為 1 的素?cái)?shù),如果沒有

35、則輸出-1(30 分)#include main()n,i,j,flag;while(scanf(%d,&n)!=EOF)flag=0; for(i=2;in;i+)for(j=2;ji;j+)if(i%j=0)break;if(j=i&(i-1)%10=0)if(!flag)prf(%d,i); flag=1;elseprf( %d,i);if(flag)prf(n);else if(!flag)prf(-1n);return 0;2.旋轉(zhuǎn)矩陣任意輸入兩個(gè) 9 階以下矩陣,要求判斷第二是第一個(gè)的旋轉(zhuǎn)矩陣,如果是,輸出旋轉(zhuǎn)角度(0、90、180、270),如果不是,輸出-1。要求先輸入矩陣階數(shù)

36、,然后輸入兩個(gè)矩陣,每行兩個(gè)數(shù)之間可以用任意個(gè)空格分隔。行之間用回車分隔,兩個(gè)矩陣間用任意的回車分隔。(60 分) #includejudge(a99,b99,n)i,j,count=0;if(a00=b00&a0n-1=b0n-1&an-10=bn-10&an-1n-1=bn-1n-1)for(i=0;in;i+)for(j=0;jn;j+) if(aij=bij) count+;if(count=n*n) return 0;else return -1;elseif(a00=b0n-1&a0n-1=bn-1n-1&an-10=b00&an-1n-1=bn-10)for(i=0;in;i+)

37、 for(j=0;jn;j+)if(aij=bjn-i-1) count+;if(count=n*n) return 90;else return -1;elseif(a00=bn-1n-1&a0n-1=bn-10&an-10=b0n-1&an-1 n-1=b00)for(i=0;in;i+) for(j=0;jn;j+)if(aij=bn-i-1n-j-1) count+;if(count=n*n) return 180;else return -1;elseif(a00=bn-10&a0n-1=b00&an-10=bn-1n-1&an-1n-1=b0n-1)for(i=0;in;i+) f

38、or(j=0;jn;j+)if(aij=bn-j-1i) count+;if(count=n*n) return 270;else return -1;else return -1;main()n,i,j,a99,b99;while(scanf(%d,&n)!=EOF)for(i=0;in;i+) for(j=0;jn;j+)scanf(%d,&aij);for(i=0;in;i+) for(j=0;jn;j+)scanf(%d,&bij);prf(%dn,judge(a,b,n);return 0;3.字符串匹配從 string.in 中讀入數(shù)據(jù),然后用戶輸入一個(gè)短字符串。要求查找strin

39、g.in中和短字符串的所有匹配,輸出行號(hào)、匹配字符串到 string.out 文件中。匹配時(shí)不區(qū)分大小寫,并且可以有一個(gè)用中括號(hào)表示的模式匹配。如“aa123bb”,就是說 aa1bb、aa2bb、aa3bb 都算匹配。(60 分)#include #include #define MAXN 1000 +10 char aMAXNMAXN;charsMAXN;cmpch(char a,char b)if (a=0&a=a&a=A&a=Z& (a=b|(a+a-A)=b)return 1;else return 0;main()n,i,j,m,k,mark,len;while(scanf(%d,&n)=1) for(i=0;in;i+)scanf(%s,ai);scanf(%s,s); m=strlen(s);for(i=0;in;i+)len=strlen(ai); for(j=0,k=0;jlen,km;j+,k+)if(cmpch(aij,sk)continue; elseif(sk!=)goto out; elsemark=0; k=k+1; while(sk!=)if(cmpch(aij,sk) mark=1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論