1、C+程序设计,2,2018年8月19日星期日,3.11 循环结构和循环语句,在程序中,常常需要重复地执行某些操作。循环控制语句是基本流程控制语句之一。在循环语句中,重复执行的操作叫做循环体。循环体可以是单条语句、块语句甚至是空语句。C+提供三种循环语句:,3,2018年8月19日星期日,3.11 循环结构和循环语句,while 语句,while语句也称为当循环。 语句格式为: while (表达式)循环体语句;,while语句的执行流程图,注意: while(条件表达式) 后面分号不可省去。,4,2018年8月19日星期日,设计一个计算,5,2018年8月19日星期日,step1 s=1 st
2、ep2 s+=2 step3 s+=3step99 s+=99 step100 s+=100 step101 输出s,6,2018年8月19日星期日,step1 0-s step2 1-n step3 如果n100,转去 step6 step4 s+=n step5 n+ 转 step3 step6 输出s,7,2018年8月19日星期日,3.11 循环结构和循环语句,【例】累加程序求1+3+5+。+99的值。 /* / 求1+3+5+99 /* #include int main( ) int i=1,sum=0; while (i=100) sum=sum+i; i=i+2; cout“s
3、um=“sumendl; return 0; ,8,2018年8月19日星期日,3.11 循环结构和循环语句,9,2018年8月19日星期日,3.11 循环结构和循环语句,【例】 求1+2+3+4+100的值。,N个连续整数相加算法 1、设置变量i用来放加数,变量sum用来放被加数与和值,并初始化; 2、从第一个数开始,依次将加数赋给i,并进行操作sumsum+i,称为累加; 3、输出sum; 细化算法2:while(还有加数) i=当前加数;sum+=i;i准备接受下一个加数;,10,2018年8月19日星期日,3.11 循环结构和循环语句,源程序如下: #include using nam
4、espace std; const int n=100; /用常变量利于修改程序 int main( )int i=1,sum=0;/循环初始条件while(i=n) sum+=i;i+; /修改循环条件cout“sum=“sumendl;return 0; ,11,2018年8月19日星期日,3.11 循环结构和循环语句,注意:通常循环开始前对循环条件进行初始化;而在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷入死循环。while语句的四个要素:循环变量初始化、继续条件、循环体、改变循环变量的表达式。,12,2018年8月19日星期日,C+表达方式灵活,上例中的循环语句还可以
5、写成:while (i=n) sum+=i+;或者while (sum+=i+, i=n) ;/循环体为空语句,13,2018年8月19日星期日,3.11 循环结构和循环语句,do-while 语句,do-while语句称为直到循环,格式为:do 循环体语句 while( 表达式 ),do-while语句的执行流程图,14,2018年8月19日星期日,3.11 循环结构和循环语句,【例】 用迭代法求a的平方根近似值。求平方根的迭代公式为:要求前后两个迭代根之差小于10- 5。,迭代法求解:a是已知正数,x 0是迭代初值,给x 0一个值,假定 x 0 = a/2;则用迭代公式依次计算: x1=(
6、x0+a/x0)/2;x2=(x1+a/x1)/2; xk+1=(xk+a/xk)/2; 当|xk+1 xk|(是一个较小的正数)时,迭代终止,取xk+1的值为a的平方根近似值。,15,2018年8月19日星期日,3.11 循环结构和循环语句,1、输入a(a0)及较小正数delta(也可用常变量); 2、x 0 = a/2; 用迭代公式算 x1=(x0+a/x0)/2; 3、while(|x1 x0|=delta) x 0 = x 1 ;/把最近的值给x 0 x1=(x0+a/x0)/2; /求xk+1时只需要知道xk的值,所以只需2个变量 4、取x1的值为a的平方根近似值,输出。 2、3步骤
7、很适合用do/while语句实现:x 1 = a/2;do x0=x1;x1=(x0+a/x0)/2; while(|x1 x0|=delta);,和迭代法对应的程序算法是 递推算法:,16,2018年8月19日星期日,3.11 循环结构和循环语句,int main( ) float x0,x1,a;couta;if(a=1e-5);cout a“的平方根为:“x1endl;return 0; ,2018年8月19日星期日,17,例,读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束。 分析: 需要读入一系列整数,但是整数个数不定,要在每次读入之后进行判断,因此使用while循环最
8、为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环内部嵌入选择结构。,算法的基本控制结构,2018年8月19日星期日,18,1.正数计数器pc=0,负数计数器nc=0 2.读入一个整数 3.如果是正数,pc+ 4.如果是负数,nc+ 5.如果不是0,转2 否则继续 6.输出pc ,nc,2018年8月19日星期日,19,#include using namespace std; int main() int i=0,j=0,n;coutn;if(n0) i+;if(n0) j+; while( n!=0 )cout“正整数个数:“i“ 负整数个数:“jendl
9、; ,#include using namespace std; int main() int i=0,j=0,n;coutn;while( n!=0 ) if(n0) i+;if(nn ;cout“正整数个数:“i“ 负整数个数:“jendl; ,20,21,2018年8月19日星期日,循环结构和循环语句,【例】 输入一段文本,统计文本的行数、单词数及字符数。假定单词之间以空格或跳格或换行符间隔,且文本开始没有空行。 算法分析: 1、逐个读入文本中的字符,直到读到一个输入结束符EOF为止。 2、如何算行数?行结束标志为读到字符n; 3、如何算单词数?设一个变量isword,读到字符时iswo
10、rd=1,读到间隔符时isword=0;如果读到一个间隔符而此时isword值为1,则说明刚读完一个单词;(如果读到一个字符而此时isword值为0,则说明刚开始读一个单词;) 4、如何算字符数?,22,2018年8月19日星期日,3.11 循环结构和循环语句,算法: 1、设置变量line、word、ch分别代表行数、单词数、非分隔字符数,并初始化;设置变量isword来辅助统计单词数; 2、do 从键盘读入一个字符c;if ( c=n) line+;if (是单词开头) word+; if (c不是分隔符) ch+; while (c!= EOF ); 3、输出统计结果。,#include
11、using namespace std; #include int main( ) char c;int line=0, word=0, ch=0; int isword=0;cout“输入一段文本(无空行):“endl;c=cin.get();do if (c=n) line+; /遇换行符行数+1if (c!= ,24,2018年8月19日星期日,3.11 循环结构和循环语句,do/while语句和while语句的区别: do/while语句至少执行一次循环体后再判断循环条件是否满足; while语句先判断条件是否满足,然后才执行循环体。可能一次也不执行。 多数情况下可以互相替代。,25,
12、2018年8月19日星期日,3.11 循环结构和循环语句,注意: 应用while语句与dowhile语句时应注意,一般来说在循环体中,应该包含改变循环条件表达式的语句,否则便会造成无限循环(死循环)。,在本例中,改变循环条件的语句是+i,+i;,这两个程序在任何时候运行结果都相同吗?在什么时候结果不相同?,对比下列程序:,程序1: #include using namespace std; int main() int i,sum(0);cini;while(i=10) sum+=i;i+;cout“sum=“sumendl; ,算法的基本控制结构,程序2: #include using na
13、mespace std; int main() int i, sum(0);cini;dosum+=i;i+;while(i=10);cout“sum=“sumendl; ,26,2018年8月19日星期日,27,for 语句,语法形式 for (表达式1;表达式2;表达式3) 语句,算法的基本控制结构,28,2018年8月19日星期日,3.11 循环结构和循环语句,for循环语句的格式为: for ( 表达式1;表达式2; 表达式3 ) 循环体语句,29,2018年8月19日星期日,3.11 循环结构和循环语句,上述格式可理解为:for( 循环变量赋初值;循环条件;循环变量增值) 循环体,f
14、or是关键字;,表达式1、表达式2和表达式3是任意表达式;,语句为循环体,它可以是一条语句,也可以是复合语句,还可以是空语句。,for循环语句的执行过程: 计算表达式1的值。 计算表达式2的值,并进行判断,如果表达式2的值为0(false)则退出该循环,执该循环体后面的语句; 如果表达式2的值为非0(true)转(3) 。 执行循环体的语句。 计算表达式3的值。 转 ,30,2018年8月19日星期日,3.11 循环结构和循环语句,for循环语句执行过程图 :,31,2018年8月19日星期日,3.11 循环结构和循环语句,【例】求1+3+5+7+99分析:求1100的之间的奇数和就是一个累加
15、的算法,累加过程是一个循环过程,可以用for语句实现:,运行结果,sum= 2500,表达式1可以省略,此时表达式1应出现在循环语句之前。,表达式3可以省略,即将循环变量增量的操作放在循环体内进行。,表达式1不仅可以设置循环变量的初值,同时还可以通过逗号表达式设置设置一些其它变量的值。表达式2和表达式3都可以这样。,表达式2如果省略,即不判断其循环条件,则循环将无终止地进行下去。要结束循环,需要在循环体内设置break语句,退出循环。,32,2018年8月19日星期日,3.11 循环结构和循环语句,for语句、while语句、do/while语句比较:,int i=1,sum=0; /循环初始
16、条件 while(i=4) sum+=i;i+; /修改循环条件 ,int i=1,sum=0; /循环初始条件 do sum+=i;i+;/修改循环条件 while(i=4);,int i,sum=0; for( i=1; i=4; i+ ) sum+=i; /*习惯上:表达式1:循环初始条件;表达式2:循环终止条件;表达式3:修改循环条件*/,for语句最简单的形式也是最容易理解的格式如下: for(循环变量赋初值;循环条件;循环变量增值) 语句 例如 for(i=1;i=100;i+) sum=sum+i; 它的执行过程与图3.10完全一样。它相当于以下语句:i=1;while(i=10
17、0)sum=sum+i;i+; 显然,用for语句简单、方便。 for语句的使用有许多技巧,如果熟练地掌握和运用for语句,可以使程序精炼简洁。,说明: (1) for语句的一般格式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。 for(;表达式2;表达式3) (2) 如果表达式2省略,即不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。 for ( 表达式1;表达式3)(3) 表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。 for(表达式1;表达式2;),(4) 可以省略表达式1和表达式3,只有表达式2,即只给循环条件。 for(;表达
18、式2;) (5) 3个表达式都可省略。 for(;) (6) 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式。,(7) 表达式一般是关系表达式(如i=100)或逻辑表达式(如ab & xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。C+中的for语句比其他语言中的循环语句功能强得多。可以把循环体和一些与循环控制无关的操作也作为表达式1或表达式3出现,这样程序可以短小简洁。但过分地利用这一特点会使for语句显得杂乱,可读性降低,建议不要把与循环控制无关的内容放到for语句中。,(1) 3种循环都可以用来处理同一问题,一般情况下它们可以互相代
19、替。 (2) while和do-while循环,是在while后面指定循环条件的,在循环体中应包含使循环趋于结束的语句(如i+,或i=i+1等)。for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。 (3) 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。,3.11.4 几种循环的比较,38,2018年8月19日星期日,3.11 循环结构和循环语句,for 语句的应用,f
20、or语句的几点说明: 1、是先判断型的,同while语句; 2、使用更为灵活:三个表达式可以是任意表达式,因此它们就可以实现循环初始化、计算、修改循环条件等任务,而不一定非在循环体中进行;,39,2018年8月19日星期日,3.11 循环结构和循环语句,【例】 设计程序输出Fibonacii数列的前20项,要求每行输出5个数据。Fibonacii数列定义如下:,算法分析:除了第0项和第1项外,每一项都是由类似方法产生,即前两项之和;所以求当前项时,只需要记住前两项;程序不需要为每一项设置专用变量; 属递推算法。,40,2018年8月19日星期日,3.11 循环结构和循环语句,算法: 1、设置变
21、量n表示第几项,变量 f 1和 f 2用来记住当前项f 3之前的两项 ;变量初始化n=0; 2、while (当前项不到第20项) if (当前项是第0项) f 1=0; if (当前项是第1项) f 2=1; if (当前项是第2项或更高项)f 3=f 1+f 2; 按要求输出 f 3 ;f 1=f 2; f 2=f 3; /记住最近两项当前项后移一位;,41,2018年8月19日星期日,3.11 循环结构和循环语句,程序如下: int main() int fib0=0,fib1=1,fib2;coutsetw(5)fib0setw(5)fib1endl;for(int n=3;n=20;
22、n+)fib2=fib0+fib1;coutsetw(5)fib2;if(n%5=0) coutendl; /控制每行5个数据fib0=fib1; fib1=fib2;return 0; ,42,2018年8月19日星期日,3.11 循环结构和循环语句,【例】 输入一个不超过5位的整数,将其反向后输出。例如输入247,变成742输出。 算法分析: 1、将整数的各个数位逐个位分开,用一个数组保存各个位的值,然后反向组成新的整数。 2、将整数各位数字分开的方法是,通过求余得到个位数,然后将整数缩小十倍,再求余,并重复上述过程,分别得到十位、百位,直到整数的值变成0为止。,43,2018年8月19日
23、星期日,3.11 循环结构和循环语句,数据处理: 1、设置变量num表示输入的整数,整型数组digit5用来存放num 的各个位;变量i用来表示数组的当前下标; 算法: 1、输入num; 变量初始化:i=0; 2、while (num!=0) num对10取余,得num的当前个位数digiti;num整除10,即去掉个位数,十位变个位,百位变十位,;i+;数组digit准备记录下一位; 3、将数组元素按下标从低到高的顺序输出;,44,2018年8月19日星期日,3.11 循环结构和循环语句,程序如下: int main() int i,num,subscript;int digit5;cout
24、num;cout0);for(i=0;isubscript;i+) /整数的反向组合num=num*10+digiti;cout“反向后整数为:“numendl;return 0; ,45,2018年8月19日星期日,3.12 循环的嵌套,嵌套循环: 当循环语句中的循环体中又有循环语句时,就构成了嵌套循环。 嵌套层次一般不超过3层,以保证可读性。,3种循环(while循环、dowhile循环和for循环)可以互相嵌套,for( ; ; ) while( ) ,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。 3种循环(while循环、dowh
25、ile循环和for循环)可以互相嵌套。例如,下面几种都是合法的形式: (1) while( )while( ) ,3.12 循环的嵌套,(2) do dowhile( ); while( ); (3) for(;) for(;) ,(4) while( ) dowhile( ); (5) for(; ) while( ) ,(6) do for (;) while( );,2018年8月19日星期日,50,例2-8,输入一个整数,求出它的所有因子。,算法的基本控制结构,2018年8月19日星期日,51,1.输入n 2.输出1 3.for(i=2;i=n-1;i+)if(n%i=0) 输出 i;
26、 4.输出n;,#include using namespace std; int main() int n, k;cout n;cout “Number “ n “ Factors “;for (k=1; k = n; k+)if (n % k = 0)cout k “ “;cout endl; ,52,运行结果1: Enter a positive integer: 36 Number 36 Factors 1 2 3 4 6 9 12 18 36 运行结果2: Enter a positive integer: 7 Number 7 Factors 1 7,53,54,2018年8月19
27、日星期日,【例】打印如下图形。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 分析:根据按行输出的特点,语句书写如下: for (i=1; i=5; i+) 打印第i行; /Bcoutendl; /准备输出下一行 细化第B行。第i行可以看作两部分,先输出若干空格,接着输出若干*。每行输出的*数是同的,而空格数则与所在行相关,很明显,第i行空格数为5-i。故B行细化为以下两个语句: for (j=1; ji; j+) cout “ “; f
28、or(j=1;j=11;j+) cout“* “;,3.12 循环的嵌套,55,2018年8月19日星期日,打印5行符号图形for(i=1;i=5;i+) 打印第i行字符图形for(i=1;i=5;i+) 打印i个“ ” 打印11个“*” 回车换行 ,56,2018年8月19日星期日,for(i=1;i=5;i+) for (j=1;j=i;j+)cout“ ”; for (j=1;j=11;j+)cout“*”; coutendl; ,57,2018年8月19日星期日,#include #include using namespace std; int main()int i,j;for(i
29、=1;i=5;i+) /外层循环的大括号一定不能丢掉for(j=1;ji;j+) cout“ “ ; /输出若干空格for(j=1;j=11;j+) cout“* “; /输出若干*coutendl; /准备输出下一行return 0; ,3.12 循环的嵌套,2018年8月19日星期日,58,例2-9 编写程序输出以下图案,*,算法的基本控制结构,打印上面4行 打印下面3行,for(i=1;i=1;i-) 2*i-1个“*”换行 第 i行,for(i=3;i=1;i-) 2*i-1个“* ”7-(2*i-1)个“ ”换行 第 i行,#include using namespace std;
30、int main() int i,j,n;cin n;for(i=1;i=n;i+) /输出前4行图案 for(j=1;j=30;j+)cout ; /在图案左侧空30列for(j=1; j=8-2*i ;j+)cout ;for(j=1; j=2*i-1 ;j+)cout*;coutendl;,60,for(i=1;i=n-1;i+) /输出后3行图案 for(j=1;j=30;j+)cout ; /在图案左侧空30列for(j=1; j=7-2*i ;j+)cout*;coutendl; ,61,62,2018年8月19日星期日,分析: 1、计算机的输出是按行进行的,因此可以先用一个循环语
31、句输出第一行表头。 2、表中各行数据的输出可以用下面的算法描述: for (i=1; i10; i+) couti; /输出行号输出第i行数据; /Acoutendl; /准备输出下一行 ,【例】 打印九九表。打印格式为: * 1 2 3 4 5 6 7 8 91 1 2 2 4 3 3 6 9 9 9 18 27 36 45 54 63 72 81,3.12 循环的嵌套,63,2018年8月19日星期日,3、第A行需要进一步细化。由于第i行数据是一组有规律的数列,每个数的值是其所在行与列的乘积,因此输出第i行可以:for (j=1; j10; j+) coutsetw(4)i*j; 4、按上
32、述算法输出的每一行都将有九列,即打印出的是矩形表而不是下三角形表。进一步分析发现每一行的列数与所在行数相关,因此要输出三角形表,上面的循环语句需稍作修改:for (j=1; j=i; j+) coutsetw(4)i*j; 将此语句放到顶层算法的A行即可。,3.12 循环的嵌套,64,2018年8月19日星期日,算法: 1、输出表头,用一个循环语句即可; 2、输出表体: for (i=1; i10; i+) couti; /输出行号输出第i行数据; /Acoutendl; /准备输出下一行 3、A行细化:for (j=1; j=i; j+) coutsetw(4)i*j;,3.12 循环的嵌套
33、,65,2018年8月19日星期日,int main() int i,j;coutsetw(3)*setw(4) ;for(i=1;i10;i+)coutsetw(4)i; /输出表头(乘数)coutendlendl;for(i=1;i10;i+)coutsetw(3)isetw(4) ; /输出行号(被乘数)for(j=1;j=i;j+)coutsetw(4)i*j; /输出表中数据(乘积)coutendl; /准备输出下一行return 0; ,3.12 循环的嵌套,2018年8月19日星期日,66,break 和 continue 语句,break语句 使程序从循环体和switch语句内
34、跳出,继续执行逻辑上的下一条语句。不宜用在别处。 continue 语句 结束本次循环,接着判断是否执行下一次循环。,算法的基本控制结构,67,2018年8月19日星期日,3.13 break语句和continue语句,break语句的功能是:中断所在循环体或switch.case语句块,跳转本层循环体外。,break语句,break语句的格式如下:,【例】判断一个数是否为素数。分析:素数是不能被大于或等于2的数整除的数。用一个循环依次判断此数是否被大于等于2的数整除,一旦被一个数整除,就用break跳出循环,宣布此数不是素数。,break;,68,2018年8月19日星期日,3.13 bre
35、ak语句和continue语句,运行结果,5 5是素数 6 6不是素数 7 7是素数 0,当判断不是一个素数时,用break中断循环。由于break所在的是多重循环的内层,因此外层循环仍未中断。,break中断了最外层循环,中止了继续从键盘继续输入数据。,注意: 既然break语句用来中断循环,它一定要用在循环体或swtich.case体中,用在其它地方就会出错。,69,2018年8月19日星期日,【例2.18】 给定正整数m,判定其是否为素数。 分析:如果m2,m是素数的条件是不能被2,3,,(取整)整除。因此可以用2,3,,(取整)逐个去除m,如果被其中某个数整除了,则m不是素数,否则是素
36、数。算法属于穷举法。1、输入被测数m(m2);令整型变量 k= sqrt(m) 2、判断m是否素数:设置辅助整型变量i, 使i从2开始直到k依次测试m能否整除i, 若能,则不是素数;for( i=2;i=k;i+)if(m%i=0) break;/* 条件满足,m不是素数,停止测试,结束for语句。*/ 3、根据i是否已达到k,输出结果是否为素数。,3.13 break语句和continue语句,70,2018年8月19日星期日,int main() int m,i,k;coutm;if(m=2) coutk) cout m“是素数“endl; /循环提前终止表示是非素数else cout m
37、“不是素数“endl;return 0; ,3.13 break语句和continue语句,71,2018年8月19日星期日,3.13 break语句和continue语句,continue语句的格式如下:,continue;,continue语句,continue语句只能用在循环语句中,用来终止本次循环。当程序执行到continue语句时,将跳过其后尚未执行的循环体语句,开始下一次循环。下一次循环是否执行仍然取决于循环条件的判断。 continue语句与break语句的区别在于,continue语句结束的只是本次循环,而break结束的是整个循环。,72,2018年8月19日星期日,3.13
38、 break语句和continue语句,【例】使用continue改写判断素数的程序:,当不是素数,直接跳到第15行 继续执行。 程序结果错误。,73,2018年8月19日星期日,输出1100之间所有素数。,for(i=3;i=100;1+)issushu=1;for(j=2;j=i-1;j+)if (i%j=0) issushu=0;break;if (issushu) couti“is a sushu“endl;,74,2018年8月19日星期日,3.13 break语句和continue语句,例:输出1100内3的倍数。 分析:设置整型变量I从1变化到100,依次测试I是否3的倍数,算法
39、属于穷举法。for (I=1;I=100;I+) if ( I%3!=0) continue;/I不是3的倍数,不输出,继续下一个I;coutl;/输出I的值;/I是3的倍数才输出,75,2018年8月19日星期日,减少运算次数,i=3 do 输出i i+=3; while(i=100),2018年8月19日星期日,76,先执行循环体,后判断条件的情况,例2-6输入一个整数,将各位数字反转后输出。,算法的基本控制结构,2018年8月19日星期日,77,输入一个五位整数 n for(i=1;i=5;i+) 从右向左一位一位输出结束,2018年8月19日星期日,78,从右向左一位一位输出,for(
40、i=1;i=5;i+) coutn%10;n=n/10; 结束,2018年8月19日星期日,79,do cout0),#include using namespace std; int main() int n, right_digit, newnum = 0; cout n;cout “The number in reverse order is “;doright_digit = n % 10;coutstew(2)right_digit;n /= 10; /相当于n=n/10 while (n != 0);coutendl; ,80,2018年8月19日星期日,81,按原来的次序各一个空
41、格输出,#include using namespace std; #include int main() int n, right_digit, newnum = 0,v=0; cout n;cout “The number in reverse order is “;do right_digit = n % 10;cout setw(2) right_digit;v=v*10+right_digit;n /= 10; /相当于n=n/10 while (n != 0);coutendl;n=v;do right_digit = n % 10;cout setw(2) right_digit
42、;n /= 10; /相当于n=n/10 while (n != 0);coutendl; ,运行结果:Enter the number: 365 The number in reverse order is 563,83,#include using namespace std; int main() int i,n; n=1; for(i=9;i=1;i-)n=(n+1)*2;couti“:“nendl; return 0; ,#include using namespace std; int main() int i,j,n;cinn; for(i=1;i=1;i-) for(j=1;j=20-i+1;j+)cout“ “; for (j=1;j=2*i-1;j+)cout“*“;coutendl; return 0; ,86,2018年8月19日星期日,习题,1、3、4、5、8、10、13、19、24,Thank You !,