《MATLAB程序设计》第3章预处理与语句2 (1)_第1页
《MATLAB程序设计》第3章预处理与语句2 (1)_第2页
《MATLAB程序设计》第3章预处理与语句2 (1)_第3页
《MATLAB程序设计》第3章预处理与语句2 (1)_第4页
《MATLAB程序设计》第3章预处理与语句2 (1)_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、3.4 分支结构及语句实现分支结构及语句实现 3.4.1单分支结构及其语句实现单分支结构及其语句实现 【格式】【格式】if() ;【说明】【说明】 可以是关系表达式、逻辑表达式和可以是关系表达式、逻辑表达式和其他表达式,常用的是其他表达式,常用的是关系表达式和逻辑表达式关系表达式和逻辑表达式;语句;语句可以是可以是一条语句一条语句,也可以是,也可以是复合语句复合语句,语句可以没有,但语句可以没有,但分号一定不能少分号一定不能少。 if(条件表达式条件表达式) 语句语句1; 语句语句2; 单分支结构及其语句实现单分支结构及其语句实现简单简单if语句执行过程语句执行过程表达式表达式语句语句FT【功

2、能】【功能】首先计算首先计算的值,的值,如果如果的值为真(的值为真(非非0即为真即为真),执行,执行,否则(,否则(的值为的值为0)执行)执行ifif语句的下一个语句。语句的下一个语句。简单简单ifif语句语句 示例示例【实例实例3-4-1】已知某学生已知某学生“高等数学高等数学”课程的成绩,课程的成绩,如果及格了,输出如果及格了,输出“ Passed! ”。思路思路:成绩:成绩score按是否及格划分:按是否及格划分:如果如果score=60,输出输出“Passed!”,否则不做任何处理。否则不做任何处理。算法:算法:1. 定义浮点型变量定义浮点型变量score并输入实际分数给并输入实际分数

3、给score;2. if(score=60) 输出输出 Passed!;double score;coutscore;if (score =60) cout“Passed! ”endl;【格式】【格式】if() else 3.4.2 双分支结构及其语句实现双分支结构及其语句实现【说明】【说明】和和可以是一条语句,也可可以是一条语句,也可以是复合语句。以是复合语句。ififelseelse语句语句表达式表达式语句语句1语句语句2ifelse语句执行过程语句执行过程FT【功能】【功能】先计算先计算的值。的值。如果如果的的值为真,执行值为真,执行,否则执,否则执行行。只有一条通路只有一条通路ifif

4、elseelse语句示例语句示例【例【例3-4-2 】输入任意一个整数输入任意一个整数,说明该数是奇数还是偶数说明该数是奇数还是偶数)0! 2%( )02%( )(xifxifxf奇数偶数算法:算法:1. 输入一个整数给整型变量输入一个整数给整型变量2. if(0=x%2) coutx“是偶数;是偶数;” endl; else coutx“是奇数;是奇数;” =0) cout“Passed!” endl; else cout“No passed!” endl;【例【例3-4-4 】已知三角形的三边长,求三角形的面积。已知三角形的三边长,求三角形的面积。float a,b,c,l,s;couta

