C语言二刷
const
#include<stdio.h>
int main() {const int amount = 100;int price = 0;scanf("%d", &price);int change = amount - price;printf("找您%d元\n", change);return 0;
}
浮点数类型
| 输入 | 输出 | |
| float(单精度) | %f | %f %lf |
| double(双精度) | %lf | %f |
| long double(长双精度) | %Lf | %Lf |
上面的float类型在输出的时候会发生隐形类型转换位double类型,所以输出也可以用%lf。
虽然float和double的输出也可以用%Lf,但是这种隐式转换可能会导致一些潜在的精度损失或不符合预期的输出。
运算符和算子
运算符是用于执行特定运算操作的符号。例如算术运算符、逻辑运算符、关系运算符、位运算符、赋值运算符等。
算子是参与运算的对象,可以是常量、变量或表达式。在一个运算表达式中,算子是运算符作用的目标。
switch-case
switch (控制表达式)
{
case 常量:语句;
case 常量:语句;......
default:break;
}
- 控制表达式只能是整数型的结果
- 常量可以是常数,也可以是常数计算的表达式(1+1)
case只是一个入口,遇到第一个break才会停止,比如以下代码:
switch (type)
{
case 1:
case 2:printf("你好");//输入1,输出你好break;
case 3:printf("晚上好");
case 4:printf("再见");//输入3,输出晚上好再见break;
default:printf("啊?什么啊?");break;
循环的选择
- 如果有固定次数,用for
- 如果必须执行一次,用do_while
- 其他情况用while
do-while循环
do{}while();
for循环
for循环中每一个表达式都是可以省略的。
for(; 条件 ;)==while(条件)。
int a = 0;
for (; a < 10;) {a++;
}
printf("%d",a);//输出10
for(; ;)是一个无限循环,如果没有在循环体内正确地设置退出条件,程序将一直运行下去,可能会导致资源耗尽、程序无响应等问题。
int num = 0;for (; ;) {printf("Number: %d\n", num);num++;if (num == 10) {break;}}
sizeof
静态运算符
int a = 0;
printf("%d\n", sizeof(a++));//输出4
printf("%ld",sizeof(a+1.0));//输出8
printf("%d\n", a);//输出0
return 0;
计算机的字长
CPU(中央处理器)和RAM(存储器)之间用总线连接,CPU中有一个寄存器(Reg)。
字长为32个bit时,每一个寄存器可以表达32个bit的数据,也就是当从内存中取数据到CPU里,每次会取32个bit。
int是用来表达寄存器的,所以不同编译器上int类型的大小不同。
科学计数法
1.23e4表示1.23×10⁴,即12300;
-5e-2表示-5×10⁻²,即-0.05。
转义字符(逃逸字符)
- \' :⽤于表⽰字符常量'
- \" :⽤于表⽰⼀个字符串内部的双引号
- \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。
- \b :退格键,光标回退⼀个字符,但不删除字符。
- \n :换⾏符。
- \r :回⻋符,光标移到同⼀⾏的开头。
- \ddd :ddd表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X
- \xdd :dd表⽰2个⼗六进制数字。 如: \x30 表⽰字符0
- \ 0 :null字符,代表没有内容, \ 0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其 ASCII码值是0
自动类型转换
当运算符两边出现不一致的类型时,会自动转换成表达范围更大的类型
- char->short->int->long->long long
- int ->float->double
对于printf,任何小于int的类型会被转换成int,float会被转换成double
scanf不会自动转换,输入short时,需要%hd
!>&&>||
函数
函数头包括函数类型(返回值类型)、函数名和参数列表(形式参数列表)。
当函数名不是void时,通常要有带值的return。
声明 -> 调用 -> 定义
传值
每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系
过去,函数参数表中的参数叫做形式参数,调用函数时给的值叫做实际参数。
为了防止初学者误会实际参数就是实际在函数中计算的参数,误会调用函数的时候把变量而不是值传进去了,现在认为它们是参数和值的关系。
本地变量(局部变量)(自动变量)
函数的每次运行会产生一个独立的变量空间,在这个空间的变量是函数这次运行所独有的,称作本地变量。定义在函数内部的变量就是本地变量,参数也是本地变量。
没有参数时
void f():在传统C中,表示f函数的参数表未知,并不代表没有参数
C语言不允许函数嵌套定义(可以声明)
数组
int a[10]={[0]=2,[2]=3,6,
};
上面的代码中未明确初始化的元素,会被自动初始化为0。
数组大小
int sz=sizeof(a)/sizeof(a[0]);
遍历数组
一维数组
for(i=0;i<sz;i++){
printf("%d:%d",i,a[i]);
}
常见错误:
- 循环结束的条件是<=数组长度
- 离开循环后,继续用i的值作为数组元素的下标
二维数组
for (i = 0; i < 3; i++) {for (j = 0; j < 5; j++) {a[i][j] = i * j;}
}
a [ i ] [ j ] 表示 i 行 j 列,a [ i,j ] 表示a [ j ]
二维数组初始化时列数不能省略
int a[][5] = {{0,1,2,3,4},{2,3,4,5,6},
}
或者写成一维数组初始化时的形式:
int a[][5] = {{0,1,2,3,4,2,3,4,5,6},
}
输出:
0 1 2 3 4
2 3 4 5 6 相关文章:
C语言二刷
const #include<stdio.h> int main() {const int amount 100;int price 0;scanf("%d", &price);int change amount - price;printf("找您%d元\n", change);return 0; } 浮点数类型 输入输出float(单精度)%f%f %l…...
C++模块化程序设计举例
1、模块1 在main.cpp里输入下面的程序: #include "stdio.h" //使能printf()函数 #include <stdlib.h> //使能exit(); #include "Static_Variable.h" //argc 是指命令行输入参数的个数; //argv[]存储了所有的命令行参数; //argv[0]通常…...
毕业设计选题:基于Python的招聘信息爬取和可视化平台
开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 采集的数据列表 招聘数据大屏 摘要 本系统通过对网络爬虫的分析,研究智…...
机器人学习仿真框架
机器人学习仿真框架一般包含(自底向上): 3D仿真物理引擎:对现实世界的模拟仿真机器人仿真平台:用于搭建工作场景,以实现agent与环境的交互学习学习算法框架集合:不同的策略学习算法的实现算法测…...
力扣每日一题打卡 3180. 执行操作可获得的最大总奖励 I
给你一个整数数组 rewardValues,长度为 n,代表奖励的值。 最初,你的总奖励 x 为 0,所有下标都是 未标记 的。你可以执行以下操作 任意次 : 从区间 [0, n - 1] 中选择一个 未标记 的下标 i。如果 rewardValues[i] 大于…...
NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解
在科技日新月异的今天,视频监控系统作为现代社会的“第三只眼”,正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享,视频监控系统以其独特的视角和功能,为社会带来了诸多好处…...
springboot073车辆管理系统设计与实现(论文+源码)_kaic.zip
车辆管理系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足,创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的系统…...
2024.10月22日- MySql的 补充知识点
1、什么是数据库事务? 数据库事务: 是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。 2、Mysql事务的四大特性是什么? …...
Java中的对象——生命周期详解
1. 对象的创建 1.1 使用 new 关键字 执行过程:当使用 new 关键字创建对象时,JVM 会为新对象在堆内存中分配一块空间,并调用对应的构造器来初始化对象。 示例代码: MyClass obj new MyClass(); 内存变化:JVM 在堆…...
vue文件报Cannot find module ‘webpack/lib/RuleSet‘错误处理
检查 Node.js 版本:这个问题可能与 Node.js 的版本有关。你可以尝试将 Node.js 的版本切换到 12 或更低。如果没有安装 nvm(Node Version Manager),可以通过以下命令安装: curl -o- https://raw.githubusercontent.co…...
第 6 章 机器人系统仿真
对于ROS新手而言,可能会有疑问:学习机器人操作系统,实体机器人是必须的吗?答案是否定的,机器人一般价格不菲,为了降低机器人学习、调试成本,在ROS中提供了系统的机器人仿真实现,通过仿真&#x…...
爬虫——scrapy的基本使用
一,scrapy的概念和流程 1. scrapy的概念 Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。 框架就是把之前简单的操作抽象成一套系统,这样我们在使用框架的时候,它会自动的帮我们完成很…...
聚类分析算法——K-means聚类 详解
K-means 聚类是一种常用的基于距离的聚类算法,旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面,我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…...
【Sublime Text】设置中文 最新最详细
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【Sublime Text】设置中文 最新最详细 开…...
C++学习路线(二十四)
静态成员函数 类的静态方法: 1.可以直接通过类来访问【更常用】,也可以通过对象(实例)来访问。 2.在类的静态方法中,不能访问普通数据成员和普通成员函数(对象的数据成员和成员函数) 1)静态数据成员 可以直接访问“静态数据成员”对象的成…...
MySQL-存储过程/函数/触发器
文章目录 什么是存储过程存储过程的优缺点存储过程的基本使用存储过程的创建存储过程的调用存储过程的删除存储过程的查看delimiter命令 MySQL中的变量系统变量用户变量局部变量参数 if语句case语句while循环repeat循环loop循环游标cursor捕获异常并处理存储函数触发器触发器概…...
前端页面样式没效果?没应用上?
当我们在开发项目时会有很多个页面、相同的标签,也有可能有相同的class值。样式设置的多了,分不清哪个是当前应用的。我们可以使用网页的开发者工具。 在我们开发的网页中按下f12或: 在打开的工具中我们可以使用元素选择器,单击我…...
Mac apache配置cgi环境-修改httpd.conf文件、启动apache
Mac自带Apache,配置CGI,分以下几步: 找到httpd.conf。打开终端,编辑以下几处,去掉#或补充内容。在这个路径下写一个测试文件.py格式的,/Library/WebServer/CGI-Executables,注意第一行的python…...
多厂商的实现不同vlan间通信
Cisco单臂路由 Cisco路由器配置 -交换机配置 -pc配置 华三的单臂路由 -路由器配置 -华三的接口默认是打开的 -pc配置及ping的结果 -注意不要忘记配置默认网关 Cisco-SVI -交换机的配置 -创建vlan -> 设置物理接口对应的Acess或Trunk -> 进入vlan接口,打开接…...
数字永生:将意识上传云端的技术与伦理极限
——一个软件测试从业者的技术解构与风险分析各位同行,当你看到“数字永生”这四个字时,脑海里浮现的是什么?是马斯克口中2045年即将实现的意识上传,还是《黑镜》里那些被困在虚拟牢笼中的数字灵魂?作为一个每天与需求…...
告别托盘“隐身术”:Total Commander 9.5 最小化任务栏设置详解(附F12配置技巧)
告别托盘“隐身术”:Total Commander 9.5 最小化任务栏设置详解(附F12配置技巧) 第一次打开Total Commander(以下简称TC)时,许多用户会被它的"消失术"困扰——点击窗口右上角的减号按钮后&#x…...
YOLO26改进 | MSHC多尺度异构卷积:用方形核与条带核捕获复杂空间纹理,以清晰动机打造超强创新!
# YOLO26改进最新创新改进系列 | MSHC多尺度异构卷积:用方形核与条带核捕获复杂空间纹理,以清晰动机打造超强创新! 购买相关资料后畅享一对一答疑! 畅享超多免费持续更新且可大幅度提升文章档次的纯干货工具! 这篇采用…...
MatrixFusion™矩阵视频融合,一路画面管全厂,彻底消除车间监控盲区
MatrixFusion™矩阵视频融合,一路画面管全厂,彻底消除车间监控盲区在智能制造全域可视化管控的落地实践中,工业车间因设备密集、产线交错、通道迂回、多区域分割的固有场景特性,成为监控体系搭建的核心难点。传统工业视频监控系统…...
如何在Windows上快速安装安卓应用:APK Installer终极指南
如何在Windows上快速安装安卓应用:APK Installer终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想要在Windows电脑上运行安卓应用&…...
生成式AI破解基因型-表型关联:AIPheno项目实战解析
1. 项目概述:当生成式AI遇见基因表型 如果你在生物信息学或者遗传育种领域工作,最近几年一定被“基因型-表型关联”这个老大难问题折磨过。我们手里有海量的基因组测序数据(基因型),也积累了大量的生物体性状数据&…...
打造高效命令行天气查询工具:基于KMI/IRM的比利时天气CLI实践
1. 项目概述:一个为终端而生的比利时天气查询工具 如果你和我一样,是个重度命令行用户,同时又对窗外天气是晴是雨有点在意,那你肯定也烦透了为了看个天气预报还得打开浏览器、点开某个天气网站或者解锁手机。这种打断工作流的感觉…...
Burp AI Agent:AI驱动的Web安全测试自动化实践
1. 项目概述:当Burp Suite遇上AI,安全测试的范式革新 如果你是一名Web安全测试人员或渗透测试工程师,那么Burp Suite这个工具对你来说,就像外科医生的手术刀一样熟悉。我们用它拦截流量、重放请求、扫描漏洞,日复一日。…...
Claw-ED:基于教学风格学习的AI助教,一键生成个性化教学包
1. 项目概述:一个为教师而生的AI教学助手 如果你是一位一线教师,每天被备课、写教案、做课件、设计学生活动、准备分层材料这些繁琐工作压得喘不过气,同时又对市面上那些“通用”的AI工具生成的、充满“AI腔”的教案感到失望,那么…...
别再用眼睛猜阈值了!Halcon threshold函数实战:5分钟搞定车牌字符分割
工业视觉实战:Halcon阈值分割在车牌识别中的精准应用 在机器视觉领域,车牌识别系统是典型的工业应用场景之一。而字符分割作为识别流程中的关键环节,直接影响最终识别准确率。许多初学者往往陷入一个误区——仅凭肉眼观察随意设置阈值参数&am…...
