首页 > 编程语言 >针对初学者的C和C++23的对比学习-4.循环结构的学习

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

时间:2024-11-19 23:14:27浏览次数:3  
标签:语句 do 23 int C++ 学习 while 循环 printf

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;
}

标签:语句,do,23,int,C++,学习,while,循环,printf
From: https://blog.csdn.net/weixin_46424672/article/details/143890460

相关文章

  • 20222318 2024-2025-1 《网络与系统攻防技术》实验六实验报告
    1.实验内容1.1实验要求掌握Metasploit的使用方法:“Search——Use——Show——Set——Exploit/run”。1.2实验任务(1)前期渗透(2)Vsftpd源码包后门漏洞(21端口)(3)SambaMS-RPCShell命令注入漏洞(端口139)(4)JavaRMISERVER命令执行漏洞(1099端口)(5)PHPCGI参数执行注入漏洞(80端口)1.3......
  • 前端技术对css属性的学习
    css属性目录css属性文本字体背景文本属性说明CSScolor设置文本的颜色1direction规定文本的方向/书写方向2letter-spacing设置字符间距1line-height设置行高1text-align规定文本的水平对齐方式1text-decoration规定添加到文本的装饰效果......
  • 李沐大佬-动手学深度学习笔记-注意力机制
    注意力机制(显示考虑随意线索)随意线索:查询query每个输入是一个value和不随意线索key的对通过注意力池化层偏向性选择某些输入历史演变:非参注意力池化层:60年代提的Nadaraya-Watson核回归,类似于knn如果使用高斯核,fx函数类似于softmax和y(y是一个value)的乘积参数化注意力机制:......
  • 零基础逆向学习记录6
    逆向学习记录之汇编基础61.什么是堆栈平衡?<1>如果要返回父程序,则当我们在堆栈中进行堆栈的操作的操作的时候,一定要保证ret这条指令之前,esp指向的是我们压入栈中的地址,即返回call的下一行。<2>如果通过堆栈传递参数了。那么在函数执行完毕之后,要平衡参数导致的堆栈变化。......
  • Oracle 深入学习 Part 1: Oracle Architectural Components(Oracle 架构组件)
    Oracle服务器(OracleServer)OracleServer是一个管理系统,提供一种开放、全面、集成的信息管理方式。它包含了Oracle实例(OracleInstance)和Oracle数据库(OracleDatabase)。1.Oracle实例(OracleInstance)定义:Oracle实例是访问Oracle数据库的方式,始终打开一个且仅......
  • Java API 学习指南:从入门到精通的全面指导
    文章目录JavaAPI学习指南1.了解JavaAPI的基本概念2.掌握基础的Java知识3.使用官方文档4.实践练习5.深入理解关键API6.关注最新的API更新7.加入社区8.创造性地应用JavaAPI学习指南1.了解JavaAPI的基本概念API是一系列预定义的函数或类,它们提供了......
  • 学习笔记(三十九):默认界面扫码
    基本概念默认界面扫码能力提供系统级体验一致的扫码界面,ScanKit对系统相机权限进行了预授权,调用接口时,无需开发者再次申请相机权限。适用于不同扫码场景的应用开发场景介绍默认界面扫码能力提供了系统级体验一致的扫码界面以及相册扫码入口,支持单码和多码识别,支持多种识码类......
  • C++语言之模版与类型转换
    模版C++的泛型编程可以将数据类型作为参数进行传递关键字:    C++模版的语法使用"<>"来表示泛型类型,并使用关键字template来定义和声明模版分类:    模版函数    模版类模版函数语法:    template<class假设的类型1,class假设......
  • 《C++ 构建区块链:创世区块的初始化之道》
    在区块链这个神秘而充满魅力的技术领域中,用C++构建区块链是一项极具挑战性和创新性的工作。而其中,初始化创世区块是整个区块链大厦的基石,它承载着区块链的起源和根本属性,就像生命起源中的第一个细胞一样重要。今天,我们就来深入探讨一下在C++构建区块链时,如何进行创世区......
  • 《C++ 实现区块链:区块时间戳的存储与验证机制解析》
    在区块链这个复杂而精妙的技术架构中,时间戳是一个至关重要的元素,尤其当我们使用C++来实现区块链时,对区块时间戳的存储和验证机制设计更是不容忽视。这一机制如同区块链的时间脉搏,为整个系统的有序运行和数据可信性提供了坚实的保障。时间戳在区块链中的核心意义时间戳在......