




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、上機(jī)考試復(fù)習(xí)題1212 34 38 20 82 1730 18 25 13 56 2145 39 15 24 19 3211 76 40 41 64 431. 定義一個二維數(shù)組a并用下列數(shù)據(jù)初始化。編寫一個直接插入排序函數(shù)void insert(int x, int n)對每一行元素排序。并對每行元素最大值進(jìn)行排序。要求:在main函數(shù)中輸出原數(shù)組、排序后的數(shù)組、及排序后的最大值。(提示:把每行最大值存到一個一維數(shù)組max中)/利用同一個函數(shù)對二維數(shù)組的每行及最大值數(shù)組進(jìn)行排序#include<iostream.h>void insert(int x, int n);/形參為一維數(shù)
2、組,因只處理一維數(shù)組,故只需傳遞列數(shù)(每行元素的個數(shù))void main() int a46=12,34,38,20,82,17,30,18,25,13,56,21,45,39,15,24,19,32,11,76,40,41,64,43; int i, j, max4; for(i=0; i<4; i+) for(j=0; j<6; j+) cout<<aij<<" " cout<<endl; cout<<endl; for(i=0; i<4; i+)/調(diào)用排序函數(shù), 每次調(diào)用傳遞一行, 實(shí)參ai是行元素,
3、第i行的名字(地址), insert(ai, 6);/這種方法簡單、明確,但因循環(huán)調(diào)用效率不高。 maxi=ai5;/為數(shù)組max賦值 for(i=0; i<4; i+) for(j=0; j<6; j+) cout<<aij<<" " cout<<endl; cout<<endl;insert(max, 4); for(i=0; i<4; i+) cout<<maxi<<" " cout<<endl;void insert(int x, int n)/
4、一維數(shù)組的直接插入排序函數(shù) int i, j, k; for(i=1; i<n; i+) k=xi; j=i;/把待排序元素存入中間變量,設(shè)置插入指針j while(k<xj-1&&j>0) xj=xj-1;/后移 j-; xj=k;/插入 2. 定義一個二維數(shù)組a并用下列數(shù)據(jù)初始化。輸入一個數(shù),在數(shù)組中進(jìn)行順序查找,找到時輸出該數(shù)的下標(biāo),否則輸出“沒有找到”(用查找函數(shù)int seqsearch(int a6, int x, int &m, int &n)完成)。編寫一個直接選擇排序函數(shù)void select(int x, int m, in
5、t n)對每一行元素排序,輸出排序后的數(shù)組。12 34 38 20 82 1730 18 25 13 56 2145 39 15 24 19 3211 76 40 41 64 43/兩種傳遞二維數(shù)組的方式#include<iostream.h>int seqsearch(int a6, int x, int &m, int &n);/順序查找函數(shù),二維數(shù)組作形參,6不可省略!void select(int x, int m, int n);/直接選擇排序。一維數(shù)組作形參,因需處理二維數(shù)組,故要傳遞行列數(shù) m nvoid main() int a46= 12,34,3
6、8,20,82,17, 30,18,25,13,56,21, 45,39,15,24,19,32, 11,76,40,41,64,43, ; int i, j, x, m, n; for(i=0; i<4; i+) for(j=0; j<6; j+) cout<<aij<<" " cout<<endl; cout<<endl; cout<<"輸入需查找的數(shù):" cin>>x; if(seqsearch(a,x,m,n) cout<<"(i,j)=&q
7、uot;<<m<<", "<<n<<endl<<endl;/注意:形參是二維數(shù)組,須用數(shù)組名a作實(shí)參 else cout<<"沒有找到nn" select(a0, 4, 6);/調(diào)用排序函數(shù),降階處理:采用一維形式處理二維數(shù)組。(因此須用一維數(shù)組名a0作實(shí)參) /由于一次性傳遞整個數(shù)組,故效率高,是處理二維數(shù)組更為普遍的方式。要求對數(shù)組有較深入的了解。 for(i=0; i<4; i+) for(j=0; j<6; j+) cout<<aij<<&
8、quot; " cout<<endl; cout<<endl;void select(int x, int m, int n) int h, i, j, k, t; for(h=0; h<m; h+)/ h 為需處理的行數(shù)(把數(shù)組x看作一行一行一字排開一維數(shù)組) for(i=0; i<n-1; i+)/直接選擇排序算法,對一行(n個數(shù))排序 k=i;/設(shè)置交換指針k for(j=i+1; j<n; j+) if(xj<xk) k=j;/記錄最小值元素的下標(biāo) t=xi; xi= xk; xk=t; /與待排序元素xi交換x+=n;/降階處
9、理的要點(diǎn):由于數(shù)組名 x 是指針(變量),使它指向下一行。 int seqsearch(int a6, int x, int &m, int &n)/順序查找函數(shù)(挨個比較),找到返回1,否則返回0,下標(biāo)由引用返回 int i, j, ok=0; for(i=0; i<4&&!ok; i+)/雙重循環(huán)條件:找到一個即停止循環(huán),否則一直找到底for(j=0; j<6; j+) if(aij=x)ok=1; m=i; n=j;break;/找到!置ok為1,并記錄下標(biāo)。注意:函數(shù)中的m n 是主函數(shù)中m n 的引用(在不同函數(shù)中可以同名) return
10、ok;/如沒找到,ok保持為012 34 38 20 82 1730 18 25 13 56 2145 39 15 24 19 3211 76 40 41 64 433. 定義一個二維數(shù)組a并用下列數(shù)據(jù)初始化。編寫冒泡排序函數(shù) void bubble(int x, int n,float& av)對每一行元素排序,并計(jì)算每行元素的平均值。要求:在main函數(shù)中輸出原數(shù)組、按行輸出排序后的數(shù)組及平均值。(提示:把平均值存到一個一維數(shù)組aver中)#include<iostream.h>void bubble(int x, int n, float& av);void
11、main() int a46=12,34,38,20,82,17,30,18,25,13,56,21,45,39,15,24,19,32,11,76,40,41,64,43; int i, j; float aver4=0; for(i=0; i<4; i+) for(j=0; j<6; j+) cout<<aij<<" " cout<<endl; cout<<endl; for(i=0; i<4; i+) bubble(ai, 6, averi);/注意3個實(shí)參:ai,6 是數(shù)組名和長度,傳遞二維數(shù)組的一行
12、,/averi是數(shù)組元素(相當(dāng)于簡單變量),地址傳給引用形參av for(i=0; i<4; i+) for(j=0; j<6; j+) cout<<aij<<" " cout<<averi<<endl; cout<<endl;void bubble(int x, int n, float & av)/一維數(shù)組冒泡排序函數(shù) int i=0, j, k=1, t; while(k)/冒泡算法 k=0;/設(shè)置逆序標(biāo)志 k(同時也是循環(huán)條件,1 為有逆序,0 為無逆序) for(j=0; j<n
13、-1-i; j+) if(xj>xj+1)/出現(xiàn)逆序 k=1; t=xj; xj= xj+1; xj+1=t;/重置 k ,交換逆序數(shù)對 i+; for(i=0; i<n; i+) av+=xi;/同時計(jì)算每行的平均值并由av回傳 av=av/n;4. 定義一個二維數(shù)組int a4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。定義函數(shù)int lsum(int x, int n, int &sum)返回每行元素之和并求所有元素之和,要求該函數(shù)中使用靜態(tài)局部變量s存儲二維數(shù)組總和。按行輸出數(shù)組及每行之和,最后輸出總和。定義數(shù)組void exch
14、(int x4, int n)其功能是轉(zhuǎn)置該數(shù)組并作如上操作。#include<iostream.h>#include<iomanip.h>int lsum(int x, int, int& );/求和函數(shù),返回每行之和。void exch(int x4, int);/轉(zhuǎn)置函數(shù)void main() int a4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16; int i, j, sum; sum=0; for(i=0; i<4; i+)for(j=0; j<4; j+) cout<<setw(3)<
15、<aij;cout<<setw(7)<<lsum(ai, 4, sum);cout<<endl; cout<<"total: "<<sum<<endl<<endl; exch(a,4); sum=0;/這句必須嗎? for(i=0; i<4; i+)for(j=0; j<4; j+) cout<<setw(3)<<aij;cout<<setw(7)<<lsum(ai, 4, sum);cout<<endl; cou
16、t<<"total: "<<sum<<endl;int lsum(int x, int n, int &sum) int i, t=0; static s;/靜態(tài)變量記錄總和 if(!sum) s=0;/等價于sum=0,去掉這句行嗎? for(i=0; i<n; i+)t+=xi; s+=xi; sum=s;/ 總和由引用sum返回 return t;void exch(int x4, int n) int i,j,t; for(i=0; i<n; i+)for(j=i; j<n; j+) if(i=j) co
17、ntinue;else t=xij; xij=xji; xji=t;5. 編寫求組合的程序,在主函數(shù)中輸入任意兩個正整數(shù)n,m求其組合。要求:使用遞歸函數(shù)求階乘。#include<iostream.h>long fact(int x);void main() int c, m, n, t; cin>>m>>n; if(m<n) t=m; m=n; n=t; c=fact(m)/fact(n)/fact(m-n); cout<<"Comb("<<m<<","<<n&l
18、t;<")="<<c<<endl;long fact(int x) long f; if(x=0) f=1; else f=x*fact(x-1); return f;6. 定義一個整型數(shù)組a=11,27,19,23,15,27,19,11,13,13,13,17,并且定義一個函數(shù),int del(int x,int &m),該函數(shù)的功能為刪除數(shù)組中所有重復(fù)的元素,并返回所刪除元素的個數(shù)。要求:輸出原數(shù)組,和刪除后的數(shù)組,分別用一行四位寬度輸出,并輸出所刪除元素的個數(shù)c。#include<iostream.h>#includ
19、e<iomanip.h>int del(int x, int &m);void main() int a=11,27,19,23,15,27,19,11,13,13,13,17; int i,n=12,c=0; for(i=0; i<n; i+) cout<<setw(4)<<ai; cout<<endl; c=del(a,n); cout<<c<<" elements deleted.nn" for(i=0; i<n; i+) cout<<setw(4)<<
20、ai; cout<<endl;int del(int x, int &m)/刪除相同元素函數(shù),返回刪除個數(shù),由于有元素的刪除,所以數(shù)組長度 m 要相應(yīng)改變,并回傳 int i, j, k, c=0;/算法:用xi與后面的元素逐個比較xj,有相同元素,則由 j 開始將后面的元素逐個前移(刪除xj) for(i=0; i<m-1; i+) for(j=i+1; j<m; j+) if(xi=xj) cout<<xj<<endl;/顯示刪除的元素 for(k=j; k<m; k+) xk=xk+1;/數(shù)組長m度減1,比較指針j減1(因?yàn)檠?/p>
21、環(huán)語句中j+)使之指在原處,計(jì)數(shù)器c加1 m-; j-; c+; return c;7. 在一個有序整型數(shù)組2,4,6,8,10,12,14,16,18中,輸入一個數(shù)k,如果是奇數(shù),則插入,插入后數(shù)組仍保持有序。編寫二分查找函數(shù)int bisearch(int a, int n, int b)返回一個任意輸入整數(shù)a的下標(biāo)。要求輸出原數(shù)組,插入后的數(shù)組,分別用一行四位寬度輸出。并輸出所查找數(shù)的下標(biāo),若沒找到則輸出“該數(shù)不存在”。#include<iostream.h>#include<iomanip.h>int bisearch(int a, int n, int b);
22、void main() int x20=2,4,6,8,10,12,14,16,18;/因?yàn)橐迦霐?shù)據(jù),數(shù)組定義要比實(shí)際數(shù)據(jù)大 int n=9, i, j, k, a; for(i=0; i<n; i+) cout<<setw(4)<<xi; cout<<endl; do cout<<"請輸入一個數(shù): " cin>>k; while(k%2=0); i=n; while(k<xi-1 && i>0)/插入方法:k 從最后一個數(shù)開始比較,小則把數(shù)組元素后移 xi=xi-1; i-;/
23、i為插入指針(下標(biāo)) xi=k; n+;/插入,不要忘記數(shù)組長度增加! for(i=0; i<n; i+) cout<<setw(4)<<xi; cout<<endl; cout<<"輸入待查找的整數(shù):" cin>>a; if(j=bisearch(x, n, a)>=0) cout<<"該數(shù)下標(biāo)為: "<<j<<endl; else cout<<"該數(shù)不存在!"<<endl;int bisearch(i
24、nt a, int n, int b)/二分查找函數(shù):要求待查序列必須是排序好的! int l=0, h=n-1, m; while(l<=h)/循環(huán)條件:低邊界小于等于高邊界 m=(l+h)/2;/二分 if(am=b) break; else if(b<am) h=m-1;/待查數(shù)據(jù)在低區(qū),左移高邊界 else l=m+1;/待查數(shù)據(jù)在高區(qū),右移低邊界 if(l>h) return -1;/沒找到,返回-1(不存在的下標(biāo)) else return m;/找到,返回該數(shù)下標(biāo)8. 在主函數(shù)中定義一個字符串“We are learning C+ language. C+ is
25、useful.”并顯示。輸入一個字符串(如“Fortran 95”)替換句中的“C+”。定義函數(shù) void exch(char*)將其倒序。輸出替換及倒序后的字符串。要求:使用指針操作完成倒序運(yùn)算。/字符串的操作練習(xí),并熟悉常用字符串函數(shù)的用法#include<iostream.h>#include<string.h>void exch( char *);void main() char s080="We are learning C+ language. C+ is useful." char st80, s120, *sp; int n, i;
26、cout<<s0<<endl; cout<<"輸入一個字符串: " cin.getline(s1,20);/輸入字符串的方式(可含空格) n=strlen(s1);/測定輸入字符串的長度(字符數(shù)) for(i=0,sp=s0; *sp; i+,sp+)/工作指針sp指向初始字符串 s0 逐個字符查找 "C+"(子字符串) if(strncmp(sp, "C+", 3)=0)/找到,(sp所指字串前3個字符為"C+") strcpy(st,sp+3);/把"C+"
27、;后面的內(nèi)容復(fù)制到數(shù)組 st (保護(hù)起來) strcpy(sp,s1);/用輸入的字符串 s1 替換 "C+" 及其以后的內(nèi)容,sp也可寫為s0+i sp+=n-1; i+=n-1; /把指針以及下標(biāo)值置于替換后字符串尾部 strcat(sp,st);/把保存在 st 中原字符串的其余部分再復(fù)制回來,完成一次替換。繼續(xù)如上過程替換后面的"C+" cout<<s0<<endl; exch(s0); cout<<s0<<endl;void exch(char* str)/倒序函數(shù) char *p, *q, c;
28、 p=str; q=p+strlen(str)-1;/工作指針 p 指向字符串 str 首字符,q 指向尾字符 while(p<q) c=*p; *p=*q; *q=c; p+; q-; 9. 定義一個字符串常量,并判斷該字符串是否為“回文”。要求:定義一個順序棧char st,編寫入棧、出棧函數(shù)(void push(char *st,char c, int &top),char pop(char *st, int &top),利用棧結(jié)構(gòu)的性質(zhì)完成該判斷。/堆棧:一種數(shù)據(jù)結(jié)構(gòu),規(guī)定只能在一端進(jìn)行插入和刪除數(shù)據(jù)(類似子彈夾),最后入棧的元素最先出棧#include<i
29、ostream.h>void push(char *st, char c, int &top);char pop(char *st, int &top);void main() char *p="madam", *q=p, s20; int t=-1;/設(shè)置空棧指針(數(shù)組下標(biāo)) while(*q)/把指針 q 所指字符逐個壓入堆棧 s 中 push(s, *q, t); q+; q=p;/重要!重置指針 q cout<<q; while(t>=0 && *q=pop(s,t) q+;/正向 *q,逆向 pop(s,t) 逐個字符比較字符串,若完全相同(至 t<0 )則為回文 if(t<0) cout<<" 是回文!n" else cout<<" 不是回文!n"void push(char *st, char c, int &top)/入棧函數(shù) top+;/棧頂指針(棧頂元素的下標(biāo))上移 sttop=c;/將字符 c 壓入棧中(入棧一個元素)char pop(char *st, int &top)/出棧函數(shù),返回棧頂元素 char c=stt
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際標(biāo)準(zhǔn)舞比賽專用舞廳地板租賃服務(wù)協(xié)議
- 廣告公司兼職資深平面設(shè)計(jì)合作協(xié)議
- 高端酒店管理獨(dú)家補(bǔ)充協(xié)議
- 子女意外傷害及保險(xiǎn)理賠協(xié)商合同
- 創(chuàng)新型企業(yè)商業(yè)秘密許可與技術(shù)服務(wù)合同
- 地下管線探測與維護(hù)保養(yǎng)合作協(xié)議
- 高風(fēng)險(xiǎn)生物樣本運(yùn)輸與專業(yè)保存及質(zhì)量控制協(xié)議
- 抖音網(wǎng)紅合作終止與形象重塑合同
- DB42-T 1984-2023 青磚茶感官審評方法
- 汽車發(fā)動機(jī)構(gòu)造與拆裝 課件 任務(wù)11 冷卻風(fēng)扇的認(rèn)識與拆裝
- 物流管理專業(yè)畢業(yè)答辯論文答辯PPT模板
- 乒乓球-循環(huán)賽積分表人-人
- HIV實(shí)驗(yàn)室SOP文件-新版
- 孤獨(dú)癥兒童評估填寫范例(一表兩圖)
- 賀蘭山東麓干紅葡萄酒多酚組分與其抗氧化、抗癌活性的關(guān)聯(lián)性研究
- (4.3.1)-3.3我國儲糧生態(tài)區(qū)的分布
- 遼寧盤錦浩業(yè)化工“1.15”泄漏爆炸著火事故警示教育
- 2023年衡陽市水務(wù)投資集團(tuán)有限公司招聘筆試題庫及答案解析
- 110~750kV架空輸電線路設(shè)計(jì)規(guī)范方案
- 北師大版五年級數(shù)學(xué)下冊公開課《包裝的學(xué)問》課件
- 北師大版英語八年級下冊 Unit 4 Lesson 11 Online Time 課件(30張PPT)
評論
0/150
提交評論