《第1章---初识C++语言(C++版).ppt》由会员分享,可在线阅读,更多相关《第1章---初识C++语言(C++版).ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机编程入门第一讲第一讲 认识程序与认识程序与C+C+一、什么是程序一、什么是程序问题:我想吃一盘辣椒炒肉问题:我想吃一盘辣椒炒肉怎么样才能烹饪出“辣椒炒肉”呢?放油放肉下锅炒放辣椒起锅翻炒一段时间放盐,味精,酱油指令指令程序程序指令:能完成某指令:能完成某一个简单功能一个简单功能的的操作命令操作命令。程序:能完成某一特定任务的程序:能完成某一特定任务的指令序列指令序列。软件:程序的总和(游戏)。软件:程序的总和(游戏)。它们都是用一定的程序设计语言编写出来的。它们都是用一定的程序设计语言编写出来的。二、什么是二、什么是程序设计语言程序设计语言交流交流人和计算机间通讯所用的语言人和计算机间通
2、讯所用的语言程序设计语言程序设计语言特点:语法规则很严密特点:语法规则很严密三、程序设计语言的分类三、程序设计语言的分类总体上可以把它们分为三类:总体上可以把它们分为三类:机器语言,汇编语言,高级语言。机器语言,汇编语言,高级语言。机器语言汇编语言高级语言10110100ADDFOR四、计算机的组成四、计算机的组成运算器控制器存储器存储器输入设备输出设备CPUCPU的型号说明的型号说明例:例:CPU的型号为奔腾的型号为奔腾4/1.80GHZ 奔腾奔腾2/166M时钟频率为时钟频率为1.80*1024*1024*1024,即每秒钟运算,即每秒钟运算1.80*1024*1024*1024次。次。C
3、PU的的时钟频率(主频)时钟频率(主频)越高,越高,CPU的速度越快。的速度越快。计算机的数据存储单位计算机的数据存储单位1byte=8bit1K=1024byte(字节)字节)1M=1024K1G=1024M1T=1024G问题:一个光盘可以存储多少个汉字问题:一个光盘可以存储多少个汉字提示:一个汉字占两个字节提示:一个汉字占两个字节计算思考题计算思考题硬币问题:有硬币问题:有9 9个硬币,其中有一个是假币,假币的重量要比真币的重量重一些,现给你一个天平,个硬币,其中有一个是假币,假币的重量要比真币的重量重一些,现给你一个天平,问最少秤多少次,最少秤多少次能分别出假币?问最少秤多少次,最少秤
4、多少次能分别出假币?燃绳问题:烧一根均匀的绳,从头烧到尾总共需要燃绳问题:烧一根均匀的绳,从头烧到尾总共需要1 1小时。现在有若干条材质相同的绳子,问如小时。现在有若干条材质相同的绳子,问如何用烧绳的方法何用烧绳的方法(不能折叠)(不能折叠)来计时一个小时十五分钟来计时一个小时十五分钟?你让工人为你工作你让工人为你工作7 7天,给工人的回报是一根金条,金条平均成相连的天,给工人的回报是一根金条,金条平均成相连的7 7段,你必须在每天结束段,你必须在每天结束时给他们一段金条,如果只允许你两次把金条弄断,你如何给你的工人付费?时给他们一段金条,如果只允许你两次把金条弄断,你如何给你的工人付费?有有
5、N N个数,所有的数都是大小不超过个数,所有的数都是大小不超过N-1N-1的正整数。假设的正整数。假设N N个数中有个数中有1 1个数是重复的,请你用最简个数是重复的,请你用最简捷的方法(即最不费时费力的方法)找出重复的那个数。请你写出你的方法和步骤。捷的方法(即最不费时费力的方法)找出重复的那个数。请你写出你的方法和步骤。第一章第一章 初识初识C+C+语言语言 第一节C+语言简介 第二节C+语言程序结构第一节C+语言简介信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力,选手首先应针对竞赛题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后编写出计算
6、机能够执行的程序。程序设计是信息学竞赛的基本功,选手参与竞赛活动的第一步是熟练掌握一门程序设计语言,目前竞赛中允许使用的程序设计语言有C语言、C+语言、Pascal。C+C+语言概述语言概述 C+由美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C+是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。今天C+已成为世界主流编程语言之一。C+C+语言的特点语言的特点 语言简洁紧凑,使用灵活方便C+语言一共只有32个关键字和9种控制语句,程序书写自由,主要用小写字母表示。运算符丰富
7、C+语言的运算符包含的范围很广泛,共有34个运算符。数据结构丰富C+语言的数据类型有:整型、实型、字符型、数组类型等等结构化语言结构化语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。生成的代码质量高C+语言在代码效率方面可以和汇编语言相媲美。可移植性强C+语言编写的程序很容易进行移植,在一个环境下运行的程序不加修改或少许修改就可以在完全不同的环境下运行。C+C+程序结构程序结构 在介绍C+语言程序的结构之前,我们先来看一个简单的例子:例1.1 在屏幕上输出“Hello World!”。#include /使用cin,cout,须调用iostream 库,否则编
8、译出错#include /使用system()调用cstdlib库using namespace std;/在C语言中要省略,例如在VC+和TC+中int main()/有的C语言可用void main(),例如TC+和VC+coutHello World!endl;/输出Hello World!system(“pause”);/暂停作用,使用system(pause)调用cstdlib库return 0;/结束整个程序运行结果:Hello World!【说明说明说明说明】:1 1、以、以、以、以“/”/”开头为注释行开头为注释行开头为注释行开头为注释行,“/”后的内容用以对语句进行说明,输入
9、程序时可以不输入。2 2、#include#include告诉编译器的预处理器将输入输出流的标准头文件(iostream)包括在本程序中。这个头文件包括了C+中定义的基本标准输入输出程序库的声明。3 3、using namespace stdusing namespace std使用std(标准)名字空间的意思。所谓的名字空间是标准C+中的一种机制,用来控制不同类库的冲突问题。使用它可以在不同的空间内使用相同名字的类或者函数。4 4、int main()int main()这一行为主函数(main function)的起始声明。main()是所有C+程序的运行的起始点。不管它是在代码的开头,结
10、尾还是中间,此函数中的代码总是在程序开始运行时第一个被执行此函数中的代码总是在程序开始运行时第一个被执行。所有C+程序都必须有一个main(),int main()前int在Dev C+中可省略,在TC+和VC+中最好保留。main后面跟了一对圆括号(),表示它是一个函数。C+中所有函数都跟有一对圆括号(),括号中可以有一些输入参数。注意,圆括号中即使什么都没有也不能省略圆括号中即使什么都没有也不能省略。如例题中显示,主函数main()中的内容,由一对花括号 括起来。5 5、cout Hello World!endlcout Hello World!endl这个语句在本程序中最重要。cout是
11、一个输出语句,告诉计算机把引号之间的字符串送到标准的输出设备(屏幕)上。cout 的声明在头文件iostream中,所以要想使用cout 必须将头文件iostream包括在程序开始处。endl是C+语言的换行控制符,表示内容输出后换行显示后续的内容。6 6、system(pause)system(pause)在4.99以前版本的Dev-C+环境下,为了查看程序运行结果,需要在main函数的return 0语句前加上:system(pause);这样程序运行到该语句时,结果显示屏幕将会停留,让大家有时间看程序的输出结果,否则结果显示屏幕将会一闪而过。在4.99之后的版本可不必加该语句,运行结束后
12、结果显示屏幕将自动停留。7 7、return 0return 0主函数main()的返回语句,一般是函数的最后一条可执行语句。main()函数末尾使用return语句时,数值0表示程序顺利结束,其他数表示有异常。在后面的例子中你会看到C+程序都以类似的语句结束。在C+中,语句的分隔是以分号“;”为分隔符的,分行写代码只是为了更方便人阅读。C+语言编译软件的使用Dev-C+是一个可视化集成开发环境,可以用此软件实现C/C程序的编辑、预处理/编译/链接、运行和调试。现在介绍Dev-C+常用的一些基本操作,每一位同学都要掌握。一个程序从编写到最后得到运行结果要经历以下一些步骤。1.用C+语言编写程序
13、用高级语言编写的程序称为“源程序”(source program)。C+的源程序是以.cpp作为后缀的(cpp是c plus plus 的缩写)。2.对源程序进行编译为了使计算机能执行高级语言源程序,必须先用一种称为“编译器(complier)”的软件(也称编译程序或编译系统),把源程序翻把源程序翻译成二进制形式的译成二进制形式的“目标程序(目标程序(object programobject program)”。编译是以源程序文件为单位分别编译的。目标程序一般以.obj或.o作为后缀(object 的缩写)。编译的作用是对源程序进行词法检查和语法检查。编译时对文件中的全部内容进行检查,编译结束
14、后会显示出所有的编译出错信息。一般编译系统给出的出错信息分为两种,一种是错误(error);一种是警告(warning)。3.3.将目标文件连接将目标文件连接在改正所有的错误并全部通过编译后,得到一个或多个目标文件。此时要用系统提供的“连接程序(linker)”将一个程序的所有目标程序和系统的库文件以及系统提供的其他信息连接起来,最终形成一个可执行的二进制文件,它的后缀是.exe,是可以直接执行的。4.运行程序 运行最终形成的可执行的二进制文件(.exe文件),得到运行结果。5.分析运行结果如果运行结果不正确,应检查程序或算法是否有问题。调调试试课后思考题:课后思考题:有一个牧场,牧场上的牧草
15、每天都在匀速有一个牧场,牧场上的牧草每天都在匀速生长,这片牧场可供生长,这片牧场可供1515头牛吃头牛吃2020天,或可天,或可供供2020头牛吃头牛吃1010天,那么,这片牧场每天新天,那么,这片牧场每天新生的草量可供几头牛吃生的草量可供几头牛吃1 1天?天?第二节第二节C+C+语言程序结构语言程序结构无论做任何事情,都要有一定的方式方法与处理步骤,所谓“无规矩无以成方圆”。计算机程序设计比日常生活中的事务处理更具有严谨性、规范性和可行性。为了使计算机有效地解决实际问题,必须将处理步骤编排好,用计算机能理解的计算机语言编写成“序列”,让计算机自动识别并执行这个“序列”,达到解决实际问题的目的
16、。将处理问题的步骤编排好,用计算机语言组成序列,就是常说的编写程序。在C+语言中,执行每条语句都是由计算机完成相应的具体操作,编写程序是利用C+语句的功能来实现预定的处理要求。“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。在学习C+语言之前,让我们绕过那些繁琐的语法规则细节,通过一些简单的例题,来熟悉程序的基本组成和基本语句的用法,选手刚接触编程时,多动手模仿是一条捷径。例例1.2 在梯形中阴影部分面积是在梯形中阴影部分面积是150平方厘米,求梯形面积。平方厘米,求梯形面积。【分析】【分析】已知梯形上、下底长为已知梯形上、下底长为15和和25。令梯形的高为。令梯形的高
17、为h,则由已知三角形面积为,则由已知三角形面积为150平方厘米,有平方厘米,有150(15*h)/2,得,得h为为20,然后根据梯形面积公式算出梯形面积。程序如下:,然后根据梯形面积公式算出梯形面积。程序如下:#include /printf和scanf调用cstdio库,在C语言中可调用stdio.h库#include /使用system()调用cstdlib库using namespace std;/在C语言中要省略,例如在VC+和TC+中int main()/有的C语言可用void main(),例如TC+和VC+/整个程序开始 float s,h,up,down;/float定义s,h
18、,up,down为单精度实型变量 up=15;/已知上底 down=25;/已知下底 h=2*150/up;/根据上底求出梯形的高 s=(up+down)*h/2;/求出梯形的面积 printf(“s=%0.2fn”,s);/n是换行控制符,0.2f按实际位数输出,保留2位小数 system(“pause”);/暂停作用,TC+和VC+中使用system()调用stdlib.h库 return 0;/结束程序,在TC+和VC+中也要保留运行结果:s=400.00例例1.3 1.3 已知一位小朋友的电影票价是已知一位小朋友的电影票价是1010元,计算元,计算x x位小朋友的总票价是多少?位小朋友
19、的总票价是多少?【分析】假设总票价用y来表示,则这个问题可以用以下几个步骤来实现:输入小朋友的数目x;用公式y=10*x计算总票价;输出总票价y的值。程序如下:#include /使用cin,cout,须调用iostream库using namespace std;int main()int x,y;/定义整型变量 coutx;/小朋友的人数 y=10*x;/计算总票价 cout“total=”yendl;/输出总票价 return 0;/结束程序【说明二】:1、int定义x,y为整型变量,有关整型变量将在第二章详细介绍。2、coutx的作用是输入一个数,赋予变量x。4、couttotal=y
20、endl的作用是输出提示符total=,输出y的值,endl是换行的意思。【说明一】:所谓namespace,是指标识符的各种可见范围。C+标准程序库中的所有标识符都被定义于一个名为std的namespace中。当使用时,相当于在C中调用库函数,使用的是全局命名空间,也就是早期的C+实现;当使用的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout、cin和endl。通过以上例1.2和例1.3两个例子,可以总结出C+语言程序的结构如下:1)C+语言变量在使用之前必须先定义其数据类型,未经定义的变量不能使用。2)程序由一个或多个函数组成,一个程序中必须
21、有且只有一个主函数,主函数的名字为main。不论main()函数在程序中什么位置,程序都是从main()函数开始执行,main()函数执行完毕,程序也就结束了。3)在程序中可以调用系统提供的库函数。在调用库函数之前,必须将相应头文件包含在程序中。4)程序中可以有注释行。注释是为了使程序更易于理解和提示。5)程序的语句以分号结束。分号是C+语言不可缺少的组成部分。6)程序的书写要注意适当的缩进,一般采用“逐层缩进”形式,以便使程序更加清晰易读。把处理问题的步骤编成能从上到下顺序执行的程序,是简单程序的基本特征。再来分析下面一道例题的程序结构,同时继续学习基本语句。例1.4 有一个牧场,牧场上的牧
22、草每天都在匀速生长,这片牧场可供15头牛吃20天,或可供20头牛吃10天,那么,这片牧场每天新生的草量可供几头牛吃1天?【分析】解决这类问题的关键是利用牛吃的草量,最终求出这片牧场每天新生长的草量,我们设1单位的草量为1头牛1天所需的草量,于是15头牛20天所食的草量为300单位(包括这20天内的新生草量),20头牛10天所食的草量为200单位(包括这10天内的新生草量),两者的差值即为10天内的新生草量。程序如下:#include /使用cin,cout,须调用iostream库using namespace std;int main()int s1,s2,s3;/变量定义 s1=15*20
23、;/15头牛20天所食的草量 s2=20*10;/20头牛10天所食的草量 s3=(s1-s2)/(20-10);/每天新生的草量单位数 couts=s3endl;/1单位为1头牛1天的食量 return 0;/结束程序 运行结果:s=10例1.5 给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。#程序如下:#include /使用cin,cout,须调用iostream库using namespace std;int main()char a;/定义字符变量,cina;/输入给定一个字符cout aendl;/输出1个字符,先输出2个空格cout aaaendl;/输出
24、3个字符,先输出1个空格coutaaaaaendl;/输出5个字符return 0;/结束程序【Dev C+版本注意事项】在5.0版本Dev C+中,不是万能库,不包括cstdio,cstring,cstdlib,其他常用的min,max函数也不保证包括,需要注意如下几个细节:、getchar(),stdin,stdout,freopen(),fclose(),scanf()在c+中需要调用 、memset()需要包含C头文件,在c+中需要调用 、qsort(),exit()需要包含C头文件,在c+中需要调用 在5.0版本C+中,根据标准去除了iostream对cstdio,cstring,a
25、lgorithm的依赖性,需要显式包括。你现在还可能不透彻理解以上注意事项,就慢慢消化吧,在信息学奥赛中一定要注意以上细节,请记住:“细节决定成败”。【上机练习上机练习】1.Hello,World!【1.1编程基础之输入输出01】编写一个能够输出“Hello,World!”的程序,这个程序常常作为一个初学者接触一门新的编程语言所写的第一个程序,也经常用来测试开发、编译环境是否能够正常工作。输入:无。输出:一行,仅包含一个字符串:“Hello,World!”样例输入:(无)样例输出:Hello,World!【上机练习上机练习】2.输出第二个整数【1.1编程基础之输入输出02】输入三个整数,整数之
26、间由一个空格分隔,整数是32位有符号整数。把第二个输入的整数输出。输入:只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。输出:只有一行,一个整数,即输入的第二个整数。样例输入:123 456 789样例输出:456【上机练习上机练习】3.对齐输出【1.1编程基础之输入输出03】读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们,按照格式要求依次输出三个整数,之间以一个空格分开。输入:只有一行,包含三个整数,整数之间以一个空格分开。输出:只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。样例输入:123456789 0-1样例输出:123456789 0 -
27、1【上机练习上机练习】4.字符三角形【1.1编程基础之输入输出08】给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。输入:输入只有一行,包含一个字符。输出:该字符构成的等腰三角形,底边长5个字符,高3个字符。样例输入:*样例输出:*【上机练习上机练习】5.地球人口承载力估计【小学奥数7653】假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?输入:一行,包括四个正整数x,a,y,b,两个整数之间用单个空格隔开。xy,ab,axby,各整数均不大于10000输出:一个实数z,表示地球最多养活z亿人,舍入到小数点后两位。样例输入:110 90 90 210样例输出:75.00