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…...
AI时代,那些还在知乎认真回答问题的人
文/窦文雪编辑/李乐2023年5月1日,德里克文坐在电脑前,终于决定发出一些东西。那一天对他来说,更像是某种迟到多年的开场。此前十多年,他一直是知乎上一个安静的旁观者。很多时候,他躲在页面背后,看各个领域…...
iPhone升级iOS 16.1后WiFi总掉线?别急着重置,试试这个2.4GHz频段切换法
iPhone升级iOS 16.1后WiFi频繁断连的深度解决方案 最近不少iPhone用户在升级到iOS 16.1后反馈WiFi连接不稳定,尤其是在使用笔记本热点或双频路由器时频繁掉线。这个问题不仅影响工作效率,也让人倍感困扰。本文将深入分析问题根源,并提供一套…...
2026年第二次答辩前论文降AI攻略:二次答辩AIGC超标4.8元彻底解决完整处理方案
2026年第二次答辩前论文降AI攻略:二次答辩AIGC超标4.8元彻底解决完整处理方案 关于第二次答辩论文降AI,我总结了一个最重要的教训:别只降标红段落,要全文处理。 之前逐段降,整体检测还是超标。换成全文上传ÿ…...
KaTrain围棋AI训练终极指南:5步从入门到精通
KaTrain围棋AI训练终极指南:5步从入门到精通 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 想要快速提升围棋水平却找不到合适的训练方法?KaTrain作为一款…...
5分钟学会LDDC:让每一首歌都有完美歌词的终极指南
5分钟学会LDDC:让每一首歌都有完美歌词的终极指南 【免费下载链接】LDDC 简单易用的精准歌词(逐字歌词/卡拉OK歌词)下载匹配工具|A simple and user-friendly tool for downloading and matching precise lyrics (word-by-word lyrics/Karaoke lyrics) 项目地址: …...
如何5分钟实现桌面股票实时监控:TrafficMonitor股票插件完全指南
如何5分钟实现桌面股票实时监控:TrafficMonitor股票插件完全指南 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为错过重要行情而烦恼吗?想在工作时…...
RetinaFace实战:10个技巧教你高效检测和提取人脸
RetinaFace实战:10个技巧教你高效检测和提取人脸 【免费下载链接】retinaface RetinaFace: Deep Face Detection Library for Python 项目地址: https://gitcode.com/gh_mirrors/re/retinaface RetinaFace是一个基于深度学习的Python人脸检测库,专…...
不用命令行!OpenClaw 2.7.5 Win11 专属部署,双击直达本地 AI 助手
前言 本教程专为Windows用户设计,提供可视化部署方案。通过专用部署包实现全程图形化操作,彻底告别命令行和手动配置环境。即使是零基础用户也能轻松完成部署,快速搭建专属数字员工系统,显著提升工作效率。教程完美适配Windows 1…...
经营分析——解读集团经营分析报告框架【附全文阅读】
集团经营分析报告框架推介总结 适应人群:集团高管、经营管理部、财务负责人、各业务单元负责人、经营分析专员、数据分析师及战略规划人员。 重要性总结:本 PPT 是集团级经营分析的标准化、体系化顶层框架,构建 “战略 — 环境 — 业绩 — 问…...
OpenShift高可用集群搭建后,这10个运维“救命”命令和5个常见故障排查场景你必须知道
OpenShift高可用集群运维实战:10个关键命令与5大故障场景深度解析 当你的OpenShift集群从测试环境迈向生产环境时,那些在搭建阶段被忽略的运维细节往往会突然成为拦路虎。不同于标准Kubernetes,OpenShift在提供企业级功能的同时也带来了更复杂…...
