ACM第01讲A竞赛入门.ppt

上传人:牧羊曲112 文档编号:6501232 上传时间:2023-11-07 格式:PPT 页数:45 大小:800KB
返回 下载 相关 举报
ACM第01讲A竞赛入门.ppt_第1页
第1页 / 共45页
ACM第01讲A竞赛入门.ppt_第2页
第2页 / 共45页
ACM第01讲A竞赛入门.ppt_第3页
第3页 / 共45页
ACM第01讲A竞赛入门.ppt_第4页
第4页 / 共45页
ACM第01讲A竞赛入门.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《ACM第01讲A竞赛入门.ppt》由会员分享,可在线阅读,更多相关《ACM第01讲A竞赛入门.ppt(45页珍藏版)》请在三一办公上搜索。

1、2023/11/7,1,ACM程序设计竞赛,2023/11/7,2,第一讲,ACM入门(Introduction to ACM),2023/11/7,3,如何入门呢?,2023/11/7,4,ACM题目特点:,由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。下面,分类介绍:,2023/11/7,5,先看一个超级简单的题目:,http:/=1089Sample input:1 510 20Sample output:630,2023/11/7,6,初学者很常见的一种写法:,#inclu

2、devoid main()int a,b;scanf(“%d%d”,2023/11/7,7,有什么问题呢?,这就是下面需要解决的问题,2023/11/7,8,基本输入输出 输入_第一类:,输入不说明有多少个Input Block,以EOF为结束标志。参见:HDOJ_1089http:/=1089,2023/11/7,9,Hdoj_1089源代码:,#include int main()int a,b;while(scanf(%d%d,2023/11/7,10,本类输入解决方案:,C语法:while(scanf(%d%d,&a,&b)!=EOF).C+语法:while(cin a b).,202

3、3/11/7,11,说明(1):,Scanf函数返回值就是读出的变量个数,如:scanf(“%d%d”,如果只有一个整数输入,返回值是1,如果有两个整数输入,返回值是2,如果一个都没有,则返回值是-1。EOF是一个预定义的常量,等于-1。,2023/11/7,12,输入_第二类:,输入一开始就会说有N个Input Block,下面接着是N个Input Block。参见:HDOJ_1090 http:/=1090,2023/11/7,13,Hdoj_1090源代码:,#include int main()int n,i,a,b;scanf(%d,2023/11/7,14,本类输入解决方案:,C语

4、法:scanf(%d,i+).,2023/11/7,15,输入_第三类:,输入不说明有多少个Input Block,但以某个特殊输入为结束标志。参见:HDOJ_1091 http:/=1091,2023/11/7,16,Hdoj_1091源代码:,#include int main()int a,b;while(scanf(%d%d,2023/11/7,17,本类输入解决方案:,C语法:while(scanf(%d,&n)&n!=0).C+语法:while(cin n&n!=0).,2023/11/7,18,输入_第四类:,以上几种情况的组合,2023/11/7,19,输入_第五类:,输入是一

5、整行的字符串的参见:HDOJ_1048,2023/11/7,20,本类输入解决方案:,C语法:char buf20;gets(buf);C+语法:如果用string buf;来保存:getline(cin,buf);如果用char buf 255;来保存:cin.getline(buf,255);,2023/11/7,21,说明(5_1):,scanf(“%s%s”,str1,str2),在多个字符串之间用一个或多个空格分隔;若使用gets函数,应为gets(str1);gets(str2);字符串之间用回车符作分隔。通常情况下,接受短字符用scanf函数,接受长字符用gets函数。而getc

6、har函数每次只接受一个字符,经常c=getchar()这样来使用。,2023/11/7,22,说明(5_2):cin.getline的用法:,getline 是一个函数,它可以接受用户的输入的字符,直到已达指定个数,或者用户输入了特定的字符。它的函数声明形式(函数原型)如下:istream不用管它的返回类型,来关心它的三个参数:char line:就是一个字符数组,用户输入的内容将存入在该数组内。int size:最多接受几个字符?用户超过size的输入都将不被接受。char endchar:当用户输入endchar指定的字符时,自动结束。默认是回车符。,2023/11/7,23,说明(5_

7、2)续,结合后两个参数,getline可以方便地实现:用户最多输入指定个数的字符,如果超过,则仅指定个数的前面字符有效,如果没有超过,则用户可以通过回车来结束输入。char name4;cin.getline(name,4,n);由于 endchar 默认已经是 n,所以后面那行也可以写成:cin.getline(name,4);,2023/11/7,24,思考:,以下题目属于哪一类输入?http:/=1013,2023/11/7,25,输出_第一类:,一个Input Block对应一个Output Block,Output Block之间没有空行。参见:HDOJ_1089http:/=108

8、9,2023/11/7,26,解决方案:,C语法:.printf(%dn,ans);C+语法:.cout ans endl;,2023/11/7,27,输出_第二类:,一个Input Block对应一个Output Block,每个Output Block之后都有空行。参见:HDOJ_1095 http:/=1095,2023/11/7,28,1095源代码,#include int main()int a,b;while(scanf(%d%d,2023/11/7,29,解决办法:,C语法:.printf(%dnn,ans);C+语法:.cout ans endl endl;,2023/11/

9、7,30,输出_第三类:,一个Input Block对应一个Output Block,Output Block之间有空行。参见:HDOJ_1096,2023/11/7,31,1096源代码,#include int main()int icase,n,i,j,a,sum;scanf(%d,2023/11/7,32,解决办法:,C语法:for(k=0;kcount;k+)while()printf(%dn,result);if(k!=count-1)printf(n);C+语法:类似,输出语句换一下即可。,2023/11/7,33,思考:,以下题目属于哪一类输出?http:/=1017,2023

10、/11/7,34,附:,初学者常见问题,2023/11/7,35,一、编译错误,Main函数必须返回int类型(正式比赛)不要在for语句中定义类型_int64不支持,可以用long long代替使用了汉语的标点符号itoa不是ansi函数 能将整数转换为字符串而且与ANSI标准兼容的方法是使用sprintf()函数 int num=100;char str25;sprintf(str,%d,num);另外,拷贝程序容易产生错误,2023/11/7,36,下面的hdoj1089为什么 CE?,#include int main()int a,b;while(scanf(%d%d,2023/11

11、/7,37,二、小技巧,数据的拷贝(特别是输出的提示信息)调试的sample input的拷贝,2023/11/7,38,三、C语言处理“混合数据”的问题,2023/11/7,39,常见的代码:,scanf(%dn,2023/11/7,40,相关资料,2023/11/7,41,学习方式,练习-总结-练习-总结-杭电ACM论坛 google、baidu,2023/11/7,42,2023/11/7,43,常见问题:,1、需要什么基础?(C/C+),4、可以退课吗?(Of course!),3、如何加入集训队?,2、英语不好怎么办?(问题不大),2023/11/7,44,课后任务:,1、熟悉2、完成以上提到的在线练习:3、学有余力,可以尝试下面题目:1016-1018、1013、1061 1170、2000-2043,2023/11/7,45,Thank You,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号