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<

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3245475.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】二叉树全攻略,从实现到应用详解

​ &#x1f48e;所属专栏&#xff1a;数据结构与算法学习 &#x1f48e; 欢迎大家互三&#xff1a;2的n次方_ ​ &#x1f341;1. 树形结构的介绍 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做…

Java18的主要新特性总结

目录 概述 变动说明 重要变更和信息 下载地址 Java18新特性总结 1、JEP 420: Switch 的模式匹配&#xff08;第二次预览&#xff09; 功能进化 Switch 模式匹配 类型标签 null标签 守卫标签 2、JEP 400&#xff1a;默认UTF-8编码 3、JEP 408&#xff1a;简易Web服务…

Java 虚拟线程:案例研究

一. 关键要点 虚拟线程是 Java 并发编程的一个重要进步&#xff0c;但在运行典型的云原生 Java 工作负载方面&#xff0c;它们并不比 Open Liberty 现有的自主线程池具有明显的优势。对于 CPU 密集型工作负载&#xff0c;由于目前尚不清楚的原因&#xff0c;虚拟线程的吞吐量低…

Idea如何快速高效的修改项目的包名

文章目录 前言一、全局替换的快捷键二、弹出如下的界面 前言 当我们有时候在做项目迁移的时候&#xff0c;需要快速的修改项目的包名&#xff01;那么如何快速高效的修改项目的报名呢&#xff1f; 经过尝试了很多方法&#xff01;最简单的方法就是利用全局替换来直接替换报名&…

QT实现带动态弹出动画的自定义通知提示框

Qt中经常会用到提示框&#xff0c;用于交互操作&#xff01;QMessageBox是被大多数人用到的&#xff0c;用起来是很方便&#xff0c;但是控件类型、大小、布局、样式、往往不是开发者想要的。本实例实现的Notification控件&#xff0c;是一种悬浮在角落的通知提醒框。 一、简述…

Day07-ES集群加密,kibana的RBAC实战,zookeeper集群搭建,zookeeper基本管理及kafka单点部署实战

Day07-ES集群加密&#xff0c;kibana的RBAC实战&#xff0c;zookeeper集群搭建&#xff0c;zookeeper基本管理及kafka单点部署实战 0、昨日内容回顾:1、基于nginx的反向代理控制访问kibana2、配置ES集群TSL认证:3、配置kibana连接ES集群4、配置filebeat连接ES集群5、配置logsta…

Mysql-错误处理: Found option without preceding group in config file

1、问题描述 安装MYSQL时&#xff0c;在cmd中“初始化”数据库时&#xff0c;输入命令&#xff1a; mysqld --initialize --consolecmd报错&#xff1a; D:\mysql-5.7.36-winx64\bin>mysql --initialize --console mysql: [ERROR] Found option without preceding group …

打印室预约小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;附近打印店管理&#xff0c;文件打印管理&#xff0c;当前预约管理&#xff0c;预约历史管理&#xff0c;打印记录管理 开发系统&#xff1a;Windows 架构模式&#xff1a;SSM JD…

linux服务器如何创建Raid10阵列,删除raid10

文章目录 1&#xff0c;首先查看一下机器上有几块盘2&#xff0c;构建raid10阵列3&#xff0c;把制作好的 RAID 磁盘阵列格式化为 ext4 格式4&#xff0c;创建挂载点然后把硬盘设备进行挂载操作5&#xff0c;查看/dev/md0 磁盘阵列的详细信息6&#xff0c;删除raid10 1&#xf…

理解深度学习中的过拟合和Dropout

新书速览|PyTorch深度学习与企业级项目实战-CSDN博客 随着迭代次数的增加&#xff0c;我们可以发现测试数据的loss值和训练数据的loss值存在着巨大的差距&#xff0c; 如图4-8所示&#xff0c;随着迭代次数的增加&#xff0c;training loss越来越好&#xff0c;但test loss却越…

分布式缓存-Redis持久化

使用缓存的时候&#xff0c;我们经常需要对内存中的数据进行持久化&#xff08;将内存中的数据写入到硬盘中&#xff09;。 原因&#xff1a;重用数据&#xff08;比如重启机器、机器故障之后恢复数据&#xff09;&#xff0c;做数据同步&#xff08;比如 Redis 集群的主从节点…

广告投放的智能优化:Kompas.ai如何提高广告效果

在数字广告领域&#xff0c;智能优化已成为提升广告投放效果和投资回报率(ROI)的关键。Kompas.ai&#xff0c;一款先进的广告智能优化工具&#xff0c;利用数据分析和机器学习技术&#xff0c;帮助广告主实现更精准、高效的广告投放。 智能优化在提升广告效果中的作用 智能优化…

微调 Florence-2 - 微软的尖端视觉语言模型

Florence-2 是微软于 2024 年 6 月发布的一个基础视觉语言模型。该模型极具吸引力&#xff0c;因为它尺寸很小 (0.2B 及 0.7B) 且在各种计算机视觉和视觉语言任务上表现出色。 Florence 开箱即用支持多种类型的任务&#xff0c;包括: 看图说话、目标检测、OCR 等等。虽然覆盖面…

MySQL字符串魔法:拼接、截取、替换与定位的艺术

在数据的世界里&#xff0c;MySQL作为一把强大的数据处理利剑&#xff0c;其字符串处理功能犹如魔术师手中的魔法棒&#xff0c;让数据变换自如。今天&#xff0c;我们就来一场关于MySQL字符串拼接、截取、替换以及查找位置的奇幻之旅&#xff0c;揭开这些操作的神秘面纱。 介绍…

谷歌浏览器114之前、126、127、128版本驱动下载,实时更新

114之前版本下载链接在这里 126以后版本下载链接在此&#xff0c;只有后面status是绿色对勾的才可以下载&#xff0c;**驱动大版本一致就可以使用&#xff0c;不需版本号一模一样&#xff1b;**下载所需版本只需点击对应的版本名称即可跳转到对应版本的下载位置。 以正式版为例…

FullCalendar日历组件集成实战(20)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

C# modbus 图表

控件&#xff1a;chart1(图表)&#xff0c;cartesianChart1(第三方添加图表)&#xff0c;timer(时间) 添加第三方&#xff1a; 效果&#xff1a;图标会根据连接的温度&#xff0c;湿度用timer时间进行改变 Chart1控件样式&#xff1a;Series添加线条&#xff0c;颜色&#xf…

编程从零基础到进阶(更新中)

题目描述 依旧是输入三个整数&#xff0c;要求按照占8个字符的宽度&#xff0c;并且靠左对齐输出 输入格式 一行三个整数&#xff0c;空格分开 输出格式 输出它们按格式输出的效果&#xff0c;占一行 样例输入 123456789 -1 10 样例输出 123456789-1 10 #include "stdio.…

which 命令在Linux中是一个快速查找可执行文件位置的工具

文章目录 0、概念1、which --help2、which命令解释 0、概念 which命令用于查找命令的可执行文件的路径which 命令在 Linux 中用于查找可执行命令的完整路径。当你在 shell 中输入一个命令时&#xff0c;shell 会在环境变量 $PATH 定义的目录列表中查找这个命令。which 命令可以…

基于Python+Flask+SQLite的豆瓣电影可视化系统

FlaskMySQLEcharts 基于PythonFlaskSQLite的豆瓣电影可视化系统 Echarts 不支持登录注册&#xff0c;并且信息存储在数据库中 不含爬虫代码&#xff0c;或爬虫代码已失效 简介 基于PythonFlaskMySQL的豆瓣电影可视化系统&#xff0c;采用Echart构建图表&#xff0c;支持自定…