C语言程序设计第五章(循环程序结构设计)总结

5.1 引例【例5.1】假设今年我国的人口总数为13亿,若按每年2%增长,计算从现在开始10年内每年人口的数量。例5.1:#include<stdio.h>#include<math.h>int main(){ int n = 13, year; double number, rate = 0.02; for (year = 1; year <= 10; year++) { number = n * pow((1 + rate), y...
摘要由CSDN通过智能技术生成

5.1        引例

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

例5.1:
#include<stdio.h>
#include<math.h>
int main()
{
 int n = 13, year;
 double number, rate = 0.02;
 for (year = 1; year <= 10; year++)
 {
  number = n * pow((1 + rate), year);
  printf("%2d年后,人数为:%.2f亿\n", year, number);
 }
 return 0;
}

运行结果:

1年后,人数为:13.26亿

2年后,人数为:13.53亿

3年后,人数为:13.80亿

4年后,人数为:14.07亿

5年后,人数为:14.35亿

6年后,人数为:14.64亿

7年后,人数为:14.93亿

8年后,人数为:15.23亿

9年后,人数为:15.54亿

10年后,人数为:15.85亿

说明:

(1)若初始人口用n表示,增长率用rate表示,年份用year表示,则计算某年的人口数量number的公式为

                                                  number=n(1+rate)^year

(2)程序中的for循环控制语句中,年份year的初始值为1,终值为10,增量用year++实现。

(3)程序中的语句

{
  number = n * pow((1 + rate), year);
  printf("%2d年后,人数为:%.2f亿\n", year, number);
 }

是需要重复执行的语句,成为循环语句。在重复执行的过程中,使用了同一个计算公式,但年份year每次递增1,因此计算出的人口数量number会不同。

                                        ​​​​​​​        

                                                     图5.1        例5.1的执行流程

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

例5.2:
#include<stdio.h>
#include<math.h>
int main()
{
 double sum,item,flag,denominator;
 sum = 0;
 item = 1;
 flag = 1;
 denominator = 1;
 while (fabs(item) >= 1e-6) {
  sum = sum + item;
  flag = -flag;
  denominator = denominator + 3;
  item = flag / denominator;
 }
 printf("sum=%f\n", sum);
 return 0;
}

运行结果:

sum=0.835648

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

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

<5.2.1>        for语句的基本语法

for语句的一般形式为:

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

                                                          循环结构语句;

for语句的执行过程如下:

①首先计算表达式1.

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

③计算表达式3。

④返回第②步继续执行。

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

大部分情况下,循环体语句为一复合语句。

for语句的执行流程如图5.2所示。

            ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

                                                     图5.2        for语句执行流程

注意,表达式1只是再进入循环之前计算一次。表达式2、循环体语句和表达式3将重复执行。

根据for语句格式的特点,其实际应用可以有多种形式。

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

格式如下:                

                                        for(循环变量赋初值;循环条件;循环变量增量)

                                                                循环体语句

【例5.3】输入一个正整数n,求1+2+3+4+5+6...+n的值。

例5.3:
#include<stdio.h>
int main()
{
 int i, n, sum;
 scanf_s("%d", &n);
 sum = 0;
 for (i = 1; i <= n; i++) {
  sum = sum + i;
 }
 printf("由1到%d的和是:%d\n",n, sum);
 return 0;
}

运行结果:

100

由1到100的和是:5050

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

①循环变量赋初值:i=1。

②循环条件:i<=n。

③循环变量增量:i++。

④循环体语句:factorial=factorial*i。

例5.4:
#include<stdio.h>
int main(void)
{
 int i, n;
 double factorial;
 printf("输入n的值:");
 scanf_s("%d", &n);
 factorial = 1;
 for (i = 1; i <= n; i++)
  factorial = factorial * i;
 printf("%d!=%.0f\n", n, factorial);
 return 0;
}

运行结果:

输入n的值:10

10!=3628800

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

格式如下:

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

                                                             循环体语句;

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

例如,例5.3的循环语句:

for (i = 1; i <= n; i++)                                                         /*循环执行n次*/
  sum = sum + i;                                                                /*累加器,反复累加i的值*/

等价于:

i=1;

for (; i <= n; i++)                                                                         /*循环执行n次*/
  sum = sum + i;                                                                        /*累加器,反复累加i的值*/

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

格式如下:

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

                                                             循环体语句;

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

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

格式如下:

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

                                                             循环体语句;

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

例如,例5.4的循环语句:

for (i = 1; i <= n; i++)                                        /*循环执行n次,计算n!*/
  factorial = factorial * i;                                    /*累乘器n!*/

等价于:

for (i = 1; i <= n; ){                                                 /*循环执行n次,计算n!*/
  factorial = factorial * i;                                        /*累乘器n!*/

  i++;}                                                                   /*循环变量增量*/

5.for语句一般形式中表达式1和表达式3也

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值