cc课件C试卷_20200520_130735chp3_第1页
cc课件C试卷_20200520_130735chp3_第2页
cc课件C试卷_20200520_130735chp3_第3页
cc课件C试卷_20200520_130735chp3_第4页
cc课件C试卷_20200520_130735chp3_第5页
已阅读5页,还剩244页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章程序设计初步第4章利用函数实现指定的功能第5章利用数组处理批量数据第6章善于使用指针与引用第7章用户自定义数据类型,第2篇基于过程的程序设计,第3章程序设计初步,3.1基于过程的程序设计和算法3.2+程序结构和C+语句3.3赋值操作3.4C+的输入与输出3.5编写顺序结构的程序3.6关系运算和逻辑运算3.7选择结构和if语句3.8循环结构和循环语句,3.1.1算法的概念,3.1基于过程的程序设计和算法,基于过程的程序包含两方面内容:对数据的描述;描述操作步骤(算法);算法是解决问题的方法步骤。程序=算法+数据结构,计算机算法分成:数值算法,非数值算法数值算法-求出问题的数值解。将在数值分析课程中学习非数值算法-将在数据结构课程中学习,3.1.2算法的表示,自然语言流程图伪代码程序设计语言,3.1.2算法的表示,例1:键盘输入任意两个整数,屏幕输出两数之和。,自然语言流程图伪代码程序设计语言,step1:定义变量a,b存放两个整数,变量sum存放和;step2:键盘输入a和b的值;step3:a+b的值赋予sum;step4:输出sum的值;,1.用自然语言表示,2.流程图,伪代码是自然语言与计算机语言混合使用的一种算法描述语言如:定义整型变量a,b,sum输入a,bsum=a+b输出sum,3.伪代码,4.计算机语言表示算法:,#includeusingnamespacestd;intmain()inta,b,sum;cinab;sum=a+b;coutsum=sum;return0;,3.2C+程序结构和C+语句,一个程序包含一个或多个程序单位(每个程序单位构成一个程序文件)。每一个程序单位由以下几个部分组成:(1)预处理命令。如#include命令和#define命令。(2)全局声明。例如对数据类型和函数的声明,以及对变量的定义。(3)函数。包括函数首部和函数体,在函数体中可以包含若干声明语句和执行语句。,#include/预处理命令usingnamespacestd;/在函数之外的声明部分inta=3;/在函数之外的声明部分intmain()/函数首部floatb;/函数内的声明部分b=4.5;/执行语句coutaab;cout“a=”a100)z=z-100;cout操作符,用于从istream对象中读入输入;操作符,用于把输出写到ostream对象中;,语句格式,cout表达式1表达式2表达式n;,屏幕输出的作用从内存读取数据项的值,转换成相应的字符串显示到屏幕上,3.4.1输入流与输出流的基本操作,如:coutx=xy=yendl;cout结果是:123*sin(1)as;/在键盘输入:35Acouta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;coutsas;couta*2=a*2endl;couts变量1变量2变量n;,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,例如,inta;chars;cinas;,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,例如,inta;chars;cinas;,inta,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,例如,inta;chars;cinas;,inta,chars,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,例如,inta;chars;cinas;,00000000000000000000000000100011,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,例如,inta;chars;cinas;,00000000000000000000000000100011,01000001,键盘输入的作用是读取用户键入的字符串,按相应变量的类型转换成二进制代码写入内存,例如,inta,b;cina+b;/错误的写法,例:charc1,c2;inta;floatb;cinc1c2ab;从键盘输入:1234567.89则c1=1c2=2a=345b=67.89从键盘输入:1234567.89则c1=1c2=2a=345b=67.89,例:,编写程序,从键盘输入两个整数,求两个整数之和并输出结果。输入时要求提示:请输入两个整数:结果显示:*+*=*,常用的输出格式控制符#include/(manip-manipulation操纵)#inlcude,*3.4.2在输入流与输出流中使用控制符,*3.4.2在输入流与输出流中使用控制符,标准库的格式控制符,指定整型值的基数:默认用十进制,通过使用控制符hex,oct,dec程序员可以将表示进制改为十六进制、八进制或恢复为十进制(浮点数的表示不受影响)。下面是整数输出的例子:intb=123456;(1)coutb;输出:123456(2)couthexb;输出:1e240(3)coutsetiosflags(iosuppercase)b;输出:1E240,标准库的格式控制符,2.控制浮点值的格式:记数法:用小数形式还是科学记数法(指数形式)显示。默认形式(自动选小数或指数形式),固定小数位数形式,指数形式。coutsetiosflags(ios:fixed);-固定小数位数形式coutsetiosflags(ios:scientific);-指数形式coutresetiosflags(ios:scientfic)-取消指数形式,恢复默认精度:十进制小数时显示多少位数字。指数(scientific)或固定(fixed)小数位数形式时为小数位数。coutsetprecision(n);默认情况下,使用六位数字的精度显示浮点值,如果值没有小数部分,则省略小数点。使用小数形式还是科学记数法显示取决于被显示的浮点数的值,标准库选择使得数容易阅读的记数法,非常大和非常小的值使用科学记数法显示,其他值使用小数形式。,标准库的格式控制符,填充输出(按栏显示数据时必需的控制)setw(n)-设置输出宽度setiosflags(ios:left)-左对齐Setiosflags(ios:right)-右对齐setfill(c)-设置填空符csetprecision(n)-设置浮点数输出精度。一般十进制小数形式时,n代表有效数字;在以fixed(固定小数位数)形式和scientific(科学记数法)形式时,n代表小数位数,例:输出双精度数。doublea=123.456789012345;(1)couta;输出:123.456/默认精度6位数字(2)coutsetprecision(9)a;输出:123.456789(3)coutsetprecision(6);恢复默认精度(精度为6)(4)coutsetiosflags(iosfixed);输出:123.456789(5)coutsetiosflags(iosfixed)setprecision(8)a;输出:123.45678901(6)coutsetiosflags(iosscientific)a;输出:1.234568e+02(7)coutsetiosflags(iosscientific)setprecision(4)a;输出:1.2346e+02,*3.4.2在输入流与输出流中使用控制符,下面是整数输出的例子:intb=123456;(1)coutb;输出:123456(2)coutsetw(10)b,b;输出:123456,123456setw(n)只对其后1个输出数据起作用(3)coutsetfill(*)setw(10)b;输出:*123456(4)coutsetiosflags(iosshowpos)b;输出:+123456,例3.1各行小数点对齐。#include#includeusingnamespacestd;intmain()doublea=123.456,b=3.14159,c=-3214.67;coutsetiosflags(iosfixed)setiosflags(iosright)setprecision(2);coutsetw(10)aendl;coutsetw(10)bendl;coutsetw(10)cabc;/可用:scanf(%f%f%f,3.5编写顺序结构的程序,在变量使用处定义变量,C+中,变量必须且只能定义一次,而且变量在使用前必须先定义;一般来说,变量的定义或声明可以放在程序中能摆放语句的任何位置;在变量第一次使用的地方定义变量可以提高程序的可读性,是一个很好的办法;变量命名普遍习惯:一般用小写字母,如index,而非INDEX。使用帮助记忆的名字,如student_no,age。包含多个词的标识符在每个词间添加一个下划线,或者每个内嵌的词的第一个字母都大写。如student_name或StudentName。,算法的三种基本结构,顺序结构,2)选择结构,算法的三种基本结构,求和:1+2+.+100,算法的三种基本结构,3)循环结构,由以上三种基本结构组成的算法结构可以解决复杂的问题由三种基本结构构成的算法结构化算法;,算法的三种基本结构,3.6关系运算和逻辑运算,3.6.1关系运算和关系表达式,关系运算是指对两个表达式的值的大小进行比较;关系表达式的值只有两个:关系表达式成立为1关系表达式不成立为0,abb*b-4*a*c=0aa+b等效于c(a+b)ab=c等效于(ab)=ca*3=b+2等效于(a*3)=(b+2),例:若有intx=2,y=3,z;则x=yx!=y,值为0,值为1,z的值为1,z=2=378的结果为:,0,1,讨论:5278是一个无意义的数学式子,但在C+中是合法表达式应尽量避免使用这种意义不清的表达式,0,3.6.1关系运算和关系表达式,注意关系运算的正确使用:,关系表达式的结果为整数,所以也可以看作整型表达式。例:inti=1,j=7,a;a=i+(j%4!=0);,讨论:应尽量避免使用这种意义不清的表达式,3,1,2,3.6.1关系运算和关系表达式,注意关系运算的正确使用:,字符数据按ASC码值进行比较例:ab=9798=值为0aA=9765=值为1a0=970=值为1A100=值为0,3.6.1关系运算和关系表达式,注意关系运算的正确使用:,实数比较的误差例:1.2345678901234567897=1.2345678901234567898值为1这是数据有效位数引起的误差。,讨论:实数比较宜采用求误差值形式:fabs(x-y)例如:fabs(x-y)1e-5,3.6.1关系运算和关系表达式,设a=0,b=0.5,x=0.3表达式a=x=b的结果为:,0,1,注意:说明数学含义x在区间a,b的数学表达式axb不能使用a=x=b表示应该使用a=x/定义逻辑变量found和flag,并使flag的初值为falsefound=true;/将逻辑常量true赋给逻辑变量found由于逻辑变量是用关键字bool来定义的,因此又称为布尔变量。逻辑型常量又称为布尔常量。所谓逻辑型,就是布尔型。设立逻辑类型的目的是为了看程序时直观易懂。,3.6.2逻辑常量和逻辑变量,在编译系统处理逻辑型数据时,将false处理为0,将true处理为1。因此,逻辑型数据可以与数值型数据进行算术运算。如果将一个非零的整数赋给逻辑型变量,则按“真”处理,如flag=123;/赋值后flag的值为truecoutb),高,低,例.floatscore;/*成绩*/不及格:score=60良好:80score90写成80=scorecoutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxa)max=b;elsemax=a;coutmax=maxbc;if(a+bc,例3.6求三角形的面积,运行情况如下:pleaseentera,b,c:2.453.674.89area=4.3565,应用举例,if语句中的执行语句如果又是另一个if语句,称为嵌套if语句if(.)if(.)语句1;else语句2;elseif(.)语句3;else语句4;,3.7.2i语句的嵌套,if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式n)语句n;else语句n+1;,3.7.2i语句的嵌套,如:if(number500)cost=0.15;elseif(number300)cost=0.10;elseif(number100)cost=0.075;elseif(number50)cost=0.05;elsecost=0;,3.7.2i语句的嵌套,例编写程序计算货物运费。设货物运费每吨单价p(元)与运输距离s(公里)之间有如下关系:,p=,输入要托运的货物重量为w吨,托运距离s公里,计算总运费t:t=p*w*s,3.7.2i语句的嵌套,控制流图,3.7.2i语句的嵌套,/例计算货物运费#include#includeusingnamespacestd;intmain()doublet,p,w,s;coutw;couts;if(s100)p=30;elseif(s200)p=27.5;elseif(s300)p=25;elseif(s400)p=22.5;elsep=20;t=p*w*s;coutThecostis:setiosflags(ios:fixed)setprecision(2)t$bab/acac/acbc/ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;coutabc=A,求一元二次方程ax2+bx+c=0的根。,求根公式:,当a=0时,方程不是二次方程,当b2-4ac=0时,有两个相同的实根:,当b2-4ac0时,有两个不同的实根:,当b2-4acabc;if(fabs(a)1e-8)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);coutIthastwodistinctrealroots:x1andx2endl;elserp=-b/(2*a);ip=sqrt(-d)/(2*a);coutIthastwocomplexroots:endl;coutrp+ipiendl;coutrp-ipib)?a:b;其中“(ab)?a:b”是一个“条件表达式”。它是这样执行的:如果(ab)条件为真,则条件表达式的值就取“?”后面的值,即条件表达式的值为,否则条件表达式的值为“:”后面的值,即b。,3.7.3条件运算符和条件表达式,条件运算符要求有3个操作对象,称三目(元)运算符,它是C+中惟一的一个三目运算符。条件表达式的一般形式为表达式1?表达式2表达式3条件运算符的执行顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。“max=(ab)?a:b”的执行结果是将条件表达式的值赋给max。也就是将a和b二者中的大者赋给max。条件运算符优先于赋值运算符,因此上面赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max。,3.7.3条件运算符和条件表达式,条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。如x?ab如果已定义x为整型变量,若x=0,则条件表达式的值为字符b的ASCII码。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中较高的类型。如有条件表达式xy?1:1.5如果xy,则条件表达式的值为1.5,若xy,值应为1,由于C+把1.5按双精度数处理,双精度的类型比整型高,因此,将1转换成双精度数,以此作为表达式的值。,3.7.3条件运算符和条件表达式,输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#includeusingnamespacestd;intmain()charch;cinch;ch=(ch=A,例3.7,一般形式:switch(表达式)case常量表达式1:语句1case常量表达式2:语句2case常量表达式n:语句ndefault:语句n+1,注:表达式类型为非浮点型各常量表达式类型要与之匹配各常量表达式要求各不相等default子句可选。缺省时,没有匹配值switch语句为空,语句标号,3.7.4多分支选择结构和switch语句,根据一个整型表达式的值决定程序分支,执行流程,3.7.4多分支选择结构和switch语句,例根据考试成绩的等级打印出百分制分数段。,#includeintmain()chargrade;coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:cout85_100n;caseb:cout70_84n;casec:cout60_69n;cased:cout60n;default:coutgrade;switch(grade)casea:caseA:cout85_100n;break;caseb:caseB:cout70_84n;break;casec:caseC:cout60_69n;break;cased:caseD:cout60n;break;default:coutb)max=a;elsemax=b;,3.7.4多分支选择结构和switch语句,if语句switch语句形成分支控制流程不形成程序控制流程用于复杂条件判断表达式的值为数值集合时作多分支控制,可读性较好,与if语句比较:,3.7.4多分支选择结构和switch语句,例3.8编写程序,判断某一年是否为闰年。#includeusingnamespacestd;intmain()intyear;boolleap;coutyear;/输入年份if(year%4=0)/年份能被4整除if(year%100=0)/年份能被4整除又能被100整除if(year%400=0)/年份能被4整除又能被400整除leap=true;/闰年,令leap=true(真)elseleap=false;/非闰年,令leap=false(假)else/年份能被4整除但不能被100整除肯定是闰年leap=true;/是闰年,令leap=true,3.7.5编写选择结构的程序,else/年份不能被4整除肯定不是闰年leap=false;/若为非闰年,令leap=falseif(leap)coutyearis;/若leap为真,就输出年份和“是”elsecoutyearisnot;/若leap为真,就输出年份和“不是”coutaleapyear.ws;if(s=3000)c=12;elsec=s/250;switch(c)case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:,case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;f=p*w*s*(1-d/100.0);coutfreight=fendl;return0;运行情况如下:pleaseenterp,w,s:10020300freight=588000,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,2,3.8循环结构和循环语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,2,3.8循环结构和循环语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,2,3.8循环结构和循环语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,2,3.8循环结构和循环语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,2,3.8循环结构和循环语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,2,3.8循环结构和循环语句,为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。,循环概念,问题:求2n,3.8循环结构和循环语句,两种典型循环结构,循环体的算法是什么?循环的条件、循环结束条件是什么?如何修改循环条件?,3.8循环结构和循环语句,语句形式,while(表达式)循环体;,3.8.1用while语句构成循环,语句形式,while(表达式)循环体;,关键字,3.8.1用while语句构成循环,语句形式,while(表达式)循环体;,逻辑表达式决定是否执行循环体,3.8.1用while语句构成循环,语句形式,while(表达式)循环体;,重复执行的操作直至表达式的值为false(0),3.8.1用while语句构成循环,语句形式,while(表达式)循环体;,执行流程,3.8.1用while语句构成循环,#includeintmain()inti=1,sum=0;while(i=100)sum=sum+i;i+;coutsum=sumendl;,想一想:循环条件是什么?循环结束条件是什么?哪一个语句修改循环条件?,一个简单的循环跟踪:求,3.8.1用while语句构成循环,#includeintmain()inti=1,sum=0;while(i=100)sum=sum+i;i+;coutsum=sumendl;,可以写成:sum+=i;i+;或:sum+=i+;,想一想,如果写成:sum+=+i;会有什么问题?,一个简单的循环跟踪:求,3.8.1用while语句构成循环,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,一个简单的循环跟踪:求,3.8.1用while语句构成循环,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,i=1;sum=0;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,i=3,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,1+0,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,1+0,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=100)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=100)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,i=3,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,2+1,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,1,sum=sum+i;i+;,2+1,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,1,sum=sum+i;i+;,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,i=3,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,3+3,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,1,sum=sum+i;i+;,3+3,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,1,sum=sum+i;i+;,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,1,sum=sum+i;i+;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,i=3,0,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumendl;,0,一个简单的循环跟踪:求,以sum=1+2+3模拟执行,#includeintmain()inti=1,sum=0;while(i=3)sum=sum+i;i+;coutsum=sumValue;/输入下一个数据ValueSum+=Value;/累加+ValuesProcessed;/计算已经输入的数据个数floatAverage=ValueSum/ValuesProcessed;coutnAverage:Averageendl;return0;,语句形式,do循环体while(表达式);,执行流程,3.8.2用do-while语句构成循环,例如,用do_while语句的求和式的程序,#includeintmain()inti=1,sum=0;dosum+=i;i+;while(i=100);coutsum=sumendl;,#includeintmain()inti=1,sum=0;dosum+=i;i+;while(i=100);coutsum=sumendl;,while(i1e-8);pi=s*4;coutpi=pi1e-7)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;coutpi=setiosflags(iosfixed)setprecision(6)piendl;return0;,语句形式,for(表达式1;表达式2;表达式3)循环体;,3.8.3用for语句构成循环,例如,用for语句的求和式的程序,#includeintmain()inti,sum=0;for(i=1;i=100;i+)sum+=i;coutsum=sumendl;,3.8.3用for语句构成循环,i=1;sum=0;while(i=n)sum+=i+;,i=1;sum=0;dosum+=i+;while(i=n),for(i=1,sum=0;i=n;i+)sum=sum+i;,3.8.3用for语句构成循环,三种循环语句实现:,不同形式的for语句结构,(1)i=1;/缺省表达式1for(;i=n)break;/缺省表达式2,(3)for(i=1;i=n;)sum=sum+i;i+;/缺省表达式3,(4)for(i=1;i=n;sum+=i+);/缺省循环体,3.8.3用for语句构成循环,不同形式的for语句结构,(5)for(i=1;sum+=i+,in)break;/缺省全部for的表达式,注意逗号表达式,3.8.3用for语句构成循环,0,无,2345,4,4,6,1,0,1,0,执行两次循环体显示;10,不执行循环体,intx=1;,intx=1;,一个循环语句的循环体内又包含循环语句,称为嵌套循环各种循环语句都可以互相嵌套,2.2.4循环的嵌套,3.8.5循环的嵌套,(1)while()while(),(2)dodowhile();while();,(3)for(;)for(;),3.8.5循环的嵌套,(4)while()dowhile();,(6)dofor(;)while();,(5)for(;)while(),3.8.5循环的嵌套,/例测试循环执行次数#includeintmain()coutitjn;for(inti=1;i=3;i+)/外循环couti;for(intj=1;j=3;j+)/内循环couttjendl;return0;,ij112321233123,2.2.4循环的嵌套,3.8.5循环的嵌套,break语句无条件地结束switch语句,或循环语句.While(表达式1)if(表达式2)break;,3.8.6break语句和continue语句,continue语句用于循环体中,终止当前一次循环准备下次循环。While(表达式1)if(表达式2)continue;,3.8.6break语句和continue语句,#includeusingnamespacestd;intmain()inti;for(i=1;i=5;i+)if(i%2!=0)cout“*”;elsecontinue;cout“#”;cout=3),迭代法,例求菲波那契数列的前40项,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),分析可以用迭代方法求解,为了得到当前项,要使用前两项,所以用两个变量迭代,f1,f2,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),例求菲波那契数列的前40项,1+1,f1,f2,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),例求菲波那契数列的前40项,1+1,f3,f2,2,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),例求菲波那契数列的前40项,f3,f2,2+1,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),例求菲波那契数列的前40项,f3,f4,2+1,3,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),例求菲波那契数列的前40项,2+3,f3,f4,Fibonacci数列:1,1,2,3,5,8,13,21,34,f1=1f2=1fn=fn-1+fn-2(n3),例求菲波那契数列的前40项,2+3,f5,f4,5,Fibona

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论