ACM第01讲A竞赛入门.ppt

上传人:wuy****n92 文档编号:70101709 上传时间:2023-01-16 格式:PPT 页数:45 大小:800KB
返回 下载 相关 举报
ACM第01讲A竞赛入门.ppt_第1页
第1页 / 共45页
ACM第01讲A竞赛入门.ppt_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《ACM第01讲A竞赛入门.ppt》由会员分享,可在线阅读,更多相关《ACM第01讲A竞赛入门.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、ACM程序设计竞赛程序设计竞赛1/16/20231第一讲第一讲ACMACM入门入门(Introduction to ACM)1/16/20232如何入门呢如何入门呢?1/16/20233ACMACM题目特点题目特点:由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。下面,分类介绍:1/16/20234先看一个超级简单的题目:先看一个超级简单的题目:nhttp:/=1089nSampleinput:n15n1020nSampleoutput:n6n301/16/20235初学者很常见的一

2、种写法:初学者很常见的一种写法:n#includenvoidmain()nninta,b;nscanf(“%d%d”,&a,&b);nPrintf(“%d”,a+b);n1/16/20236有什么问题呢?有什么问题呢?这就是下面需要解决的问题这就是下面需要解决的问题1/16/20237基本输入输出基本输入输出 输入输入_第一类:第一类:n输入不说明有多少个InputBlock,以EOF为结束标志。参见:HDOJ_1089nhttp:/=10891/16/20238Hdoj_1089源代码:源代码:#includeintmain()inta,b;while(scanf(%d%d,&a,&b)!=

3、EOF)printf(%dn,a+b);1/16/20239本类输入解决方案:本类输入解决方案:nC语法:while(scanf(%d%d,&a,&b)!=EOF).nC+语法:while(cinab).1/16/202310说明(说明(1):):1.Scanf函数返回值就是读出的变量个数,如:scanf(“%d%d”,&a,&b);如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。2.EOF是一个预定义的常量,等于-1。1/16/202311输入输入_第二类:第二类:n输入一开始就会说有N个InputBlock,下面接着是N个InputBloc

4、k。参见:HDOJ_1090nhttp:/=10901/16/202312Hdoj_1090Hdoj_1090源代码:源代码:#includeintmain()intn,i,a,b;scanf(%d,&n);for(i=0;in;i+)scanf(%d%d,&a,&b);printf(%dn,a+b);1/16/202313本类输入解决方案:本类输入解决方案:nC语法:scanf(%d,&n);for(i=0;in;for(i=0;in;i+).1/16/202314输入输入_第三类:第三类:n输入不说明有多少个InputBlock,但以某个特殊输入为结束标志。参见:HDOJ_1091nhtt

5、p:/=10911/16/202315Hdoj_1091Hdoj_1091源代码:源代码:#includeintmain()inta,b;while(scanf(%d%d,&a,&b)&(a!=0|b!=0)printf(%dn,a+b);1/16/202316本类输入解决方案:本类输入解决方案:nC语法:while(scanf(%d,&n)&n!=0).nC+语法:while(cinn&n!=0).1/16/202317输入输入_第四类:第四类:n以上几种情况的组合1/16/202318输入输入_第五类:第五类:n输入是一整行的字符串的参见:HDOJ_10481/16/202319本类输入解

