循环结构是结构化程序设计中的基本结构之一。
几乎所有的实用价值程序中都包含循环结构
特点:可以完成有规律的需要重复计算或处理的任务
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
- 判断表达式2,若其值为真(非0),则执行循环体语句,然后执行第3步;若值为假(0),结束循环,转到第5步执行
- 计算表达式3
- 返回第2步继续执行
- 循环结束,继续执行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项之和