C语言之对结构的认知(上)

带有HSE组件的S32系列芯片中各子系统如何依次启动? 仔细阐述了上电后各个子系统的启动顺序,并给出了详细的启动步骤流程图。 阅读详情

一.对结构的介绍

众所周知,C语言是一种结构化的程序设计语言。从我们日常的使用中不难看出,其中最基本且最长见的结构有三种,顺序结构、选择结构、循环结构。通过这三种结构的组合使用,我可以实现复杂的逻辑和功能。

  • 顺序结构:程序按顺序执行,不发生跳转。
  • 选择结构:依据条件是否满足,有选择的执行相应的功能。
  • 循环结构:依据条件是否满足,循环多次执行某段代码。

二.顺序结构

顺序结构是最为简单的它是指:程序按照顺序执行的。从程序的起始开始,按照代码的编写顺序依次执行每一条语句,直至程序结束。这是我们从学习代码开始就在使用的一种结构。

比如,我们最开始学习的:

#include <stdio.h>

int main() 
{
    // 顺序执行的代码块
    printf("Hello, ");
    printf("world!");
    return 0;
}

三.选择结构

如果你对选择结构不熟悉,那你肯定熟悉分支结构,这二者只是叫法不同罢了。选择(分支)顾名思义,就是进行对接下来运行程序的选择,它是通过if语句或者switch语句来实现的。

1.if语句

1.1.if语句的基本形式

if ( 表达式 )
    语句

当表达式为真时,执行语句,反之则不执行。很显然这里它起到了选择的作用。

eg:

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d", &a);
    if (a = 6)
        printf("true");
    return 0;
}

这个代码用if语句判断,就是当你输入的值为6时,输出 true ,反之直接结束程序。

1.2.if...else...

当然,if语句在使用时往往会和 else 连用,形成 if...else... 形式。解读为,如果......否则......

eg:

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d", &a);
    if (a = 6)
        printf("true");
    else
        print("false");
    return 0; 
}

这串代码就表示,当你输入的值为6时,输出 true,如果不是6,就输出 false。

else 的加入可以让我们更好的进行判断,满足我们的需求。

1.3.分支中多语句的使用

在 if 或 else 语句中都是默认只控制一条语句的。但是平时我们在使用 if 语句时,其分支里面一般不会只写一条语句,往往都是多条语句才能实现我们的所需。

eg:

#include<stdio.h>

int main()
{
    int a = 0;
    scanf("%d", &a);
    if (a > 6)
    {
        printf("true\n");
        printf("你输入的数大于 6.\n");
    }
    else
    {
        printf("false\n");
        printf("你输入的数小于 6.\n");
    }
    return 0; 
}

这串代码就表示,如果你输入的数大于6,输出:true,并换一行输出:你输入的数大于6;反之输出:false,然后换行输出:你输入的数小于6. 

当你的分支语句中放入不止一条语句时, 由于,在 if 或 else 语句中都是默认只控制一条语句。所以我们必须用 {} 将我们输入的语句括起来,使其成为一个代码块。就像你在写 main() 时那样。

1.4.if 语句的嵌套与排版

如果我们要实现一个稍微复杂一点的功能,往往只用一个 if 语句是不够的,需要多个 if 语句的嵌套,形成连续的判断。

eg:

#include <stdio.h>

int main() 
{
    int a = 0;
    scanf("%d", &a);
    if (a > 6) 
    {
        printf("true\n");
        if(a < 50)
        {
            printf("诶哟,很不错哦。\n");
            printf("你输入的数大于6,但小于10.\n");
        }
        else
        {
            printf("你输入的数挺大的。\n");
            printf("你输入的数已经大于50.\n");
        }
    }
    else
    {
        printf("false\n");
        printf("你输入的数挺小的。\n");
    }
    return 0;
}

