第 C 的流程控制_第1页
第 C 的流程控制_第2页
第 C 的流程控制_第3页
第 C 的流程控制_第4页
第 C 的流程控制_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

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

文档简介

会计学1第C的流程控制24.1.2算法的设计原则

1.符合数学计算规则只有符合数学规则的计算步骤才可以被计算机正确执行。2.保证结果确定如果一个算法对同一组数据进行多次计算,竟然获得多个不同的结果,这种算法是不确定的,是无效的。保证算法的确定性,最重要的方面是排除程序中随机数的产生(变量初始化)。

3.程序能够正常结束一个合理的算法应包含有限的操作步骤,而不能是无限的。

第1页/共87页34.1.2算法的设计原则

4.合理的输入

一个实际有效的程序中应该含有零个或者多个输入(一般会在程序的算法中加入一个或者多个输入

)。

5.合理的输出

一个有效的程序在设计算法时必须保证程序至少要有一个输出。

第2页/共87页44.1.3算法的表示工具怎样来描述一个算法呢?⑴自然语言⑵流程图⑶N-S图⑷伪代码(类似于数学语言)

流程图是目前全球软件开发领域使用最广泛的算法表示工具,它通过一些严格定义图形的组合来表示算法的步骤以及数据变化的走向。用图形表示算法,直观形象,易于理解。

自然语言就是人们日常生活中使用的语言。容易造成误解

1973年美国学者I.Nassi和B.Shneideman提出的一种无流线的流程图第3页/共87页5起止框流程图表示算法输入输出框判断框流程线处理框连接点注释框流程图符号:第4页/共87页6例:求的值。求多项式的累乘积问题。

定义变量:M—累乘积

N—代表一项的分母算法描述:自然语言+伪代码算法:⑴M←1,N←1⑵M←M×⑶N←N+1⑷如果N≤100,转⑵否则,转⑸⑸输出M的值⑹结束1N循环第5页/共87页7开始结束M←1N←1M←M×N←N+11N输出M的值N≤100TrueFalse处理框流程线判断框M←1N←1M←M×N←N+1N>100

输出M的值1N用N-S图描述用流程图描述第6页/共87页8结构化程序设计的基本结构:三种。

1.顺序结构:先执行A操作,再执行B操作.AB(a)流程图(b)N-S图ABA、B可以是一个简单语句或一个基本结构4.1.4结构化程序设计中基本结构的表示第7页/共87页92.选择结构:C(Condition)代表一个条件C

TrueFalse

AB(a)流程图(b)N-S图

True

FalseCAB第8页/共87页103.循环结构:当(while)型循环

(1)当条件C成立时,反复执行A操作,直到C为假时,才停止循环。CAFalseTrue

当C为真

A(a)流程图(b)N-S图有可能循环体一次都不执行

第9页/共87页113.循环结构:直到(until)型循环(2)先执行A操作,再判条件C,若为“假”重复执行A,直到C为“真”停止ACFalseTrue

A

直到C为真(a)流程图(b)N-S图循环体至少要被执行一次第10页/共87页12AB三种结构特点:⑴单入口、单出口。⑵每一部分都可能被执行到。⑶没有死循环。⑷A、B可能是一个更基本的结构。CAFalseTrueACFalseTrue

True

FalseCAB第11页/共87页134.2C++语言程序的结构和语句

计算机程序运行的时候是将一条条的语句翻译成机器指令,控制计算机产生计算的结果的。所以语句是计算机程序的基本组成单位。

注意:在C++程序中,任何执行语句都必须写在函数中,不允许出现不属于函数的独立执行语句。

1.定义语句

inta,b;语句分类:(6类)C++程序是由若干函数构成,而一个函数由若干语句构成。这些语句组合成上述三种结构以实现算法。第12页/共87页142.控制语句:(9种,控制语句的执行流程

)(1)if()~else~条件语句(2)for()~循环语句(3)while()~循环语句(4)do~while()循环语句(5)continue结束本次循环语句(6)break中止执行switch或循环语句(7)switch多分支选择语句(8)goto转向语句(9)return从函数返回语句第13页/共87页155.空语句:;