5、bc;if(a+bc&a+cb&b+ca) l=(a+b+c)/2; s=sqrt(l*(l-a)*(l-b)*(l-c); cout“s=”sendl; else cout“不能构成三角形!不能构成三角形!”endl;elseacbbaifl-cl-bl-alS!),cac,b()()(不能构成三角形【格式】【格式】if() else if() else if() else 3.4.3 多多分支结构及其语句实现分支结构及其语句实现1. if语句的嵌套形式语句的嵌套形式【功能】先计算【功能】先计算的值。的值。 如果如果的值的值为真,执行为真,执行,否则计算否则计算的值。的值。 如果如果的值的值

6、为真,执行为真,执行,否则计算否则计算的值的值只有一条通路只有一条通路【例【例3-4-7】已知已知x的值,求的值,求y的值。的值。if语句的嵌套形式语句的嵌套形式示例示例)0(16*2)0(5)0(1*3*222xxxxxxxyfloat x,y;coutx;if( x0) y=2*x*x+3*x-1; else if(x=0) y=5; else y=2*x*x-6*x+1; if 语句中,如果内嵌语句又是语句中,如果内嵌语句又是if语句,就构成了语句,就构成了嵌套嵌套if语句语句。if 语句可实现语句可实现二选一二选一分支,而嵌套分支,而嵌套if语语句则可以实现句则可以实现多选一多选一的多

7、路分支情况。的多路分支情况。嵌套有两种形式,第一种是嵌套在嵌套有两种形式,第一种是嵌套在else分支中分支中:if () ; else if () 语句语句2; else if else ; 第二种是嵌套在第二种是嵌套在if分支中为:分支中为:if () if () ; else; if 语句 要特别注意要特别注意elseelse和和ifif的配对关系。的配对关系。C+C+规定了规定了ifif和和elseelse的的“就近配对就近配对”原则,即相距最近且还没原则,即相距最近且还没有配对的一对有配对的一对ifif和和elseelse首先配对。首先配对。按上述规定,第按上述规定,第二种嵌套形式中的

8、二种嵌套形式中的elseelse应与第二个应与第二个ifif配对。如果根配对。如果根据程序的逻辑需要改变配对关系,则要将属于同一据程序的逻辑需要改变配对关系,则要将属于同一层的语句放在一对层的语句放在一对“”中。如第二种嵌套形式中,中。如第二种嵌套形式中,要让要让elseelse和第一个和第一个ifif配对,语句必须写成:配对,语句必须写成:if (表达式表达式1) if (表达式表达式2) 语句语句1 ; else 语句语句2 ; 第二种嵌套形式较容易产生逻辑错误,而第一第二种嵌套形式较容易产生逻辑错误,而第一种形式配对关系则非常明确,因此从程序可读性角种形式配对关系则非常明确,因此从程序可

9、读性角度出发,度出发,建议尽量使用第一种嵌套形式。建议尽量使用第一种嵌套形式。请看以下两个语句:请看以下两个语句:/语句语句1:if(n%3=0) if(n%5= =0) coutn是是15的倍数的倍数endl; else cout n是是3的倍数但不是的倍数但不是5的倍数的倍数 endl;/语句语句2:if(n%3=0) if(n%5=0) coutn是是15的倍数的倍数endl; else cout n 不是不是3的倍数的倍数两个语句的差别只在于一个两个语句的差别只在于一个“”,但表达的逻辑,但表达的逻辑关系却完全不同。关系却完全不同。 if语句的嵌套语句的嵌套示例示例【例【例3-4-9】

10、输入一个学生的成绩(百分制),转换输入一个学生的成绩(百分制),转换成成5分制。分制。0019059080480703706026001)(xxxxxxf #include using namespace std;int main() int score, grade; cinscore; if(score=90) grade=5;cout=80) grade=4;cout=70) grade=3;cout=60) grade=2;cout=0) grade=1;coutgeade; else cout“data error!n”; return 0;001905908048070370602

11、6001)(xxxxxxf【例例3.4】 某商场优惠活动规定,某种商品单某商场优惠活动规定,某种商品单价为价为80元,一次购买元,一次购买5件以上件以上(包含包含5件件)10件以件以下下(不包含不包含10件件)打打9 折,一次购买折,一次购买10件以上件以上(包包含含10件件) 打打8折。设计程序根据客户的购买量计折。设计程序根据客户的购买量计算总价。算总价。算法算法1、输入购买件数、输入购买件数count,设置单价设置单价price=80(元元) 2、根据根据count值确定折扣值确定折扣discount;3、实际售价实际售价amount=price*count*discount;4、输出输

12、出amount的值。的值。步步2算法细化:算法细化:2.1、if(count=5&count=10)discount=0.8;#include using namespace std;int main() float price=80,discount,amount;/单价单价,折扣折扣,总价总价 int count;/购买件数购买件数 cout输入购买件数输入购买件数:count; if(count5) discount=1; else if(count10) discount=0.9; else discount=0.8; amount=price*count*discount; cout

13、购买件数:购买件数:countendl; cout单价:单价:pricet折扣:折扣:“discountendl; cout总价:总价:amountendl; return 0; 请在请在VC+平台上运行,输入不同的件数,使程序所有分支平台上运行,输入不同的件数,使程序所有分支都可以被执行一次。都可以被执行一次。okswitch语句也称为语句也称为开关语句开关语句,它是,它是多分支多分支结构,结构,而而if语句是两分支结构,在实际中语句是两分支结构,在实际中常常会碰到多分支选择问题,例如学生成常常会碰到多分支选择问题,例如学生成绩分类(绩分类(90分以上为分以上为A,8089分为分为B,707

14、9分为分为C)。当)。当条件值条件值为一系列为一系列整数值整数值或字符或字符时,用时,用switch语句比较简捷。语句比较简捷。2. 2. 多多分支选择结构和分支选择结构和switchswitch语句语句 【格式】【格式】switch()case : ; break; case : ; break; case : ; break; case : ; break; default: ;开关语句开关语句 【说明】【说明】(1)case后边的后边的可以是整型常量表达式可以是整型常量表达式或字符型常量表达式。或字符型常量表达式。(2)也称为开关常量。也称为开关常量。(3)可以是一条简单的语句或复合语句

15、,即可以是一条简单的语句或复合语句,即使语句使语句i是复合语句,也可以不用大括号括起来。是复合语句,也可以不用大括号括起来。(4) default:语句语句n+1可以缺省。可以缺省。当执行完当执行完后,不是马上跳出后,不是马上跳出switch语句,而语句,而是接着执行是接着执行、,直至直至。(5) case常量表达式的值常量表达式的值必须唯一必须唯一开关语句示例开关语句示例switch(k) case 1: coutk=kendl; case 2: coutk=kendl; default: coutk=kendl;当当k=1时,输出时,输出3次次k=1;当当k=2时,输出时,输出2次次k=2

16、。一般情况下,并不希望一般情况下,并不希望这样这样“穿过穿过”整个整个switch语句,而是通过语句,而是通过break语语句控制跳出句控制跳出switch语句。语句。修正后的开关语句示例修正后的开关语句示例switch(k) case 1: coutk=kendl; break; case 2: coutk=kendl; break; default: coutk=kendl;当当k=1时,输出时,输出1次次k=1;当当k=2时,输出时,输出1次次k=2。开关语句开关语句【说明】【说明】(1)任意两个)任意两个case后的后的不能相同。不能相同。(2)多个)多个case可以共用一个可以共用一

