C语言第五章总结

引例 

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

 

【例5.2】编写程序,计算1-1/4+1/7-1/10+1/13-1/16+···的和,直到某一项的绝对值小于1e-6为止。

 

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

                for语句是C语言提供的功能强大、使用广泛的一种循环结构,不仅可以解决循环次数未知的循环问题,特别适合解决次数已知的循环问题。

5.2.1  for语句的基本语法

         for语句的一般形式为:

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

                                循环体语句;

for语句的执行过程如下:

(1) 首先计算表达式(1).

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

(3)计算表达式3。

(4) 返回第(2)步继续执行。

(5) 循环结束,继续执行for语句的下一条语句。

1、可以应用于计数型的循环

格式如下:

                                         循环体语句

  说明:循环变量赋初值是一个赋值语句,用于给循环变量赋初值;循环条件是一个关系表达式,决定何时终止循环(即确定循环的终值);循环变量增量决定循环变量在完成一次循环后如何变化。三部分之间以“;”隔开。

【例5.3】输入一个正整数n,求\sum_{i=1}^{n}i的值。

 

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

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

格式若下:

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

                                                                循环体语句;

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

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

格式若下:

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

                                                        循环体语句;

说明:省略表达式2时,表示不循环进行控制,这时如果没有其它处理的话,会形成死循环。应避免这样使用for结构。

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

格式如下:

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

                                                        循环体语句;

说明:省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。

5、for语句的一般形式中表达式1和表达式3也可以是逗号表达式

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

7、for语句的一般形式中循环体语句可以省略

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】由键盘输入三个数字,将其组合成一个整型数并输出。

 

【例5.12】编写程序,由键盘输入一个正整数,判断其是否为素数。

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

        在C语言中,使用while语句完成不定次数的循环。如果满足条件,则反复执行循环体语句,当循环条件不满足时退出循环。

5.3.1 while语句的基本语法

        swhile语句在使用时,总是先判断一个条件,所以可以用while语句实现“当型”循环。while语句的一般形式如下:

        while(表达式)

                循环体;

5.3.2  while循环使用示例

【例5.13】计算的sum=\sum_{n-1}^{100}n的值。

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

  

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

格式若下:

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

                                                                循环体语句;

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

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

格式若下:

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

                                                        循环体语句;

说明:省略表达式2时,表示不循环进行控制,这时如果没有其它处理的话,会形成死循环。应避免这样使用for结构。

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

格式如下:

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

                                                        循环体语句;

说明:省略表达式3时,可以在循环体语句中加入修改循环变量的值的语句。

5、for语句的一般形式中表达式1和表达式3也可以是逗号表达式

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

7、for语句的一般形式中循环体语句可以省略

5.2.2        for循环使用示例

  【例5.15】由键盘输入一串字符,分别统计输入字符中数字字符、字母字符及其他字符的个数。

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

        在C语言中,do-while语句也用于完成不定次数的循环控制。与while语句不同的是,do-while语句首先执行一次循环体,然后判断循环条件,如果满足,则反复执行循环体语句;否则结束循环。

5.4.1  do-while语句的基本语法

        do-while语句在使用时,首先执行循环体语句,然后再判断条件。所以可以用do-while语句实现“直到型”型号。do-while语句的一般形式如下:

        do

                循环体

        while(表达式);

5.4.2  do-while循环使用示例
 

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

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

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

 

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

        在前面介绍的3种循环语句,即for循环语句、while循环语句及do-while循环语句中,控制循环是通过循环达到设定的次数或者循环的判断条件为“假”时结束循环,这种循环控制方式在实际的程序设计中是不够的。许多时候当循环结构中出现多个循环条件时,要求当某个条件满足时会即即使循环,或者循环结构中条件会跳过某些语句继续循环,这就要循环结构中配合使用break语句和continue语句。
5.5.1  break语句   

    break语句用在循环语句和swhile语句中。在while语句中的用法第4章已经介绍,这里介绍其在循环语句中的用法。

        break语句的一般形式如下:

                                                                break;

        当break语句用于循环语句中时,可使程序终止循环而转去执行循环语句的后继语句。通常break语句总是与if语句一起配合使用,即满足条件时便跳出循环。

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

 


 

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

 

 【例5.21】从键盘输入一批学生的成绩(以负数作为结束标志),结束平均数,并统计不及格成绩的个数。

 

 5.5.2  continue语句

        continue语句的作用是跳过循环体中continue后面的语句,继续下一次循环。continue语句只是用在循环语句中,常与if语句一起用。

        continue语句的一般形式如下:

                                                                continue;

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

 


 

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

 

 5.5.3  goto语句         

        除了前面介绍的3种循环控制语句,即for循环语句、while循环语句及do-while循环语句之外,在C语言中,还有一种可以实现循环控制的语句,即goto语句。

        goto语句的一般形式如下:

        goto语句标号;

        说明:语句标号是一个有效的标识符,使用时在语句标号的后面跟一个“:”出现在函数中某语句的前面。程序执行到goto语句时,会控制跳转到该语句标号处,达到控制循环的目的。
【例5.24】使用goto语句计算sum=\sum_{n=1}^{100}n的值。 

 

 

5.6        循环嵌套

        当一个循环的循环体内又包含了另一个完整的循环结构时,称为循环的嵌套或者是二重循环。根据问题的需要,可以构成三重及以上的循环嵌套结构,但一般情况下最多使用到三重循环。

【例5.25】求1!+2!+3!+···+10!。

 

 【例5.26】编写程序,输出乘法口诀。

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

 

 【例2.28】将10-20之间的正整数分解质因数。例如,12可分解为2*2*3。

5.7        典型算法举例

5.7.1 递推法

【例5.29】猴子吃桃问题:

 

【例5.30】求sin(x)=x-x*x/3!+x*x*x*x*x/5!-x*x*x*x*x*x*x*x*x、7!+···的近似值,要求精确到1e-6。

 

 5.7.2 迭代法

【例5.31】用牛顿迭代法求方程2*x*x*x-4*x*x+3*x-6在1.0附件的根。

 

 5.7.3  穷举法

【例5.32】搬砖问题:36块砖,36人搬。男搬4、女搬3、两个小孩抬一快,要求一次全部搬完,问男、女、小孩各几个?

 

 

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

 

 5.8        循环程序设计示例

【例5.34】编程输出图形:

【例5.35】猜数字游戏:由计算机随机产生一个10-80之间的数据,在5次之内猜中则成功,否则给从大小提示。猜5次之后结束程序。

【例5.36】编写程序输出100-1000以内的回文素数。

【例5.37】在所有三位整数中找出平方数中有连续三位数是该数本身的数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值