只有一个分号,什么都不做。主要用于作被转向点,或空循环体。3.函数调用语句:

例:cos(x);调用标准库函数

a=maxx(x1,x2);调用自定义函数4.表达式语句:由“表达式+分号”构成。例:a+b;a=3+x;

i++;第14页/共87页16

6.复合语句:

用{}把多条语句括起来构成复合语句,从语法上看成一条简单语句。例:{a=1;b=2;c=3;}三个简单语句一个复合语句或写成:{a=1;b=2;c=3;}第15页/共87页174.3选择结构语句的使用4.3.1if语句1.

if(<表达式>)语句2.

if(<表达式>)语句1else语句2语句

表达式假真语句1

表达式假真语句2

if语句----根据给定条件选择所执行的操作。不平衡if语句单选平衡if语句二中选一第16页/共87页18#include<iostream.h>voidmain(){floata,b,c,max;cout<<"请输入三个数:";cin>>a>>b>>c;max=a;if(max<b)t=b;if(max<c)t=c;cout<<"最大值:"<<max<<endl;}[例4.1]输入三个数,求出并输出其中最大数两个独立的不平衡if语句动态看程序的执行,有些部分可能执行到,也可能执行不到。第17页/共87页19max=b

max<b假真max=cmax<c假真cin>>a>>b>>c;max=a;cout<<"最大值:"<<max<<endl;流程图如:输入数据123和132,程序每次执行的语句不同。第18页/共87页20#include<iostream.h>voidmain(){

floata,b,c,max;cout<<"请输入三个数:";cin>>a>>b>>c;if(a<b)max=b;else max=a;if(max<c)cout<<"最大值:"<<c<<endl;elsecout<<"最大值:"<<max<<endl;}[例4.2]输入三个数,求出并输出其中最大数两个独立的平衡if语句第19页/共87页213.if(<表达式1>)语句1elseif语句

elseif(<表达式2>)语句2组合if语句

elseif(<表达式3>)语句3…else语句n

语句1表达式1假真语句2表达式2表达式3语句3语句4假假真真对程序的一次执行,只可能执行语句1、语句2、

……语句n中的一个语句…第20页/共87页22[例4.3]输入三个数,求出并输出其中最大数组合if语句的使用,一条语句#include<iostream.h>voidmain(){floata,b,c;cout<<"请输入三个数:";cin>>a>>b>>c;if(a>=b&&a>=c)cout<<"最大值:"<<a<<endl;elseif(b>=a&&b>=c)cout<<"最大值:"<<b<<endl;elsecout<<"最大值:"<<c<<endl;}第21页/共87页23例:输入学生的分数x,根据成绩的高低,输出不同等级若x为:90~100分则输出A80~89分则输出B70~79分则输出C60~69分则输出D60分以下则输出E#include<iostream.h>voidmain(){intx;cin>>x;if(x>=90)cout<<'A'<<'\n';elseif(x>=80)cout<<'B'<<'\n';elseif(x>=70)cout<<'C'<<'\n';elseif(x>=60)cout<<'D'<<'\n';elsecout<<'E'<<'\n';}例如输入:75执行顺序输出结果注意:条件的写法第22页/共87页24例:输入学生的分数x,根据成绩的高低,输出不同等级#include<iostream.h>voidmain(){intx;cin>>x;if(x>=90)cout<<'A'<<'\n';elseif(80<=x<90)cout<<'B'<<'\n';elseif(70<=x<80)cout<<'C'<<'\n';elseif(60<=x<70)cout<<'D'<<'\n';elsecout<<'E'<<'\n';}注意:条件的写法此写法错误:若x=-1则表达式结果为真!正确的写法为:80<=x&&x<90或简写为x>=80(以下类推)第23页/共87页25例:输入学生的分数x,根据成绩的高低,输出不同等级#include<iostream.h>voidmain(){intx,d;cin>>x;d=x/10;if(d>=9)cout<<'A'<<'\n';elseif(d=8)cout<<'B'<<'\n';elseif(d=7)cout<<'C'<<'\n';elseif(d=6)cout<<'D'<<'\n';elsecout<<'E'<<'\n';}注意:条件的写法正确的写法为:d==8(以下类推)此写法错误:若x<90,则不论x为何值总是输出B。第24页/共87页26例:任意输入一个小于等于5位数的正整数,输出其位数。例:输入23输出2输入13579输出5#include<iostream.h>voidmain(){intx,ws;cin>>x;if(x>=10000)ws=5;elseif(x>=1000)ws=4;elseif(x>=100)ws=3;elseif(x>=10)ws=2;elsews=1;cout<<ws<<endl;}注意:条件的写法第25页/共87页27voidmain(){charc;cin>>c;

