我们的目的:
建立程序化思维,培养数学问题的计算机求解能力,提高信息技术应用水平,增强自主学习与团队协作学习能力,培养能在青少年信息学奥林匹克竞赛中取得优异成绩的选手。
二、编程训练以不影响文化课学习为前提,需取得父母的支持。
我们这项活动需要长期的兴趣与坚持。要在较长的时间内定时参与学习。所以需要你做到两点: 第一,不影响文化课学习,一定要在学有余力的前提下,把多余的时间用来进行本课程的学习。
第二,取得父母的理解与支持。我们这项活动,是对你的文化课学习、信息技术能力、甚至未来的职业定向都是有帮助的,所以需要你向父母解释清楚:使用电脑是整型 int(-32768—32768)、long(-2147483648—2147483648)
浮点型 float(单精度3.4E-38—3.4E38) double(双精度1.7E-308—1.7 E308) 字符型 char(-128—127) 字符串型 string 布尔型 bool 例:
int a,b;//定义两个整数变量
?//?是注释说明,后面的内容不会被计算机运行 double a,b;// 定义两个实数变量(带小数那种) char a,b;//定义两个字符型变量(用单引号括起来的一个数据,如’a’,’1’,’/’)
string a;// 定义一个字符串型变量(用双引号括起来在编写程序,是在学习,而不是在玩,在打游戏。 程序学习平台 code.org
C++程序设计基础讲解 目录:
第一章 程序的基本概念和语法规则 一、概念
二、程序的四个基本组成部分 三、程序的编写与运行 附录
一、需记忆的英语 二、常见调试错误信息 三、文件的处理
第二章 程序的基本结构 一、顺序结构 二、选择结构 三、循环结构
简单算法与常用技巧 练习
一、看程序写结果 二、专项编程练习 三、综合编程练习
第一节 程序的基本概念与语法规则
一、概念
程序是为了解决某一特定问题,用某一种计算机语言编写的指令序列。
程序设计=算法+程序语言
二、程序的基本组成部分
C++的程序由函数组成,每个程序需要有主函数。 函数内是函数体部分,一个程序的函数体通常可分成常变量说明部分、输入部分、计算部分、输出部分四块儿。 程序的必备部分,也是必背部分: #include
1、常变量说明部分
1)变量:在程序中可以发生变化的量 变量定义格式:
数据类型 变量名1,变量名2,…,变量名n; 基本数据类型:
的一串字符,如?hello, Tom.?)
bool a; // 定义一个布尔型变量(表示逻辑真和逻辑假,只有两个值,1表示真,0表示假)
2)常量:在程序中不可以发生变化的量 常量定义格式:
const 数据类型 常量名; 例:const int a=30;
3)变量和常量的命名规则:
以字母开头,后面由字母、数字或下划线组成,区分大小写(即A和a代表的是两个不同的量)
C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。下面列出的是合法的标识符,也是合法的变量名:
sum, average, total, day, month, Student_name, tan, BASIC, li_ling
在C++中,大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。
在C++语言中,要求对所有用到的变量作强制定义,也就是必须?先定义,后使用?
2、输入部分 输入语句格式:
cin>>变量1>>变量2>>…>>变量名n;
cin语句的执行过程:程序会等待用户从键盘输入对应数目的数据,用户输入完数据并回车后,cin从输入流中取得相应的数据并依次传送给其后的变量。
例:cin>>a>>b;//从键盘读入两个值顺序给变量a和变量b
例1.1 输出一行字符: ?This is a C++ program.?。 程序如下(?//?符号引导的为注释,其后内容是写给人看的,机器不会编译执行其中的内容):
#include
using namespace std; //使用命名空间std,C++标准库(即#include命令行)中的类和函数是在命名空间std中声明
int main( ) //用main代表?主函数?的名字。C++程序必须有一个main函数。main前面的int是声明函数类型为整型
{ //函数体是由大括号{ }括起来的
cout<<″This is a C++ program.″; //cout为c-out两个词组合,<<为插入运算符,合起来为输出语句
1
return 0; //向操作系统返回一个零值。如果程序不能正常执行,则会自动向操作系统返回一个非零值,一般为-1。 }
在运行时会在屏幕上输出以下一行信息: This is a C++ program.
例2.1 将字符赋给整型变量。 #include
{ int i,j; //i和j是整型变量
i=′A′; //将一个字符常量赋给整型变量i
j=′B′; //将一个字符常量赋给整型变量j
cout<
执行时输出 65 66
字符数据在计算机中是以ASCII码存储的,它的存储形式就与整数的存储形式类似。这样,在C++中字符型数据和整型数据之间就可以通用。一个字符数据可以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。’A’的ASCII码为65,’B’为66。
可以看到:在一定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,它只能存放0~255范围内的整数。
例2.2 字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大写字母。 #include
{char c1,c2; //定义c1,c2为字符型数据,ASCII码表中’A’~’Z’排在’a’~’z’的前面,中间还间隔了六个字符 c1=′a′; c2=′b′;
c1=c1-32; //减去32后刚好得到对应的小写字母 c2=c2-32;
cout< 运行结果为 A B 注意:″a″和′a′代表不同的含义,″a″是字符串常量,′a′ 是字符常量。″a″占两个字节,编译系统会在字符串最后自动加一个′\0′作为字符串结束标志。 3、计算部分 1)赋值语句格式 赋值语句:变量名 = 表达式; 注意: ○1?=?左边必须是一个变量名。 ○ 2若? = ? 两边变量类型不同,在赋值时要进行类型转换,转换原则:根据左边变量的类型转换。 例: a=5; a=a+1; 第一句是将5赋给变量a 第二句是将a的值加1后赋给变量a 2)算术表达式 ○ 1算术运算符和算术表达式 算术运算符: + - *(乘) /(除) %(取余) 使用注意: (1) 除%仅用整形外,其余可用于整型和浮点型。+ 和-还可用于字符型。 (2) 整型数相处结果为一个整商。 (3) 字符型可作加减运算。 (4) 运算符的优先级。 算术表达式: 用算术运算符连接起来的式子是算术表达式 两个整数相除结果为整数: 8/4=2 8/5=1 两个浮点数相除结果为浮点数: 8.0/5.0=1.6 整数才可求余,余数的符号与左边数的符号相同。 8%4=0 8%5=3 优先级与结合性 () * / % + - 表达式的书写格式: 数学表达式 合法的C++表达式 a×(-b) a*(-b) ab-cd a*b-c*d 2(b+y/c)+8 2*(b+y/c)+8 x2 +3x+2 x*x+3*x+2 求平方根 sqrt(b*b-4*a*c) 注意: 表达式中的括号只能是() 表达式中的算术运算符不能够省略 例如,下面是一个合法的C++算术表达式: a*b/c-1.5+′a′ 在表达式中常遇到不同类型数据之间进行运算,如 10+′a′+1.5-8765.1234*′b′ 在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换时如下图,由低到高转换。 如10+′a′+1.5,先运算10+′a′,’a’转换为整型,值为97,结果为107,107+1.5,转换为实型double,108.5 在C和C++中,常在表达式中使用自增(++)和自减(--)运算符,他们的作用是使变量的值增1或减1,如 ++i(在使用i之前,先使i的值加1,如果i的原值为 2 3,则执行j=++i后,j的值为4) --i (在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i后,j的值为2) i++ (在使用i之后,使i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,然后i变为4) i--(在使用i之后,使i的值减1,如果i的原值为3,则执行j=i--后,j的值为3,然后i变为2) ++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。 正确地使用++和--,可以使程序简洁、清晰、高效。 ++i:i自增1后再参与其它运算(先增后用)。 --i: i自减1后再参与其它运算(先减后用)。 i++:i先参与运算后,i的值再自增1(先用后增)。 i--: i先参与运算后,i的值再自减1(先用后减)。 例:输入两个整数,输出它们的和。 样例输入:3 6 样例输出:9 #include c=a+b; cout << c < 4、关系运算符 !)种类:6个关系运算符:<、>、<=、>=、==、!=。 前4个运算符优先级高于后2个。 2)使用注意:关系运算符组成的表达式的值是逻辑值。真为1,假为0. 相等运算符是==,不要写成= 5、输出部分 1)输出语句格式: cout<<输出项1<<输出项2<<…<<输出项n; ○ 1?输出项?可以是变量、常量或表达式。 ○ 2由双引号引起来的内容,如不是特殊规定,则是属于字符串类型,引号里面的内容会原样输出。 ○3在cout中,用endl实现输出数据换行 例: a=5; b=6; cout<<5+6< ?<<5*6; cout< 前面两句是赋值语句,给变量a和b赋值 第3句有3个输出项,输出11,空格和30 第4句有2个输出项,输出a*b的值30后输出换行符号 2)指定位数输出 ○1指定浮点数输出位数 例: #include cout< #include cout< 一般可分成常变量说明部分、输入部分、计算部分、输出部分 本题用a来表示第一个整数,b来表示第二个整数,c来存储两个整数的和 cin>>a>>b;是输入部分 c=a+b;是计算部分(除了赋值语句还可能有分支和循环语句) cout << c < 1) 函数的四部分框架不是绝对的,只是为了初学者能够清晰地书写程序。实际的程序可以灵活变通。 2) c++函数体的每一条语句后要加上?;?号 3)system(?pause?);本句的作用是暂停,往往用于观察程序运行的结果 4)return 0; 向主函数返回一个0值,程序一般会向调用函数返回数据,实际编程的时候在主函数中不写该句也不会有问题(在正式比赛时必须写)。 例1.2 求a和b两个数之和。 可以写出以下程序: // 求两数之和 (本行是注释行) #include int main( ) //主函数首部 { //函数体开始 int a,b,sum; //定义变量,定义a,b,sum为整型变量 cin>>a>>b; //输入语句,cin为c-in的组合,>>为提取运算符,运行时等待使用者输入两个数据,分别给a和b sum=a+b; //赋值语句 cout<<″a+b=″< return 0; //如程序正常结束,向操作系统返回一个零值 } //函数结束 如果在运行时从键盘输入 123 456↙ 则输出为 a+b=579 三、程序的编写与运行 程序的编写可以在记事本等文本编辑软件中进行,但一般用专门的IDE(集成开发环境)去进行编辑、编译、运行和调试。 Dev-Cpp是一种Windows下的编写C/C++程序的IDE,bashu.cn网站左下方?资源下载?处点击?更多?,下方的常用软件处有devC++软件可下载。 3 安装后选择Chinese转成中文界面。 1)新建程序文件 上方工具栏的第三个按钮是新建源代码按钮,单击就可新建一个程序文件。 2)常用操作与设置 工具菜单下编辑器属性面板中可进行一些设置提高编辑效率。 ?基本?下将高亮匹配括号打上勾 使用语法加亮打上勾 ?显示?下将行号打上勾 编辑器的字体大小可选到14以上 ?代码?下方有一项缺省源,单击后将下面这段代码输入后确定,以后新建程序文件时这段代码会自动出现, 不借用第三个变量的方法 cin>>a>>b; a=a+b; b=a-b; a=a-b; 2、指定小数位数的输出 #include cout< 节省时间 #include system(?pause?); return 0; } 搜索菜单下有替换功能,批量修改时比较有用 一些有用的快捷键:Ctrl+N(新建文件),Ctrl+Y(删除一行),Ctrl+R(查找替换) 程序编写完毕后按F9键可以编译保存并运行。 第二节 程序的基本结构 程序有三种基本结构:顺序、分支和循环,程序都可以用这三种结构来表示 一、顺序结构 函数体的每一句会顺序执行。 基本思路是:把需要计算机完成的工作分成若干个步骤,然后依次让计算机执行。注意这里的?依次?二字——步骤之间是有先后顺序的。这部分的重点在于计算。 例:鸡兔同笼 已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目。 样例输入:14 32 样例输出:12 2 【分析】 将总只数乘以4后,每只鸡的腿被多算了2只,减去总腿数除以2后得到的就是鸡的只数,用a来表示鸡的只数的话则a=(4*n-m)/2,程序如下: int main(){ int a, b, n, m; cin>>n>>m; a = (4*n-m)/2; b = n-a; cout< 单纯顺序结构的函数体可以写成常变量说明部分、输入部分、赋值部分、输出部分 简单算法与常用技巧 1、两个数的值的交换 借用第三个变量来实现 cin>>a>>b; c=a;a=b;b=c; 输入一个四位数,将各个位上的数分离出来,当然如果用字符串来处理也行 cin>>a; b=a; c=a/10; d=a/100; e=a/1000; 练习(顺序) 一、选择 1、下列关于标示符的描述中,错误的是 A.标示符是由字母、下划线和数字组成的字符序列,并且应以字母和下划线开头。 B.标示符中字符个数是不受限制的。 C.标示符中大小写字母是不加区别的。 D.用户不能使用关键字做标示符 2、下列各种数据中,数据长度最长的是: A.char B.long C.double D.float 3、已知int a=1,b=2;下列表达式中非法的是 A.a+=b B.b%a C.2*a=b D.a=b— 4、下列给出的字符串常量,非法的是 A.?? B.?a8? C.?m??n? D.?99? 二、看程序写结果。 int main(){//题1 int a,b,c; cin>>a>>b; c=a*a-b*b; cout< 输入:5 4 int main(){//题2 int a,b,c; cin>>a>>b; c=a;a=b; b=c;cout< 输入:5 4 int main(){//题3 int a; cin>>a; 4 a=a+20; a=a/3; cout< 输入:110 int main(){//题4 int t; cin>>t; t=t*100; t=t % 3; cout< 输入:4 int main(){//题5 int a,b; cin>>a>>b; a=a+b; b=a-b; a=a-b; cout< 输入:5 4 int main(){//题6 int n,a,b,c; cin>>n; a=n % 10; b=n / 10 % 10; c=n / 100; cout< 输入:123 #include double area,r,pi=3.14159265; cin>>r; area=pi*r*r; cout< 三、专项编程练习:顺序结构 1000.求两个整数和 题目说明:计算 a+b ,其中a,b都是整数。 输入说明:给出a,b (0 <= a,b <= 1000) 输出说明:a与b的和 样例输入:1 2 样例输出:3 1519、求商数和余数(程序文件名:quore) 【问题描述】输入a,b两个整数(1= < a,b <= 10000),编程求出a除以b得到的商和余数。 【输入说明】输入一行,只有两个整数。 【输出说明】输出只有一行,两个整数(中间有空格)。 【样例输入】7 3 【样例输出】2 1 1、仓库的库存(程序文件名:stock) 【问题描述】某仓库5月1日有粮食x吨,5月2日又调进y吨,5月3日卖出库存的三分之二,5月4日又调进库存的z倍粮食,问该仓库从5月1日到5月4日期间每天的粮食分别是多少吨?(输出每天的库存量) 【输入说明】输入3个整数,分别表示x,y,z 【输出说明】输出每天的库存量,中间用空格隔开 【样例输入】100 20 3 【样例输出】100 120 40 160 2、分糖问题(程序文件名:candy) 有三个小朋友甲乙丙。甲乙丙各有a,b,c粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果? 【输入说明】输入3个整数,分别表示a,b,c 【输出说明】输出甲乙丙最后的糖果数,中间用空格隔开 【样例输入】50 40 30 【样例输出】55 39 21 3、读书问题(程序文件名:read) 【问题描述】小明爱读课外书,第一天读了x页,以后每天要比前一天多读y页,最后一天读了z页,问共读了多少天? 【输入说明】只有一行共三个整数数据,分别表示x, y, z 【输出说明】输出一个数据,表示共读了多少天 【样例输入】12 6 48 【样例输出】7 4、蜜蜂飞行距离(程序文件名:bee) 【问题描述】小明和小王各骑一辆自行车,从相距A公里的两个地方,开始沿直线相向骑行。在他们起步的那一瞬间,一辆自行车车把上的一只小蜜蜂,开始向另一辆自行车径直飞去。它一到达另一辆自行车车把,就立即转向往回飞行。这只小蜜蜂如此往返,在两辆自行车的车把之间来回飞行,直到两辆自行车相遇为止。小明骑自行车的速度是每小时B公里,小王骑自行车的速度是每小时C公里,小蜜蜂的飞行速度是每小时D公里,那么,小蜜蜂总共飞行了多少公里。 【输入说明】只有一行共4个整数数据,分别表示A、B、C、D 【输出说明】输出一个数据,表示共飞行了多少公里。(保留一位小数) 【样例输入】120 10 15 20 【样例输出】96.0 1515、求圆的面积和周长(程序文件名:circle) 【问题描述】已知一个圆的半径(0<半径<=100),求该圆的面积和周长.令pi=3.1415926 【输入说明】输入只有一行,只有1个整数。 【输出说明】输出只有一行,先周长,后面积(中间用空格分开,都保留两位小数)。 【样例输入】1 【样例输出】6.28 3.14 1517.求三角形面积 题目说明:输入三角形的三边a、b、c(假设这三边可以构成一个三角形),求三角形的面积s? 输入说明:输入三角形的三边a、b、c(都为整数<= 1000) 输出说明:输出三角形的面积s(保留两位小数)。 样例输入:3 4 5 样例输出:6 提示:海伦公式求三角形面积,p=(a+b+c)/2 s=sqrt(p(p-a)(p-b)(p-c))//sqrt是求平方根的意思 5