第五章:循环结构设计总结

【例子】假设今年我国人口总数为13亿,若按每年2%增长,计算从现在开始10年内每年人口数量

 

 

 

 【例5.2】计算1-4/1+7/1-10/1+13/1-16/1+...的和,直到某一项的绝对值小于10负6次方

 

5.2  使用for语句实现循环结构

5.2.1 for语句的 基本语法

for语句的一般形式:

for(表达式1;表达式2;表达式3)

        循环体语句;

1.首先计算表达式1;

2.判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第3步;若值为假(0),结束循环,转到第5步执行。

3.计算表达式3。

4.返回第2步继续执行;

5.循环结束,继续执行for语句的下一条语句;

【例5.3】输入一个正整数n,求sum的值

 

 

【例5.4】输入一个正整数n,求n!

 

 

2.for语句的一般形式中省略表达式1

格式如下:

                                for(;表达式2,表达式3)

                                        循环语句;

说明:省略表达式1时,可以将循环变量赋初值放在for之前。注意,此时不能省略第一个“;”。

例5.3的循环语句:

   1.for(i=1;i<=n;i++)
    2.sum=sum+i;
等价于:

1.i=1;
2.for(;i<=n;i++)
   3. sum=sum+i;
3.for语句的一般形式中省略表达式2

格式如下:

                                for(表达式1;;表达式3)

                                        循环体语句;

4.for语句的一般形式中省略表达式3

                        for(表达式1;表达式2;)

                                循环体语句;

例5.4的循环语句:

1.for(i=1;i<=n;i++)
   2. factorial=factorial*i;
等价于:

1.for(i=1;i<=n;)
2.{    factorial=factorial*i;
3.      i++;
4.}
5.for语句的一般形式表达式1和表达式3也可以是逗号表达式

例5.3的程序段:

1.sum=0;
2.for(i=1,i<=n;i++)
3.    sum=sum+i;
等价于:

for(sum=0,i=1;i<=n;i++)
    sum=sum+i;
表达式sum=0,i=1为逗号表达式。

6.for语句的一般形式表达式2的值只要非0,就执行循环体

例如:

1.for(;(ch=getchar())!='\n';)
2.    printf("%c",ch)
7.for语句的一般形式中循环语句可以省略

例5.3的循环语句:

1.for(i=1;i<=n;i++)
2.    sum=sum+i;
等价于:

for(i=1;i<=n;sum=sum+i,i++);
 

5.2.2 for循环使用示例

【例5.5】输入一个整数n,计算1-1/4+1/7-1/10+1/13-1/16+...的前n项之和

 

 

  【例5.6】输入10个数,输出其中的最大数

 

 【例5.7】输出所有的水仙花数

 

【例5.8】由键盘输入一个正整数,判断该数是否为完数

 

 

 【例5.9】统计由键盘中输入的若干个字符中,大写英文字母、小写英文字母、数字字符和其他字符的个数

 

【5.10】任意输入一行小写字母,将它们转换成大写字母后输出

 

 

【例5.11】 由键盘输入3个数字,将其组合成一个整型数并输出

 

 

【5.12】由键盘输入一个正整数,判断其是否为素数

 

 

5.3  使用while语句实现循环结构 

 5.3.1  while语句的基本语法

while语句一般形式如下:

while(表达式)

        循环体;

while语句的执行流程如图5.3所示

第一步:计算表达式的值,若表达式的值为“真”,则执行第2步;若表达式的值为“假”,则转到第4步。

第二步:执行循环体语句。

第三步:返回第一步。

第四步:结束循环,执行while语句的下一条语句。

注意:while语句的特点是先判断循环条件,后执行循环体。
 

 

5.3.2   while循环使用示例

【例5.13】计算sum的值

 

【5.14】输入一个正整数n,计算n

 

 

5.15】由键盘输入一串字符,分别统计输入字符中数字字符、字母字符及其它字符个数

 

 

5.4 使用 do-while语句实现循环结构

5.4.1 do-while语句的基本用法

do   

        循环体

while(表达式);

do-while语句的执行流程如图5.4所示

1.执行循环体语句;

