当前位置: 首页 > 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…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

golang循环变量捕获问题​​

在 Go 语言中&#xff0c;当在循环中启动协程&#xff08;goroutine&#xff09;时&#xff0c;如果在协程闭包中直接引用循环变量&#xff0c;可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下&#xff1a; 问题背景 看这个代码片段&#xff1a; fo…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...