if(c<32)cout<<"控制字符\n";elseif('0'<=c&&c<='9')cout<<"数字字符\n";elseif('A'<=c&&c<='Z')cout<<"大写字母\n";elseif('a'<=c&&c<='z')cout<<"小写字母\n";elsecout<<"其他字符\n";}[例]判断输入字符的种类。把字符分为五类:

①数字字符

②大写字母

③小写字母、

④控制字符(ASCII码<32)⑤其他字符第26页/共87页284.3.2if语句的嵌套形式if()if()语句1else语句2elseif()语句3else语句4内嵌if内嵌if内嵌的if-else语句为一条语句第27页/共87页29#include<iostream.h>voidmain(){floatx,y;cout<<"请输入x变量的值:";cin>>x;if(x<=10) if(x<10)y=-10;elsey=5;elsey=20;cout<<"y="<<y<<endl;}[例4.5]用嵌套的if语句解决数学问题

y=-10 (x<10)5 (x=10)20 (x>10) 嵌套if语句,流程图见书第28页/共87页30if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));cout<<area<<endl;}elsecout<<"itisnotatrilateral\n";if语句中需要注意的问题

在if和else后面可以有多个操作语句,此时用花括号将几个语句括起来形成复合语句

复合语句用{和}括起来复合语句后无分号“;”第29页/共87页314.3.3条件运算符if(a>b)max=a;elsemax=b;max=(a>b)?a:b;运算原则:当表达式1为真时,整个表达式的值为表达式2

当表达式1为假时,整个表达式的值为表达式3运算优先级:比赋值运算符高比算术、关系、逻辑运算符低结合性:自右向左C++语言中唯一的三目运算符一般形式:表达式1?表达式2

:表达式3第30页/共87页32voidmain(){charch;cin>>ch;ch=(ch>='A'&&ch<='Z')?(ch+32):ch;cout<<ch<<'\n';}[例]输入一个字符,判别它是否是大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字母。第31页/共87页334.3.4开关语句(多分支选择,switch语句)一般形式switch(表达式){case常量表达式1:语句1

case常量表达式2:语句2……case常量表达式n:语句n

default:

语句n+1}3.当表达式的值与所有常量表达式的值均不相等时,就执行default后面的语句2.当表达式的值与某个常量表达式的值相等时,就执行后面相应的语句1.整型表达式或字符型表达式第32页/共87页34chargrade;cin>>grade;switch(grade){case‘A’:cout<<“优“<<endl;case‘B’:cout<<“良“<<endl;case‘C’:cout<<“中“<<endl;case‘D’:cout<<“及格“<<endl;default:cout<<“不及格“<<endl;}4.执行完一个case后面语句后,流程转下一个case继续执行。本例中,若grade的值等于‘A’,则将连续输出:优良中及格不及格switch语句示例根据考试成绩的等级打印出百分制分数段break;break;break;break;default后可以不加break语句5.加上break语句后,就可以实现执行一个case后,终止switch语句第33页/共87页35加

