基础语法模版:
while(1 条件控制语句)
{
2 语句序列;
}
顺序:12 12 12....2 1
do
{
1语句序列;
}
while(2 循环控制表达式);
顺序:1 2 12 12....12
for(1 初始化表达式;2 条件控制语句;4 调整表达式)
{
3 语句序列;
}
顺序:1234 234 234...2
注意:
do while相对于while,循环至少执行一次,不常用;
for 循环更常用,因为它的语句较为集中,便于阅读;
尽量不要在for循环体内修改循环变量,防止for循环失去控制;
建议for循环语句的循环控制变量的取值采用“前闭后开”区间; // 10次循环:for(i = 0; 10 > i ; i++;)
for循环 判断部分 被省略意味这部分恒成立;//for(;;;)死循环
for(int i =0;2 > i ;4) C99语法才支持,C++可自由切换,也支持,如果报错就立马知道有这么一回事;
break | 用于直接跳出循环,结束一层循环 |
continue | 用于跳过本次循环后面的代码,while中直接去 1 判断部分,进行下一次循环的判断 for中则调到本次的4继续, |
现在练习用循环打印九九乘法表:
思路:
概况:九九乘法表有九行九列;
规律:每一行 列数递增,每一列 行数递减 ,且每行第几行 就有对应列数;
实现:为实现两个递增,需要双层循环二者循环次数均为九,考略到 printf 函数的换行,
将控制行数的循环作为外层循环。
#include<stdio.h>
int main()
{
int h = 1;
int l = 1; //行数列数初始化
for (h = 1; 9 >= h; h++)
{
for (l = 1; l <= h; l++) // 第几行有对应列数
printf("%d * %d = %2d ", l, h, h * l); //%2d两位数空格,一位数会空格以对齐
printf("\n"); //行数循环每次结束换行
}
return 0;
}
习惯 h<=9, h<10 一样
#include<stdio.h>
int main()
{
int h = 1;
int l = 1; //行数列数初始化
while( h<=9 )
{
//l = 1; //确保每次行数循环开始,列数从一开始
while (l <= h) // 第几行有对应列数
{
printf("%d * %d = %2d ", l, h, h * l); //%2d两位数空格,一位数会空格以对齐
l++;
}
h++;
printf("\n"); //行数循环每次结束换行
}
return 0;
}
善用调试发现while循环与for不同,内层循环不会因外层循环开启而初始化列数,需人为加上:
#include<stdio.h>
int main()
{
int h = 1;
int l = 1; //行数列数初始化
while( h<=9 )
{
l = 1; //确保每次行数循环开始,列数从一开始
while (l <= h) // 第几行有对应列数
{
printf("%d * %d = %2d ", l, h, h * l); //%2d两位数空格,一位数会空格以对齐
l++;
}
h++;
printf("\n"); //行数循环每次结束换行
}
return 0;
}
#include<stdio.h>
int main()
{
int h = 1;
int l = 1; //行数列数初始化
do
{
l = 1;
do
{
printf("%d * %d = %2d ", l, h, h * l); //%2d两位数空格,一位数会空格以对齐
l++;
} while (l <= h);
h++;
printf("\n");
}while (h <= 9);
return 0;
}
和while循环一样注意 行循环内初始化列数