17、个。例如:。例如:switch(x) case 1: case 3: case 5: y=x; 开关语句示例开关语句示例【例【例3-4-10】任意给定一个月份数,输出是哪个季节(任意给定一个月份数,输出是哪个季节(12,1,2月是冬月是冬季;季;3 ,4,5月是春季;月是春季;6,7,8月是夏季;月是夏季;9,10,11月是秋季)。月是秋季)。#include void main()int month; coutmonth; switch(month) case 12: case 1: case 2: coutwinterendl; break;case 3: case 4: case 5:

18、cout“spring”endl; break;case 6: case 7: case 8: coutsummerendl; break;case 9: case 10: case 11: coutautumnendl; break; default:coutinput month error!endl; 开关语句示例开关语句示例【例【例3-4-11】任意给定一个学生的成绩(百分制),转换成任意给定一个学生的成绩(百分制),转换成5分制后输出。分制后输出。#include void main()int score,grade; coutscore; score=score10; switch

19、(score) case 10: case 9: grade=5 ; break; case 8: grade=4; break;case 7: grade=3; break;case 6: grade=2; break;case 5:case 4:case 3:case 2:case 1:case 0: grade=1; break; default: grade=-1; cout“grade=gradeendl; 【例【例3-4-12】阅读下列程序,给出运行结果。阅读下列程序,给出运行结果。#include void main() int x=1,y=0,a=0,b=0; switch(x

20、) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; couta=a b=bendl;3.4.4 条件运算符条件运算符与与条件表达式条件表达式条件运算符条件运算符 ?:?:条件运算符是条件运算符是C+中唯一的三目运算符。中唯一的三目运算符。【条件表达式格式】【条件表达式格式】 ? : 【功能】【功能】它要求有三个操作对象。当它要求有三个操作对象。当非非0时,返回时,返回的值,否则返回的值,否则返回的值。的值。条件运算符和条件表达式条件运算符和条件表达式例如:例

21、如:x=3;y=5; xy ? x : y;【说明】【说明】(1)条件运算符的结合性为从右向左;)条件运算符的结合性为从右向左;(2)条件表达式可以作为左值。)条件表达式可以作为左值。条件运算符示例条件运算符示例#include using namespace std;int main( ) char ch; cinch; /判别判别ch是否大写字母,是则转换是否大写字母,是则转换 ch=(ch=A & ch=Z)?(ch+32):ch; coutchendl; return 0;【例【例3-4-13】输入一个字符,判别它是否为大写字母,如果是,将它输入一个字符,判别它是否为大写字母,如果是,

