C语言基础and数据结构
C语言程序和程序设计概述
程序:可以连续执行的一条条指令的集合
开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果
在任何机器上可以运行C源程序生成的 .exe 文件
没有安装C语言集成开发环境,不能编译C语言程序,函数是C程序的基本单位
程序设计有以下几个部分:
- 确定数据结构
- 确定算法
- 编码(编写代码)
- 计算机上调试程序
- 整理并写出文档资料
C语言运行方法:编译执行,python:解释执行
头文件:#include<stdio.h>
C语言的结构特点:
- 函数是C程序的主要组成部分
一个C程序是由一个或多个函数组成
必须包含一个main函数(只能有一个)
每个函数都用来实现一个或多个特定功能
被调用的函数可以是库函数,也可以是自己编制设计的函数
- 程序总是从main函数开始执行
- C程序书写可以一行内写几个语句,也可以一个语句分写在多行上(以分号为标准,判断是否是一个语句)
- 数据声明和语句最后必须有分号
- C语言本事不提供输入输出语句,由库函数提供
算法表示方法:
- 自然语言
- 用伪代码表示
- 用流程图表示
- N-S流程图表示
标识符、常量和变量
常量
整型常量:12、0、-3
实型常量:
十进制小数:0.34、-56.79
指数形式:12.34e3(12.34×10³)
符号常量:‘a’、‘b’
字符串常量:“Beijing”
常量在程序运行期间,值不可以改变的
#define PI 3.14159 //定义符号常量不需要分号
变量
在程序运行期间,值是可以改变的
定义变量时指定该变量的名字和类型
变量名实际上是以一个名字代表一个存储地址
从变量取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据
标识符
只能由字母、数字和下划线组成,且第一个字符必须为字符或下划线,不能使用C语言关键字作为标识符
C语言是严格区分字母大小写
关键字必须用小写字母

数据类型
整型数据
整型常量3种表示形式
十进制整数,如2,-983
八进制整数。以0开头,由0~7构成,通常为无符号数,如012,八进制12
十六进制整数。以0x开头,由 0 ~ 9 和 A ~ F 或 a ~ f 构成,如0x12A,十六进制12A
整型变量:类型说明符 变量名标识符; 如 int a,b,c;
在定义变量的同时给变量赋初值,称变量初始化,若没有初始化,则内容不确定
计算机最小存储单位:位(bit)
一个字节(byte) = 8bit
| 关键字 | 类型 | 所占的空间 |
|---|---|---|
| char | 字符串类型 | 占1字节空间(8位二进制位) |
| short | 短整型 | 占2字节空间(16位二进制位) |
| int | 整型 | 占4个字节空间(32位二进制) |
| long | 长整型 | 占4个字节空间(32位二进制)(在64为平台下占8个字节) |
| float | 单精度浮点数 | 占4个字节空间(32为二进制)(7位有效位,指数-37到38) |
| double | 双精度浮点数 | 占8个字节空间(64为二进制)(16位有效位,指数-307到308) |
在存储有符号数时,存储单元最高为代表符号位,0为正,1为负
设计程序时,注意变量类型的取值范围,当赋值超过取值范围时,会出现溢出错误
一个整 型常量后加 U或u 后缀则被认为时unsigned类型,内存中按unsigned规定方式存放
一个整型常量后加 L或l 后缀则被认为时long类型,内存中按long规定位数存放
无符号长整数:用后缀 UL/ul表示,如:15ul
浮点型(实型)数据
实型常量
又称实属或浮点数
十进制小数形式,如123.456
指数形式:以 “e” 或 “E” 后跟一个整数来表示以10为底的幂数,如 2.3026e2
规定:字母 e 或 E 之前必须有数字,且e或E后面指数必须为整数
10⁸不能写成e8,必须写成:1e8 或 1.0E8
实型变量
实型(3.14159)数据在内存中存放的形式:
+:数符
.314159:小数部分
1:指数
小数部分占的为数越多,数的有效数字越多,精度越高
指数部分占的位数越多,则能表示的数值范围越大
字符型数据
字符常量
用单引号括起来的一个字符,如’a‘、’E‘,不能 ’ab‘
字符常量以ASCII码存储,一个字符占一个字节,大写字母与小写字母ASCII码值相差 32
字符变量
如:char c1,c2,c3; c1 = ‘A’; c2 = ‘\n’;
每个字符变量分配一个字节用于存放一个字符(存放的是字符的ASCII码值)
字符数据与整型数据可相互赋值,直接运算
用%d输出,则输出整型数,用%c输出,则输出字符
字符串常量
一对双引号(" ")括起来的字符序列,字符个数称为其长度,如:“hellow”
长度为n的字符串,在计算机存储中占n+1个字节,原因:会自动在结尾添加 ’\0‘
ASCII码表