break

语句后程序的流程图语句1‘A’输出“优”输出“良”输出“中”输出“及格”输出“不及格”

‘B’‘C’‘D’其他第34页/共87页366.switch语句中多个case共用一组执行语句chargrade;

cin>>grade;

switch(grade)

{case'A':

case'B':

case'C':cout<<">60\n";break;

case'D':

case'E':cout<<"<60\n";

}grade的值为'A'、'B'或'C'时执行同一组语句grade的值为'D'或'E'时执行另外一组语句第35页/共87页37注意:1.在switch语句中,default分支可以放在任何位置。但是为了配合常量表达式匹配查询的执行流程,使得程序书写和阅读方便,一般将default分支写在switch语句的最后一行。

2.每个常量表达式的值都必须互不相同,否则当表达式的值与多个常量表达式的值都匹配时,计算机将无法决定到底执行哪一个常量表达式后面的语句序列。

3.常量表达式必须是一个确定的字符类型或者整数类型的常量数值,而不能是浮点数或者变量表达式。

4.switch语句并不与组合的if语句完全等价。switch语句只能处理字符类型和整数类型的条件判断,而组合的if语句不但可以处理字符类型和整数类型的条件判断,还可以对浮点数等其它的条件进行判断。

第36页/共87页38例:i=2;switch(i){case1:i++;case2:i++;case3:i++;case4:i++;default:i++;}cout<<i<<'\n';输出:?输出:6第37页/共87页39[例4.6]

根据收入,计算应缴纳的公积金特点:根据收入,缴纳比例不同

in<1000 2%比例1000<=in<2000 3%比例2000<=in<5000 4%比例5000<=in<100005%比例10000<=in6%比例缴纳总金额:

fee=in*r%in收入r缴纳比例的分子程序举例temp=in/1000;当in<1000 temp=0r=2当1000<=in<2000 temp=1r=3当2000<=in<5000 temp=2,3,4r=4当5000<=in<10000temp=5,6,7,8,9r=5当10000<=intemp=其它值

r=6第38页/共87页40case5:case6:case7:case8:case9:r=5;break;default:r=6;}fee=in*r/100.0;cout<<"公积金为:"<<fee<<endl;}运行过程:输入:3500

输出:公积金为:140#include<iostream.h>voidmain(){intin,temp,r;floatfee;cout<<"请输入您的收入:";cin>>in;temp=in/1000;switch(temp)

{case0:r=2;break;case1:r=3;break;case2:case3:case4:r=4;break;第39页/共87页41#include<iostream.h>voidmain(){ intin,r; floatfee; cin>>in;//输入收入

if(in<1000)r=2; elseif(in<2000)r=3; elseif(in<5000)r=4; elseif(in<10000)r=5; elser=6; fee=in*r/100.0; cout<<"公积金为:"<<fee<<endl;}[例]设用条件语句实现上例公积金的计算第40页/共87页42voidmain(){charop;floatnum1,num2,result=0;cin>>num1>>op>>num2;switch(op)

{case'+':result=num1+num2;break;case'-':result=num1-num2;break;case'*':result=num1*num2;break;case'/':result=num1/num2;break;default:"无效运算符\n";

}

cout<<num1<<op<<num2<<'='<<result<<'\n';}[例]设计一个简单的计算器程序,

完成简单的四则运算如:输入2.5*4输出2.5*4=10又如:输入2.5+4输出2.5+4=6.5第41页/共87页434.4循环结构语句的使用循环

—当满足一定的条件,重复处理的过程如:解决步骤:(1)整型变量sum=0,i=0(2)令i=i+1,sum=sum+i,(3)若i<100,则重复步骤(2)(4)输出sum步骤(2)称为循环体实现循环的四种方式goto+语句标号