22、将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。转换成小写字母;如果不是,不转换。然后输出最后得到的字符。选择结构程序设计选择结构程序设计【例【例3-4-16】运输公司对用户计算运费。路程运输公司对用户计算运费。路程(s)越远,每越远,每公里运费越低。标准如下:公里运费越低。标准如下: s250km 没有折扣没有折扣 250s500 2折扣折扣 500s1000 5折扣折扣 1000s2000 8折扣折扣 2000s3000 10折扣折扣 3000s 15折扣折扣 设每公里每吨货物的基本运费为设每公里每吨货物的基本运费为p,货物重为,货物重为w,距离为,距离为,折扣为,折扣为d,

23、则总运费,则总运费f的计算公式为:的计算公式为: f = p * w * s * (1 - d)【例例36】 运输公司对所运货物实行分段计费。设运输公司对所运货物实行分段计费。设运输里程为运输里程为s,则运费打折情况如下:则运费打折情况如下:s250 不打折扣不打折扣250=s500 2%折扣折扣500=s10005%折扣折扣1000=s20008%折扣折扣2000=s300010%折扣折扣3000=s15%折扣折扣设每公里每吨的基本运费为设每公里每吨的基本运费为p,货物重量为货物重量为w,折扣折扣为为d,则总运费则总运费f为:为:f=p*w*s*(1-d)设计程序,当输入设计程序,当输入p、

24、w和和s后,计算运费后,计算运费f。算法1、输入每吨运费、输入每吨运费p、货物重量货物重量w、运输里程运输里程s;2、根据运输里程根据运输里程s计算折扣计算折扣d;3、计算总运费计算总运费f=p*w*s*(1-d);4、输出计算结果;输出计算结果;算法细化:算法细化: 2、根据运输里程根据运输里程s计算折扣计算折扣d分析分析:如果用:如果用switch语句,必须使表达式符合语法要语句,必须使表达式符合语法要求,分析发现,里程求,分析发现,里程s的的分段点均是分段点均是250的倍数的倍数,因此,因此,将里程将里程s除以除以250,取整数商,便得到若干整数值。,取整数商,便得到若干整数值。oksw

25、itch(c=s/250) case 0: d=0; break; case 1: d=0.02; break; case 2: case 3: d=0.05; break; case 4: case 5: case 6: case 7: d=0.08; break; case 8: case 9: case 10: case 11:d=0.1;break; default:d=0.15; s250 不打折扣不打折扣250=s500 2%折扣折扣500=s1000 5%折扣折扣1000=s2000 8%折扣折扣2000=s3000 10%折扣折扣3000=s 15%折扣折扣#include #

26、include using namespace std;int main( ) int c,s; float p,w,d,f;cout输入运输单价输入运输单价p,重量重量w和里程和里程s:pws; c=s/250;switch(c)case 0: d=0; break;case 1: d=0.02; break;case 2: case 3: d=0.05; break;case 4: case 5: case 6: case 7: d=0.08; break;case 8:case9:case10:case11: d=0.1;break;default:d=0.15;f=p*w*s*(1-d

27、);cout运输单价为运输单价为pt重量为重量为wt里程为里程为sendl;cout折扣为折扣为dendl;cout运费为运费为fendl; return 0;请在请在VC+VC+平台上运行,输入不同的里程,使程序所有分支都可以被执行一次。平台上运行,输入不同的里程,使程序所有分支都可以被执行一次。ok【例例37】 设计一个计算器程序,实现加、减、乘、除运算。设计一个计算器程序,实现加、减、乘、除运算。分析:分析:读入两个操作数和运算符,根据运算符完成相应运算。读入两个操作数和运算符,根据运算符完成相应运算。#include usnig namespace std;int main( ) fl

28、oat num1,num2; char op; cout输入操作数输入操作数1,运算符,操作数,运算符,操作数2:num1opnum2; switch(op) case +: coutnum1opnum2=num1+num2endl; break; case -: coutnum1opnum2=num1-num2endl; break; case *: coutnum1opnum2=num1*num2endl; break; case /: coutnum1opnum2=num1/num2endl; break; default : coutop是无效运算符是无效运算符!; return 0;