2.计算表达式的值,若表达式的值为‘真’,返回第一步;若表达式的值为‘假’,则执行第3步;

3.结束循环;

注意:do-while语句的特点是先循环体,后判断循环条件。因此,do-while循环至少要执行一次循环体。
 

 

5.4.2  do-while循环使用示例

【例5.16】使用do-while语句计算sum=\sum_{\sum_{n}^{n=1}}^{100}n的值

 

 

【例5.17】求两个自然数的最大公约数和最小公倍数

 

 

【例5.18】输入一个整数,统计该数的位数

 

 

5.5   改变循环结构的跳转语句

5.5.1  break语句

break结束整个循环

【例5.19】分析下面程序的运行结果

 

 

【例5.20】由键盘输入一个正整数,判断其是否为素数


 

 

【例5.21】从键盘输入一批学生的成绩,计算平均分,并统计不及格成绩个数

 

 

5.5.2  continue语句

作用:结束本次循环,开始下次循环

【例5.22】把1~100之间能7整除的数,以每行5个的形式在屏幕上输出


 

 

【例5.23】分析下面程序运行结果

 

 

5.5.3  goto语句

四种循环控制语句,for循环语句、while循环语句、do-while循环语句 、goto循环

【例5.24】使用goto语句计算sum=\sum_{n=1}^{100}n的值

 

 

5.6    循环嵌套

当一个循环的循环体内又包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。一般情况下最多使用到三重循环。

1for语句中嵌套for语句                        

2for语句中嵌套while语句
3while语句中嵌套while语句                                

4do——while语句中嵌套for语句
5do——while语句中嵌套do——while语句                

6while语句中嵌套do——while语句

使用循环嵌套时,注意以下几点:
1外循环执行一次,内循环要执行一轮。即外循环执行一次,内循环一直要执行到条件不满足时为一轮;在执行外循环一次,内循环又一直执行到条件不满足时为第二轮;如此重复执行,直到外循环条件不满足时,整个循环嵌套结束。
2循环嵌套格式中的内循环体不允许出现交叉,即外循环要包含内循环。
3循环嵌套是,内循环体中使用break语句和continue。

 【例5.25】求1!+2!+3!+...+10!

 

【例5.26】输出乘法口诀表

 

 

 【例5.27】求100以内的素数。要求每行输出10个。

 

 

【例5.28】将10~20之间的正整数分解质因数

 

 

5.7  典型算法举例

5.7.1  递推法

【例5.29】

 

【例5.30】求sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...的近视值,要求精确到10负6次方

 

 

5.7.2   迭代法

【例5.31】

 

5.7.3  穷举法

【例5.32】

 

例5.33】判断由1、2、3、4四个数字能组成多少个互不相同且无重复数字的三位数?输出这些数

 

 

5.8:循环程序设计示例

【例5.34】

1.定义整型i,j;

2.若i<=5;转第3步,则转第步;

3.若i<=20-i;转第4步;则转第5步;

4.输出" ";

5.j++;转第3步;

6.若j<=2*i-1;转第7步;则转第9步;

7.输出"*";

8.j++;转第6步;

9.输出\n;

10.i++,转第2步;

9.结束;

 

 【例5.35】

1.定义m,n,count;

2.m=rand()%(80-10+1)+10;

3.输入一个10—80之间的整数;

4.判断是否为真,转第5步,则转第13步;

5.count++;

6.若m==n;转第7步;则转第9步;

7.m>n&&count<5;

8.输出"对不起!你猜对了!再来一次!";

9.m<n&&count<5;

10.输出"对不起!你猜大了!再来一次!";

11.若count==5;转第12步,则转第4步;

12.输出"对不起!n你没有机会!"

13.结束;

 

【例5.36】

 

 【例5.37】

1.定义x,t;

2.输入"i|tpower\n";

3.若x<1000;转第4步;则第10步;

4.t=x*x;

5.若t!=0;转第6步;则转第9步;

6.若x==t%1000;转第7步;则转第8步;

7.输出x;x*x;

8.t=t/10;

9.x++,转第3步;

10.结束; 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值