当前位置: 首页 > news >正文

C语言基础and数据结构

C语言程序和程序设计概述

程序:可以连续执行的一条条指令的集合

开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果

在任何机器上可以运行C源程序生成的 .exe 文件

没有安装C语言集成开发环境,不能编译C语言程序,函数是C程序的基本单位

程序设计有以下几个部分:

  1. 确定数据结构
  2. 确定算法
  3. 编码(编写代码)
  4. 计算机上调试程序
  5. 整理并写出文档资料

C语言运行方法:编译执行,python:解释执行

头文件:#include<stdio.h>

C语言的结构特点:

  • 函数是C程序的主要组成部分

    一个C程序是由一个或多个函数组成

        必须包含一个main函数(只能有一个)

        每个函数都用来实现一个或多个特定功能

        被调用的函数可以是库函数,也可以是自己编制设计的函数

  • 程序总是从main函数开始执行
  • C程序书写可以一行内写几个语句,也可以一个语句分写在多行上(以分号为标准,判断是否是一个语句)
  • 数据声明和语句最后必须有分号
  • C语言本事不提供输入输出语句,由库函数提供

算法表示方法:

  1. 自然语言
  2. 用伪代码表示
  3. 用流程图表示
流程图常用符号
  1. 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码表

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集群的技术挑战

文末有福利&#xff01; 1. 集群高能效计算技术 随着大模型从千亿参数的自然语言模型向万亿参数的多模态模型升级演进&#xff0c;超万卡集群吸需全面提升底层计算能力。 具体而言&#xff0c;包括增强单芯片能力、提升超节点计算能力、基于 DPU (Data Processing Unit) 实现…...

RuntimeError: CUDA error: invalid device ordinal

RuntimeError: CUDA error: invalid device ordinal 报错分析&#xff1a;可能原因1&#xff1a;设置CUDA_VISIBLE_DEVICES的问题解决办法&#xff1a; 可能原因2&#xff1a;硬件或驱动原因解决方法&#xff1a; 参考资料 报错分析&#xff1a; 如果你在运行代码时报错&#…...

如何在Qt中添加文本

在Qt中添加文本通常涉及到使用几种不同的Qt控件&#xff0c;具体取决于你想要在何处以及以何种方式显示文本。以下是一些常见的方法&#xff1a; 1. 使用QLabel显示文本 QLabel是Qt中用于显示文本或图片的简单控件。你可以通过构造函数或setText()方法设置其显示的文本。 #i…...

解决打印PDF文本不清楚的处理办法

之前打印PDF格式的电子书&#xff0c;不清晰&#xff0c;影响看书的心情&#xff0c;有时看到打印的书的质量&#xff0c;根本不想看&#xff0c;今天在打印一本页数不多&#xff0c;但PDF格式的书感觉也不太清楚&#xff0c;我想应该有办法解决&#xff0c;我使用的是解决福昕…...

【Cesium开发实战】火灾疏散功能的实现,可设置火源点、疏散路径、疏散人数

Cesium有很多很强大的功能&#xff0c;可以在地球上实现很多炫酷的3D效果。今天给大家分享一个可自定义的火灾疏散人群的功能。 1.话不多说&#xff0c;先展示 火灾疏散模拟 2.设计思路 根据项目需求要求&#xff0c;可设置火源点、绘制逃生路线、可设置逃生人数。所以点击火…...

imx6ull/linux应用编程学习(16)emqx ,mqtt创建连接mqtt.fx

在很多项目中都需要自己的私人服务器&#xff0c;以保证数据的隐私性&#xff0c;这里我用的是emqx。 1.进入emqx官网 EMQX&#xff1a;用于物联网、车联网和工业物联网的企业级 MQTT 平台 点击试用cloud 申请成功后可得&#xff1a;&#xff08;右边的忽略&#xff09; 进入…...

Debezium系列之:验证mysql、mariadb等兼容mysql协议数据库账号权限

Debezium系列之:验证mysql、mariadb等兼容mysql协议数据库账号权限 一、数据库需要开启binlog二、创建账号和账号需要赋予的权限三、账号具有权限查看日志信息四、验证账号权限五、验证账号能否执行show master status六、验证数据库是否开启binlog一、数据库需要开启binlog …...

Vue.js学习笔记(五)抽奖组件封装——转盘抽奖

基于VUE2转盘组件的开发 文章目录 基于VUE2转盘组件的开发前言一、开发步骤1.组件布局2.布局样式3.数据准备 二、最后效果总结 前言 因为之前的转盘功能是图片做的&#xff0c;每次活动更新都要重做UI和前端&#xff0c;为了解决这一问题进行动态配置转盘组件开发&#xff0c;…...

