第六章 循环控制结构
1.循环:包括计数控制的循环和条件控制的循环
2.结构化程序设计的三种基本结构:顺序结构、选择结构、循环结构
3.循环结构的类型:
1)当型循环结构:for语句(适合循环次数已知,计数控制的循环)
2)直到型循环结构:while语句、do-while语句(适合循环次数未知,条件控制的循环)
4.while语句
1)一般形式为:
while(循环控制表达式)
{ |
语句系列 |循环体
} |
2)循环控制表达式在执行循环体之前测试
3)执行过程:
计算循环控制表达式的值
如果循环控制表达式的值为真,那么执行循环体中的语句,并返回步骤1
如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句
5.do-while语句
1)一般形式为:
do
{ |
语句系列 |循环体
}while(循环控制表达式);
2)循环控制表达式在执行循环体之后测试
3)执行过程:
执行循环体中的语句
计算循环控制表达式的值
如果循环控制表达式的值为真,那么返回步骤1
如果循环控制表达式的值为假,就退出循环,执行循环体后面的语句
6.for语句
1)一般形式为:
for(初始化表达式;循环控制表达式;增值表达式)
{ |
语句系列 |循环体
} |
2) 在每次循环体被执行之前,都要对循环控制条件测试一次,每次循环体执行完以后都要执行一次增值表达式
3)初始化表达式作用:循环变量初始化,即赋初值
4)循环控制表达式:是控制继续执行的条件,当表达式的值为非0时重复执行循环
5)增值表达式作用:每执行一次循环,循环控制变量增值
6)for语句三个表达式之间用分号分隔,有且只能有两个分号
7)循环控制表达式若省略,表示循环条件为永真
8)初始化表达式和增值表达式都可省略,但是必须有其他语句反应其作用
7.例:从键盘输入n,然后计算输出1+2+3+……n的值
1)while语句编程实现
#include<stdio.h>
void main()
{
int i=1,n,sum=0;//sum一定要初始化,不然会是随机值
printf("Enter n:");
scanf("%d",&n);
while(i<=n)
{
sum+=i;
i++;
}
printf("1+2+3+……+%d=%d\n",n,sum);
}
2)do-while语句编程实现
#include<stdio.h>
void main()
{
int i=0,n,sum=0;
printf("Enter n:");
scanf("%d",&n);
do
{
sum+=i;
i++;
}while(i<=n);
printf("1+2+3+……+%d=%d\n",n,sum);
}
3)for语句编程实现
#include<stdio.h>
void main()
{
int i=1,n,sum=0;
printf("Enter n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=i;
}
printf("1+2+3+……+%d=%d\n",n,sum);
}
8.逗号运算符
1)所有运算符中优先级最低,左结合
2)作用:可实现对各个表达式的顺序求值
3)结果:将最后一个表达式的值作为整个逗号表达式的值
4)例:从键盘输入n,然后计算输出1+2+3+……n的值
#include<stdio.h>
void main()
{
int i,j,n,sum=0;
printf("Enter n:");
scanf("%d",&n);
for(i=1,j=n;i<=j;i++,j--)
{
sum+=i+j;
}
printf("1+2+3+……+%d=%d\n",n,sum);
}
9.空语句
1)仅由一个分号构成的语句
2)作用:什么也不做,只起延时作用
3)例:for(i=1;i<50000000;i++)
{
;
}
或for(i=1;i<50000000;i++)
{
}
或for(i=1;i<50000000;i++);
for(i=1;i<=n;i++);
{
sum+=i;
}
等价于
for(i=1;i<=n;i++)
{
;
}
sum+=i;
4) 例:从键盘输入n,