这串代码就是很简单的一个 if 语句的嵌套使用,当你输入的数大于 6,就进入第一个 if 语句。先输出一个 true 。同时,这个数若小于50,就进入第二个 if 语句,输出对应的信息:“ 诶哟,很不错哦。你输入的数大于6,但小于10。” 这个数若大于50,则输出else中对应的信息。当你输入的数小于6,那么不进入第一个 if 语句,直接进入 else 语句中,输出:“false  你输入的数挺小的。”

if 语句的嵌套,说简单点就是,初步判断后没有满足我们的需求,需要再次进行判断,才能完成所需,有时可能还需要套不止两层。

看到这里你一定发现了我上面的代码写的是很整齐的,其实每一个合格的码农都应这样,这是写代码的一个很好的习惯,不仅美观,还有利于我们更快更准确的理解代码。使用 tab键 一次就可以后退四个字符,这样很容易把我们的代码排版整齐。

但是如果你不这样整齐排列,写成这个样子:

#include <stdio.h>

int main() 
{
int a = 0;
scanf("%d", &a);
if (a > 6) 
{
printf("true\n");
if(a < 50)
{
printf("诶哟,很不错哦。\n");
printf("你输入的数大于6,但小于10。\n");
}
else
{
printf("你输入的数挺大的。\n");
printf("你输入的数已经大于50。\n");
}   
}
else
{
printf("false\n");
printf("你输入的数挺小的。\n");
}
return 0;
}

同样的代码,绝对没有整齐排列时理解快,不是吗?如果有人给你看这种代码,你能忍受吗?或许心中就有无数个草泥马在奔腾了吧。

排版整齐也可以有效的避免if与else匹配错误的问题,记住一条规则,如果有多个 if 和 else ,else 总是跟最接近的 if 匹配。而不是单单对齐的那个。

2.switch语句

除了 if 语句 外,选择结构中还有用 switch语句 来实现分支。其实,switch语句 也是一种特殊的if...else... 语句,往往用于判断条件有多个结果的情况。有时,我们可以用 switch语句 来代替多重else  if 的使用,这样能更为方便和简洁。

2.1.switch语句的基本形式

switch语句的基本形式如下:

switch (expression) 
{
    case value1: 
        statement
    case value2: 
        statement
    default: 
        statement
}

expression ,value 都必须为整形表达式。根据我们输入 expression 的值来选取不同的case分支,运行分支中的表达,如果输入的 expression 的值不是任何一个 case 所含有的,那就运行default 分支。这里的default并不是必须存在的,要根据自己的实际情况确定。

2.2.switch语句中的break.

对于一个简单的 switch语句 :

根据输入的值1~7来判断今天星期几。

#include <stdio.h>

int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:    
        printf("星期⼀\n");
    case 2:
        printf("星期⼆\n");    
    case 3:
        printf("星期三\n");
    case 4:
        printf("星期四\n");
    case 5:
        printf("星期五\n");
    case 6:
        printf("星期六\n");
    case 7:
        printf("星期天\n"); 
    default:
        printf("请输入正确的值。");
    }
    return 0;
}

我们让这个程序运行:

当我们输入 3 时,发现程序从 case 3 开始运行但是没有在输出 星期三 后退出 switch语句,而是继续向下运行输出。 

为让程序运行达到我们的预期,我们需要引进一个 break 函数,使程序在输出对应的星期后退出switch语句 。

#include <stdio.h>

int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
        printf("星期⼀\n");
        break;
    case 2:
        printf("星期二\n");
        break;
    case 3:
        printf("星期三\n");
        break;
    case 4:
        printf("星期四\n");
        break;
    case 5:
        printf("星期五\n");
        break;
    case 6:
        printf("星期六\n");
        break;
    case 7:
        printf("星期天\n");
        break;
    }
    return 0;
}

这样程序的运行就可以达到我们的预期:

当然,你的switch语句中是否使用break,还要根据实际情况而定,并不是一定要用的。

如:输入数字1~5,输出工作日,输入数字6或7,输出休息日。

#include <stdio.h>