while语句

for语句

do-while语句第42页/共87页444.4.1goto语句和标号goto标号;一般形式:

其作用是确定流程跳转目标语句标号:用标识符表示,命名规则与变量名相同。goto语句主要用途与if语句一起构成循环结构从循环体中跳转到循环体外

第43页/共87页45例4.7用if语句、goto语句构成循环的实例if、goto语句求和#include<iostream.h>voidmain(){inti=1,sum=0;loop:if(i<=100){sum=sum+i;i++;gotoloop;}cout<<sum<<'\n';}i=1sum=0sum=sum+ii++i<=100真假第44页/共87页46由于在程序中大量使用goto跳转命令会造成程序结构的混乱,该命令要限制使用第45页/共87页474.4.2while()语句

一般形式while(<表达式>)<语句>当表达式为真(非0)值时,执行while语句中的内嵌语句。语句表达式假真先判断表达式后执行语句第46页/共87页48[例4.8]while语句求和实例#include<iostream.h>voidmain(){inti=1,sum=0;while(i<=100)

{sum=sum+i;i=i+1;}cout<<"sum="<<sum<<'\n';}循环体假sum=sum+ii=i+1i<=100真i=1sum=0输出sum第47页/共87页49while语句中应注意的问题循环体包含一个以上的语句时,应该用大括号括起来#include<iostream.h>voidmain(){inti=1,sum=0;while(i<=100)

{sum=sum+i;i=i+1;}cout<<"sum="<<sum<<'\n';}在循环体内应有使循环趋于结束的语句

累加计算中的累加和变量一般初始化为0,累乘计算中的累乘积变量一般初始化为1。第48页/共87页504.4.3for语句for([初始化表达式];[条件表达式];[修正表达式])语句一、一般形式语句条件表达式假真修正表达式初始化表达式相当于“当型”循环初始化表达式;while(条件表达式){

语句;

修正表达式;};第49页/共87页51二、for语句最简单的应用形式for(i=1;i<=100;i++)sum=sum+i;i=1;while(i<=100){sum=sum+i;i++;}for([初始化表达式];[条件表达式];[修正表达式])语句第50页/共87页52[例4.9]用for语句求和实例#include<iostream.h>voidmain(){intsum=0;for(inti=1;i<=100;i++)sum+=i;cout<<"从1加到100的总和是:"<<sum<<endl;}第51页/共87页53分号不能省略i=1;for(;i<=100;i++)sum=sum+i;分号不能省略for语句有关说明2.“初始化表达式”可省略,初始化移至循环体前3.“条件表达式”可省略,做“永真”处理,循环无终止地进行。真sum=sum+ii++i=1for(i=1;;i++)sum=sum+i;1.在C++的for语句的初始化表达式中,不但可以为变量赋初始值,还可以定义变量。

for(inti=0;i<100;i++);

第52页/共87页54for语句有关说明4.“修正表达式”可省略,“修正”移至循环体内循环变量在循环体内变化5.“循环体”可为空,for(i=1;i<=100;sum=sum+i,i++);将循环体中应做的工作,放在“修正表达式”中。for(i=1;i<=100;){sum=sum+i;i++;}第53页/共87页556.三个“表达式”和“语句”都可省略,无限循环7.“初始化表达式”和“修正表达式”可以是一个以上的表达式while(1);for语句有关说明for(sum=0,i=1;i<=100;i++,j--)sum=sum+i;for(i=1;i<=100;i++,i++)sum=sum+i;for(;;);第54页/共87页564.4.4do-while()语句do<语句>while(<表达式>)一、一般形式

先执行指定的内嵌语句,然后判断表达式。语句表达式假真先执行语句然后再判断表达式第55页/共87页57二、[例4.10]do-while()语句求和#include<iostream.h>voidmain(){inti=1,sum=0;