29、 常量表达式采用字符型,上机运行一下。常量表达式采用字符型,上机运行一下。3.5 循环结构语句循环结构语句 C+C+提供了提供了3 3种循环语句:种循环语句:whilewhile语句、语句、dodowhilewhile语句和语句和forfor语句语句。循环有三要素。循环有三要素。循环变量初值;循环继续的条件;循环变量的改变循环变量初值;循环继续的条件;循环变量的改变初值用于设置循环的初值用于设置循环的入口点入口点,继续条件用于设置循,继续条件用于设置循环的环的出口点出口点,循环变量的改变,循环变量的改变保证循环的结束保证循环的结束。循。循环三要素在编写循环语句时非常重要。环三要素在编写循环语句

30、时非常重要。循环变量循环变量一般是整型变量;一般是整型变量;循环三要素循环三要素 入口入口出口出口统计圈数:统计圈数:i=i+1例:绕例:绕400米跑道跑米跑道跑3000米米3.5.1 for语句语句 【格式】【格式】for(;) 【说明】【说明】(1)、和和可以是可以是任意表任意表达式达式。(2)用于设置用于设置循环变量的初值循环变量的初值;设设置置循环继续的条件循环继续的条件;完成完成循环变量的修改循环变量的修改。(3)、和和均可以省略,均可以省略,但但分号(;)不能省略分号(;)不能省略。 (4)循环必须是)循环必须是有限循环有限循环;如果;如果表达式表达式2省略省略,表示永,表示永远为

31、真,因而必须在远为真,因而必须在循环体中有结束循环的语句循环体中有结束循环的语句;forfor语句语句 for语句执行过程语句执行过程表达式表达式2表达式表达式1TF循环体语句循环体语句表达式表达式3【功能】【功能】 (1)对括号中的)对括号中的求值。求值。(2)对)对求值。求值。(3)若)若的值为的值为真执行真执行,然,然后计算后计算的值。的值。(4)重复()重复(2)、()、(3)步骤,直至步骤,直至的的值为假退出循环。值为假退出循环。forfor语句示例语句示例 【例【例3-5-1】 计算计算1+2+3+100的和。的和。算法:算法:累加和累加和 ss+x注意:注意:和和s首先要清零首先

32、要清零循环变量初值:循环变量初值:加数初值加数初值1循环的继续条件:循环的继续条件:加数小于等于加数小于等于100循环变量的改变:循环变量的改变:加数每循环一次大加数每循环一次大1int sum=0,k; /k为循环变量为循环变量for(k=1;k=100;k+) sum+=k;cout1+2+100=sum;int sum=0,k=1;for( ;k=100; ) sum+=k; k+;cout1+2+100=100) break; / break用来跳出它所在的循环;用来跳出它所在的循环;cout1+2+3+100=sum;forfor语句示例语句示例 【例【例3-5-3】 计算计算10!

33、。算法:累算法:累乘乘 tt*x注意:注意:乘积乘积t首先要归首先要归1。循环变量初值:循环变量初值:乘数初值乘数初值1循环继续的条件:循环继续的条件:乘数小于乘数小于10循环变量的改变:循环变量的改变:乘数每循环一次大乘数每循环一次大1int product =1 ,k;for(k=1;k10;k+) product *=k;cout10!= product;3.5.2 while语句语句 【格式】【格式】whilewhile( ) 【说明】【说明】可以是可以是任意表达式任意表达式。但一。但一般常用般常用关系表达式或逻辑表达式关系表达式或逻辑表达式。循环变量初值循环变量初值;whilewhi

34、le(循环继续的条件循环继续的条件) ; ; 循环变量的改变循环变量的改变; whilewhile语句语句 while语句执行过程语句执行过程 表达式表达式循环体语句循环体语句FT【功能】功能】首先计算首先计算的值,如果的值,如果的值为真(非的值为真(非0 )执行)执行,然后重复计,然后重复计算算的值,如果的值,如果的值仍然为真,的值仍然为真,重复执行重复执行,直至直至的值为假退的值为假退出循环,执行出循环,执行while语句的语句的下一条语句。下一条语句。 可能一次循环也没有可能一次循环也没有whilewhile语句示例语句示例 【例【例3-5-4】 计算下式刚好大于等于计算下式刚好大于等于