int main()
{
    int day = 0;
    scanf("%d", &day);
    switch (day)
    {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        printf("工作日\n");
        break;
    case 6:
    case 7:
        printf("休息日\n");
        break;
    }
    return 0;
}

 当你输入的数字为1~5时,程序不会退出 switch语句 ,而是一直运行,直到遇见第一个 break 。

蓝牙EDR模式中GFSK调制如何过渡到DPSK调制 这两份文档片段揭示了蓝牙Modem设计中非常精深的部分。它的核心思想是:通过精心的脉冲形状设计和重叠,来保证幅度连续;通过在保护间隔内执行一套复杂的“相位平滑算法”(重复、斜率保持、寻找基准点、冻结),来保证相位连续。Figure 3-2 则是将这个思想用图形化的方式展现出来,说明了脉冲在时间轴上的对齐和叠加关系。这种设计确保了发射机能够严格符合蓝牙规范的要求,实现不同调制方式之间的平滑、无毛刺切换,从而保障了通信的可靠性和高效的频谱利用率。 阅读详情

相关推荐

PyTorch实战:5步搞定QAT量化感知训练(附避坑指南)

本文详细介绍了在PyTorch中实施量化感知训练(QAT)的五步实战流程。通过环境准备、模型融合、伪量化节点与STE原理剖析、校准微调训练、模型转换与导出等步骤,帮助开发者有效压缩模型以适配移动端与边缘设备部署,并提供了关键的超参数设置与常见问题避坑指南。

weixin_29083373的博客 421

c语言结构优化原则,优化学生认知结构 提高C语言程序的设计教学质量.doc

优化学生认知结构 提高C语言程序的设计教学质量优化学生认知结构 提高《C语言程序设计》教学质量[摘 要]充分地利用高等教育学、心理学的理论,使学生在掌握了已有知识的基础上更好地掌握后续知识,是当今高校教学改革的新热点。在C语言程序设计教学中,运用心理学中的认知―结构学习论,经过新知识的获得、知识的转化和评价三个过程,使学科的基本结构转变成学生头脑中的认知结构。[关键词]认知心理学 C语言程序设计 ...

weixin_42360733的博客 184

原神真端,原神服务端,虚拟机启动部署傻瓜式教学

没玩过抽卡 游戏想体验一下抽卡的感觉,听说原神有真端了,所以弄一个局域网的服务体验一下,这里要感谢一些服务端的分享者。

azyouyouyou的博客 1万+

C语言之对结构的认知(下)

这两篇博客就是我对C语言中结构的简单认知,如果有什么不合适的地方,欢迎留言更正。让我们一起向资深程序员进发吧。

code_0218的博客 1802

Transformers 中的 Softmax 可以并行加速么?

通过融合前两个计算步骤,降低执行Reduce_max和Reduce_sum等操作的通信开销。利用共享内存来存储临时数据,以减少对全局内存的访问成本。

stephen147的博客 1236

哈工大OS实验四——进程运行轨迹的跟踪与统计

