c语言程序算法竞赛入门

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

算法竞赛入门第1讲程序设计入门基本内容算术表达式变量及其输入顺序结构程序设计分支结构程序设计数据类型实验scanf输入格式实验printf输出格式实验测测你的实践能力小结上机练习算术表达式程序1.1计算并输出1+2的值实验1,修改程序1.1,输出3-4的结果实验2,修改程序1.1,输出5×6的结果实验3,修改程序1.1,输出8÷4的结果实验4,修改程序1.1,输出8÷5的结果算术表达式程序1.2计算并输出8÷5的值,保留小数点后一位实验5:把%.1lf中的1改成2,会怎样?实验6:去掉数字,只用%lf会怎样?实验7:%.1lf不变,8.0/5.0改为8/5会怎样?实验8:%.1lf改为%d,8.0/5.0不变会怎样?提示1.1:整数值用%d输出,实数用%lf输出提示1.2:整数/整数=整数,浮点数/浮点数=浮点数算术表达式程序1-3复杂的表达式计算问题1:5-0.1的值是什么?问题2:#includemath.h的作用?变量及其输入程序1-4A+B问题提示1-3:scanf中的占位符和变量的数据类型要一一对应,且每个变量前需加&变量及其输入例题1-1圆柱体的表面积输入底面半径r和高h,输出圆柱体表面积,保留3位小数,格式见样例样例输入:3.59样例输出:Area=274.889程序1-5圆柱体的表面积变量及其输入提示1-4:在算法竞赛中,输入前不要打印提示信息。输出完毕后应立即终止程序,不要等待用户按键,因为输入输出过程都是自动的,没有人工干预。提示1-5:在算法竞赛中不要使用头文件conio.h,包括getch()、clrscr()等函数提示1-6:在算法竞赛中,每行输出均应以回车符结束,包括最后一行。除非特别说明,每行行首不要有空格,但行末可以有空格。输出的每两个数或字符串之间应以单个空格隔开。算法竞赛的程序只做三件事:读入数据、计算结果、打印输出。变量及其输入提示1-7:尽量用const关键字声明常数。提示1-8:赋值是个动作,先计算右边的值,再赋给左边的变量,覆盖它原来的值。提示1-9:printf格式字符串中可以包含其他可打印符号,打印时照原样输出。顺序结构程序设计例题1-2三位数反转输入一个三位数,分离出它的百位、十位、个位上的数字,反转后输出。样例输入:127样例输出:721程序1-6三位数反转(1)提示1-10:算法竞赛的题目应当是严密的,各种情况下的输出均应有严格的规定。如果在比赛中发现题目有漏洞,应向相关人员询问,而尽量不要自己随意假定。程序1-7三位数反转(2)顺序结构程序设计例题1-3交换变量输入两个整数a和b,交换二者的值,然后输出样例输入:82416样例输出:16824程序1-8变量交换(1)提示1-11:赋值a=b后,a的值被覆盖,b的值不变顺序结构程序设计程序1-9变量交换(2)提示1-12:交换两个变量的三变量法应用范围广,推荐使用。程序1-10变量交换(3)提示1-13:算法竞赛是在比谁能更好地解决问题,而不是在比谁写的程序看上去更高级。分支结构程序设计例题1-4鸡兔同笼已知鸡和兔的总数为n,总腿数为m。输入m和n,依次输出鸡的数目和兔的数目。如果无解,则输出“Noanswer”(不要引号)样例输入:1432样例输出:122样例输入:1016样例输出:Noanswer分支结构程序设计提示1-14:if语句的基本格式为:if(条件)语句1;else语句2;提示1-15:if语句的条件是一个逻辑表达式,它的值可能真,也可能假提示1-16:C语言中的逻辑运算符都是短路运算符。一旦能够确定整个表达式的值,就不再继续计算。三目运算符:逻辑表达式?表达式1:表达式2;分支结构程序设计例题1-5三整数排序输入3个整数,从小到大排序后输出。样例输入:20733样例输出:72033程序1-12三整数排序(1)(错误)提示1-17:算法竞赛的目标是编程对任意输入均得到正确的结果,而不仅是样例数据。分支结构程序设计程序1-13三整数排序(2)提示1-18:如果有多个并列、情况不交叉的条件需要一一处理,可以用elseif语句。程序1-14三整数排序(3)提示1-19:可以用花括号把一些语句组合成一个整体。这些语句仍然按顺序执行。程序1-15三整数排序(4)提示1-20:在难以一次性求出最后结果时,可以用变量存储“临时结果”,从而逐步更新。数据类型实验实验A1:表达式11111*11111的值是多少?把5个1改为6个1呢?9个1呢?实验A2:把实验A1中的所有数换成浮点数,结果如何?实验A3:表达式sqrt(-10)的值是多少?尝试用各种方法输出。在计算的过程中系统会报错吗?实验A4:表达式1.0/0.0、0.0/0.0的值是多少?尝试用各种方法输出。在计算的过程中系统会报错吗?实验A5:表达式1/0的值是多少?在计算的过程中系统会报错吗?你不必解释背后的原因,但需要注意现象。scanf输入格式实验如果用语句scanf(“%d%d”,&a,&b)来输入两个数,那么这两个数应以怎样的格式输入呢?(提示:输入后可以用printf打印出来,看看打印的结果和输入的结果是否一致)实验B1:在同一行输入12和2,并以空格分隔,是否得到了预期的效果?实验B2:在不同的行输入12和2,是否得到了预期的效果?实验B3:在实验B1和B2中,在12和2的前面和后面加入大量的空格或水平制表符(tab),甚至插入一些空行。实验B4:把2换成字符s,重复实验B1~B3。你不必解释背后的原因,但需要注意现象。printf语句输出实验和上面的实验不同,除了注意现象外,你还需要找到问题的解决方案。实验C1:仅用一条printf语句,打印1+2和3+4的值,用两个空行隔开。实验C2:试着把%d中的两个字符(百分号和小写字母d)输出到屏幕。实验C3:试着把\n中的两个字符(反斜杠和字母n)输出到屏幕。实验C4:象实验C2,C3那样也需要“特殊方法”才能输出的东西还有哪些?哪些是printf函数引起的?哪些不是?测测你的实践能力如何用实验方法确定下面问题的答案?注意不要查书,也不要在网上搜索答案,必须亲手尝试—实践精神是极其重要的。问题1:int型整数的最小值和最大值是多少?需要精确值。问题2:double型浮点数能精确到多少位小数?或者,这个问题本身值得商榷?问题3:double型浮点数最大正数值和最小正数值分别是多少?不必特别精确。问题4:逻辑运算符&&、||和!的相对优先级是怎样的?也就是说,a&&b||c应理解为(a&&b)||c还是a&&(b||c),或者随便怎么理解都可以?问题5:if(a)if(b)x++;elsey++的确切含义是什么?这个else和哪个if配套?有没有办法明确表达出配套方法,以避免初学者为之困惑?初学者的策略重视实验。哪怕不理解背后的道理,至少要清楚现象。学会模仿。把学习实验的焦点集中在最有趣的地方。如果直观的解决方案行得通,就不必追究其背后的机理。如果对一个东西不理解,就不要对它修改;如果非改不可,则应根据自己的直觉和猜测尝试各种改法,而不必过多考虑“为什么要这样”。当有一定的自学和研究能力后,再寻找更多的资料进一步学习一些重要的概念和原理。要想把事情做好,必须学的透彻---但没有必要操之过急。上机练习10.60.11.101/JudgeOnline算法竞赛入门练习一

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功