35、3时的时的n。n1.4131211循环变量初值:循环变量初值:和式的分母初值和式的分母初值1循环继续的条件:循环继续的条件:和小于和小于3循环变量的改变:循环变量的改变:和式的分母每循环一次大和式的分母每循环一次大1int k=1; /循环变量初值循环变量初值double sum=0.0;while(sum3.0) /循环继续的条件循环继续的条件 sum+=1.0/k; k+; /循环变量的改变循环变量的改变 cout 1+1/2+ 1/ (k-1)=sumendl;cout 循环次数循环次数k-1endl;3.5.3 dowhile语句语句【格式】【格式】 do while() ;循环变量初

36、值循环变量初值;do ; ; 循环变量的改变循环变量的改变; whilewhile(循环继续的条件循环继续的条件);dodowhilewhile语句语句图图4-7 dowhile语句执行语句执行过程过程 表达式表达式循环体语句循环体语句TF【功能】【功能】 (1)执行)执行;(2)计算)计算值。值。(3)若)若的值为真的值为真(非(非0)重复()重复(1)、()、(2)步骤,直至步骤,直至的值的值为假退出循环。为假退出循环。至少循环一次至少循环一次dodowhilewhile语句示例语句示例【例【例3-5-5】编写程序,求编写程序,求的近似值,要求误差小于的近似值,要求误差小于或等于或等于10

37、-6为止。已知为止。已知/41-1/3+1/5-1/7+。 #include #include using namespace std;int main() int i=1, t=1; /t处理正负号处理正负号 double pi=0,eps=1e-6; /eps用于设置误差用于设置误差 do pi+=1.0*t/i; i+=2; t=-t;/处理正负号处理正负号 while(fabs(1.0/i)eps); coutpi=4*piendl; return 0; 循环变量初值:循环变量初值:和式的分母初值和式的分母初值1循环继续的条件:循环继续的条件:最近两个和的差大于最近两个和的差大于10-

38、6循环变量的改变:循环变量的改变:和式的分母每循环一次大和式的分母每循环一次大2 三种循环语句的比较while循环:循环:循环变量循环变量=初值初值;while() ; 循环变量的改变语句循环变量的改变语句;dowhile循环:循环:循环变量循环变量=初值初值; ; 循环变量的改变语句循环变量的改变语句;while();for循环:循环:for(循环变量循环变量=初值;条件;循环变量的改变语句;)初值;条件;循环变量的改变语句;) ;三种循环语句的比较示例#include using namespace std;int main()int i=1,n; long fact=1,sum=0; c

39、outn; while(i=n)fact*=i+; sum+=fact; coutsum=sumendl;return 0;#include using namespace std;int main()int i,n; long fact=1,sum=0; coutn; i=1; do fact*=i+; sum+=fact; while(i=n);coutsum=sumendl;return 0;【例【例3-5-6】试分别用试分别用while、dowhile或或for语句语句计算计算1!+2!+3!+n!, n通过键盘输入通过键盘输入;#include using namespace std

40、;int main() int i,n; long fact=1,sum=0; coutn; for(i=1;i=n;i+) fact*=i; /计算计算i! sum+=fact; /计算计算1!+i! coutsum=sumendl;return 0;【例【例3-5-6】试分别用试分别用while、dowhile或或for语句语句计算计算1!+2!+3!+n!, n通过键盘输入通过键盘输入;3.5.4 循环嵌套及其语句实现循环嵌套及其语句实现 1 2 3 4 5 6 7 8 91 12 2 43 3 6 94 4 8 12 165 5 10 15 20 256 6 12 18 24 30 3

41、67 7 14 21 28 35 42 498 8 16 24 32 40 48 56 649 9 18 27 36 45 54 63 72 81【例【例3-5-6】按下列格式打印九九表。按下列格式打印九九表。 分析:分析:1、计算机的输出是按行进行的,因此可以先用一、计算机的输出是按行进行的,因此可以先用一个循环语句输出第一行表头。个循环语句输出第一行表头。2、表中各行数据的输出可以用下面的算法描述:、表中各行数据的输出可以用下面的算法描述:for (i=1; i10; i+) couti; /输出行号输出行号 输出第输出第i行数据;行数据; /A coutendl; /准备输出下一行准备输