do{sum+=i;i++;}while(i<=100);cout<<"sum="<<sum<<'\n';}假sum+=ii++i<=100真i=1sum=0输出sum第56页/共87页58三、while和do-while循环比较while(表达式)语句语句表达式假真do语句while(表达式)语句表达式假真第57页/共87页59三、while和do-while循环比较main(){inti,sum=0;cin>>i;while(i<=10){sum=sum+i;i++;}cout<<sum;}main(){inti,sum=0;cin>>i;do{sum=sum+i;i++;}while(i<=10);cout<<sum;}程序运行过程155程序运行过程155程序运行过程110程序运行过程1111第58页/共87页60例:输入一个4位数的整数,输出其各位数字之和。如:输入2426输出14解1

(硬性分解各位)

#include<iostream.h>voidmain(){intn,a,b,c,d;cin>>n;/*n=abcda千位,b百位,c十位,d个位*/a=n/1000;b=n%1000/100;c=n%100/10;d=n%10;cout<<a+b+c+d<<"\n";}没有使用循环,若n是4位以上的数字,此方法不适用。第59页/共87页61解2

(循环分解各位)

#include<iostream.h>voidmain(){intn,sum=0;cin>>n;

while(n>0){sum+=n%10;n=n/10;}cout<<sum<<"\n";}可将n推广为任意位!!!第60页/共87页62例:分解整数:找出100到1000之间的符合下述条件的数,条件为:该数能被5整除而且该数各位数字之和等于9。如:数225#include<iostream.h>voidmain(){inti,a,b,c;for(i=100;i<1000;i+=5){a=i/100;b=i%100/10;c=i%10;if(a+b+c==9)cout<<i<<"\n";}}第61页/共87页63三种循环的比较三种循环可以处理同一问题。while和do-while循环,循环变量应在循环语句前初始化。while循环和for循环是先判断表达式后执行语句,而do-while循环是先执行语句,然后判断表达式。对while、do-while和for循环,可用break语句跳出循环,而用continue语句结束本次循环whilefordo-while第62页/共87页644.4.5break语句和continue语句break;break语句1.break语句可以使流程跳出switch结构2.break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;cout<<area;}当面积值大于100时,跳出循环体,不再执行其余几次循环一般形式:第63页/共87页65continue语句continue;一般形式:

其作用是结束本次循环,即跳过循环体下面未执行的语句,接着进行下一次是否执行循环的判定。for(n=100;n<=200;n++){if(n%3==0)

continue;cout<<n<<‘\n’;}当n能被3整除时,跳出本次循环,不再执行cout语句,但是还要继续循环判断本程序的功能是打印出100~200之间不能被3整除的整数第64页/共87页66for(r=1;r<=10;r++){area=pi*r*r;if(area>100)break;cout<<area;}for(n=100;n<=200;n++){if(n%3==0)

continue;cout<<n<<‘\n’;}三、break和continue语句的区别第65页/共87页67例:比较两段程序的区别for(i=1;i<=5;i++){x=i*i;if(x==9)break;cout<<x<<'\n';}cout<<"i="<<i<<'\n';for(i=1;i<=5;i++){x=i*i;if(x==9)continue;cout<<x<<'\n';}cout<<"i="<<i<<'\n';输出:

14i=3输出:

141625i=6第66页/共87页68[例4.11]使用循环语句按照定义求任意两个数的最大公约数和最小公倍数。

#include<iostream.h>voidmain(){intx,y,i,k;cout<<"请输入两个整数:";cin>>x>>y;k=x<y?x:y;//取两数中的小数

for(i=k;i>=1;i--)//求最大公约数

if(x%i==0&&y%i==0){ cout<<"最大公约数是:"<<i<<endl; break;}

第67页/共87页69k=x>y?x:y;//取两数中的大数

for(i=k;i<=x*y;i++)//求最小公倍数