使用pip或conda离线下载安装包,使用pip或conda安装离线安装包

使用pip或conda离线下载安装包&#xff0c;使用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 …...

【算法】代码随想录之链表(更新中)

文章目录 前言 一、移除链表元素&#xff08;LeetCode--203&#xff09; 前言 跟随代码随想录&#xff0c;学习链表相关的算法题目&#xff0c;记录学习过程中的tips。 一、移除链表元素&#xff08;LeetCode--203&#xff09; 【1】题目描述&#xff1a; 【2】解决思想&am…...

react 18中,使用useRef 获取其他组件的dom并操作节点,flushSync强制同步更新useState

React 不允许组件访问其他组件的 DOM 节点。甚至自己的子组件也不行&#xff01;这是故意的。Refs 是一种脱围机制&#xff0c;应该谨慎使用。手动操作 另一个 组件的 DOM 节点会使你的代码更加脆弱。 相反&#xff0c;想要 暴露其 DOM 节点的组件必须选择该行为。一个组件可以…...

Jupyter Notebook基础:用IPython实现动态编程

Jupyter Notebook基础&#xff1a;用IPython实现动态编程 1. 引言 Jupyter Notebook是一个基于Web的交互式计算环境&#xff0c;允许用户创建和共享包含实时代码、方程式、可视化和文本叙述的文档。它广泛应用于数据清洗与转换、数值模拟、统计建模、机器学习以及其他数据科学…...

Python 爬虫:使用打码平台来识别各种验证码:

本课程使用的是 超级鹰 打码平台&#xff0c; 没有账户的请自行注册&#xff01; 超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 使用打码平台来攻破验证码难题&#xff0c; 是很简单容易的&#xff0c; 但是要钱&#xff01; 案例代码及测…...

理解算法复杂度:空间复杂度详解

引言 在计算机科学中&#xff0c;算法复杂度是衡量算法效率的重要指标。时间复杂度和空间复杂度是算法复杂度的两个主要方面。在这篇博客中&#xff0c;我们将深入探讨空间复杂度&#xff0c;了解其定义、常见类型以及如何进行分析。空间复杂度是衡量算法在执行过程中所需内存…...

浅析Kafka Streams消息流式处理流程及原理

以下结合案例&#xff1a;统计消息中单词出现次数&#xff0c;来测试并说明kafka消息流式处理的执行流程 Maven依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusio…...

QGroundControl的总体架构,模块化设计和主要组件的功能。

QGroundControl 总体架构详细描述 QGroundControl (QGC) 作为一个开源地面控制站软件&#xff0c;其设计原则是模块化、高扩展性和高可维护性。 总体架构 QGroundControl 由多个层次构成&#xff0c;每个层次负责不同的功能。这种分层结构确保了系统的高内聚性和低耦合性。 …...

oracle 表空间文件迁移

表空间文件迁移 背景 由于各种原因&#xff0c;在实际工作中可能会出现oracle服务器数据盘空间被占满的情况&#xff0c;这个时候单纯的添加新磁盘&#xff0c;后续表空间文件放新盘的方案已经不适用了&#xff0c;因为源盘已经占用满了&#xff0c;数据库服务会异常&#xf…...

JVM学习(day1)

JVM 运行时数据区 线程共享&#xff1a;方法区、堆 线程独享&#xff08;与个体“同生共死”&#xff09;&#xff1a;虚拟机栈、本地方法栈、程序计数器 程序计数器 作用&#xff1a;记录下次要执行的代码行的行号 特点&#xff1a;为一个没有OOM&#xff08;内存溢出&a…...

js项目生产环境中移除 console

1、terser-webpack-plugin webpack 构建的项目中安装使用 安装&#xff1a; npm install terser-webpack-plugin --save-dev 配置 在webpack.config.js文件中 new TerserPlugin({terserOptions: {output: {comments: false, // 去除注释},warnings: false, // 去除黄色警告,co…...

ROS2 + 科大讯飞 初步实现机器人语音控制

环境配置&#xff1a; 电脑端&#xff1a; ubuntu22.04实体机作为上位机 ROS版本&#xff1a;ros2-humble 实体机器人&#xff1a; STM32 思岚A1激光雷达 科大讯飞语音SDK 讯飞开放平台-以语音交互为核心的人工智能开放平台 实现步骤&#xff1a; 1. 下载和处理科大讯飞语音模…...

HTML5新增的input元素属性:placeholder、required、autofocus、min、max等

HTML5 大幅度地增加与改良了 input 元素的属性&#xff0c;可以简单地使用这些属性来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 下面将详细介绍这些新增的 input 元素的属性。 属性说明属性说明placeholder在输入框显示描述性或提示性文本autocomplete是否保…...

