ACM普及第一次学习.ppt

上传人:max****ui 文档编号:13246303 上传时间:2020-06-11 格式:PPT 页数:40 大小:324.50KB
返回 下载 相关 举报
ACM普及第一次学习.ppt_第1页
第1页 / 共40页
ACM普及第一次学习.ppt_第2页
第2页 / 共40页
ACM普及第一次学习.ppt_第3页
第3页 / 共40页
点击查看更多>>
资源描述
第一次学习PPT,FromHDU,2020/6/11,2,第一次的目标:,1、了解ACM登陆并注册,2、学习ACM中输入输出的方法学习并尝试PPT中例题;PPT中涉及到的C+语法都很简单,不要回避3、学有余力,可以尝试下面题目:1016-1018、1013、10611170、2000-2043,2020/6/11,3,ACM题目输入的特点:,由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。下面,分类介绍:,2020/6/11,4,先看一个超级简单的题目:,2020/6/11,5,初学者很常见的一种写法:,#includevoidmain()inta,b;scanf(“%d%d”,2020/6/11,6,有什么问题呢?,这就是下面需要解决的问题,2020/6/11,7,第二部分,基本输入输出,2020/6/11,8,输入_第一类:,输入不说明有多少个InputBlock,以EOF为结束标志。参见:HDOJ_1089,2020/6/11,9,Hdoj_1089源代码:,#includeintmain()inta,b;while(scanf(%d%d,2020/6/11,10,本类输入解决方案:,C语法:while(scanf(%d%d,scanf(%d,2020/6/11,14,本类输入解决方案:,C语法:scanf(%d,i+).,2020/6/11,15,输入_第三类:,输入不说明有多少个InputBlock,但以某个特殊输入为结束标志。参见:HDOJ_1091,2020/6/11,16,Hdoj_1091源代码:,#includeintmain()inta,b;while(scanf(%d%d,上面的程序有什么问题?,2020/6/11,17,本类输入解决方案:,C语法:while(scanf(%d,gets(buf);C+语法:如果用stringbuf;来保存:getline(cin,buf);如果用charbuf255;来保存:cin.getline(buf,255);,2020/6/11,21,说明(5_1):,scanf(“%s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔;若使用gets函数,应为gets(str1);gets(str2);字符串之间用回车符作分隔。通常情况下,接受短字符用scanf函数,接受长字符用gets函数。而getchar函数每次只接受一个字符,经常c=getchar()这样来使用。,2020/6/11,22,说明(5_2):cin.getline的用法:,getline是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:istream不用管它的返回类型,来关心它的三个参数:charline:就是一个字符数组,用户输入的内容将存入在该数组内。intsize:最多接受几个字符?用户超过size的输入都将不被接受。charendchar:当用户输入endchar指定的字符时,自动结束。默认是回车符。,2020/6/11,23,说明(5_2)续,结合后两个参数,getline可以方便地实现:用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。charname4;cin.getline(name,4,n);由于endchar默认已经是n,所以后面那行也可以写成:cin.getline(name,4);,2020/6/11,24,思考:以下题目属于哪一类输入?,2020/6/11,25,输出_第一类:,一个InputBlock对应一个OutputBlock,OutputBlock之间没有空行。参见:HDOJ_1089,2020/6/11,26,解决方案:,C语法:.printf(%dn,ans);C+语法:.coutansendl;,2020/6/11,27,输出_第二类:,一个InputBlock对应一个OutputBlock,每个OutputBlock之后都有空行。参见:HDOJ_1095,2020/6/11,28,1095源代码,#includeintmain()inta,b;while(scanf(%d%d,2020/6/11,29,解决办法:,C语法:.printf(%dnn,ans);C+语法:.coutansendlendl;,2020/6/11,30,输出_第三类:,一个InputBlock对应一个OutputBlock,OutputBlock之间有空行。参见:HDOJ_1096,2020/6/11,31,1096源代码,#includeintmain()inticase,n,i,j,a,sum;scanf(%d,2020/6/11,32,解决办法:,C语法:for(k=0;kcount;k+)while()printf(%dn,result);if(k!=count-1)printf(n);C+语法:类似,输出语句换一下即可。,2020/6/11,33,思考:以下题目属于哪一类输出?,2020/6/11,34,附:初学者常见问题,2020/6/11,35,一、编译错误,Main函数必须返回int类型(正式比赛)不要在for语句中定义类型_int64不支持,可以用longlong代替使用了汉语的标点符号itoa不是ansi函数能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数intnum=100;charstr25;sprintf(str,%d,num);另外,拷贝程序容易产生错误,2020/6/11,36,下面的hdoj1089为什么CE?,#includeintmain()inta,b;while(scanf(%d%d,2020/6/11,37,二、小技巧,数据的拷贝(特别是输出的提示信息)调试的sampleinput的拷贝,2020/6/11,38,三、C语言处理“混合数据”的问题,例题(Hdoj_1170),2020/6/11,39,常见的代码:,scanf(%dn,2020/6/11,40,思考题(目的:初步体会一下ACM的魅力),Giventwonon-negativeintegersmandn,youwillhavetofindthelastdigitofmnindecimalnumbersystem.InputTheinputfilecontainsseverallines.Eachlinecontainstwointegersmandn(bothlessthan101001).Inputisterminatedbyalinecontainingtwozeroes.Thislineshouldnotbeprocessed.OutputForeachsetofinputyoumustproduceonelineofoutputwhichcontainsasingledigit.Thisdigitisthelastdigitofmn.SampleInput323500SampleOutput93,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!