if(i%x==0&&i%y==0){cout<<"最小公倍数是:"<<i<<endl;break;}}第68页/共87页704.4.6循环的嵌套及其应用嵌套:一个循环体内包含另一个完整的循环结构多层循环:内嵌的循环体内又嵌套循环结构

前述的三种循环都可以互相嵌套三重循环双重循环第69页/共87页71#include<iostream.h>#include<iostream.h>voidmain(){inti,j;cout<<"乘法表:"<<endl;for(i=1;i<=9;i++)//外循环控制输出的行数

{for(j=1;j<=i;j++)//内循环

cout<<i<<"×"<<j<<"="<<i*j<<'\t';cout<<endl;}}[例4.12]用循环嵌套技术输出99乘法表

第70页/共87页72[例4.13]求ax2+bx+c=0方程的根,#include<iostream.h>#include<math.h>voidmain(){floata,b,c,disc,x1,x2,real,image;cout<<"请输入三个实数:";cin>>a>>b>>c;cout<<"\n方程";if(fabs(a)<=1e-7)//a==0,注意写法

cout<<"不是二次方程,解为:"<<-c/b<<endl;else

{//处理其它三种情况

disc=b*b-4*a*c;第71页/共87页73if(fabs(disc)<=1e-7)//disc==0cout<<"有两个相等的实数根:"<<-b/(2*a)<<endl;elseif(disc>1e-7) {x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);cout<<"有两个不相等的实数根:"<<x1<<"和"<<x2<<endl; }else {real=-b/(2*a);image=sqrt(-disc)/(2*a);cout<<"有两个复数根:"<<endl; cout<<real<<"+"<<image<<"i"<<endl;cout<<real<<"-"<<image<<"i"<<endl; }}}第72页/共87页74[例4.14]输入一个int型整数num,逆向输出其各位数字,同时求出其位数以及各位数字之和。#include<iostream.h>voidmain(){ intnum,sum=0,k,i=0; cin>>num; while(num>0) { k=num%10; cout<<k<<""; sum+=k; i++; num=num/10; } cout<<"\n各位数字之和:"<<sum<<endl; cout<<"数字位数:"<<i<<endl;}第73页/共87页75例4.15:循环求cos(x)#include<iostream.h>#include"math.h"voidmain(){ intsign,i;floatx,m,n,t,cos; cout<<"请输入X的值:"; cin>>x;

第74页/共87页76cos=0;t=1;n=1.0;m=1.0;sign=1;i=0;while((fabs(t))>=1e-9){ cos=cos+t;//累加和

i=i+2;//项数

n=n*x*x;//分子的值

m=m*i*(i-1);//分母的值

sign=-sign;//符号

t=sign*n/m;//通项的值

}cout<<"cos(x)="<<cos<<endl;}

注意:●循环结束条件。第75页/共87页77[例4.16]

使用循环语句求解1!+2!+…+20!多项式求和问题。#include<iostream.h>voidmain(){ doublesum,t;sum=0; t=1; for(inti=1;i<=20;i++){ t=t*i;//计算每一个阶乘

sum=sum+t;}cout<<"sum="<<sum<<endl;}

第76页/共87页78#include<iostream.h>#include<iomanip.h>voidmain(){intf1=1,f2=1;

for(inti=1;i<=20;i++)

{

cout<<setw(12)<<f1<<setw(12)<<f2;if(i%2==0)cout<<endl;f1=f1+f2;f2=f2+f1;

}}[例4.17]求Fabonacci数列前40个数1,1,2,3,5,8,13,……f1+f2=f3↓↓f1f2控制换行=f3第77页/共87页79运行结果如下:

11235813213455891442333776109871597258441816765 …

第78页/共87页80[例]判断m是否是素数(框图)读入mk=mi=2m被i整除用break结束循环i=i+1i>=k+1输出:m是素数输出:m不是素数当i<=k真假返回第79页/共87页81#include<iostream.h>#include<math.h>voidmain

温馨提示

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

评论

0/150

提交评论