转义字符
| 字符形式 | 功能 | 字符形式 | 功能 |
|---|---|---|---|
| \n | 回车换行 | \\ | 一个反斜杠字符(\) |
| \t | 将当前位置移到下一个tab位置 | \’ | 一个单引号(') |
| \v | 当前位置移到下一个垂直制表对齐点 | \" | 一个双引号(") |
| \r | 回车符 | \ddd | 三位八进制数代表一个ASCII字符 |
| \f | 换页符 | \xhh | 二位十六进制代表一个ASCII字符 |
| \b | 将当前位置后退一个字符 | \0 | 空值,其ASCII码值为0 |
符号常量
用标识符表示的常量,一般符号常量名用大写字母表示,命令通常放在文件头,在程序中不允许重新赋值,注意:不需要分号结尾
格式:#define 标识符 常量 如:#define PI 3
数学函数
运算符和表达式
算术运算符
优先级越小,越优先,优先级相同时,运算次序由结合性决定
| 运算符 | 运算规则 | 操作数数目 | 优先级 | 结合方向 |
|---|---|---|---|---|
| - | 负号 | 单目 | 2 | 左结合 |
| + | 加法 | 双目 | 4 | 左结合 |
| - | 减法 | 双目 | 4 | 左结合 |
| * | 乘法 | 双目 | 3 | 左结合 |
| / | 除法 | 双目 | 3 | 左结合 |
| % | 取余或模 | 双目 | 3 | 左结合 |
1./3 + 1./3 + 1./3 = 1
取余运算符,所得结果的符号与运算符左侧操作数符号相同,如:-5 % 2 = -1,5 % -2 = 1,运算对象只能是整型,结果也是整型,如:5 % 2 =1
自增、自减运算符
自增和自减运算符只能用于变量,不能用于常量和表达式
| 含义 | 运算符 | 优先级 | 结合性 | 功能 |
|---|---|---|---|---|
| 自增 | ++ | 2 | 右结合 | 使变量的值增1 |
| 自减 | – | 2 | 右结合 | 使变量的值减1 |
使用形式:
++i 或 --i 变量 i 先自增或自减 1,再引用 i
i++ 或 i-- 先使用变量 i,再自增或自减1
不同数据类型间的转换
自动转换类型:数据类型自动由低级向高级转换
强制转换:将表达式的运算结果强制转换成指定的数据类型
格式:(数据类型说明符)(表达式)
int x,y;
float z;
(相关文章:
C语言基础and数据结构
C语言程序和程序设计概述 程序:可以连续执行的一条条指令的集合 开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果 在任何机器上可以运行C源程序生成的 .exe 文件 没有安装C语言集成开发环境,不能编译C语言程…...
【超万卡GPU集群关键技术深度分析 2024】_构建10万卡gpu集群的技术挑战
文末有福利! 1. 集群高能效计算技术 随着大模型从千亿参数的自然语言模型向万亿参数的多模态模型升级演进,超万卡集群吸需全面提升底层计算能力。 具体而言,包括增强单芯片能力、提升超节点计算能力、基于 DPU (Data Processing Unit) 实现…...
RuntimeError: CUDA error: invalid device ordinal
RuntimeError: CUDA error: invalid device ordinal 报错分析:可能原因1:设置CUDA_VISIBLE_DEVICES的问题解决办法: 可能原因2:硬件或驱动原因解决方法: 参考资料 报错分析: 如果你在运行代码时报错&#…...
如何在Qt中添加文本
在Qt中添加文本通常涉及到使用几种不同的Qt控件,具体取决于你想要在何处以及以何种方式显示文本。以下是一些常见的方法: 1. 使用QLabel显示文本 QLabel是Qt中用于显示文本或图片的简单控件。你可以通过构造函数或setText()方法设置其显示的文本。 #i…...
解决打印PDF文本不清楚的处理办法
之前打印PDF格式的电子书,不清晰,影响看书的心情,有时看到打印的书的质量,根本不想看,今天在打印一本页数不多,但PDF格式的书感觉也不太清楚,我想应该有办法解决,我使用的是解决福昕…...
【Cesium开发实战】火灾疏散功能的实现,可设置火源点、疏散路径、疏散人数
Cesium有很多很强大的功能,可以在地球上实现很多炫酷的3D效果。今天给大家分享一个可自定义的火灾疏散人群的功能。 1.话不多说,先展示 火灾疏散模拟 2.设计思路 根据项目需求要求,可设置火源点、绘制逃生路线、可设置逃生人数。所以点击火…...
imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx
在很多项目中都需要自己的私人服务器,以保证数据的隐私性,这里我用的是emqx。 1.进入emqx官网 EMQX:用于物联网、车联网和工业物联网的企业级 MQTT 平台 点击试用cloud 申请成功后可得:(右边的忽略) 进入…...
Debezium系列之:验证mysql、mariadb等兼容mysql协议数据库账号权限
Debezium系列之:验证mysql、mariadb等兼容mysql协议数据库账号权限 一、数据库需要开启binlog二、创建账号和账号需要赋予的权限三、账号具有权限查看日志信息四、验证账号权限五、验证账号能否执行show master status六、验证数据库是否开启binlog一、数据库需要开启binlog …...
Vue.js学习笔记(五)抽奖组件封装——转盘抽奖
基于VUE2转盘组件的开发 文章目录 基于VUE2转盘组件的开发前言一、开发步骤1.组件布局2.布局样式3.数据准备 二、最后效果总结 前言 因为之前的转盘功能是图片做的,每次活动更新都要重做UI和前端,为了解决这一问题进行动态配置转盘组件开发,…...
使用pip或conda离线下载安装包,使用pip或conda安装离线安装包
使用pip或conda离线下载安装包,使用pip或conda安装离线安装包 一、使用pip离线下载安装包1. 在有网络的机器上下载包和依赖2. 传输离线安装包 二、在目标机器上离线安装pip包三、使用conda离线下载安装包1. 在有网络的机器上下载conda包2. 传输conda包或环境包3. 在…...
产品访问分析
1、DWD产品访问明细 1.1、用户产品权限数据 --用户产品权限数据INSERT OVERWRITE TABLE temp_lms.dm_lms_platform_usergroup_app_tmpselect 仓储司南 as pro_name,CCSN as pro_code,c.user_name as user_name,d.account_name …...
【算法】代码随想录之链表(更新中)
文章目录 前言 一、移除链表元素(LeetCode--203) 前言 跟随代码随想录,学习链表相关的算法题目,记录学习过程中的tips。 一、移除链表元素(LeetCode--203) 【1】题目描述: 【2】解决思想&am…...
react 18中,使用useRef 获取其他组件的dom并操作节点,flushSync强制同步更新useState
React 不允许组件访问其他组件的 DOM 节点。甚至自己的子组件也不行!这是故意的。Refs 是一种脱围机制,应该谨慎使用。手动操作 另一个 组件的 DOM 节点会使你的代码更加脆弱。 相反,想要 暴露其 DOM 节点的组件必须选择该行为。一个组件可以…...
Jupyter Notebook基础:用IPython实现动态编程
Jupyter Notebook基础:用IPython实现动态编程 1. 引言 Jupyter Notebook是一个基于Web的交互式计算环境,允许用户创建和共享包含实时代码、方程式、可视化和文本叙述的文档。它广泛应用于数据清洗与转换、数值模拟、统计建模、机器学习以及其他数据科学…...
Python 爬虫:使用打码平台来识别各种验证码:
本课程使用的是 超级鹰 打码平台, 没有账户的请自行注册! 超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 使用打码平台来攻破验证码难题, 是很简单容易的, 但是要钱! 案例代码及测…...
理解算法复杂度:空间复杂度详解
引言 在计算机科学中,算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中,我们将深入探讨空间复杂度,了解其定义、常见类型以及如何进行分析。空间复杂度是衡量算法在执行过程中所需内存…...
浅析Kafka Streams消息流式处理流程及原理
以下结合案例:统计消息中单词出现次数,来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…...
QGroundControl的总体架构,模块化设计和主要组件的功能。
QGroundControl 总体架构详细描述 QGroundControl (QGC) 作为一个开源地面控制站软件,其设计原则是模块化、高扩展性和高可维护性。 总体架构 QGroundControl 由多个层次构成,每个层次负责不同的功能。这种分层结构确保了系统的高内聚性和低耦合性。 …...
oracle 表空间文件迁移
表空间文件迁移 背景 由于各种原因,在实际工作中可能会出现oracle服务器数据盘空间被占满的情况,这个时候单纯的添加新磁盘,后续表空间文件放新盘的方案已经不适用了,因为源盘已经占用满了,数据库服务会异常…...
JVM学习(day1)
JVM 运行时数据区 线程共享:方法区、堆 线程独享(与个体“同生共死”):虚拟机栈、本地方法栈、程序计数器 程序计数器 作用:记录下次要执行的代码行的行号 特点:为一个没有OOM(内存溢出&a…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
