第5章 循环结构程序设计

本文详细介绍了C语言中的循环结构,包括for、while和do-while语句的用法,通过多个实例展示了如何利用循环计算人口增长、求和、求阶乘等任务。此外,还探讨了循环控制语句如break和continue的使用,以及循环嵌套和循环结构的优化,如在循环中使用条件判断避免不必要的计算。最后,文章提供了几个典型的循环程序设计示例,如猜数字游戏、回文素数查找等,旨在帮助读者掌握循环结构在实际问题中的应用。
摘要由CSDN通过智能技术生成

循环结构是结构化程序设计中的基本结构之一。

几乎所有的实用价值程序中都包含循环结构

特点:可以完成有规律的需要重复计算或处理的任务

C语言提供了for语句,while语句和do-while三种循环语句

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

#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;
}

 例5.2 计算一项数的和,直到某一项的绝对值为10负六次方为止

#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;
}

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

For语句的执行过程如下:

  1. 首先计算表达式1
  2. 判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第3步;若值为假(0),结束循环,转到第5步执行
  3. 计算表达式3
  4. 返回第2步继续执行
  5. 循环结束,继续执行for语句的下一条语句

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

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

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

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

              循环体语句:

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

例5.3输入一个正整数n,求i的值

首先抽象出需要反复执行的部分:

Sum=sim+i

Sum用于存放累加和,其初值为0.该语句重复n次,同时i从1变到n,就实现了从1累加到n。计数型循环的结构如下:

1.循环变量赋初值:i

2.循环条件:i<=n

3.循环变量增量:i++

4.循环体语句:sum=sum+i

 #include<stdio.h>
#include<math.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;
}

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

首先抽象出需要反复执行的部分:

Factorial= Factorial*i

计数型循环的结构如下:

1.循环变量赋初值:i=1

2.循环条件:i<=n

3.循环变量增量:i++

4.循环体语句:Factorial= Factorial*i

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;
         }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;
         }

For语句的一般形式中省略表达式1

格式如下:for(;表达式2;表达式3)

循环语句;

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

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

格式如下:for(;表达式1;表达式3)

循环语句;

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

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

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

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

for循环使用示例

例5.5编写程序,输入一个整数n、计算前n项之和

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值