进程运行轨迹的跟踪与统计 进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以后会切换到运行态;在运行的过程中如果启动了一个文件读写操作,操作系统会将该进程切换到阻塞态(等待态)从而让出 CPU;当文件读写完毕以后,操作系统会在将其切换成就绪态,等待进程调度算法来调度该进程执行…… process.c解读 void cpuio_bound(int last, int cpu_

优快云-ych 1003

这个c语言技巧,刷新了我对结构体的认知!

【说在前面的话】2022年了,想必已经不会有人对嵌入式开发中“数据结构(Data Structure)”的作用产生疑问了吧?无论你是否心存疑惑,本文都将给你一个完全不同的视角。每每说起数据...

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 1394

mediasoup源码分析(二十)服务端架构设计

目录 简介 信令服务(房间服务) 调度服务 媒体服务 简介 流媒体服务器大的方向上可以分为上述三个模块。目前行业内都是分布式服务,独立部署。mediasoup信令与媒体之间虽然可以管道通信。但在行业内,服务之间通过管道通信用的少。 一般是rpc、mq,或者传统的tcp。这块licode架构比较不错,licode是信令和媒体服务通过MQ消息队列解耦。 下面介绍一下这三个服务主要功能,当然文中所说也是一家之言。 信令服务(房间服务) 信令服务也称为房间服务。有的企业把信令和房间分开,信..

lcalqf的专栏 1546

这个C语言技巧,刷新了我对结构体的认知!

这个C语言技巧,刷新了我对结构体的认知!

weixin_55751709的博客 364

YOLOv8改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 1082

【系统分析师】2026年上半年真题:论文及解题思路

四篇论文围绕系统与开发实践展开: 安全架构设计强调数据加密(国密算法)、零信任访问控制及容灾架构,以某医疗云平台为例,实现RTO<5分钟的高可用保障。 架构风格应用解析微服务/事件驱动等风格选型,结合电商平台案例,通过服务拆分与异步通信提升扩展性。 需求评审机制提出正式评审与走查结合的方法,在金融系统中减少30%返工,解决业务规则二义性问题。 LLM测试生成利用大模型从需求/代码生成用例,辅以人工校验,使测试效率提升50%,覆盖边缘场景。 各篇均遵循“背景-理论-实践”结构,突出

数据知道的博客 787

初识C语言之条件结构篇——带你认知编程世界的逻辑之美!

目录 IF语句 if语句 IF语句的基本的形式 if…else语句形式 else if语句形式 IF嵌套形式 if的嵌套形式 条件运算符 switch语句 switch语句的基本形式 多路开关模式的switch语句 if else语句和switch语句的区别 选择结构程序应用 每文一语 IF语句 if语句 在日常生活中,为了使交通畅通有序,一般会在路口设立交通信号灯。在信号灯显示为绿色时车辆可以行驶通过,当信号灯转为红色时车辆就要停止行驶。可见,信号灯给出了信号,人们通过不

迷茫与徘徊只会让你陷入绝境,欢迎私信博主,带你开始提升变现价值! 3077

【知识分享】高速印刷电路板(PCB)寄生参数计算指南

对于高速PCB设计而言,寄生参数一直是令人讨厌的问题,它们会悄悄潜入PCB并在电路中造成严重的破坏,具体来说,它们是渗透到高速电路中的隐藏杂散电容器和电感器,包括由封装引线和长走线形成的电感器、PCB焊盘对金属平面形成的电容器、走线之间形成的电容器等等。

一只豌豆象的博客 1784

基于C语言对数据结构中线性结构三种存储方式的认知

数据结构是每一个码农都必须要熟悉的一门课程、又或者说是一种手段。每一个程序员应该都知道一句“圣经”: 程序 = 数据结构 + 算法; 所以,我会在这篇博客记录我学习线性结构的理解和深入思考的想法。 一、线性表 1.1顺序表的定义 typedef int data_t; #define N 128 typedef struct { data_t data[N];//顺序表的长度 int last;//方便知道顺序表的下表 }sqlist,*sqlin...

godfatherlzq的博客 1040

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C语言循环结构精讲:底层认知与实用技巧

从底层逻辑来看, while 属于先判断后执行,仅当条件表达式为真时才运行循环体,适合未知循环次数的场景;而 for 循环整合初始化、条件判断、迭代更新三大模块,结构紧凑规整,是固定次数遍历的最优选择,也是日常开发中使用频率最高的循环结构。在数据处理中,精简循环嵌套层数,减少循环内部复杂运算,可显著降低资源消耗,提升程序运行性能。循环结构是C语言三大核心流程控制之一,也是实现代码复用、简化逻辑、提升程序效率的关键基础,广泛应用于数据遍历、条件重复执行、批量运算等开发场景。

2502_92200938的博客 163

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

初识C语言1

在1972年,由贝尔实验室的丹尼斯·里奇和肯·汤普逊在B语言(汤姆逊发明的)的基础上进行设计得来。

W3250174359的博客 471

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【C语言】初识C语言+进阶篇导读

C 语言是一门通用计算机编程语言,广泛应用于底层开发。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C 语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的 C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

weixin_59511824的博客 2897

大学C语言是什么?计算机科学的基石与底层思维训练

大学C语言是什么?计算机科学的基石与底层思维训练

科技改变人类,技术成就未来 1345

chap01:认知C语言

C语言概述,初步认知C语言。

ahBingo的博客 429

学习数据结构之前,是否需要对C语言有深入的了解?

学习数据结构和算法,实践是非常重要的,如果仅仅是空有理论而不实践,反复学多少遍都没用。但是C语言作为最接近系统底层的高级语言(被人戏称高级汇编),我觉得是需要好好掌握理解的,虽然以后工作不一定用得到,但是对于理解计算机原理是很有帮助的。学习数据结构一个很重要的前提,在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」,不用纠结是否要完全掌握C语言,重点是动手写代码,写的时候时候自然就会去学,而不是完全掌握C语言再去学数据结构,这样就本末倒置了。

单片机一哥的博客 840

最早接触到的计算机编程语言——c语言

最早接触到的计算机编程语言——c语言 在经过入学后计算机导论的熏陶后,在大一的下半学期我终于接触到了一门语言,这也是我们最早接触的计算机编程语言——c语言。 在初学的时候,感觉这门课程十分晦涩,但是当学习了一段时间以后,便发觉其实也不过如此罢了。俗话说,语言是思维的载体,没错,我们人类有我们交流的语言,动物有动物自己独特的语言,计算机也有交流的方式,也需要沟通,这便是我认为的c语言,于

极客园地 5660

打开新世界的大门——初识c语言

第一个C语言程序 学C语言当然第一个程序就是“hello world”,但就是这个简短的代码也是c的代码的启蒙。 #include——编译预处理指令 stdio.h——系统的库文件,其中包含输入输出函数指令 int——整形 数据类型 main——主函数 每个程序有且仅有一个主函数,函数的执行总是从主函数开始 printf——输出函数 \n——换行 转义字符 return 0 ——函数...

Moo_Lavender的博客 2114

C语言基础

计算机:能进行计算以及逻辑处理的设备硬件:组成计算机的物理部件。(内存条、CPU、硬盘…)开发中对于硬件的认知:​ 硬件包括电子设备、单片机、集成电路和嵌入式系统。软件:计算机中运行的程序和数据。开发中对于软件的认知:​ 软件分为系统软件(OS)、应用软件和编程工具(编译器)数据类型就是固定大小内存的别名,并且描述了一个变量存放什么类型的数据。简单来说,就是组织和操作数据。数据:计算机要处理的数据(数字、字符串、文字、符号、图片、音视频等)

m0_69070708的博客 651

初识C语言

##什么是C语言 C语言一门计算机语言,主要应用于底层开发。 计算机语言的发展历程: 二进制语言(正电1/负电0)->汇编语言->B语言->C语言->C++、java等语言 ##第一个C程序 hello world #include<stdio.h> //standard input output int main // 主函数,是程序的入口,有且仅有一个 {

一品铁观音 的博客 612

初识C语言(上)

在这里我将给大家简单介绍一下C语言我们要学的内容,大家进行初步的认知。 C语言呢是一门结构化程序设计语言,什么是结构化,也就是:顺序结构,选择结构,循环结构,生活中的所有事都是这几个结构的组合嵌套和重复。所以C语言才能通过编程解决生活中的问题。 编程语言的发展:机器语言也就是二进制–汇编语言人们通过一些助记符更好的编程–B语言–C语言,这时C语言已经是一门高级语言了。 C语言中我们要了解 变量 常量 数据类型 变量的作用域和生命周期 注释和转义字符 数组 函数 指针 选择结构 循环结构 预处理指令 变量

qq_57681480的博客 1005

C语言结构框架(有待完全)

haoziai905的博客 837
上一篇: 小白之初入优快云
下一篇: C语言之对结构的认知(下)
代码白.
博客等级 码龄3年 193粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值