


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 1 课时 程序设计概论 1 、程序设计【例 1】 阅读以下程序:#include <iostream>/以“ #开”头为编译预处理行,即头文件using namespace std; /为变量名开辟内存空间,即命名空间int main()/ 主函数cout<<"I love programming!"<<endl; return 0;程序 就是为实现特定目标或解决特定问题而用计算机语言编写的一系列指令序 列。计算机语言 是计算机能识别的指令及其使用规则的集合。计算机语言有很多种, 例如:Fortran、C、Java VB、Python
2、、PHP、C+等。编程 可以理解为程序员为解决特定问题, 按照自己的思路, 在遵循特定的计算机 语言规则下编写程序的过程。C+程序是一种面向对象的结构化程序设计语言。结构化程序包括顺序、选择、 循环三种控制结构。顺序结构就是按照语句的先后顺序依次招待程序的方式。1. 编辑和编译 在某种计算机语言环境下编写程序的过程,叫程序的 编辑。 按照计算机语言所对应的规则, 对所编写的程序进行解析的过程, 叫做编译2. Dev: C+集成开发环境Dev开发环境的作用:1.创建程序文件;2.编译和运行程序【练习题】( 1)编辑运行下列程序:#include <iostream>using nam
3、espace std;int main()cout<<"I love programming!"<<endl;return 0;(2)熟悉C+程序的基本结构,尝试改变程序,说出你想说的句子第2课时整数/实数算术运算【例1】 把20张画平均分为7个同学,每人分得几张,还剩几张?分析:每个人分得的张数是20除以7的商,剩余的张数是20除以7的余数 程序如下:exam2#in elude <iostream>using n amespace std;int mai n()coutv<20/7vve ndl;coutv<20%7vve
4、 ndl;return 0;运行结果:l.cout语句cout是C+的输出语句,C+的输出和输入是用 流”(stream)的方式实现的 cout语句的一般格式为:cout«项目1<<项目2<< <<项目n;功能:(1)如果项目是表达式,则输出表达式的值。(2)如果项目加引号,则输出引号内的内容。2算术运算符C+为算术运算提供了 5中基本算术运算符号:加(+)、减(-)、乘(*)、除(/), 求余()。具体如下表:运算符含义说明例子+加法加法运算5+8=13-减法减法运算13-5=8*乘法乘法运算4*6=24/除法两个整数相除的结果是整数,去掉小数部
5、分5/2=2%求余求余运算,符号取决于被除数8%3=2【例2】 阅读下列程序和运行结果,学习表达式的书写格式,了解数学表达式 运算先后顺序的关系。exam3#in elude <iostream>using n amespace std;int mai n()cout<<9/8vv(4*6+3) %5<<endl;cout<<9/8<<" "<<(4*6+3 ) %5<<endl; cout<<"9/8="<<9/8<<" (
6、4*6+3)%5="<<(4*6+3 ) %5<<endl; return 0;运行结果:【例3】4个工人3天铺了 90 地板砖,照这样计算,5个工人6天能铺多少 平方米地板砖?分析:(1)求1个工人1天铺多少平方米地板砖:90 3=7.5()。2) 求5个工人6天铺多少平方米地板砖:7.5 5 6=225 (。列成综合算式:90 35 6=225()。程序如下:/exam4#in clude <iostream>using n amespace std; int mai n()cout<<"5个工人6天能铺"<
7、;<endl; cout<<90.0/3/4*5*6<<"平方地板砖。"<<endl;return 0;运行结果:【练习题】对于下列问题,写出数学解决的步骤,然后用计算机运行得到问题的 解。(1)有5辆汽车4次可以运送100吨钢材,如果用同样的7辆汽车运送105 吨钢材,需要运几次?(2) 服装厂原来做一套衣服用布 3.2米,改进裁剪方法后,每套衣服用布 2.8 米。原来做791套衣服的布,现在可以做多少套?第3课时数据类型 数据类型是高级计算机语言对数据进行的分类。C+语言提供了丰富的数据类型, 本节介绍几种基本数据类型:整型、实
8、型、字符型。它们都是系统定义的简单数 据类型,称为标准数据类型。数据类型类型标识符所占字节数取值范围短整型short int2-32768 32767整型int4-2147483648 2147483647无符号整型un sig ned int40 4294967295在C+语言中,整型类型标识符为 量定义为以下常见三种整型类型:int。根据整型变量的取值范围又可将整型变2、实型数据类型类型标识符所占字节数取值范围单精度浮点数float4-3.4E+38 3.4E+38双精度实型double8-1.7E+3081.7E+308布尔变量bool1真 true 或假 false3、字符型(char
9、)数据类型类型标识符所占字节数取值范围字符型Char1-128 127字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128 个字符。在程序中,通常用一对单引号将单个字符括起来表示一个 字符常量。如: 'a','A', 'O'等。表中数据 所占字节数”表示存储器分配给对应类型的空间大小,可用sizeof函数来测试。【例1】exam5#in clude<iostream>using n amespace std;int main()int x;short y;cout«sizeof(x) <<
10、;endl;/sizeof返回类型所占的内存字节数cout«sizeof(y) <<e ndl;return 0;C+默认整型常量和实型常量为int型和double型。【练习题】编写程序,测试短整型、无符号整型、双精度实型、字符型数据的所 占内存字节数。第4课时变量及变量类型【例1】 将整数65存储到计算机内存中,并且输出exam6#in elude <iostream>using n amespace std;int mai n()int a; /定义整型变量a a=65;/将整数65存入a中coutvvavvendl;输出 a 的值return 0;运行结
11、果:1、变量和变量类型变量代表了一个存储单元,其中的值是可以改变的,因此称为变量。一个程序中可能要使用到好多个变量,为了区别不同的变量,必须给每个变量取一个名字,这个名字就称为变量名。变量在某一时刻用来存储一个常量,因此也应有相应的类型。如整型变量用 来存储整数,实型变量用来存储实数。变量的类型,可以是标准数据类型int、short、 long、 float、 double 和 char等。变量的语法格式:数据类型变量表例如:int i=5,j,k; 定义i,j,k为整型变量,i赋初值为5; char a,b,c;定义a,b,c为字符变量float x,y,z;/定义x,y,z为实型变量说明:
12、C+语言允许在定义变量的同时为变量赋初值。【例2】将实数65.5存储到计算机内存变量a中,并且输出exam6#in clude <iostream>using n amespace std;int main()float a;/定义整型变量 aa=65.5; /将实数 65.5存入 a 中 cout<<a<<endl; /输出 a 的值 return 0;练习题】1) 模仿例 6、例 7,根据之前所学数据类型,将你想的数据存入某些变量中 并且输出。(2)求长10.6cm、宽7.5cm的矩形面积,要求先将矩形长和宽分别存储到变 量 x 、 y 中。第 5 课时
13、 赋值语句和数学表达式【例 1 】/exam:8#include <iostream>using namespace std;int main()float x=7.5;float y=10.6;cout<< ”矩形的面积是: ” <<x*y<<endl; return 0;1、赋值语句赋值语句格式 变量 赋值运算符表达式赋值语句的意思是将运算的结果放到变量中存储起来。 赋值运算符用于对变量进行赋值,分为简单赋值( =)、符合算术赋值( +=、 -=、 *= 、 /=、 %=)。a+=6 相当于 a=a+6【例 2】/exam:9 #includ
14、e <iostream> using namespace std; int main()int a=5; coutvvavve ndl; int a=a+2; coutvvavve ndl;int a+=5; coutvvavve ndl;return 0;2、变量自增和自减C+语言中,整型或浮点型变量加1可以使用自增运算符“ +。用法如下: 用法1:变量名+ ;用法2: +变量名;例如n+、+n表示的都是在a的基础上加1,不同之处在于运用到赋值语句中, n+表示的是先加1。1. 数学表达式数学表达式由数据、变量、运算符、数学函数、括号组成,程序中的数学表达式 需要用语言能够接受的
15、运算符和数学函数表示。【例3】已知a=5.5 b=6.7、c=9.3,编程求式子的值。程序如下:exam:10#in clude <iostream>using n amespace std;int mai n()float a,b,c,f;a=5.5;b=6.7;c=9.3;f=(-b+4*a*c)/(2*a);coutvvfvve ndl;return 0;【练习题】(1)假定下面每个表达式中整型变量 x的值均为10 (假设各表达式互不影响),求x和y的值表达式值表达式值+xx+-xx-y=x+y=5*x+y=-xy=-*2+3540棵树苗分给五、六年级同学去种,五年级有120
16、人,六年级有150人,如果按照人数进行分配,每个年级各应分得多少棵树苗?用程序实现。第6课时变量的输出和读入【例1】 输入两个正整数 A和B,试交换A、B的值(使A的值等于B,B 的值等于A )。分析:交换两个变量的值方法很多,一般我们采用引入第三个变量的算法, 二个 变量交换,可以想像成一瓶酱油和一瓶醋进行交换, 这时容易想到拿一个空瓶子 过来: 将酱油倒到空瓶中; 将醋倒到酱油瓶中; 将原空瓶中的酱油倒到醋瓶 中。参考程序:exam:11#in clude<iostream>使用 cin, cout,须调用iostream 库using n amespace std; int
17、main()int a,b,c;cout«" In put a,b="cin> >a>>b;c=a;a=b;b=c;/定义三个变量/输入提示In put a,b=输入A、 B的值/交换A、 B的值cout<v"a="v<avv" b="v<b<ve ndl;输出结果1、输入流cin、输出流cout的格式cin >>变量 1>>变量 2>>.>>变量 n;其中“ >>是预定义的插入运算符,作用在“ cin上,实现键盘输入
18、。cout«表达式 1<<表达式 2<<-.<<表达式 n其中“VV”是预定义的插入运算符,作用在 “cout上,实现屏幕输出,输出结果 依次为各个表达式的值。2、功能cin的使用过程中要求输入的数据类型与接收变量的类型一致,并且输入的数据 间用Tab空格分开,回车键表示输入完毕。cout输出语句的功能主要是在程序完成数据处理后,将计算结果以适当形式输出到屏幕上。【例2】exam:12#in elude <iostream>using n amespace std;int mai n()char c1,c2;int a;float b;
19、cout« 输入:” <<endl;cin> >c1>>c2>>a>>b; cout« 输出:” <<endl;cout<<c1<<e ndl;cout<<c2<<e ndl;cout<<a<<e ndl;cout<<b<<e ndl;return 0;【练习题】(1) 输入三角形三边长a、b、c (保证构成三角形),输出三角形面积。(2) 将输入的华氏温度转换为摄氏温度。第7课时if语句和关系表达式【例1】
20、星星公司致力于信件快递业务,收费标准为:500克以内6元,超过500 克9元分析:这是一个选择问题,快递员依据信件的重量W值选择收取费用C,用数学表达式表示如下:C=程序如下:exam1#in clude<iostream> using n amespace std; int main()in t c; float w; cout<<"w=" cin> >w;if(w<=500) c=6;else c=9; cout<v"c="vvcvve ndl;return 0;运行结果:问题中用了 ifelse 语句
21、,表示依据信件的重量 W值,选择如何求费用C的值, 对于选择问题,依据的条件是问题的关键,那么,如何表达条件?ifelse 能解决怎样的问题?为了回答这些问题,我们将学习C+语言的if语句和关系表达式。1、if语句格式1.1 一般格式if(条件表达式)语句1;语句2;执行过程:如果条件表达式的值为真,即条件成立,花括号 内 的一系列语句将被执行。否则,不被执行,程序将 按顺序从整个选择结构之后的下一条语句继续执行。 说明:格式中的 条件表达式”必须用圆括号括起来。若条件成立时,要执行的操作由多个句子构成, 我们必须把这些句子括在一对花括号 内,我们称这种形式为语句块或复合语句。只有一条语句时不
22、需要加花括号程序书写风格提示:书写语句块(也称为复合语句)时,左花括号要相对if向 右缩进两格,左右花括号要对齐,组成语句块的各语句要相对花括号缩进一层并 对齐。1.2 一般格式:if(条件表达式)语句1;语句2; else语句1;语句2;执行过程:语旬1块1谣句块2>功能:如果(条件表达式)的值为 真”,即条件成立,则执行(条件 表达式)后面的语句块,如果(条 件表达式)的值为 假”,即条件不 成立,那么直接执行else后面的语 句块。如果只有一条语句,则不需 要加花括号 。说明:程序设计风格提示:书写 if else语句时,if和else要对齐, 而分支的语句部分要缩进两格。典型例题
23、例2:读入一个整数a,如果a为偶数在屏幕上输出yes”,如果a为奇数在屏幕上输出“no” 分析:判断一个数是否为偶数的条件为:a%2=0参考程序:#in clude<iostream> using n amespace std; int main()int a;cin> >a;if (a%2=0) cout<<"yesn"else cout«"non" /等同于:(a%2=0) ? cout«"yesn": cout<<"non" return 0
24、;注意:1、 关系运算符“=用来表达该符号的左右两边是否相等,不要写成赋值号=02、 cout输出流的回车换行除了用 “end外”,也可以用C语言的n例3:读入一个数,若这个数大于 1并且小于100,则输出yes分析:大于1小于100的关系式为:(x>1 &&x<100 ),由于关系运算符的优先 级高于逻辑运算符,逻辑运算符两边的关系运算不需要加括号。参考程序:# in clude<iostream> using n amespace std;int mai n ()int a;cin> >a;if (a>1 &&a&l
25、t;100) cout<<"yes" return 0;例4:读入a, b,若a>b则交换a, b的值分析: a>b 时交换两者的值,否则不做任何操作。 参考程序:#include<iostream> using namespace std; int main ( ) float a,b,c; cin>>a>>b; if (a>b) c=a;a=b;b=c;cout<<"a="<<a<<" b="<<b;return 0;
26、例 5:乘坐飞机时,当乘客行李小于等于 20 公斤时,按每公斤 1.68 元收费, 大于 20 公斤时,按 每公斤 1.98 元收费,编程计算收费 (保留 2 位小数 )。参考程序: #include<cstdio> using namespace std; int main( ) float w, p; scanf("%f",&w); if (w<=20) p= w*1.68; printf("%.2f",p); elsep= w*1.98; printf("%.2f",p);return 0;2、关系表达
27、式选择结构问题的一个关键点是选择条件的描述,即 if 语句中(表达式)的具体 表达。在前面的例子中,我们很自然地用上了数学的比较符描述 if 语句中的条件。与数学比较符相对应的是关系运算符 关系运算符:等于不等于大于小于大等于小等于=!=><>=<=优先级别:>、V、 >=、 <=高=、!=低用关系运算符将两个表达式连接起来的式子,称为关系表达式。关机表达式的一一 般形式可以表示为:表达式关系运算符表达式其中的 表达式”可以是算术表达式,也可以是关系表达式、逻辑表达式、赋值表 达式、字符表达式。关系表达式的值是一个逻辑值,即真”或假”如果为真”则表示条
28、件成立;如果为假”则表示条件不成立。例如,关系表达式“仁=3的值为假” “3>=0的值为 真”在C+中用数值1代表 真”用0代表 假”例1设a=5,b=6,c=7。写出下面关系表达式的值。关系表达式值分析a>b0 1因为a=5,b=6,所以条件不成立a+b>b+c0因为a+b=11,b+c=13,所以条件不成立(a=3)>=(b=5)1因为a=3不成立值为0, b=5不成立值为0,所以两者相 等成立a' <' b'1 :字符 的 ASCII码小于字符 的 ASCII码,所以条件成立(a>b)>(b<c)0a>b值为0
29、,所以条件不成立例2为了学生的卫生安全,学校给每一个住宿生配一个水杯,每只水杯3元,大洋商城打八八折,百汇商厦 买八送一”输入学校想买水杯的数量,请你当 参 谋”算一算:到哪家购买较合算?输出商家名称。分析:设变量cup存放读入的水杯数量,变量a为到大洋商城购买水杯的费用, 变量b为到百汇商厦购买水杯的费用。那么:a=cup*3*0.88b=(cup-cup/8)*3式中,cup/8是求cup除以8的商,即 买八送一”送的杯子数量。如果a<b,那么到大洋商城购买,否则到百汇商厦购买。程序如下:1 /exam22 #in clude<iostream>3 using n ame
30、space std;4 int mai n()5 6 Int cup;7 float a,b;8 cout<< ” cup二”;9 cin> >cup;10 a=cup*3*0.88;11 b=(cup-cup/8)*3;12 If(a<b) cout« 大洋商城”<<endl;13 else cout« 百汇商厦”<<endl;14 Retur n 0;15 说明:问题中的关系表达式是到两商场购买杯子的费用比较,为了方便关系式的书写,程序中第10、11、12行,采用先求出购买的费用,再进行比较的方法。 当需要比较的表达
31、式比较复杂时,问题提供了比较好的解决方式。【练习题】(1)运行下列程序,分别输入三组数据:5 55 66 5观察运行结果,说明if语句中“=” “=的区别。/test(1)-1#in clude<iostream>using n amespace std;int main()int a,b;cout<<"a,b="cin> >a>>b;if(a=b) cout«a;else cout<<"U nequal"return 0; /test(1)-2#in clude<iostrea
32、m> using n amespace std; int main()int a,b; cout<<"a,b=" cin> >a>>b;if(a=b) cout«a; else cout<<"U nequal" return 0;第8课时逻辑表达式1、逻辑运算和逻辑表达式逻辑运算符:逻辑与逻辑或逻辑非&&HI!优先级别:! 高”&&II 低将两个关系表达式用逻辑运算符连接起来的表达式,称为逻辑表达式,逻辑表达式的一般形式可以表示为:表达式 逻辑运算符 表达式
33、真值表:1.逻辑非A!A01102 逻辑与ABA&&B0000101001113 逻辑或ABA|B0001111111【例1】 根据问题写出条件表达式问题条件表达式判断一个数n是否可以同时被2与3整除if(n%2=0&&n%3=0)或者 if(n%6=0)判断一个数x是否在区间1,5之内if(x>=1 &&x<=5)或者 if(!(x<1|x>5)判断一个数x是否等于0正向判断:if(x=0)反向判断:if(x!=0)或者if(!x)【例2】输入年份year,输出该年是否为闰年分析:设变量year存放读入的年份。闰年的条件
34、是:年份能被4整除但是不能被100整除或者年份能够被400整除。表示 年份能被4整除但是不能被100整除”的逻辑表达式为:(year%4=0&&year%100!=0)表示 年份能被400整除”的条件表达式为:year%400=0两个条件构成 或”的关系,逻辑表达式如下:(year%4=0&&year%100!=0)|year%400=0当表达式的值为真时,则year为闰年,否则year为非闰年。 程序如下:1 /examl2 #in clude<iostream>3 using n amespace std;4 int mai n()5 6 int
35、 year;7 cin> >year;8 if(year%4=0&&year%100!=0)|year%400=0)9 coutvvyearvv 是闰年” <<endl;10 else coutvvyearvv 不是闰年 ” <<endl;11 return 0;12 运行结果:2、逻辑变量逻辑变量用类型标识符bool来定义,它的值只有true(真)或false (假)两种。 由于逻辑变量是用关键字bool来定义的,因此又称为布尔变量。C+编译系统在处理逻辑型数据时,将false处理为0,将true处理为1。因此,逻辑型数据可以与数值型数据进
36、行算术运算。如果将一个非零的整数赋给逻辑型变量,则按真”处理。1 exam22 #in clude<iostream>3 using n amespace std;4 int mai n()5 6 bool foun d,flag=false;/定义逻辑变量found和flag,并使flag的初值为false7 foun d=ture;8coutvvflagvv ”“ vvfoun d<<e ndl;9flag=5;10foun d=0;11coutvvflagvv ”“ vvfoun d<<e ndl;12return 0;13 运行结果:说明:程序第6行
37、和第7行表示0代表false, 1代表true。程序的第9行表示非 0的逻辑变量值为1。【练习】在社会实践活动中有三项任务分别是:种树、采茶、送水。依据小组人数及男生、 女生人数决定小组接受什么任务,人数小于10人的小组负责送水(输出water), 人数大于等于10人且男生多于女生的小组负责种树,人数大于等于10人且男生 不多于女生的小组负责采茶(输出tea)。输入小组男生人数、女生人数,输出小 组接受的任务。第9课时嵌套if语句1、一般格式:if (条件表达式) 语句块1;else if (条件表达式)语句块2else语句块n+1;2、功能解决多个条件不能同时成立的问题。说明:嵌套时为避免出
38、现配对问题,一般在else后面嵌套if语句,如果非要在if语句条件为 真”时嵌套,为避免混乱,可以加花括号区分。例如:if (a>b)if (b>c) y=a;else y=c;else部分否定的是条件 b>c,即它与第二个if语句配对;若想让 else部分与 第一个if语句配对,则要引入一个复合语句,将上述语句写成如下形式:if (a>b)if (b>c) y=a;else y=c;【例 1】找出任意三个数中的最大值 问题分析:任意三个数找最大值,可以两两比较,先找出两者中最大者,再与第 三者比较。参考程序:#include<cstdio>using
39、 namespace std;int main()int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a>b)if(a>c) printf("%dn",a);else printf("%dn",c);else if(b<c) printf("%dn",c);else printf("%d",b);return 0; 如果不考虑嵌套,还有一种解法: 问题分析:任意三个数找最大值,使人想起我国古的擂台赛选武艺高强者。算法设计:假设三个
40、数分别用 a、b、 c 来表示,并设 a 是擂主, b、c 分别上 擂台与擂主比较,数值大者为新擂主。参考程序 2:#include<cstdio>using namespace std;int main()int a,b,c,max,t;printf("Enter a,b,c:n");scanf("%d%d%d",&a,&b,&c);max=a;if (b>max)t=max;max=b;b=t;if (c>max) t=max;max=c;c=t; printf("max=%d",m
41、ax); return 0;课后训练【训练 1】奇偶数判断给定一个整数,判断该数是奇数还是偶数。如果n是奇数,输出odd;如果n是 偶数,输出 even。输入:输入仅一行,一个大于零的正整数 n。输出 :输出仅一行,如果n是奇数,输出odd;如果n是偶数,输出ever。样例输入 :5样例输出 :odd【训练 2】 .整数大小比较输入两个整数,比较它们的大小。若x>y,输出;若x=y,输出=;若xvy,输出 <。输入:一行,包含两个整数x和y,中间用单个空格隔开。0<=x<2A32, -2A31<=y<2A31 0 输出 :一个字符。若 x > y,输出
42、 > ;若 x = y,输出=;若 x < y,输出 < ; 样例输入 :1000 100样例输出 :>第 10 课时 for 循环结构1. For 语句的一般格式:for(表达式1;表达式2;表达式3) 循环体语句 ;或是如下:For 语句最简单的形式也是最容易理解的格式:for(循环变量赋初值;循环条件;循环变量增值)循环体语句 ;2、说明循环体部分由多个语句构成, 应由一对花括号括起来, 只有一句语句时不需要 花括号 。构成一个语句块的形式程序风格提示:写for循环语句时,循环体的语句相对于 for 缩进两格。3 个表达式可以省略(或省略某个或省略某两个) 。写成
43、 for(;) 。表达式 3 可 以作为循环体的一部分,效果一样。表达式 1 和表达式 3 可以是一个简单的表达式, 也可以是逗号表达式 (包含 一个以上的表达式,中间用逗号隔开);也可以有与循环控制变量无关的表达式。 如求s=1+2+1000的值,可以有多种形式的写法1int n=100,s=0;for(int i=1;i<=n;i+)s=s+i;2int n=100,s=0,i=1;for(;i<=n;i+)s=s+i;3int n=100,s=0,i=1;for(;i<=n;)s=s+i;i=i+1;4int n=100,s=0,i=1;for(;)if(i>10
44、0) break;s=s+i;i=i+1;5int n=100,s=0,i=0;for(;i<n;i+,s=s+i);3、执行过程如下:( 1 )先求解表达式 1 ;(2) 求解表达式 2,如果值为真(非 0),则执行循环体中的语句,然后 执行下面的第( 3)步;如果为假( 0),则循环结束,转到第( 5)步。( 3)求解表达式 3。( 4)转到第( 2)步继续执行。(5)循环结束,执行循环体下面的一个语句。4、语句格式举例(1) 将控制变量从 1 变到 100,增量为 1for(i=1;i<=100;+i)(2) 将控制变量从 100 变到 1 ,增量为 1for(i=100;i
45、>=1;-i)(3) 控制变量从 7 变到 77,增量为 7for(i=7;i<=77;i+=7)(4) 控制变量从 20 变到 2,增量为 2for(int i=20;i>=2 ;i-=2)(5) 按所示数列改变控制变量值:99、88、77、66、55、44、33、22、11、0,增量为 -11for(int j=99;j>=0;j-=11)(6) 控制变量 i 和 j 共同进行循环控制, i 从 1 变到 99,j 从 2 变到 100,增 量均为 2。for(int i=1,j=2;i<=99&&j<=100 ;i+=2,j+=2 )【
46、例1】利用for循环,计算输出1+2+100的和问题分析:单纯的 100 个数相加问题。操作数在变,而操作符 “+不”变。 算法设计:第一个数是 1,最后一个是 100,循环次数为 100 次。 参考程序:#include <iostream>using namespace std;int main ()int i,sum=0;for (i=1; i<=100 ; +i)sum+=i;cout << sum;return 0; 说明:放算术和的变量必须初始化为0;放算术积的变量必须初始化为1。【例 2】编写程序,按字母的顺序和逆序输出字母。问题分析:字母顺序为 a
47、bcxyz,逆序为zyxcba。算法设计:循环变量为字符型,从到每次加1;逆序循环变量从到a' 每次减 1 。参考程序: #include<cstdio> using namespace std;int main()char letter;for (letter='a'letter<='z'letter+)printf("%c ",letter); printf("n");for (letter='z'letter>='a'letter-) printf(&q
48、uot;%c ",letter);return 0;课后训练【训练 1】求整数的和与均值读入n(1<=*=10000)个整数,求它们的和与均值。输入:输入第一行是一个整数 n,表示有n个整数。第 2n+1 行每行包含 1 个整数。每个整数的绝对值均不超过10000。输出 :输出一行,先输出和,再输出平均值 (保留到小数点后 5 位),两个数间用单个 空格分隔。样例输入 :444222343222样例输出 :1131 282.75000【训练 2】最大跨度值给定一个长度为 n 的非负整数序列,请计算序列的最大跨度值 (最大跨度值 = 最大值减去最小值 )。输入:一共 2 行,第一
49、行为序列的个数 n(1 <= n <= 1000),第二行为序列的 n 个不超过 1000 的非负整 数,整数之间以一个空格分隔。输出:输出一行,表示序列的最大跨度值。样例输入 :63 0 8 7 5 9样例输出 :9第 11 课时 while 循环语句知识讲解1. while 语句的一般形式如下:格式 1:while ( 条件表达式 )循环体语句 1;说明:语句 1 是 while 循环语句的循环体,它将在满足条件的情况下被重复执 行。格式 2:while ( 条件表达式 )循环体语句 1;循环体语句 2; 说明:循环体部分由两个或两个以上的语句构成, 应由一对花括号括起来, 构
50、成 一个语句块的形式,这叫复合语句。程序风格提示: 写 while 循环语句时,循环体的语句相对于 while 缩进一个 tab。执行过程如下:(1) 计算作为循环控制条件表达式的 值,得到逻辑真或假。(2) 若为真,则执行了一遍循环体语句, 若为假则离开循环,结束整个while 语句的执行。(3) 循环体的所有语句执行结束后,自 动转向第步执行。【例1】 求1+2+3+100的值。程序如下:#in clude<cstdio>int main()int i=1,sum=0;while (i<=100)sum=sum+i;i+;prin tf("sum=%dn&quo
51、t;,sum);return 0;如果采用for循环语句来写,那么程序如下:#in clude<cstdio>int main()int i=1,sum=0;for (int i=1;i<=100;i+)sum=sum+i;prin tf("sum=%dn",sum);return 0;运行结果:sum=5050【例2】角谷猜想N0I题库-1.5编程基础之循环控制-21所谓角谷猜想,是指一个数如果为奇数,就将它乘 3再加1,如果是偶数,就 将它除以2,经过若干次操作后一定能变为1。给定一个n,请你输出n变为 1的过程。输入样例:5输出样例: 5*3+1=1
52、6 16/2=8 8/2=4 4/2=2 2/2=1 End分析:由于我们不确定程序要执行多少次,只知道程序结束的条件为” n=1,所以可以用 while 循环 来解决这个问题。注意需要使用 long long 程序如下:#include<cstdio>int main()long long n;scanf("%lld",&n);while (n!=1)if (n%2=1) /n 为奇数printf("%lld*3+1=%lldn",n,n*3+1);n=n*3+1;else /n 为偶数printf("%lld/2=%ll
53、dn",n,n/2);n=n/2;printf("End");return 0;课后训练【训练 1】与 7 无关的数 NOI 题库-1.5 编程基础之循环控制 -39题目描述: 一个正整数,如果它能被 7 整除,或者十进制下它的某一位是 7, 则称它是与7有关的数,现给定一个n,求出小于等于n的正整数中,与7无 关的数的和。输入样例: 21输出样例: 2336【训练 2】质因子个数题目描述:给定一个 n,求出n的不同质因子的个数。输入样例: 60 输出样例: 3第 12 课时 循环语句的嵌套1、一般格式:在循环体中包含一个循环语句, 则称为二重循环。 若在第二重循
54、环中又包含一个 循环,则称为三重循环,继续一层套一层,称为多重循环。2、执行过程(以两重循环为例)先执行第一重 for 语句,再执行循环体内的 for 语句,外循环 for 执行 1 次, 内循环 for 全部执行完。【例 1】求 S=1!+2!+3!+10!问题分析:这个问题是求 10 以内自然数的阶乘之和。 算法设计:可以用 for 循环来实现。程序结构如下: for(i=1;i<=10;+i)(1) i 阶乘的值存到 t ; /t=i!(2) 累加 t 到 s 中; /s+=t 显然根据以上结构,通过10次的循环可以求出1!,2!,10!,并不断累加起来, 求出s。而求t=i!,又
55、可以用一个for循环来实现:t=1;for (j=1;j<=i;+j) t*=j;参考程序:#include <iostream> using namespace std;int main ()int t,s;s=0;for(int i=1;i<=10;+i)t=1;for (int j=1;j<=i;+j)/求 i!t*=j;s+=t;/累加 i! cout<<s;return 0; 说明: 以上程序是一个 for 循环的嵌套。这种方法是比较容易想到的,但实际上对于 求i!,我们可以根据求出的(i-1)!乘上i即可得到,而无需重新从 1再累乘 到 i
56、。修改后的程序为 :#include <iostream> using namespace std;int main ()int t=1,s=0;for(int i=1;i<=10;+i)t*=i; /t 为上一个数的 i-1 的阶乘值,再乘以 i 即为 i!s+=t;/累加 i!cout<<s;return 0;说明:显然第二个程序的效率要比第一个高得多。 第一个程序要进行1+2+3+10=55 次循环,而第二程序进行10次循环。若题目中求的是 1! +2! +1000!,则 两个程序的效率区别更明显。【例 2】: 利用 for 循环语句输出下图中的三角形。*问
57、题分析:出现这种行列问题肯定是用 for 的两重嵌套。 第 i 行上有 i 个 所以第二重循环只到“ i就可以了。参考程序:#include <iostream> using namespace std;int main ()/控制行数/输出一行中的 * 数/换行for (int i=1; i<=5; +i)for (int j=1; j<=i; +j) cout<<"*" cout<<endl; return 0;课后训练 【训练 1】求出 e 的值利用公式 e = 1 + 1/1! + 1/2! + 1/3! + . + 1/n! ,求 e 的值,要求保留小数点后 10 位。输入:输入只有一行,该行包含一个整数n(2<=*=15),表示计算e时累加到1/n!。 输出:输出只有一行,该行包含计算出来的 e 的值,要求打印
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摇臂钻工基础知识培训
- 青海省海西州2024-2025学年七年级下学期期末语文试题(解析版)
- 摄影基本知识培训课件课程
- 山大电工技术试题及答案
- 2025餐厅员工聘用合同
- 2025电子厂临时员工劳动合同
- 材料科学领域物理专业面试题及经验分享
- 2025小区工作人员劳动合同模板
- 国企、民企行业新面试题
- 金融科技行业面试题库金融科技前沿动态
- RPA财务机器人开发与应用 课件 6.1 RPA网银付款机器人
- 征信理论与实务第二章-征信数据库
- 2021年深圳实验学校初中部七年级入学分班考试数学试卷及答案解析
- 平凡的世界(阅读任务二 人物形象分析)公开课一等奖创新教学设计-【中职专用】高一语文(高教版2023-2024基础模块上册)
- 水果购销合同范本高清
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 机电安装工程施工现场安全管理台账
- 伯克利-利特温(组织绩效与变革因果关系)组织诊断+模型案例、工具解析
- 食材配送投标方案技术标
- 中建三局建造工程师工作指南
- 合肥申领居住证的申请
评论
0/150
提交评论