针对初学者的C和C++23的对比学习-4.循环结构的学习

学习目标:

了解循环结构

  1. 了解 for语句
  2. 了解 while语句
  3. 了解do while语句
  4. for , while和 do while的对比

学习内容:

了解 for语句:

  • 当判断条件为真时,进入for语句
  • 当判断条件为假时,退出for语句
//基本语法
for(初始化;判断条件;调整部分)
  语句1;

for循环的执行流程

判断条件为真
判断条件为假
进入for语句
初始化部分
判断条件部分
循环语句部分
结束for语句
调整部分

了解 while语句:

  • 当判断条件为真时,进入while语句
  • 当判断条件为假时,退出while语句
//基本语法
while(判断条件)
  语句1;

while循环的执行流程

判断条件为真
判断条件为假
进入while语句
判断条件部分
循环语句部分
结束while语句

了解 do while语句:

  • 无论判断条件真假,先执行一次do while语句
  • 当判断条件为真时,进入do while语句
  • 当判断条件为假时,退出do while语句
//基本语法
do
  语句1;
while(判断条件)

do while循环的执行流程

判断条件为真
判断条件为假
进入dowhile语句
循环语句部分
判断条件部分
结束for语句

了解break和continue的使用

break:
当程序遇到break时,立即跳出循环
continue:
当程序遇到continue时,立即跳过本次循环,进入下次循环
注意事项:
判断条件的条件部分应放在continue前面,避免死循环


for , while和 do while的对比

执行流程区别:

  • for循环和while循环:先判断,后进入主体,故不一定进入循环
  • do whlie循环:先进入主体,后判断,故一定有一次循环

使用场景区别:

  • for循环:明确循环次数时使用
  • While循环:不明确循环次数,但明确循环结束条件时使用
  • do while循环:至少执行一次循环且明确循环结束条件时使用

练习

  1. 生成一个正整数的逆序数
int main()       //  CPP 23
{
    unsigned int a{};
    std::println("Please enter a positive integer.");
    std::cin >> a;;
    for (; a > 0; a = a / 10)
    {
        unsigned int n{};
        n = a % 10;
        std::print("{}", n);
    }
    return 0;
}
int main()       //  C
{
    unsigned int a = 0;
    printf("Please enter a positive integer.\n");
    scanf("%u", &a);
    for (; a > 0; a = a / 10)
    {
        unsigned int n = 0;
        n = a % 10;
        printf("%u", n);
    }
    return 0;
}
  1. 打印等腰直角三角形
int main()       //  CPP 23
{
    int a{};
    std::println("Please enter a number.");
    std::cin >> a;
    for (size_t i{1}; i <= a; ++i)             //控制行数
    {
        for (size_t j{1}; j <= i; ++j)         //控制每一行的星数等于行数
        {
            std::print("*");
        }
        std::println();
    }
    printf("\n");
    for (size_t i{1}; i <= a; ++i)             //控制行数
    {
        for (size_t n = a - i; n > 0; --n)      //控制每一行的空格数等于总行数减星数
        {
            std::print(" ");
        }
        for (size_t j{1}; j <= i; ++j)         //控制每一行的星数等于行数
        {
            std::print("*");
        }
        std::println();
    }
    return 0;
}
int main()       //  C
{
    int a = 0;
    printf("Please enter a number.\n");
    scanf("%d", &a);
    for (int i = 1; i <= a; i++)             //控制行数
    {
        for (int j = 1; j <= i; j++)         //控制每一行的星数等于行数
        {
            printf("*");
        }
        printf("\n");
    }
    printf("\n");
    for (int i = 1; i <= a; i++)             //控制行数
    {
        for (int n = a - i; n > 0; n--)      //控制每一行的空格数等于总行数减星数
        {
            printf(" ");
        }
        for (int j = 1; j <= i; j++)         //控制每一行的星数等于行数
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
  1. 1-1000的同构数打印
int main()       //  CPP 23
{
    for (size_t n = 1; n <= 1000; ++n)
    {
        if (n == n * n % 10 || n == n * n % 100 || n == n * n % 1000)
        {
            std::print("{}\t", n);
        }
    }
    return 0;
}
int main()       //  C
{
    for (int n = 1; n <= 1000; n++)
    {
        if (n == n * n % 10 || n == n * n % 100 || n == n * n % 1000)
        {
            printf("%d\t", n);
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值