北理計(jì)算機(jī)學(xué)院2000-2012上機(jī)題及解答_第1頁(yè)
北理計(jì)算機(jī)學(xué)院2000-2012上機(jī)題及解答_第2頁(yè)
北理計(jì)算機(jī)學(xué)院2000-2012上機(jī)題及解答_第3頁(yè)
北理計(jì)算機(jī)學(xué)院2000-2012上機(jī)題及解答_第4頁(yè)
已閱讀5頁(yè),還剩120頁(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)介

北京理工大學(xué)計(jì)算機(jī)專業(yè)研究生復(fù)試上機(jī)試題(2000-2010)計(jì)算機(jī)專業(yè)研究生復(fù)試上機(jī)試題2000年:1、輸入任意4個(gè)字符(如:abed),并按反序輸出(如:deba)includeくiostream)includeくstring〉usingnamespacestd;voidmain()(strings;cin?s;for(inti=3;i>=0;i—)cout<<s[i];cout<<endl;)2、設(shè)a、b、c均是0到9之間的數(shù)字,abc>bcc是兩個(gè)三位數(shù),且有:abc+bcc=532o求滿足條件的所有a、b、c的值。includeくiostream〉usingnamespacestd;//ints;for(inti=100;i<1000;i++)a=i/100;b=i/10-a*10;c=i%10;//cout<<i<<*//cout<<a*l00+b*10+c;if((i+b*100+c*10+c)==532)(cout<<a?*"<〈bくく”"?c;cout?endl;}}}3、ー個(gè)數(shù)如果恰好等于它的各因子(該數(shù)本身除外)子和,如:6=3+2+1.則稱其為“完數(shù)”;若因子之和大于該數(shù),則稱其為“盈數(shù)”。求出2到60之間所有“完數(shù)”和“盈數(shù)”,并以如下形式輸出:E:ele2e3 (ei為完數(shù))G:glg2g3 (gi為盈數(shù))includeくiostream)usingnamespacestd;cout?*E:for(inti=2;i<=60;i++){ints=0;for(intj=l:j<i;j++)if(i%j=O){〃s=0;s+=j;}}if(s==i)(cout?i<<*})cout<<endl;coutくく"G:";ints=0;for(intj=l;j<k;j++)(if(k%j==O)(s+=j;}?if(s>k)!cout?k<<*}}cout<<endl;)4、從鍵盤輸入4個(gè)學(xué)生的數(shù)據(jù)(包括姓名、年齡和成績(jī)),并存放在文件sfl上。從該文件讀出這些數(shù)據(jù),按成績(jī)從高到底排序,并輸出其中成績(jī)次高考的所有數(shù)據(jù)。#includeくiostream〉#includeくfstream〉#include<string>usingnamespacestd;structstudentstringname;intage;intscore;);voidmain(){studentst[4];students;studentt;inti=0;ofstreamout("sfl.txt");coutくく〃請(qǐng)輸入4個(gè)學(xué)生的姓名,年齡,成績(jī):〃くくendl;for(i=0;i<4;i++){cin?>>s.age?s.score;outくくくく”"くくs.ageくく \<s.score?endl;)ifstreamin〈sfl.txt*);coutくく〃name"くく"age"<<"score"<<endl;for(i二〇;iく4;i++)in>>st[i].name?st[i].age>>st[i].score;cout<<st[i].nameくく”"?st[i].age?""<<st[i].score?endl;}for(i=0;i<4;i++)for(intj=i+l;j<4;j++)if(st[i].score<st[j].score){t=st[i];st[i]=st[j];st[j]=t;}cout<<"name"?"age"<<"score"<<endl;for(i=0;i<4;i++)cout<<st[i].name?""<<st[i].age?""?st[i].score?endl;)2001年(1):1、編寫程序,計(jì)算下列分段函數(shù)y=f(x)的值。y=-x+2.50<=x<2y=2-l.5(x-3)(x-3)2<=x<4y=x/2-l.54<=x<6#includeくiostream>usingnamespacestd;voidmain()coutくく”請(qǐng)輸入x(0-6):cin?x;if(x<0&&x>=6)coutくく”輸入有誤!”;if(x>=0&&x<2)coutくく"y="くく(-x+2.5)?endl;elseif(x>=2&&x<4)coutくく"y=”くく2T.5*(x-3)*(x-3)?endl;elseif(x>=4&&x<6)coutくく"y二"くくx/2T.5<<endl;}2、編寫程序,讀入ー個(gè)整數(shù)N。若N為非負(fù)數(shù),則計(jì)算N到2N之間的整數(shù)和;若N為一個(gè)負(fù)數(shù),則求2N到N之間的整數(shù)和。#includeくiostream>#include<stdlib.h>usingnamespacestd;voidmain(){intN;coutくく〃請(qǐng)輸入一個(gè)整數(shù):cin?N;cout?((N+2*N)*(abs(N)+l))/2?endl;)3、設(shè)N是ー個(gè)四位數(shù),它的9倍恰好是其反序數(shù)(例如:1234的反序數(shù)是4321),求N的值。#include<iostream>usingnamespacestd;voidmain()(for(inti=1000;i<=9999;i++)(inta,b,c,d;a=i/1000;b=i/100-a*10;c=(i/10)%10;d=i%10:if(9*i==d*1000+c*100+b*10+a)cout?i?endl;})4、N個(gè)人圍成一?圈順序編號(hào),從1號(hào)開(kāi)始按1、2、3順序報(bào)數(shù),報(bào)3者退出圈外,其余的人再?gòu)?、2、3開(kāi)始報(bào)數(shù),報(bào)3的人再退出圈外,依次類推。請(qǐng)按退出順序輸出每個(gè)退出人的原序號(hào)。要求使用環(huán)行鏈表編程。#include<iostream>#include<malloc.h>usingnamespacestd;typedefstructnode(intnum;structnode*next;}LNode;voidmain(){LNode*head,*p,*q;intN;coutくく〃輸入人數(shù):〃;cin?N;p=(LNode*)(malloc(sizeof(LNode)));p->num=l;head=p;for(inti=l;i<N;i++)(p->next=(LNode*)(malloc(sizeof(LNode)));p二p-〉next;p->num=i+l;pー〉next二head;p=head;coutくく”輸出序列為:"?endl;while(p->next!=p)(q=p->next;p=q->next;qー〉next二p-〉next;coutくくpー〉numくく”";deletep;p=q->next;}cout<<p->num?endl;deletep;)2001年(2)1、請(qǐng)輸入髙度h,輸入一個(gè)髙為h,上底邊長(zhǎng)為h的等腰梯形(例如h=4,圖形如下)。******:jofc**#include<iostream>usingnamespacestd;voidmain()(inth;coutくく”請(qǐng)輸入h:”;cin?h;for(inti=0;iくh;i++){for(intj=0;j<h-i-l;j++)coutくく”for(intk=0;k<h+2*i;k++)coutくく"?〃;cout<<endl;)]2、請(qǐng)編寫ー個(gè)程序,從鍵盤上輸入n(n的范圍是1~20),求n的階乘。#includeくiostream)usingnamespacestd;intsum=l;//intt=0;coutくく”請(qǐng)輸入n(1-20):cin?n;for(inti=1;iく=n;i++){sum=sum*i;}cout<<sum<<endl;)3、從鍵盤上任意輸入ー個(gè)長(zhǎng)度不超過(guò)20的字符串,對(duì)所輸入的字符串,按照ASCII碼的大小從小到大進(jìn)行排序,請(qǐng)輸岀排序后的結(jié)果。#include<iostream>#include<string>#includeくalgorithm〉usingnamespacestd;voidmain()(strings;coutくぐEnterstring:;cin?s;sort(s.begin(),s.end());cout<<s<<endl;)2002年(A)1、某人有8角的郵票5張,1元的郵票4張,1元8角的郵票6張,用這些郵票中的ー張或若干張可以得到多少中不同的郵資?#includeくiostream〉usingnamespacestd;voidmain(){intsum=0;for(inti二〇;iく二5;i++)for(intj=0;j<=4;j++)for(intk=0;k<=6;k++){sum++;coutくく0.8*i+j+L8*kくく”}cout<<endl;cout?sum<<endl;}2、輸入n值,使用遞歸函數(shù),求楊輝三角形中各個(gè)位置上的值,按照如下形式打印輸出圖形。例如:當(dāng)n=6時(shí)。11112113311464115101051usingnamespacestd;intfun(intn,intい〃0為行,k為列{if(k==0IIn=k)return1;elsereturnfun(n-l,k-l)+fun(n-l,k);)voidmain(){inti,j,n;coutくく”請(qǐng)輸入n:cin?n;for(i=0;iくn;i++)|for(intk=O;kくn-i+l;k++)cout<<"for(j=0;j<=i;j++)cout?fun(i,j)<<**;cout<<endl;2002年(B)1、打印所有不超過(guò)n(n<256)的,其平方具有對(duì)稱性質(zhì)的數(shù)。如11*11=121。#include<iostream>#include<stdlib.h>#include<string>usingnamespacestd;voidmain()(intt,x;chars[10];for(inti=l;i〈256;i++)(intj=0;x=i*i;while(x)(t=x%10;s[j++]=t+48;x/=10;5='、0’;if(i*i=atoi(s))coutくくiくく”})cout<<endl;)2、編寫一個(gè)求菲波那奇數(shù)列的遞歸函數(shù),輸入口值,使用該遞歸函數(shù),輸出如下圖形。例如:當(dāng)n=6時(shí)。001101123011235801123581321011235813213455#include<iostream>usingnamespacestd;intfun(intn){if(n==0)return0;elseif(n==l)return1;elsereturnfun(n-l)+fun(n-2);voidmain()coutくく"請(qǐng)輸入n:cin?n;//cout?*for(inti二〇;iくn;i++){for(intj=0;j<(2*n-l)-(2*i+l);j++)cout<<"for(intk二〇;kく2*i+l;k++)cout<<fun(k)?"”;cout<<endl;))2003年1、輸入球的中心點(diǎn)和球上某ー點(diǎn)的坐標(biāo),計(jì)算球的半徑和體積。#include<iostream>]#include<math.h>usingnamespacestd;doubleconstPI=3.14156;intxl,x2,yl,y2,zl,z2;doubler;coutくく”請(qǐng)輸入中心點(diǎn)坐標(biāo):";cin?xl>>yl>>zl;coutくく〃請(qǐng)輸入球上某一點(diǎn)的坐標(biāo):〃;cin>>x2>>y2>>z2;r=sqrt((xl-x2)*(xl-x2)+(yl-y2)*(yl-y2)+(zl-z2)*(zl-z2));coutくく”半徑為:"<<r<<endl;coutくく“體積為:"<<4*PI*r*r*r/3<<endl;)2、手工建立一個(gè)文件,文件種每行包括學(xué)號(hào)、姓名、性別和年齡。每ー個(gè)屬性使用空格分開(kāi)。文件如下:01李江男2102劉唐男2303張軍男1904王娜女19根據(jù)輸入的學(xué)號(hào),查找文件,輸岀學(xué)生的信息。#include<iostream>#includeくfstream)#includeくstring〉usingnamespacestd;structstudent(intnum;stringname;stringsex;intage;);voidmain(){studentt[10];studentst;strings;intNO;intn;ofstreamoutCstudent.txt");coutくく”請(qǐng)輸入學(xué)生人數(shù):〃;cin>>n;coutくく”請(qǐng)輸入學(xué)生信息:"<<endl;for(inti=0;i<n;i++){cin?st.num>>?st.sex>>st.age;out?st.num<<*"くく?""?st.sex<<" "<<st.ageくくendl;)coutくく〃請(qǐng)輸入您要查找學(xué)生的學(xué)號(hào):〃;cin?N0;coutくく〃學(xué)號(hào)〃くく〃姓名〃くく〃性別〃くく“年齡〃くくendl;ifstreaministudent.txt〃);in>>t[j].num?t[j].name>>t[j].sex>>t[j].age;if(t[j].num==NO)cout?t[j].numくく" name?""<<t[j].sex<<" age;}cout<<endl;)真確算法:includeくiostream〉includeくfstream)includeくstdlib.h>usingnamespacestd;intmain()(charstr[80];intst_no;ifstreamfile("student.txt");if(!file)cout<<"error!";return0;coutくく"輸入你要查找的學(xué)生的學(xué)號(hào):";cin?st_no;while(!file.eof())(file,getline(str,80);if(st_no=atoi(str))(coutくぐ學(xué)號(hào)"〈ぐ姓名 "〈く"性別 "くく"年齡"くくendl;cout?str<<endl;}}return0;)3、輸入年月Fl,計(jì)算該填是本年的第幾天。例如1990年9月20日是1990年的第263天,2000年5月1日是2000年第122天。(閏年:能被400正除,或能被4整除但不能被100整除。每年1、3、5、7、8、10為大月)#include<iostream>usingnamespacestd;intmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31);intsum=O;coutくく”輸人年月日:cin?y>>m>>d;for(inti=l;i<m;i++){sum=sum+month[i-1];}if(m>2&&(y%400==0)||(y%4==0&&y%100!=0)){sum=sum+l;)sum=sum+d;coutくくyくく"年"くくmくく“月〃くくdくく"日"くく"是"くくyくぐ年的第"くくsumくく"天"くくendl;}2004年第一題是建立一個(gè)角類,在這個(gè)類中重載減號(hào)運(yùn)算符,并實(shí)現(xiàn)求出角度的正弦值的函數(shù)。#include<iostream>#include<math.h>usingnamespacestd;doubleconstPI=3.14159;classanglepublic:voidxsin();angle(){};angle(intx){X=x;}angleoperator-(anglec);};angleangle::operator-(anglec)(returnangle(X-c.X);)voidangle::xsin()(doublex=X*PI/180;coutくく"正弦值為:"くくsin(x)くくendl;}voidmain()(anglea(30),b(60),d;xsin();xsin();d=b-a;d.xsin();第二題是建立一?個(gè)求一元二次方程解的類(a*x^2+b*x+c=0),輸入系數(shù)a,b,c的值后打印出這個(gè)方程的解來(lái),也比較簡(jiǎn)單。需要注意的是系數(shù)a不能為零以及方程有無(wú)解,單解還是雙解的情況。#include<iostream>#includeくcmath>usingnamespacestd;classRootinta,b,c;public:Root(intaa,intbb,intcc):a(aa),b(bb),c(cc){}RootO(}voidresult();//voidprint(););voidRoot::result(){if(a==0)coutくくerror!;doubledelta=b*b-4*a*c;if(delta=0)coutくく"單根:"くく"x="くく-b/2*aくくendl;elseif(delta<0)coutくく"無(wú)解!"<<endl;elsecout<<" 雙 跟 :*<<"xl=*<<-b/2*a+sqrt(delta)/2*a<<""<<"x2="?-b/2*a-sqrt(delta)/2*a?endl;}voidmain()(intaa,bb,cc;coutくく"請(qǐng)輸入系數(shù):〃;cin?aa>>bb>>cc;Rootx(aa,bb,cc);//x.a=aa;x.b=bb;x.c=cc;x.result();}第三道題是實(shí)現(xiàn)ー個(gè)多項(xiàng)式的類(a+b*x+c*x—2+d*x-3+.?.+),要求輸入該多項(xiàng)式的系數(shù)和x的值后打印出這個(gè)多項(xiàng)式的值。這道題本身并不難,但他要求用好的算法(實(shí)際上就是遞歸)。#include<iostream>usingnamespacestd;intconstsize=60;intfun(floatnum[],intx,intn,intN)if(n==0)returnnum[n];elsereturnx*fun(num,x,n-1,N)+num[N-n];]voidmain()(intn,x;floatnum[size];coutくく”請(qǐng)輸入最高項(xiàng)次數(shù):";cin?n;coutくく”請(qǐng)輸入各項(xiàng)系數(shù):";for(inti二〇;iく=n;i++)cin?num[i];coutくく"請(qǐng)輸入x:”;cin>>x;coutくく"結(jié)果為:“くくfun(num,x,n,n)<<endl;)05年:第一題是給定一個(gè)程序,關(guān)于字符串的,要求輸入并調(diào)試,說(shuō)出此程序的意圖。意圖是按字母順序?qū)蓚€(gè)字符串比較排序。第二問(wèn)要求用盡可能少的語(yǔ)句對(duì)該程序進(jìn)行修改,使其能夠?qū)蓚€(gè)字符串比較長(zhǎng)度排序。本題滿分20。#include<iostream>#includeくstring〉usingnamespacestd;voidmain(){stringstrl,str2;coutくく〃請(qǐng)輸入兩個(gè)字符串:";cin?strl>>str2;if(strl.length()>str2.length())cout<<strl?"islongthan”くくstr2くくendl;elseif(strl.length()==strl.length())cout<<strl?"and"<<str2<<"isequallong"?endl;elsecout<<str2?"islongthan"?strl<<endl;]第二題是要求編寫ー個(gè)日期類,要求按XXXX-XX-XX的格式輸出日期,實(shí)現(xiàn)加一天的操作,不考慮閏年問(wèn)題,所有月份設(shè)為30天。本題黑盒測(cè)試時(shí),輸入2004年3月20日,得到加一天后時(shí)間為2004-3-21,能得一部分分?jǐn)?shù)。輸入2004年3月30日,得到加一天后時(shí)間為2004-4-1,能得一部分分?jǐn)?shù)。輸入2004年12月30日,得到加一天后時(shí)間為2005-1-1,且有時(shí)間越界處理,能得全部分?jǐn)?shù)。本題滿分30o#include<iostream>usingnamespacestd;classDateinty,m,d;public:DateO{}Date(intyear,intmonth,intday):y(year),m(month),d(day){}friendDateoperator++(Date&t);voiddisplay();};Dateoperator++(Date&t)(t.d++;if(t.d>30)|t.d=t.d%30;t.m++;if(t.m>12)(t.m=t.m%12;t.y++;))returnt;voidDate::display()coutくくyくく"-"くくmくく"-"くくdくくendl;voidmain()intyy,mm,dd;coutくぐ請(qǐng)輸入日期:";cin?yy>>mm>>dd;while(y<0||m<0||m>12||d<0||d>30)(coutくぐ非法,請(qǐng)重新輸入(年月日:";cin?y?m>>d;}Datet(yy,mm,dd);t++;t.displayO;)第三題要求編寫ー個(gè)復(fù)數(shù)類,要求有4條。ー是有構(gòu)造函數(shù),能對(duì)復(fù)數(shù)初始化。二是對(duì)復(fù)數(shù)cl,c2,c3……能實(shí)現(xiàn)連加運(yùn)算,令c=cl+c2+c3+……此處可以重載加法操作符。三是有函數(shù)實(shí)現(xiàn)兩個(gè)復(fù)數(shù)相加,并按照a+ib的形式輸出。四是能實(shí)現(xiàn)對(duì)ー個(gè)復(fù)數(shù)c=a+ib,定義doublex=c有效,使x的值為實(shí)部和虛部之和。本題滿分50?!?include<iostream>usingnamespacestd;classcomplexinta,b;public:complex(){}complex(intaa,intbb):a(aa),b(bb){}complexoperator〉(complexc);voidaddc(complexxl);doubleadd();intgeta(){returna;}intgetb(){returnb;});complexcomplex::operator+(complexc){c.a=c.a+a;c.b=c.b+b;returnc;)voidcomplex::add_c(complexxl)cout<<xl.geta()+a?*+*?xl.getb()+bくく"i"くくendl;doublecomplex::add()doublec=a+b;returnc;)voidmain()(complexal(1,1),a2(2,2),a3(3,3),a4,a5;a4=al+a2+a3;a3.add_c(a2);doublec=a4.add();coutくくcくくendl;}2006年1.寫ー個(gè)程序判斷字符串中數(shù)字的位置(不限制使用面向?qū)ο缶幊?例如:輸入 a3b4c5輸出246#includeくiostream>#includeくstring)#include<ctype.h>usingnamespacestd;voidmain()strings;cout?”請(qǐng)輸入一串字符串:";cin?s;for(inti=0;i<s.length();i++)(if(isdigit(s[i]))(cout<<""<<i+l?*}}cout?endl;}2.寫一個(gè)類,能接受int型的變量,接收變量后能存儲(chǔ)原變量(譬如!2345)和其反向變量(54321).最多處理數(shù)量為10個(gè),當(dāng)輸入達(dá)到10個(gè)或者輸入變量為。的時(shí)候停止。并且在類銷毀前輸出存儲(chǔ)的所有變量。例如:輸入:12345,2234,0輸出:12345 5432122344322有錯(cuò)誤算法:#include<iostream>#include<string>usingnamespacestd;classIntstrings;//stringrs;public:Int(){}Int(stringsi){s=sl;}stringReverse();stringgets(){returns;}};stringInt::Reverse()(stringrs;for(inti=0;i<s.size();i++){rs[i]=s[s.size()-l-i];)returnrs;}stringstrl[10];inti=0;coutくく”請(qǐng)輸入至多十組數(shù)字當(dāng)小于十組時(shí)以〇結(jié)束:"?endl;while(i<10){strings;cin>>s;strl[i]=s;if(strl[i]="O")(break;)i++;}intk=i;for(i二〇;iくk;i++){Inta(strl[i]);coutくくa.gets()くく" "<<a.Reverse()?endl;1E確算法:#includeくiostream.h>#include<stdlib.h>classInt(intnum;//intrenum;public:Int(intn):num(n){}intreverseO;intgetnum(){returnnum;});intInt::reverse()(intr=num;intb=0,a;while(num>0)王道論壇 王道論壇()友情分享!予人玫瑰手有余香!(b?二10;a=num%10;b+=a;num/=10;num=1';returnb;)voidmain()(intn[10];coutくく”請(qǐng)輸入至多十組數(shù)字當(dāng)小于十組時(shí)以〇結(jié)束:"くくendl;inti=0;while(i<10){cin?n[i];if(n[i]==0){break;}i++;)intk=i;for(i=0;i<k;i++)Inta(n[i]);cout?a.getnum()く〈” "?a.reverse()?endl;3.寫ー個(gè)CTriangle類,要求可以接受CTriangle(y,x)形式的構(gòu)造,創(chuàng)建在坐標(biāo)系中的直角三角形樣子如下A、ヽ、B C三點(diǎn)的坐標(biāo)分別是A(O,y)B(0,0)C(x,0)實(shí)現(xiàn)+運(yùn)算,并且能夠處理鍵盤連續(xù)輸入若干個(gè)(少于十個(gè))三角形,并且連加(相加時(shí)候三角形邊長(zhǎng)長(zhǎng)度相加,方向同第一個(gè)三角形)。輸入〇后結(jié)束并輸出最后得出的三角形的三個(gè)坐標(biāo)值。例如:王道論壇 王道論壇()友情分享!予人玫瑰手有余香!輸入:1 2-1 -5輸出:A(0,7),B(0,0),C(2,0)#include<iostream>usingnamespacestd;classCTriangleinty;intx;public:CTriangle(intyy=O,intxx=O):y(yy),x(xx){}//CTriangleO{}voidset(intay二〇,intax=0){y=ay;x=ax;}CTriangleoperator+(CTrianglet);voiddisplay();};CTriangleCTriangle::operator+(CTrianglet)(returnCTriangle(t.y+y,t.x+x);}voidCTriangle::display()(coutくく"A"くく"(0,"?y?"),B(0,0),C("?x?",0)"?endl;)voidmain()(intyl,xl;CTrianglec[10],sum(7,5);coutくく”請(qǐng)輸入坐標(biāo):"<<endl;cin?yl;for(inti=0;yl!=0;i++){cin?xl;c[i].set(y1,xl);cin>>yl;)intn=i;//sum.set();for(i=0;i<n;i++)sum=sum+c[i];sum.display();}07年:loー個(gè)小球,從高為H的地方下落,下落彈地之后彈起高度為下落時(shí)的一半,王道論壇 王道論壇()友情分享!予人玫瑰手有余香!比如第一次彈起高度為H/2,如此往復(fù),計(jì)算從小球H高度下落到第n次彈地往返的總路程。要求:1。用遞歸的方法實(shí)現(xiàn)2〇輸入H和n,輸出結(jié)果3〇注意程序的健壯性4〇可以用C或C++實(shí)現(xiàn)#include<iostream>#includeくmath.h>usingnamespacestd;floatfun(intn)(if(n==l)return1;elsereturnfun(n-l)+l/pow(2,n-2);}voidmain()(intn;floatH;coutくく”請(qǐng)輸入高度H與彈地次數(shù)n:cin>>H>>n;coutくく”返回的總路程為:";cout<<fun(n)*H<<endl;)2。創(chuàng)建一個(gè)CPoint類,代表平面直角坐標(biāo)系中的點(diǎn),創(chuàng)建構(gòu)造函數(shù)和運(yùn)算符重載函數(shù),運(yùn)算符重載為類重載(非友元重載),可以實(shí)現(xiàn)計(jì)算兩個(gè)點(diǎn)之間的距離??梢愿鶕?jù)需要加入自己的成員變量或成員函數(shù)要求:1。輸入兩個(gè)點(diǎn)的坐標(biāo),輸出兩個(gè)點(diǎn)之間的距離2〇重載運(yùn)算符為“一”#include<iostream>#include<math.h>//#include<algorithm>usingnamespacestd;classCPoint(intx,y;public:CPoint(intxx,intyy){x=xx;y=yy;}floatoperator-(CPointc);};floatCPoint::operator-(CPointc)(returnsqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y));王道論壇 王道論壇()友情分享!予人玫瑰手有余香!}voidmain()(intxl,x2,yl,y2;coutくく”請(qǐng)輸入第一個(gè)點(diǎn)的坐標(biāo):";cin>>xl>>yl;CPointa(xl,yl);coutくぐ請(qǐng)輸入第二個(gè)點(diǎn)的坐標(biāo):";cin?x2>>y2;CPointb(x2,y2);coutくく”兩個(gè)點(diǎn)的距離為:"?a-b?endl;)3〇創(chuàng)建?個(gè)CTriangle類,需要用到第二題中創(chuàng)建的類,即用3點(diǎn)來(lái)代表ー個(gè)三角形,輸入三個(gè)點(diǎn)的坐標(biāo),實(shí)現(xiàn)判斷此三角形是不是直角三角形,并輸出此三角形的周長(zhǎng)。可以根據(jù)需要加入自己的成員變量或成員函數(shù)要求:1。輸入三個(gè)點(diǎn)的坐標(biāo),輸出周長(zhǎng)并給出是否宜角三角形的信息2。注意程序的健壯性#include<iostream>#includeくmath.h>//#include<a1gorithm>usingnamespacestd;classCPoint(intx,y;public:CPoint(intxx,intyy){x=xx;y=yy;}floatoperator-(CPointc);};floatCPoint::operator-(CPointc)returnsqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y));classctriangle(CPointA,B,C;floatAB,BC,AC;public:ctriangle(CPointa,CPointb,CPointc):A(a),B(b),C(c){AB=A-B;BC=B-C;AC=A-C;}王道論壇王道論壇()友情分享!予人玫瑰手有余香!voiddisplay();boolfun(););boolctriangle::fun(){floata=AB,b=BC,c=AC,t;if(a>c)t=c;c=a;a=t;}if(b>c){t=b;b=c;c=t;}if((b*b+a*a-c*c)<10e-6)returntrue;elsereturnfalse;)voidctriangle::display()cout〈く"直角三角形的周長(zhǎng)為:"?AB+BC+AC?endl;)voidmain()intxl,x2,x3,y1,y2,y3;coutくぐ請(qǐng)依次輸入三個(gè)點(diǎn)的坐標(biāo):";cin?xl>>yl>>x2>>y2>>x3>>y3;CPointa(xl,yl),b(x2,y2),c(x3,y3);ctriangleT(a,b,c);if(T.fun())T.display();elsecoutくく”不是直角三角形!"くくendl;}4、請(qǐng)自定義ー個(gè)Student類,屬性包括:Charname[10],intnum〇編程實(shí)現(xiàn)學(xué)生信息的輸入、查詢、瀏覽,其中瀏覽分為:升序和降序兩種。#include<iostream>//#include<string>#includeくvector〉王道論壇 王道論壇()友情分享!予人玫瑰手有余香!#include<algorithm>//forsort()usingnamespacestd;intconstN=10;classstudent{charname[10];intnum;public:student(){num=O;}^student(){}voidInfoput(charname[],intnum);voidcheckinfo(charname[]);voidprint();intgetnum(){returnnum;}};voidstudent::Infoput(charname[],intnum){strcpy(this->name,name);thisー)num=num;}voidstudent::checkinfo(charname[])(if(strcmp(this->name,name)ニニ〇){ coutくく"Nameis:"くくthisー〉nameくく”?"Numis:"くくthisー〉numくくendl;}}voidstudent::print()coutくく“nameis:"?name<<"?*numis:\<num<<endl;}boolcmp(studentsi,students2)(returnsi.getnum()<s2.getnumO;}voidaceBrowse(vector<student>v_student)(for(inti=0;i<(int)v_student.size();i++)v_student[i].print();}voiddesBrowse(vector<student>v_student)(for(inti=v_student.size()-1;i>=0;i--)王道論壇 王道論壇()友情分享!予人玫瑰手有余香!vstudent[i].print();}voidmain()(vector<student>v_student;studentstnt;charname[N];intnum;coutくく”請(qǐng)按姓名學(xué)號(hào)的順序輸入學(xué)生信息:同時(shí)按下ctrl+z結(jié)束輸入!〃くくendl;while(cin>>name>>num){stnt.Infoput(name,num);v_student.push_back(stnt);}inti_choice;sort(v_student.begin(),v_student.end(),cmp);cin.clear();coutくく"1升序?yàn)g覽2降序?yàn)g覽3按姓名查詢4退出〃くくendl;while(cin>>i_choice){if(i_choice==l)|aceBrowse(vstudent);)if(ichoice==2)desBrowse(vstudent);if(i_choice==3)coutくく”請(qǐng)輸入您要查詢學(xué)生的姓名:";cin?name;for(inti=0;i<v_student.size();i++)vstudent[i].checkinfo(name);08年:1、存儲(chǔ),組姓名,如Apple,Tom,Green,Jack要求能排序、按字母順序插入、并顯示。#includeくiostream)#includeくstring〉#includeくvector〉includeくalgorithm〉usingnamespacestd;voidmain()|王道論壇 王道ifci()友情分享!予人玫瑰手有余香!vector<string>v_string;strings;coutくく”請(qǐng)輸入一組姓名用ctrl+Z結(jié)束!*?endl;while(cin>>s)v_string.push_back(s);sort(v_string.beginO,v_string.end());for(inti=0;i<v_string.sizeO;i++)cout<<v_string[i]くく”cout<<endl;)2、輸入文件名及路徑創(chuàng)建該文件,并把從鍵盤輸入的內(nèi)容保存到該文件,最后將該文件的路徑、該文件名及文件中的內(nèi)容輸出到屏幕。#include<iostream>includeくfstream〉includeくstring〉usingnamespacestd;intconstSIZE=80;voidgetFileName(chararrロ);voidgetFilePath(chararr[]);intmain(){charc_arr[SIZE];stringstr;coutくくpleaseenterfilepathandfilename:“くくendl;cin.getline(c_arr,SIZE);ofstrearnofile(c_arr,ios_base::out);coutくく“createrror!"?endl;return0;}cout<<"pleaseinputcontentofthefile(endofcrt1+z):"<<endl;while(getline(cin,str)){ofile?str?endl;)getFileName(c_arr);getFilePath(c_arr);ifstreamifile(c_arr,ios_base::in);coutくくthecontentofthefileis:*<<endl;while(!ifile.eof()){getline(ifile,str);王道論壇 王道論壇()友情分享!予人玫瑰手有余香!coutくくstrくくendl;return0;voidgetFileName(chararr[])inttemp,j;inti=0;charfileName[SIZE];while(arr[i++]!='、〇'){if(arr[i]=,\\'){temp=i;}//i++;)intk=0;for(i=temp+1;arr[i]!=,\0';i++)|fi1eName[k++]=arr[i];)fileName[k]=,\0';coutくく"fileNameis:"?fileName?endl;voidgetFilePath(chararr[])inttemp;inti=0;charfilePath[SIZE];while(arr[i++]!=‘、〇')(if(arr[i]='\\')(temp=i;}}for(i=0;i<temp-l;i++){filePath[i]=arr[i];)王道論壇 王道論壇()友情分享!予人玫瑰手有余香!filePath[temp-1]=>\0*;coutくく"filePathis:"?filePath<<endl;〃system("pause");3、設(shè)計(jì)捕獲兩種不同類型的異常,ー個(gè)是被〇除,另ー個(gè)是數(shù)組越界。4、設(shè)計(jì)ー個(gè)程序能計(jì)算日期的間隔,如輸入兩個(gè)日期別為2008-2-3和2008-3-9計(jì)算相隔多少天,或2008-2-3加上100天后的日期是多少。2009年北京理工大學(xué)計(jì)算機(jī)上機(jī)復(fù)試題1請(qǐng)輸入字符串,最多輸入4個(gè)字符串,要求后輸入的字符串排在前面,例如輸入:EricZ輸出:1二EricZ輸入:David輸出:kDavid2=EricZ輸入:Peter輸出:l=Peter2=David3=EricZ輸入:Alan輸出:1二Alan2=Peter3=David4=EricZ輸入:Jane輸出:1=Jane2=Alan3=Peter4=David#include<iostream>#includeくstring)usingnamespacestd;intmain(intargc,char*argv[]){charstr[1024];stringstore_str[4];intcur=0,size=0;coutくく“Ctrl+Z結(jié)束程序。?<<endl;whiled)coutくく"輸入:cin.getline(str,1024);if(!*str)(coutくく”你選擇了結(jié)束。"くくendl;break;}store_str[cur++]=str;王道論壇 王道論壇()友情分享!予人玫瑰手有余香!if(size<4)size++;if(cur>=4)cur=0;for(intj=(cur+3)%4,i=0;i<size;j=(j+3)%4,i++)cout?i+l?,=,?store_str[j]?*cout<<endl;)return0;)2.把上述最后結(jié)果保存到Name,txt中其屮#include<iostream>#includeくfstream)#includeくstring〉usingnamespacestd;intmain(intargc,char*argv[]){charstr[1024];stringstore._str[4];intcur=0,size=0;coutくく"Ctrl+Z結(jié)束程序。"?endl;while(l){coutくく"輸入:";cin.getline(str,1024);if(!*str){coutくく"你選擇了結(jié)束。"くくendl;/Z比上一題增加的部分ofstreamofile("C:\\Name.txt",iosbase::out);for(intj=(cur+3)%4,i=0;i<size;j=(j+3)%4,i++)ofile?i+l?,=,?store_str[j]?"";coutくく"結(jié)果已被保存在C:\\Name.txt中。"くくendl;break;)store_str[cur++]=str;if(size<4)size++;if(cur>=4)cur=O;for(intj=(cur+3)%4,i=0;i<size;j=(j+3)%4,i++)cout?i+l?,=,?store_str[j]?*cout<<endl;)return0;王道論壇 王道i館()友情分享!予人玫瑰手有余香!}3.先輸入ー組數(shù),然后輸入其分組,按照分組統(tǒng)計(jì)出現(xiàn)次數(shù)并輸出例如,輸入數(shù)據(jù)3,2,3,8,8,2,3輸入對(duì)應(yīng)分組!,2,3,2,1,3,1輸出:1={2=0,3=2,8=1}2={2=1,3=0,8=1}3={2=1,3=1,8=0}即每組中各數(shù)據(jù)出現(xiàn)的次數(shù)#include<iostream>#include<string>#include<map>#include<ctype.h>usingnamespacestd;intgetArraylnt(int*ip);intmain(intargc,char*argv[]){intnum[500],grp[500];intnumtop,grptop,i;do{coutくく〃輸入數(shù)據(jù),以‘,‘分割:〃くくendl;numtop=getArraylnt(num);coutくく〃輸入對(duì)應(yīng)分組:"くくendl;grptop=getArraylnt(grp);if(numtop!=grptop)coutくく〃兩次輸入數(shù)目不同!需要重新輸入。"くくendl;}while(numtop!=grptop);map<int,int>nummap,grpmap;for(i=0;i<numtop;i++){nummap[num[i]]=0;grpmap[grp[i]]=0;)map<int,int>::iteratoriter;for(iter=nummap.beginO,i=0;iter!=nummap.end();iter++,i++)iter->second=i;for(iter=grpmap.begin(),i=0;iter!=grpmap.end();iter++,i++)iterー〉second二i;int**tables=newint*[grpmap.sizeO];intj,n=nummap.size();王道論壇 王道論壇()友情分享!予人玫瑰手有余香!for(i=0;i<grpmap.size();i++){tables[i]=newint[n];for(j=0;j<n;j++)tables[i][j]=0;}for(i=0;i<numtop;i++)tables[grpmap[grp[i]]][nummap[num[i]]]++;map<int,int>::iteratoritr;for(itr=grpmap.begin();itr!=grpmap.end();itr++){coutくくitrー)firstくく"二for(iter=nummap.begin(),i=0;iter!=nummap.end();iter++,i++){if(i)cout<<"coutくくiterー)firstくく="?tables[itr->second][iter->second];)cout<<"}"<<endl;)return0;)intgetArraylnt(int*ip){chartxtline[1024],*pc,*pcs;int*ips=ip;cin.getline(txtline,1023);pc=pcs=txtline;while(*pc){if(!isdigit(*pc)&&isdigit(*pcs)){*(ip++)=atoi(pcs);pcs=pc+1;}else{if(!isdigit(*pcs))pcs=pc;}pc++;}*(ip++)=atoi(pcs);return(ip-ips);]/*3.先輸入ー組數(shù),然后輸入其分組,按照分組統(tǒng)計(jì)出現(xiàn)次數(shù)并輸出例如,輸入數(shù)據(jù)3,2,3,8,8,2,3輸入對(duì)應(yīng)分組1,2,3,2,1,3,1輸出:1={2=0,3=2,8=1}2={2=1,3=0,8=1}王道論壇 王道論壇()友情分享!予人玫瑰手有余香!3={2=1,3=1,8=0}即每組中各數(shù)據(jù)出現(xiàn)的次數(shù)*/#include<iostream>usingnamespacestd;structnode(intnum;〃數(shù)字號(hào)intcount;〃岀現(xiàn)次數(shù)structnode*next;};structgroup(intnum;〃組號(hào)node*first;}G[10];intInputN(intInputNumberロ);〃給數(shù)賦值intInputG(intInputGroupロ);〃給組賦值voidInsert(node*first,intx,boolbelong);〃將數(shù)字x插入到以first為起點(diǎn)的單鏈表中,belong代表次數(shù)是否是這ー組voidprintGroup(groupG[],intlength);voidmain()inti,j;intInputNumber[100],InputGroup[100]ノ/輸入的數(shù)和組intlengthl(〇),length2(0);〃數(shù)組和小組的長(zhǎng)度f(wàn)or(i=0;i<100;i++){InputNumber[i]=-9999;InputGroup[i]=-9999;}〃初始化組,組號(hào)全為ー9999,節(jié)點(diǎn)指向空f(shuō)or(i=0;i<10;i++)(G[i].num=-9999;〃頭節(jié)點(diǎn)G[i].first=newnode;王道論壇王道論壇()友情分享!予人玫瑰手有余香!G[i].firstー〉num=-9999;G[i].first->count=-9999;G[i].first->next=NULL;〃輸入coutくく”請(qǐng)輸入數(shù)字(0-9),如1,2,2:"?endl;lengthl=InputN(InputNumber);coutくく”請(qǐng)輸入組號(hào)(0-9),如1,2,2:*?endl;length2=InputG(InputGroup);〃存入組號(hào)for(i=l;i<=length2;i++)G[InputGroup[i]].num=InputGroup[i];〃存數(shù)字入組,消除重復(fù)項(xiàng)for(i=l;i<=length2;i++)〃組(for(j=l;j<=lengthl;j++)〃數(shù)(Insert(G[InputGroup[i]].first,InputNumber[j],(i=j));}}〃輸出printGroup(G,lengthl);IintInputN(intInputNumber[])(inti(1),lengthl(0);chartemp;while((temp=cin.get())!='\n')if(temp<='9'&&temp>=’〇'){InputNumber[i++]=temp-48;lengthl++;)elseif(temp!=',')coutくく”請(qǐng)重新輸入:"くくendl;}returnlengthl;王道論壇 王道論壇()友情分享!予人玫瑰手有余香!)intInputG(intInputGroup[])(inti(1),length2(0);chartemp;while((temp=cin.get())!='\n')(if(temp<='9'&&temp>='0')InputGroup[i++]=temp-48;Iength2++;elseif(temp!=',')coutくく”請(qǐng)重新輸入:"くくendl;}returnlength2;}voidInsert(node*first,intx,boolbelong)(if(belong)|node*temp=first->next;〃第一次插入鏈表if(temp=NULL)(node*newNode=newnode;newNode->num=x;newNode->count=1;newNode->next=first-〉next;firstー〉next=newNode;elsetemp=first;while(temp->next!=NULL){if(temp->next->num==x)〃找到相同數(shù)字{tempー〉next-〉count++;return;王道論壇王道論壇()友情分享!予人玫瑰手有余香!}elseif(temp->next->num<x)〃后移temp=temp->next;else(node*newNode=newnode;newNode->num=x;newNode-〉count=1;newNode->next=temp->next;temp->next=newNode;returnnode*newNode=newnode;newNode->num=x;newNode->count=1;newNode->next=temp->next;temp->next=newNode;}]else(node*temp=first->next;〃第一次插入鏈表if(tempニニNULL)(node*newNode=newnode;newNodeー〉num=x;newNode->count=0;newNodeー〉next=first->next;first->next二newNode;}elsetemp=first;while(temp->next!=NULL)if(temp->next->num==x)〃找到相同數(shù)字return;elseif(temp->next->num<x)//后移王道論壇王道論壇()友情分享!予人玫瑰手有余香!temp=temp->next;else(node*newNode=newnode;newNodeー〉num=x;newNodeー〉count=0;newNode->next=temp->next;temp->next=newNode;return;}}node*newNode=newnode;newNode->num=x;newNode->count=0;newNode-〉next=temp->next;temp->next=newNode;voidprintGroup(groupG口,intlength)(inti;for(i=l;i<=length;i++){if(G[i].num!=-9999)|coutくくiくく"二{";node*temp=G[i].first->next;while(temp!=NULL){cout<<temp->num<<"="?temp->count;if(temp->next!=NULL)cout<<",temp=temp->next;)cout?"}"<<endl;4.輸入?個(gè)英文句子,把句子中的單詞按出現(xiàn)次數(shù)按從多到少把單詞和次數(shù)在屏幕上輸出來(lái),要求能識(shí)別英文句號(hào)和逗號(hào),即是說(shuō)暫不要求識(shí)別其他符號(hào)王道論壇王道論壇()友情分享!予人玫瑰手有余香!#include<iostream>#include<map>#includeくvector〉#include<string>#includeくalgorithm〉usingnamespacestd;typedefstructcombined(combined(){cnt=0;)stringstr;intent;}combined;boolemp(combinedi1,combinedi2);intmain(intargc,char*argv[]){chartxtline[1024],*p;char"delimit=",.",*symbols[2]={",","."};map<string,combined>map_si;inti,sym_cnt[2]={0,0};coutくく”請(qǐng)輸入ー個(gè)英文句子:"くくendl;cin.getline(txtline,1023);//count','&'.'p=txtline;while(*p){for(i=0;i<2;i++){if(*p==*symbols[i]){mapsi[(string)symbols[i]].cnt++;mapsi[(string)symbols[i]].str=symbols[i];break;)}p++;}//splitsentenceintowordsp=strtok(txtline,delimit);while(p){王道論壇 王道論壇()友情分享!予人玫瑰手有余香!map_si[(string)p].cnt++;map_si[(string)p].str=p;〃如果要不區(qū)分大小寫,可以用strIwr之類的方法忽略大小寫p=strtok(NULL,delimit);}//prepareforsortmap<string,combined>::iteratoriter;vector<combined>sort_obj;iter=map_si.beginO;while(iter!=mapsi.end())sort_obj.push_back((iter++)ー〉second);sort(sort_obj.beginO,sort_obj?end(),cmp);//outputresultcoutくく”統(tǒng)計(jì)結(jié)果如下:"くくendl;for(i=0;i<sort_obj.size();i++)cout?sort_obj[i].str?〃、t"?sort_obj[i].ent<<endl;return0;}boolcmp(combinedi1,combinedi2){returni1.ent>i2.ent;)算法二:#include<iostream>#ineludeくstring〉usingnamespacestd;structword(stringw;intn;intflag;};voidhandle(wordstr口);voidstat(wordstr[],wordsum[]);voidsort(wordsum[]);voidoutput(wordsumロ);intwords;main()(王道論壇 王道論壇()友情分享!予人玫瑰手有余香!wordstr[1000],sum[100];handle(str);stat(str,sum);sort(sum);output(sum);voidhandle(wordstr[1000])charch,s[10];inti,j;i=0;j=0;while((ch=cin.get())!='\n')(if((ch!=,,)&&(ch!=‘,‘)&&(ch!='.’))s[i++]=ch;else(s[i]ハ〇';str[j].w=s;str[j].n=l;str[j].flagニ〇;j++;i=0;strcpy(s,);str[j++],w=s;words=j;}voidstat(wordstr[1000],wordsum[1000]){inti,j,k;j=0;k二〇;for(i=0;i<words;i++){if(str[i].w!=""&&str[i].flag==0)|str[i].flag=2;for(j=i+l;j<words;j++)王道論壇 王道論壇()友情分享!予人玫瑰手有余香!{if(str[j」,w==str[i].w){str[i].n++;str[j].flag=l;for(i=0;i<words;i++)if(str[i].flag==2)sum[k++]=str[i];words=k;}voidsort(wordsum[])(inti,j;wordt;for(i=0;i<words-l;i++)for(j二〇;j<words-i;j++)if(sum[j].n<sum[j+l].n){t=sum[j];sum[j]=sum[j+l];sum[j+l]=t;))voidoutput(wordsum[])for(inti=0;i<words;i++)cout?sum[i].w?*"くくsum[i].n?endl;}2010年:第一題:輸入一串整數(shù),輸入命令排序!輸入at 在這串整數(shù)后面添加整數(shù)t,輸入c\m\n有n替換m,輸入dt刪除t,輸入s排序,#include<iostream>#includeくstring)#includeくvector)#include<sstream>王道論壇 王道論壇()友情分享!予人玫瑰手有余香!#include<algorithm>usingnamespacestd;voidmain()(strings;vector<int>v;coutくく〃請(qǐng)輸入您的數(shù)據(jù)(以''結(jié)束):〃くくendl;getline(cin,s,',');istringstreamsin(s);for(inta;sin>>a;)v.pushba

溫馨提示

  • 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)論