Cornerstone3D导致浏览器崩溃的踩坑记录

WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost ⛳️ 问题描述 在使用vue3vite重构Cornerstone相关项目后&#xff0c;在Mac本地运行良好&#xff0c;但是部署测试环境后&#xff0c;在window系统的Chrome浏览器中切换页面会导致页面崩溃。查看Chrome的任务管理器&am…...

【鸿蒙学习笔记】Stage模型

官方文档&#xff1a;Stage模型开发概述 目录标题 Stage模型好处Stage模型概念图ContextAbilityStageUIAbility组件和ExtensionAbility组件WindowStage Stage模型-组件模型Stage模型-进程模型Stage模型-ArkTS线程模型和任务模型关于任务模型&#xff0c;我们先来了解一下什么是…...

Docker进入MongoDB

先是命令行开启docker镜像&#xff0c;然后进入docker镜像&#xff0c;这是两步 进入之后&#xff0c;开头会变成root&#xff0c;我的理解是进入了另一个linux系统了&#xff0c;直接执行相应的软件 这里直接use databse就是进入了&#xff0c;据说MongoDB是慢启动&#xff0c…...

APP与API:魔法世界的咒语与念咒者

1. 什么是API&#xff1f; API&#xff0c;即应用程序编程接口&#xff08;Application Programming Interface&#xff09;&#xff0c;就像是魔法世界中的咒语。API是两个独立软件系统之间进行通信和数据交换的桥梁。通过API&#xff0c;一个软件系统可以调用另一个软件系统中…...

云计算安全需求分析与安全保护工程

云计算基本概念 云计算&#xff08;Cloud Computing&#xff09;是一种通过互联网提供计算资源和服务的技术。它允许用户按需访问和使用计算资源&#xff0c;如服务器、存储、数据库、网络、安全、分析和软件应用等&#xff0c;而无需管理底层基础设施。以下是云计算的基本概念…...

七天.NET 8操作SQLite入门到实战 - 第二天 在 Windows 上配置 SQLite环境

前言 SQLite的一个重要的特性是零配置的、无需服务器&#xff0c;这意味着不需要复杂的安装或管理。它跟微软的Access差不多&#xff0c;只是一个.db格式的文件。但是与Access不同的是&#xff0c;它不需要安装任何软件&#xff0c;非常轻巧。 七天.NET 8操作SQLite入门到实战…...

操作系统——进程的状态与转换

...

江苏九天建设有限公司网站/什么是广告营销

项目需求&#xff1a;公司目前有几十个项目&#xff0c;每个项目都独立使用一个lib&#xff0c;太占空间。网上查了一些资料可以多个项目共享jar包&#xff0c;这样就解决了项目包臃肿的问题。lib目录自定义即可;tomcat需要修改catalina.properties配置文件&#xff1a;1.share…...

ps做购物小网站/整合营销理论

注&#xff1a;我在开源中国的博客不用了&#xff0c;对开源中国的技术支持丧失信心了&#xff0c;开始转投segmentfault了此为原文&#xff0c;转载请注明出处&#xff1a;https://segmentfault.com/a/11... redis有很多小功能&#xff0c;但是很实用。我们来介绍几个。 慢查询…...

轻量级wordpress主题/河北网站推广

设计模式 七大原则&#xff0c;UML类图 一、简述 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。问题(problem) --》解决方案(solution) --》效果(consequences)&#xff0c;…...

建设网站项目的目的/软件开发流程

原文转载于:https://www.cnblogs.com/qicosmos/p/3517166.html并行库充分利用多核的优势&#xff0c;通过并行运算提高程序效率&#xff0c;本文主要介绍c中两个知名的并行库&#xff0c;一个是intel开发的TBB&#xff0c;一个是微软开发的PPL。本文只介绍其基本的常用用法&…...

网站建设业务员招聘/域名检测查询

概述当我们没有足够的数据时&#xff0c;图像增强是一个非常有效的方法我们可以在任何场合使用图像增强进行深度学习——黑客竞赛、工业项目等等我们还将使用PyTorch建立一个图像分类模型&#xff0c;以了解图像增强是如何形成图片的介绍在深度学习黑客竞赛中表现出色的技巧(或…...

佛山 做网站公司有哪些/郑州seo外包公司哪家好

问题 Charles是Mac上面知名的代理软件&#xff0c;类似Windows上面的fiddler。在调试CDN的过程中&#xff0c;需要远程调试某个地区的节点&#xff0c;就只能使用代理服务区进行访问调试。但是这个过程中同时需要Charles对CDN的客户端进行抓包处理&#xff0c;但同时有需要一个…...