42、出下一行 3、第、第A行需要进一步细化。由于第行需要进一步细化。由于第i行数据是一组行数据是一组有规律的数列,每个数的值是其所在行与列的乘有规律的数列,每个数的值是其所在行与列的乘积,因此输出第积,因此输出第i行可以:行可以:for (j=1; j10; j+) coutsetw(4)i*j;4、按上述算法输出的每一行都将有九列,即打印按上述算法输出的每一行都将有九列,即打印出的是矩形表而不是下三角形表。进一步分析发出的是矩形表而不是下三角形表。进一步分析发现每一行的列数与所在行数相关,因此要输出三现每一行的列数与所在行数相关,因此要输出三角形表,上面的循环语句需稍作修改:角形表,上面的循环语

43、句需稍作修改:for (j=1; j=i; j+) coutsetw(4)i*j;将此语句放到顶层算法的将此语句放到顶层算法的A行即可。行即可。算法:算法:1、输出表头,用一个循环语句即可;、输出表头,用一个循环语句即可;2、输出表体:、输出表体:for (i=1; i10; i+) couti; /输出行号输出行号 输出第输出第i行数据;行数据; /A coutendl; /准备输出下一行准备输出下一行 3、A行细化:行细化: for (j=1; j=i; j+) coutsetw(4)i*j; 循环的嵌套#include #include using namespace std;int m

44、ain() int i;coutsetw(3)*setw(4) ;for(i=1;i10;i+) coutsetw(4)i; /输出表头输出表头(乘数乘数)coutendlendl;for(i=1;i10;i+) coutsetw(3)isetw(4) ; /输出行号输出行号(被乘数被乘数) for(int j=1;j=i;j+) coutsetw(4)i*j; /输出表中数据输出表中数据(乘积乘积) coutendl; /准备输出下一行准备输出下一行 return 0;3.6 辅助控制语句辅助控制语句3.6.1 break语句语句 【格式】【格式】 break;【说明】【说明】break语句

45、只能用于语句只能用于switch或循环语句中。或循环语句中。当当程序执行到该语句时,将控制流程终止程序执行到该语句时,将控制流程终止switch或循环语句。或循环语句。【例【例3-6-1】任给一个正整数,判断其是否是素数。任给一个正整数,判断其是否是素数。#include #include using nacespace std;int main() int x,j,flag; flag=1; /用来标记该数是否是素数用来标记该数是否是素数 cinx; for(j=2;j=sqrt(x);j+) if(x % j=0) flag=0; break; if(flag=1) coutx is a

46、prime! endl; return 0; 3.6.2 continue语句语句 【格式【格式】 continue;【功能【功能】 continue语句语句只能用于循环语句只能用于循环语句中。当程序中。当程序执行到该语句时,将控制流程执行到该语句时,将控制流程终止本次循环终止本次循环,返回到返回到本层循环的条件测试部分继续执行本层循环的条件测试部分继续执行。continue语句语句示例示例【例例3-6-2】阅读下列程序,给阅读下列程序,给出运行结果。出运行结果。 #include using nacespace std;int main() int i; for(i=1;i=50;i+) i

47、f(i%5) continue; couti ; 结果:结果:5 10 15 20 25 30 35 40 45 50break语句与语句与continue语句的区别语句的区别(1)break语句是终止本层循环,语句是终止本层循环,continue语句是终止本次循环。语句是终止本次循环。(2)break语句可以用在循环和语句可以用在循环和switch语句语句中,中,continue语句只能用在循环语句中语句只能用在循环语句中 。break语句与语句与continue语句的区别语句的区别程序段程序段1:int sum=0,i;for(i=1; i=100; i+) if(i % 2=0) con

48、tinue; sum+=i; coutiendl; coutsum=sumendl;程序段程序段2:int sum=0,i;for(i=1; i=100; i+) if(i % 2=0) break; sum+=i; coutiendl; coutsum=sumendl;程序设计实例程序设计实例 【例【例3-7-5】打印如下图形。打印如下图形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 分析:整修图形分分析:整修图形分9行,前行,前5行与后行与后4行行外循环外循环for(i=1;i=9;i+)前前5行每行分别先输出行每行分别先输出8,6,4,2,0个空格,个空格,再输出再输出1,3,5,7,9个空格加星号;个空格加星号;后后4行每行先输出行每行先输出2,4,6,8个空格,再输个空格,再输出出7,5,3,1个空格加星号;个空格加星号; 空格空格 空格加星号空格加星号1

温馨提示

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

评论

0/150

提交评论