1. 循环结构定义
(1)定义:从 main() 函数开始执行,从上往下,使得某些语句重复执行。
(2)循环结构的程序:在顺序结构中,加入循环控制语句后的程序,比如循环控制语句 while、do … while、for等常用的循环控制语句。
(3)循环三要素:循环变量的初值、循环变量的判断、循环变量的更新。
(4)循环体结束标志:循环判断条件为假时跳出循环;break 语句存在,跳出循环。
2.循环控制语句
(1)while(循环条件)(当型循环):执行条件,当条件满足时,执行循环体。示例代码如下:
int main()
{
//循环变量的初值
int a = 5 ;
int b = 0 ;
int c = 0 ;
//循环变量的判断
while( b++ < a ) //先判断条件,如果为真则执行循环体,否则该循环体不执行
{
//循环变量的更新
c++ ;
printf("b=%d",b) ;
}
printf("b=%d,c=%d",b,c) ;
return 0;
}
- 特点:先判断,再执行
(2)do … while(循环条件)(直到型循环):先执行 do 语句,如果 do 语句下只有一条语句则无需中括号,若是具有两条或以上语句,则需要使用中括号。然后后判断条件,直到条件不满足时才退出循环体。示例代码如下:
int main()
{
int x = 17 ;
int y = 0 ;
int z = 5 ;
do
{
y++ ;
printf("y变为:y=%d",y) ;
}
while( z-- >= 0 );
printf("最终 y 值为:y=%d",y) ;
return 0;
}
- 特点:先执行,再判断
(3)for 循环语句
- for 循环语句结构:for( 表达式1 ; 表达式2 ; 表达式3 )。
- 表达式 1 通常是为循环变量赋初值,只执行一次。可省略。
- 表达式 2 通常为循环条件,表示是否继续执行循环体,该判断条件若恒真,则会进入死循环。可省略。
- 表达式 3 通常为更新循环变量的值,可省略。
- for 循环常见问题
- 忘记定义循环变量或对循环变量进行初始化
- 循环条件的缺少时会造成死循环
- 循环变量不更新也可能会造成死循环
- for 循环语句中的分号不可省略
示例代码如下:
int main()
{
int i ;
int sum = 0 ;
for( i = 0 ; i <= 10 ; i ++)
sum += i ;
printf("sum = %d\n",sum);
return 0;
}
3. 两个控制语句
(1)break 语句(跳出循环体)
- 格式:break ;(跳出)
- 功能:终止退出。
- 常用范围:循环体中和switch
示例代码如下:
// break 语句在循环体中
int main()
{
int k ;
int m = 0 ;
for( k = 0 ; k < 10 ; k++ )
{
m ++;
if( k == 5)
{
printf("m =%d",m);
break;
}
printf("m变为:m =%d",m);
}
return 0;
}
// break 语句在 switch 语句中
int main()
{
int choose ;
printf("请输入 0 或者 1:");
scanf("%d",&choose);
switch(choose)
{
case 1 :
printf("1");
break;
case 2 :
printf("2");
break;
default:
printf("error");
continue; //选择数字出现错误,跳入 switch 语句中再次进行选择数字
}
return 0;
}
(2)continue 语句(不能结束循环体)
- 格式:continue ;
- 功能:结束当前循环,继续进行下一次循环,没有跳出循环体,还在当前循环体中,只是进行了下一次循环中。
- 范围:循环体中。
在 for 循环语句、while/do … while 循环语句中都可以使用 continue 语句,现以 for 循环语句为例,示例代码如下:
int main()
{
int m ;
int sum =0 ;
for( m = 0 ; m <= 20 ; m ++ )
{
printf("此时的 m 值为:m =%d",m);
if( m = 10 )
continue; //当 m 的值等于10 时,不参加运算,直接进行 for 语句中第 3 部分的 m ++, m 值变为 11
sum += m ;
}
printf("sum 的和: sum =%d",sum);
return 0;
}
4. 双循环
- 组成:由外循环和内循环组成。
- 语句:while、for、do … while 语句都可构成双循环。
- 特点:循环的执行情况是先外后内。
示例代码如下:
//双循环打印九九乘法表
int main()
{
int i ;
int j ;
int k =0;
for( i = 1 ; i < 10 ; i++ )
{
for( j = i ; j < 10 ; j++ )
{
k = i * j ;
printf("%d*%d=%d ",i,j,k);
}
printf("\n");
}
return 0;
}