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…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
