浙江大学10年计算机上机题(含答案).pdf
《浙江大学10年计算机上机题(含答案).pdf》由会员分享,可在线阅读,更多相关《浙江大学10年计算机上机题(含答案).pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、A+B题目描述:给定两个整数A和B,其表示形式是:从个位开始,每三位数用逗号,”隔开。现在请计算A+B的结果,并以正常形式输出。输入:输入包含多组数据数据,每组数据占一行,由两个整数A和B组 成(-1 0人9 A,B1 0A9)o输出:请计算A+B的结果,并以正常形式输出,每组数据占一行。样例输入:-2 3 4,5 6 7,8 9 0 1 2 3,4 5 6,7 8 91,2 3 4 2,3 4 5,6 7 8样例输出:-1 1 1 1 1 1 1 0 12 3 4 6 9 1 2答案:给大家记住数据吧,如果你是用高进度计算的。注意:你的结果是否有前缀0;0 是否带负号;999 110,0
2、00-900-0-00-01999 1010,001-10,000#include#inciude#include#includeusing namespace std;int main()(string strA,strB;while(cinstrAstrB)long numA=0;for(int i=0;i=strA.length()-l;i+)(if(strAi=0)(numA=numA*10+strAi-O;)long numB=0;for(int/去掉否则出现变量重复 i=0;i=strB.length()-l;i+)(if(strBi=(X)(numB=numB*10+strBi-
3、O;)if(strAO&strBO!=,-,)/+coutnumA+numBendl;if(strAO!=&strBO=-)+-coutnumA-numBendl;if(strAO=r-*&strBO!=-,)/-+coutnumB-numAendl;if(strAO=&strBLO=,)-cout0-(numA+numB)endl;)return 0;)已AC1.可以用sscanf把字符串转换为int,然后直接加就可以了2.#include 3.#include 4.#include 5.6.using namespace std;7.8.const int Maxn=50;9.int ma
4、in()10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.1.2.3.4.5.6.7.char strlMaxn,str2Maxn;char tempMaxn;int a,b,i,r;while(s canf(H%s%s,st rl,str2)!=EOF)(int len=strlen(strl);memset(temp,0,sizeof(temp);r=0;for(i=0;ilen;i+)if(strli!=*,)tempr+=strli;sscanf(temp,%dmemset(temp,0,sizeof(t
5、emp);r=0;for(i=0;istrlen(str2);i+)if(str2i!=,*)tempr+=str2i;sscanf(temp,%d,&b);couta+bendl;return 0;#include#includeint sw(char*a)int i=0,c=0;while(ai)if(ai=,0&ai=9)c=c*10+ai-,0,;8i+;9.)10.if(a0=-)11.c=-c;12.return c;13.)14.int main()15.char a99,b99;16.int al?bl?c99i=0;17.while(scanf(%s%s”,a,b)!=EOF
6、)18.al=sw(a);19.bl=sw(b);20.21.ci=al+bl;22.i+;23.for(int j=0;ji;j+)24.printf(%drf,cj);25.return 0;26.复制代码A C 了二、ZOJ问题题目描述:对给定的字符串(只包含2,。力 三种字符),判断他是否能AC。是否AC的规则如下:1.zoj 能 AC;2.若字符串形式为xzqjx,则也能A C,其中x可以是N个。或者为空;3.若azbjc能A C,则azbojac也能A C,其中a,b,c为N个o或者为空;输入:输入包含多组测试用例,每行有一个只包含z o力 三种字符的字符串,字符串长度小于等于lO
7、OOo输出:对于给定的字符串,如果能AC 则请输出字符串Accepted,否则请输出/zWrong Answer”。样例输入:z o jo z o j oo z o o j o oo o z o o j o o o oz o o jo z o j oo o o o z o j oz o j o o o o样例输出:Ac c e p t e dAc c e p t e dAc c e p t e dAc c e p t e dAc c e p t e dAc c e p t e dW r o n g An s w e rW r o n g An s w e r答案:下面代码AC过了,需要考虑的问
8、题很多,需要注意的地方我都加注释了1.#include2#include3#includeusing namespace std;5int main()6string ins;7while(cinins)11.8.size_t len=in s.s iz e()-l;9.size_t bz=in s.fin d _ first_ o f(z);10.size_t bj=in s.fin d _ first_ o f(j);16.12.if(bz=string:npos|bj=string:npos)/SW z,j-定错13.coutWrong Answernendl;14.continue;1
9、5.)17.bool flag=true;18.fo r(in t i=bz+l;i=len;i+)19.if(in s.a t(i)=z)20.flag=false;21.)22.fo r(in t i=bj+l;i=len;i+)23.if(in s.a t(i)=j)24.flag=false;25.)26.if(flag=fa lse)只能出现一个 z,一个 j27.coutWrong Answer,endl;28.continue;29.)30.if(b j b z)/z 在 j 前31.coutWrong Answerendl;32.continue;33.)34.35.36./*
10、z 前 o 个数为el,z j之间o 个数为e2,j 之后o 个数为e3+/37.size_t el=bz;38.size_t e2=bj-bz-1;39.i f (e2=0)/z,j 之间o 的个数至少一个40.coutWrong Answerendl;41.continue;42.)43.size_t e3=len-bj;44.int x=e2;45.if(el*x=e3)coutxAcceptecTendl;实际上题目的三个条件可以得出 el*e2=e346.else coutWrong Answerendl;47.)48.return 0;49.用 C+string类进行判别可以写出非
11、常简介的算法1.#include 2.#include 3.#include 4.using namespace std;5.int main(int argc,char*argv)6.7.ifstream cin(*input.txt);8.string s;9.while(cins)10.11.12.13.14.15.16.17.18.size_t p,q;p=s.find(z);q=s.find(j);while(int)(q-p)2)(s.erase(int)(q+l),(int)p);s.erase(int)(p+1),1);p=s.find(z);19.q=s.find(j);20
12、.)21.if(p=(s.size()-q-l)&(q-p)=2)22.coutAcceptedn;23.else24.coutWrong Answern;25)26.最简洁的:#include#includeint main()char strflOOO;int x=0,y=0,z=0;int length,i;while(gets(str)!=NULL)length=strlen(str);for(i=0;i0)printf(nAcceptedn);)elseprintf(HWrong Answernn);另:考虑y0的情况,比喻输入zj给出我的AC代码,用的纯C,条件二、三可合并到一个条
13、件里1.#include 2.#include 3.char s1001;4.int main()5.6.int ajb,c;7.char+p;8.while(scanf(%5,5)!=EOF)9.if(!strcmp(s,zoj)printf(HAcceptedn);continue;条件10.11.a=b=c=0;12.p=s;13.while(*p=,o)a+;p+;a 为 第 个 z 前 o 的个数14.if(*p=z)15.p+;16.while(*p=o)b+;p+;/b 为夹在 z 和 j 之间的 o 的个数17.if(*p=,j)18.p+;19.while(*p=o )c+;
14、p+;/c 为 j 之后的 o 的个数20.if(!(*p)&b0&c=a*b)printf(Acceptedn);continue;条件三21.)22 23.printf(Wrong Answern);24.25.return 0;26.三、奥运排序问题题目描述:按要求,给国家进行排名。输入:有多组数据。第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人 口 数(百万)。接下来一行给出M个国家号。输出:排序有4种方式:金牌总数奖牌总数金牌人口比例奖牌人口比例对每个国家给出最佳排名排名方式和最终排名格式为:排名:排名方式如果有相同
15、的最终排名,则输出排名方式最小的那种排名,对于排名方式,金牌总数 奖牌总数 金牌人口比例 奖牌人口比例如果有并列排名的情况,即如果出现金牌总数为1 0 0,9 0,9 0,8 0.则排名为L2,2,4.每组数据后加一个空行。样例输入:4 44 8 16 6 24 8 22 1 2 40 1 2 34 28 1 0 18 1 1 28 1 2 38 1 3 40 3样例输出:1:31:12:11:21:11:1答案:1.看中文题目都那么费力气,我草!2.需要特别注意的地方是,只在要求排名的国家里面排名,其他不需要排名的直接忽略,。3.当时我没仔细看到这点,wa 了 N次,暴怒到想砸电脑 4.注意
16、要用double,因为float精度是不够的,般涉及到浮点的,最好都用double5.还有注意处理重熨排名:6./if(Pj.God=Pj-1.God)rankj=rankj-1;7./else rankj=j+1;8.9.#include 10.#include 11.#include 12.#include 13.14.using namespace std;15.16.const int Maxn=100000;17.18.struct Con19.double God,Pri,Peo;20.double Godper,Peoper;21.int id;22.)PMaxnrpMaxn;2
17、3.int rankMaxn;24.int N,M;25.26.bool cmp(const Con a,const Con b)27.(28.return a.Peoperb.Peoper;29.30.31.bool cmpl(const Con a,const Con b)32.33.return a.Godperb.Godper;34.35.36.bool cmp2(const Con a,const Con b)37.38.return a.Prib.Pri;39)40.bool cmp3(const Con a,const Con b)41.42.return a.Godb.God;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江大学 10 计算机 上机 答案
限制150内