6、决方案:本类输入解决方案:nC语法:charbuf20;gets(buf);nC+语法:如果用stringbuf;来保存:getline(cin,buf);如果用charbuf255;来保存:cin.getline(buf,255);1/16/202320说明(说明(5_1):):nscanf(“%s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔;n若使用gets函数,应为gets(str1);gets(str2);字符串之间用回车符作分隔。n通常情况下,接受短字符用scanf函数,接受长字符用gets函数。n而getchar函数每次只接受一个字符,经常c=getchar(

7、)这样来使用。1/16/202321说明说明(5_2)(5_2):cin.getlinecin.getline的用法:的用法:ngetline是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:istream&getline(charline,intsize,charendchar=n);n不用管它的返回类型,来关心它的三个参数:ncharline:就是一个字符数组,用户输入的内容将存入在该数组内。nintsize:最多接受几个字符?用户超过size的输入都将不被接受。ncharendchar:当用户输入endchar指定的字符

8、时,自动结束。默认是回车符。1/16/202322说明说明(5_2)(5_2)续续n结合后两个参数,getline可以方便地实现:用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。ncharname4;ncin.getline(name,4,n);n由于endchar默认已经是n,所以后面那行也可以写成:ncin.getline(name,4);1/16/202323思考:思考:n以下题目属于哪一类输入?以下题目属于哪一类输入?nhttp:/=10131/16/202324输出输出_第一类:第一类:n一个InputBlock对应一个O

9、utputBlock,OutputBlock之间没有没有空行。参见:HDOJ_1089nhttp:/=10891/16/202325解决方案:解决方案:nC语法:.printf(%dn,ans);nC+语法:.coutansendl;1/16/202326输出输出_第二类:第二类:n一个InputBlock对应一个OutputBlock,每个OutputBlock之后都有空行。参见:HDOJ_1095nhttp:/=10951/16/20232710951095源代码源代码#includeintmain()inta,b;while(scanf(%d%d,&a,&b)!=EOF)printf(%

10、dnn,a+b);1/16/202328解决办法:解决办法:nC语法:.printf(%dnn,ans);nC+语法:.coutansendlendl;1/16/202329输出输出_第三类:第三类:n一个InputBlock对应一个OutputBlock,OutputBlock之间有有空行。参见:HDOJ_10961/16/2023301096源代码源代码n#includenintmain()nninticase,n,i,j,a,sum;nscanf(%d,&icase);nfor(i=0;iicase;i+)nnsum=0;nscanf(%d,&n);nfor(j=0;jn;j+)nnsc

11、anf(%d,&a);nsum+=a;nnif(iicase-1)nprintf(%dnn,sum);nelsenprintf(%dn,sum);nn1/16/202331解决办法:解决办法:nC语法:for(k=0;kcount;k+)while()printf(%dn,result);if(k!=count-1)printf(n);nC+语法:类似,输出语句换一下即可。1/16/202332思考:思考:n以下题目属于哪一类输出?以下题目属于哪一类输出?nhttp:/=10171/16/202333附附:初学者常见问题初学者常见问题1/16/202334一、编译错误一、编译错误nMain函数

12、必须返回int类型(正式比赛)n不要在for语句中定义类型n_int64不支持,可以用longlong代替n使用了汉语的标点符号nitoa不是ansi函数能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数intnum=100;charstr25;sprintf(str,%d,num);n另外,拷贝程序容易产生错误1/16/202335下面的下面的hdoj1089hdoj1089为什么为什么 CE?CE?#includeintmain()inta,b;while(scanf(%d%d,&a,&b)!=EOF)printf(%dn,a+b);1/16/202336二、小技

13、巧二、小技巧n数据的拷贝(特别是输出的提示信息)n调试的sampleinput的拷贝1/16/202337三、三、C语言处理语言处理“混合数据混合数据”的问题的问题1/16/202338常见的代码:常见的代码:nnscanf(%dn,&icase);nfor(i=0;i总结-练习-总结-n杭电ACM论坛ngoogle、baidu1/16/2023411/16/202342常见问题:常见问题:1、需要什么基础?(C/C+)4、可以退课吗?(Ofcourse!)3、如何加入集训队、如何加入集训队?2、英语不好怎么办?(问题不大)1/16/202343课后任务:课后任务:1 1、熟悉、熟悉2 2、完成以上提到的在线练习:、完成以上提到的在线练习:3 3、学有余力,可以尝试下面题目、学有余力,可以尝试下面题目:1016-10181016-1018、10131013、1061 1061 11701170、2000-20432000-20431/16/202344Thank Thank You You 1/16/202345

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