《小学信息学竞赛C+编程信息学校本教材+讲解+练习》由会员分享,可在线阅读,更多相关《小学信息学竞赛C+编程信息学校本教材+讲解+练习(143页珍藏版)》请在金锄头文库上搜索。
1、小学信息学竞赛C+编程信息学校本教材创作: Z J【可编辑】【附竞赛原题讲解】目 录第一部分 我的新朋友1第1课 奇怪的电脑2第2课 购买电影票4第3课 建一座金字塔7第二部分 独木小桥顺序过9第1课 一碗水和一碗油10第2课 计算表面积的神器12第3课 小朋友的平均年龄14第4课 数字的拆分16阅读材料:其它运算符18第5课 可怕的传染病19阅读材料:常量21第6课 卡卡的难题22第7课 匪夷所思的结果24第8课 加密的文字26阅读:数据类型转换28第9课 格式化输入输出29第三部分 是真是假做选择32第1课 奇数偶数我知道33第2课 这不是考试的成绩35第3课 这次考试我通过了36第4课
2、麻烦的火车托运38综合练习41第四部分 省时省力的循环46第1课 快速输出法47第2课 这种计算方法真快49第3课 循环与分支的结合50第4课 什么是素数51第5课 无从下手的输入53第6课 辗转相除法54综合练习55第7课 堆出一个三角形57第8课 阶乘之和59第9课 100-200以内的素数60第五部分 太多的变量62第1课 还是交换苹果63综合练习65第2课 开关灯问题67第3课 约瑟夫问题69第4课 排序问题(选择排序)71第5课 排序问题(冒泡排序)73第6课 判断回文数75综合练习77阅读:二维数组79第六部分 重复使用语句块81第1课 函数的准备知识82第2课 再谈变量值的交换1
3、85第3课 再谈变量值的交换286第4课 最大公约数88第5课 省力的排序90阅读:全局变量和局部变量91第6课 你植了多少棵树93综合练习95第3课递归算法97第七部分 多个变量捆绑一起100第1课 结构体变量101第2课 结构体数组104第八部分 文件操作114第九部分 常见算法1181、桶排序1182、排序与去重1203、模拟算法1224、贪心算法1245、动态规划(背包问题)1256、动态规划1317、高精度算法134 3上派西校区校本教材第九部分 常见算法第一部分 我的新朋友C+语言简介信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力,选手首先应针
4、对竞赛题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后编写出计算机能够执行的程序。程序设计是信息学竞赛的基本功,选手参与竞赛活动的第一步是熟练掌握一门程序设计语言,目前竞赛中允许使用的程序设计语言有C语言、C+语言、Pascal。C+由美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。今天C+已成为世界主流编程语言之一。C+ 语言的特点:(1)语言简洁紧凑,使用灵活方便;(2)运算符丰富;(3)数据结构丰富;(4
5、)结构化语言;(5)生成的代码质量高(6)可移植性强。第1课 奇怪的电脑卡卡,你好!卡卡的电脑上多出了一个文件,打开一看,电脑屏幕上出现了几个字“卡卡,你好!”,真奇怪,这是怎么做到的?一定是西西弄的,西西可是电脑高手。西西说,这是他用C+写的一个小程序。例1 在屏幕上输出“Hello World!”。代码注释备注#include/调用iostream 库头文件部分using namespace std;/使用std命名空间int main()/int类型的主函数主函数部分包括:int main( ) coutHello World!;/输出Hello World!return 0;/返回值0
6、,结束整个程序/主函数结尾运行结果:Hello World!在此程序中包括头文件、注释、主函数、输出、返回值等部分,有时根据需要还可能有输入、子函数等部分。 “这也太难了吧!”卡卡说。西西:“其实一下子让你明白这么多很不容易,但是你不必太在意, 你只要把你想让电脑说的话,写在引号里面就好了。”卡卡说:“以后多教教我,我也要学习C+。”做一做填空:(1)c+语句,除了少数几个地方,每句话以_结尾;(逗号、句号、分号) (2)调用库在_(尖括号、小括号)内;(3)main后面有一对_后面再一对_(小括号、大括号);(4)cout后面的符号是“_”;()(5)C+语句中所有字符和符号均为_(中文、英
7、文)。(6)C+程序通常有_、 _、 _、 _、 _等部分。做一做试着写一个C+程序,输出:“卡卡,你好!”。第2课 购买电影票电影院出了新电影,明天正好是周末,可以一饱眼福了,卡卡邀请了几个好朋友去看电影,电影票每张10元,他该准备多少电影票钱呢?在例1中,输出的内容是不用计算的,其实C+程序还具有处理数学计算的功能呢!例2已知一位小朋友的电影票价是10元,计算x位小朋友的总票价是多少?解题:卡卡想每张票是10元,那么x位小朋友就是10*x元,虽然他知道怎么算电影票钱,可是程序该怎么写呢?卡卡请教了西西。西西操作如下:1(1)打开Dev-C+软件;2(2)文件新建源代码;(3)写入代码,然后
8、保存在桌面;43(4)然后点编译、运行;5(5)对程序进行了测试和调试。#includeusing namespace std;int main()int x,s;/定义x和s两个整数变量,其中x表示小朋友的位数,s表示总票价cinx;/输入小朋友的位数,存放在变量x中s=10*x;/计算总票价存放于s中,总票价=单张票价小朋友的位数cout”,细心的同学可能发现cin与cout后面的符号正好相反。使用C+编程大致有以下环节:(1)启动开发环境;(2)新建源程序;(3)保存源程序到硬盘;(4)编译、运行;(5)调试程序。这个内容有点烧脑了,卡卡认真的把这个程序看了几遍,一遍看代码一边读西西给的
9、注释,“有点明白了”卡卡说,“但是输入是什么意思啊?”输入就是你告诉电脑有几位小朋友,不过是通过键盘打入数字告诉电脑的,西西说完给卡卡留了一道难题。我正想去看电影呢做一做填空:使用Dev_C+编程大致有以下几个环节:(1)_;(2)_;(3)_;(4)_;(5)_。做一做有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供15头牛吃20天,或可供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃1天?输出你的计算结果。第3课 建一座金字塔电影结束了,给卡卡留下最深的印象就是壮观的金字塔,我回家也要用C+,在电脑上造一座金字塔。例2中C+程序处理了数学的计算,其实C+还可以处理字符。例
10、3给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。例如给定的字符是“#”那么输出:#解题:#include using namespace std;int main()char a; /定义字符变量,cina; /输入给定一个字符cout aendl; /输出2个空格、1个字符和换行cout aaaendl; /输出1个空格、3个字符和换行coutaaaaa;的功能是_;而couta;的功能是_。做一做用指定的字符输出一个三角形,如给定字符“+”,则输出:+第二部分 独木小桥顺序过每条语句按自上而下的顺序依次执行一次,这种自上而下依次执行的程序称为顺序结构程序。要学好顺序
11、结构程序设计,先要学习C+语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。本部分内容主要介绍赋值语句、运算符、变量与常量、输入与输出、数据类型等内容。第1课 一碗水和一碗油例4数值交换,输入两个正整数a和b,试交换a、b的值(使a的值等于b,b的值等于a)。一碗水和一碗油,怎么把水和油换到对方的碗里面呢?答案是借助第三只碗。所以我们这里交换a和b的值,借助第三个变量c。解题:#include using namespace std;int main()int a,b,c; /先定义三个变量cinab; /分别输入a、b的值c=a;/先将a赋值给c(c相当于空碗),暂时存起来a=b;
12、/再把b赋值给ab=c; /最后把暂存在c的数据赋值给bcouta b; /输出a、空格、breturn 0;测试:输入3 5输出5 3。此方法后面还有用到,同学们要能领会。试一试把c赋值给b以后,c是多少了?猜猜看,然后把coutc;加入到程序中验证下你的猜想。赋值语句简单的说就是给变量具体的值,这个值可以直接给,也可以间接算出来,是由赋值表达式再加上分号构成的表达式语句。赋值语句语法:变量=表达式;(1)赋值运算符“=”右边的表达式还可以是赋值表达式,例如,“a=b=c=d=e=5;”。(2)在进行赋值运算时,先计算等号右边的值,再将值赋给左边的变量,如果类型不同会更改类型后赋值。Z j做一做观看下面代码,推算结果:a=1;b=2;a=b;b=a;结果:a=_、b=_。做一做现在有5个小朋友围成一圈,已知各小朋友的苹果数(输入),每位小朋友把自己的苹果给他右边的小朋