学C笔记归纳 第九篇——分支循环语句3_for_while_do while(附九九乘法表解析和三种方式实现)

发布时间 2023-12-09 18:59:32作者: 王小龙s

 基础语法模版:

  while(1 条件控制语句

  {

    2 语句序列

  }

顺序:12 12 12....2 1

 

  do

  {

 

    1语句序列

 

  }

  while(2 循环控制表达式);

顺序:12 12 12....1 2

 

 

  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继续,   3 4 2 3 4...2

 

 

 

 

 

 

 

现在练习用循环打印九九乘法表:

思路:

  概况:九九乘法表有九行九列;

  规律:每一行 列数递增,每一列 行数递减 ,且每行第几行 就有对应列数;

  实现:为实现两个递增,需要双层循环二者循环次数均为九,考略到 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循环一样注意 行循环内初始化列数