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

【从零开始学C语言】知识总结一:C语言的基本知识汇总

C语言期末知识点总结

C语言期末试题(附答案)选择题+编程题

2022C语言知识点大全【详细、必备】

C语言期末大作业-学生成绩管理系统(完整源码+设计报告)

C语言期末作业(15个)-货物管理系统、歌曲信息管理系统、职工信息管理系统源码、学生打卡系统、小学生计算机辅助教学系统、门禁系统、银行管理系统等等

C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作 为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机 硬件的应用程序。

事实上,C语言是一个很小的内核语言,只包括极少的与硬件有关的部分,C语言不直接提供输入输出语句,有关文件都是要文件操作的语句和动态内存管理等操作都是要使用到系统提供的库函数来实现的,可以说C语言就是一种结构化程序语言,这是一种分的思想, 以Hello World程序为例,可以建立两个函数,一个输出Hello,一个输出World。
在这里插入图片描述
2、C语言的数据类型列表:(后边再详解)

整型、浮点型(实数型)、单字符型、字符串型、数组类型、指针类型、结构体类型、共用体类型

3、C语言的控制语句列表:(后边再详解)

跳转型:goto语句、break语句、continue语句、return语句

判断型:if-else语句

循环型:do-while语句、while语句、for语句

选择语句:switch-case语句

4、最简单的C程序:

#include<stdio.h>
int a=3;      //这是全局变量  a在整个程序中都可以起作用
void f(int n);    //里边的n就是形式参数int main(void){
int n;        //在这里定义一个n和形式参数的n互不影响
int b=50;      //这是局部变量     b出了main函数它就没有作用了 
int a=2;      //  在这里定义一个a和外边那个a没有联系if(a>b){        //这种就是复合语句 (包括其他循环、选择语句) 
int a=1;         // 在再这里定义一个a和外边那些a没有联系  但是
//根据变量的特点  如果相同变量名称的时候 
//复合语句的变量会覆盖外边main函数的a,main函数的a会覆盖外                           // 边全局变量的a  
//(小覆盖大)
}
}void f(int n){
int n;//这里定义一个n也和形式参数的n没有任何联系
}

1 )、一个程序由一个或者多个源程序文件组成,一个源程序中只有一个mai函数(主函数)

2)、预处理指令:

1、 如#include<stdio.h>,(还有其他的指令,用到再讲)C编译环境在对源程序进行“翻译”之前,都会先去做一个事情,先由一个预处理器,对预处理指令进行处理,对于<stdio.h>指令来说,就是在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息,#include 叫做文件包含命令 它的作用就是用来提供这些信息的,用来引入对应的头文件(.h文件),这样才能调用库函数。

2、#include 的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。

3、使用尖括号< >和双引号" "的区别在于头文件的搜索路径不同:

使用尖括号< >,编译器会到系统路径下查找头文件;

而使用双引号" ",编译器首先在当前目录下查找头文件,如果没有找到,再到系统路径下查找。

5、全局变量和局部变量:

#include<stdio.h>inta=3;//这是全局变量 a在整个程序中都可以起作用voidf(intn);//里边的n就是形式参数intmain(void){intn;//在这里定义一个n和形式参数的n互不影响intb=50;//这是局部变量 b出了main函数它就没有作用了 inta=2;// 在这里定义一个a和外边那个a没有联系if(a>b){//这种就是复合语句 (包括其他循环、选择语句) inta=1;// 在再这里定义一个a和外边那些a没有联系 但是//根据变量的特点 如果相同变量名称的时候 //复合语句的变量会覆盖外边main函数的a,main函数的a会覆盖外 // 边全局变量的a //(小覆盖大)}}voidf(intn){intn;//这里定义一个n也和形式参数的n没有任何联系}复制代码

1、局部变量 只能在声明的函数内部使用,离开了声明的函数,就不能使用该变量了。不同的函数可以使用相同名字的变量,它们代表不同的对象,互不影响,形式参数也是局部变量,在一个函数的内部也可以在复合语句中定义变量,这些变量中也只是在本复合语句中有效。复合语句称为分程序,或程序块。

2、全局变量不仅可以在main函数中,而且可以在别的函数中使用,也就是说全局变量是可以在程序中的任意地方使用。它可以增加函数之间数据的联系,它在程序的全部执行过程中都会占用存储单元,是函数的通用性。总结来就是说两者作用域不一样

6、C函数的定义:

一个C程序是由一个或者多个函数组成的,但是其中必定要有且只有一个main函数,程序开始也是从main函数开始的。

一个函数包含两部分:1)函数首部,函数的第一行:函数类型、函数名,(函数参数类型,函数参数名称),其是(形式参数),形式参数可以是void ,也可什么都没有。2)函数体,表示函数花括号下的程序,一般都有:声明部分,一般在使用一个变量之前,必须进行对其声明定义类型(数据类型),在每行数据声明或者C语句后必须有一个分号表示结束。

7、说明:

C语言本身不提供输入输出语句,输入输出的操作都是要调用系统库函数scanf和printf等函数来实现的,而此函数是在<stdio.h>,文件里面,所以在开头必须先预处理此头文件。

而形参和实参:当我们调用函数时,对其传入的参数和函数体内接收到的参数其实并不是同一个变量。调用函数时向函数传入的参数称作实际参数,简称实参,而函数体内部用于接收外部调用时传入的参数的参数称为形式参数,简称形参。

8、C程序运行步骤:

编程—>编译—>链接

1、编程:在编译环境中书写程序,编写好了之后,系统会将此源程序,以.c为后缀的文件形式存放在指定的文件夹中,如 f.c文件

2、编译:编译环境会对源程序进行语法检查,如有发出错误信息提醒编程人员修改,直到没有语法错误,编译程序自动将源程序转换为二进制形式的目标文件 是以后缀.obj文件保存。

3、 链接:经过编译所得到的二进制目标文件,还不能别计算机直接执行,它们还只是零散的一个个部件,必须由链接程序将编译后的目标文件和函数库还有其他生成的文件组成起来,生成一个计算机能执行的可执行文件。后缀名为.exe文件

9、C变量存储方式与生存期:

1、在c语言中,变量的作用域 可以分为全局变量和局部变量,而从另一个角度说,变量的储存有两种不同的方式,静态储存方式和动态储存方式。静态指的是程序运行期间 由系统分配固定的空间给程序,而动态 则是程序运行期间 需要根据情况进行动态分配储存空间的方式

2、内存中使用储存空间的情况,可以分为以下三种:

(1)程序区

(2)静态储存区,存放全局变量 负责给程序运行时分配内存区 在静态数据区,内存中所有的字节默认值都是0x00

(3)动态储存区,它存放以下数据:

1、函数形式参数,在调用函数时给形参分配储存空间

2、函数中的自动变量

3、函数调用时的现场保护和返回地址等

4、对变量的储存类型有四种,分别是:auto (自动变量)、static (静态变量)、register( 寄存器变量)、 extern(外部变量)

对以上这些数据,在函数开始调用时分配动态存储空间,函数结束时释放这些空间。在 c 语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。

1- auto (自动变量)
在程序的函数中的局部变量,如果不专门声明为静态(static)存储方式,都是自动分配动态的地址存储空间。包括复合语句和函数的形参 都是的,自动变量用关键字 auto 为声明。重点是这些变量在函数调用完毕后它们都会被系统给释放回收内存

2- static 静态变量(局部变量)
有时候,我们希望自己的局部变量不被函数调用完毕后消失,而继续保持原值,其占用的储存单元不是释放,用关键字 static 进行声明 这类变量叫静态变量。它和全局变量相同的是,在函数调用结束后,它并不释放内存,保留其当前值,而且在整个程序运行时,都不释放内存。不同的是。它本质还是局部变量,在其他函数中也不能使用它,而且,它只能进行第一次赋值,在整个程序运行时,它只会保留上一次函数调用结束时的值。

一个被声明为静态的全局变量可以被模块内(源程序)所用函数访问,但不能被其他模块外(源程序)其他函数访问,它是一个本地的全局变量

一个被声明为静态的函数只可被这一源程序的其他函数调用.那就是,这个函数被限制在声明它的模块本地范围内使用

全局变量(外部变量)的说明再冠以static

就构成了静态的全局变量。当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围(只能在本地)

static函数与普通函数作用域不同,仅能在本源文件内使用此函数。

3- register( 寄存器变量)
在程序运行时,如果一个变量,被频繁使用,那么系统就必须多次访问内存中的单元,会影响程序执行效率,因此为了提高效率,就产生了寄存器变量,它可以直接将局部变量的值存放到CPU的寄存器中,需要时,直接从寄存器中取出参数运算,不必经过内存中取存储,由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register"。由于寄存器的存取速度远高于对内存的存取速度,所以这样可以提升执行效率。

4- extern (外部变量)
一般来说外部变量是函数的外面定义的全局变量

如果没有在头文件中定义有外部变量(文件的知识)

那如果在一个程序中如果需要在一个源文件内扩展到另一个源文件的作用域的全局变量,就可以在定义函数时引用extern关键字将该变量转为“外部的变量”,表示将此变量的作用域扩展到此位置,有了此声明,就可以在其他源文件中使用此变量了。

将全局变量的作用域扩展到其他文件,可以先在一个文件中定义一个变量,然后再在其他文件中用extern定义相同名字的变量,就可以将作用域扩展到整个程序的结束了。

*注 如果在文件1中的全局变量加了static那么这个变量就会被限制在此文件中了,在文件2中使用extern也访问不到文件1的全局变量了

在一个函数声明前加extern 此函数就会可扩展作用域,可以在其他文件中使用此函数。

相关文章:

【从零开始学C语言】知识总结一:C语言的基本知识汇总

C语言期末知识点总结 C语言期末试题&#xff08;附答案&#xff09;选择题编程题 2022C语言知识点大全【详细、必备】 C语言期末大作业-学生成绩管理系统&#xff08;完整源码设计报告&#xff09; C语言期末作业&#xff08;15个&#xff09;-货物管理系统、歌曲信息管理系…...

CAD二次开发 添加按钮Ribbon

这篇文章是教大家怎样子创建自己的Ribbon按钮界面&#xff08;如下图&#xff09;&#xff0c;以下示例代码在CAD2020中运行实现。 背景 创建一个属于自己的Ribbon按钮&#xff08;如下图&#xff09; 理解Ribbon、Panel、Tab的关系&#xff08;如下图&#xff09;&#xff…...

[RK3568 Android12] 添加自定义启动脚本

1:定义添加的脚本 比如为displayn2k.sh #!/system/bin/sh log "displayn2k.sh begin running" sleep 5 log "displayn2k.sh sleep 8" sleep 5 log "================sleep finished==========================" #remount /system/bin/mount -o …...

API 体系构建

前言 API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计&#xff0c;而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。在关键环节制定明确的 API 规范有助于 Service 对内提高产品间互通的效率&#xff0c;对外提供一致的使用体…...

RMPE: Regional Multi-Person Pose Estimation (AlphaPose)阅读笔记

区域多人姿态估计 ICCV 2017 论文链接 代码链接 摘要&#xff1a; 野外多人姿态估计具有挑战性。sota人体检测器不可避免存在定位和识别误差&#xff0c;这些误差可能导致依赖人体检测器的单人姿态估计器&#xff08;SPPE&#xff09;的失败。本文提出了一种新的区域多人姿态估…...

2月16日昆明面试经历部分考题

2月16日昆明面试部分考题 1.说说em和rem的区别&#xff1f;rpx呢&#xff1f; rem是相对于根元素&#xff08;HTML&#xff09;进行计算&#xff0c;而em是相对于当前元素或父元素的字体大小&#xff0c;如果当前文本的字体尺寸没有设置&#xff0c;则相对于浏览器的默认字体…...

ARC140D One to One

ARC140D One to One 题目大意 对于一个长度为nnn的整数序列X(x1,x2,…xn)X(x_1,x_2,\dots x_n)X(x1​,x2​,…xn​)&#xff0c;每个元素都在111到nnn之间&#xff0c;令f(X)f(X)f(X)表示以下问题的答案&#xff1a; 有一个nnn个顶点nnn条边的无向图&#xff08;可能有重边和…...

联合身份验证与Cognito

Hello大家好&#xff0c;我们接下来讨论AWS联合身份验证的内容。 AWS联合身份验证 对于考试&#xff0c;联合身份验证部分是一块非常重要的内容。那什么是联合身份验证&#xff0c;它是做什么用的呢&#xff1f; 联合身份验证&#xff0c;是用来允许AWS外部用户&#xff0c;如…...

day18_常用API之String类丶Object类

String概述 java.lang.String 类代表字符串&#xff0c;String类定义的变量可以用于指向字符串对象&#xff0c;同时String类提供了很多操作字符串的功能&#xff0c;我们可以直接使用。Java 程序中的所有字符串文字&#xff08;例如“abc”&#xff09;都为此类的对象 特点:St…...

OSG三维渲染引擎编程学习之五十五:“第五章:OSG场景渲染” 之 “5.13 一维纹理”

目录 第五章 OSG场景渲染 5.13 一维纹理 5.13.1 一维纹理介绍 5.13.2 一维纹理示例 第五章 OSG场景渲染 OSG存在场景树和渲染树,“场景数”的构建在第三章“OSG场景组织”已详细阐明,本章开始...

RTOS随笔之FreeRTOS启动与同步方法

RTOS启动与同步机制RTOS启动任务切换场景任务同步机制队列信号量事件组任务通知任务延时RTOS启动 FreeRTOS在任务创建完成后调用函数vTaskStartScheduler()启动任务调度器。 vTaskStartScheduler()任务启动函数详解 void vTaskStartScheduler( void ) {BaseType_t xReturn;xR…...

【AI/NLP】InstructGPT数据标注问题

文章目录1 背景介绍2 标记员筛选2.1 标记员筛选标准3 数据集及其标注3.1 预训练3.2 微调3.2.1 SFT-demonstration data3.2.2 RM-comparison data3.3 数据集大小4 模型实现1 背景介绍 ChatGPT的训练过程与InstructGPT相近&#xff0c;大致分为三步&#xff1a; SFT&#xff1a…...

三次握手和四次挥手

文章目录TCP三次握手为什么要三次握手三次握手可以携带数据吗&#xff1f;三次握手失败&#xff0c;服务端会如何处理?ISN代表什么&#xff0c;意义&#xff0c;何要动态随机什么是半连接队列第2次握手传回了ACK&#xff0c;为什么还要传回SYN&#xff1f;为什么要四次挥手TCP…...

Jmeter常用断言之响应断言详解

响应断言是最常用的一种断言方法&#xff0c;主要是对响应结果中的文本内容进行断言&#xff0c;比如响应结果是否包含指定的值&#xff0c;或者是否等于指定的值。响应断言可以适用各种返回类型的响应结果&#xff0c;如&#xff1a;Test、html、application/json、applicatio…...

【Python学习笔记】36.Python3 MySQL - mysql-connector 驱动(1)

前言 MySQL 是最流行的关系型数据库管理系统&#xff0c;本章节为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。 Python3 MySQL - mysql-connector 驱动 我们可以使用 pip 命令来安装 mysql-connector&#xff1…...

计算机SCI论文课题设计需要注意什么? - 易智编译EaseEditing

课题设计就要本着严谨性和可行性来进行。实验设计的类型要选择准确&#xff0c;统计学的方法要运用合理&#xff0c;研究对象和观察指标的选择也要符合研究目的的要求&#xff0c;技术路线要清晰明了。 关于课题的设计的可行性也要综合考虑&#xff0c;比如前期的相关工作基础…...

Quartz入门教程

本文参考文章编写 Quartz 官网 Quartz 是 OpenSymphony 开源组织在 Job Scheduling 领域又一个开源项目&#xff0c;是完全由 Java 开发的一个开源任务日程管理系统&#xff0c;“任务进度管理器”就是一个在预先确定&#xff08;被纳入日程&#xff09;的时间到达时&#xff…...

TypeScript 学习之 function

函数可以实现抽象层&#xff0c;模拟类&#xff0c;信息隐藏和模块。 函数有&#xff1a;有名字的函数、匿名函数 在 JavaScript 中的函数 // 有名字的函数 function add(x, y) {return x y; }// 匿名函数 let myAdd function (x, y) {return x y; };函数类型 typescript 可…...

【云计算自学路线】

云计算包含的技术内容和涉及的方向比较多&#xff0c;一定要进行系统化的学习才能更好的掌握这门技术。 云计算作为互联网新技术领域&#xff0c;现阶段也是出于高速发展期&#xff0c;想学习加入云计算行业的小伙伴可以抓紧机会了&#xff0c;跟着小课一起来了解云计算以及它…...

code01 v2黑屏、花屏、死机、断电重启、休眠死机的进来

症状解决 长话简说&#xff0c;症状如下&#xff1a; 使用浏览器、播放视频等&#xff0c;遇到突然死机或花屏死机的情况 关闭硬件加速&#xff0c;如&#xff1a;浏览器中设置关闭硬件加速&#xff0c;出现这种症状的软件都需要设置 开机电流音、播放与暂停时喇叭吱吱想、打…...

分享107个HTML电子商务模板,总有一款适合您

分享107个HTML电子商务模板&#xff0c;总有一款适合您 107个HTML电子商务模板下载链接&#xff1a;https://pan.baidu.com/s/1VW67Wjso1BRpH7O3IlbZwg?pwd0d4s 提取码&#xff1a;0d4s Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 Aplustemplates 购物模板…...

Barra模型因子的构建及应用系列三之Momentum因子

一、摘要 在之前的Barra模型系列文章中&#xff0c;我们已经初步讲解、构建了Size因子和Beta因子&#xff0c;并分别创建了对应的单因子策略。通过回测发现&#xff0c;其中Size因子的小市值效应具有很强的收益能力。而本篇文章将在该系列下进一步构建Momentum因子。 二、模型…...

8.2.1.3 索引合并优化

索引合并访问方法检索具有多个范围扫描的行&#xff0c;并将其结果合并为一个。此访问方法仅合并来自单个表的索引扫描&#xff0c;而不是跨多个表的扫描。合并可以生成其基础扫描的合并、交叉或交叉的合并。 可以使用索引合并的查询示例&#xff1a; SELECT * FROM tbl_name…...

水雨情在线小能手-雨量水位报警站

雨量水位报警站由水位探测器、雨量传感器、报警灯、扩音器、太阳能板和采集传输控制器组成。实时采集水位等级&#xff0c;三个水位探测器对应3个水位等级&#xff0c;当现场水面浸没相应探测器时&#xff0c;本机会实时发出语音报警&#xff0c;同时可发送相应的预警/报警等级…...

【蓝桥杯集训4】双指针专题(6 / 6)

目录 3768. 字符串删减 - 滑动窗口ac 799. 最长连续不重复子序列 - 滑动窗口 800. 数组元素的目标和 - 二分ac 2816. 判断子序列 - 双指针 1238. 日志统计 - 滑动窗口 1240. 完全二叉树的权值 - 双指针 1、前缀和 - 通过了 5/12个数据 2、双指针 3768. 字符串删减 -…...

文件流,gzip解压,压缩

目录 文件画布 写入 &#xff08;空文件Foutnew File(Parent,entry.getName());&#xff09;FileOutputStream outnew FileOutputStream(Fout);BufferedOutputStream Boutnew BufferedOutputStream(out);其他流量基于基础包装文件--文件流---字节流 顺序pbf一般是形成后再压缩目…...

在线开会,来开开圆桌会议吧~

圆桌会议应用场景&#xff1a;适合内部培训、部门会议亦或是头脑风暴等较为轻松的场景&#xff0c;有兴趣的朋友可以联系我来测试哦~~ 上图&#xff1a; 图&#xff1a;圆桌会议应用截图 在圆桌布局之下&#xff0c;企业可以将每一位参会者和座位绑定&#xff0c;1:1模拟线下圆…...

使用营销自动化的 7 大主要优势

对于大多数企业家来说&#xff0c;自动化已成为在数字时代简化业务的必要条件。那么&#xff0c;您可以采取哪些步骤来实施营销自动化呢&#xff1f; 1. 社交媒体整合 拥有吸引人的社交媒体形象是成功的先决条件。您不可能完成所有社交媒体营销任务&#xff0c;使用自动化软件&…...

【图像分类】基于PyTorch搭建GRU实现MNIST手写数字体识别(单/双向GRU,附完整代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 在https://blog.csdn.net/AugustMe/article/details/128969138文章中,我们使用了基于PyTorch搭建LSTM实现MNIST手…...

day14_oop_抽象_接口

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、抽象 三、接口 零、 复习昨日 多态的好处: 扩展性强.加入新的功能,不需要改动代码降低代码耦合度(解耦合或者松耦合) 一、抽象类 1.1 抽象类…...

做网站好赚钱吗/站长之家网站排名

华为ssh安全连接的配置方法如下&#xff1a;在模拟器ensp中拉一台路由器和云出来。首先将路由器和云路由调通&#xff0c;让我们的电脑外部可以和路由器通信。AR1的基础配置如下&#xff1a;system-view Enter system view, return user view with CtrlZ. [Huawei]sysname AR1[…...

查域名解析/宁波正规优化seo公司

百度网盘AI大赛——表格检测 基于Resnet18回归表格的四个拐角坐标&#xff0c;本项目附带一个可以直接提交的样例&#xff0c;分数20。 比赛链接 1. 比赛介绍 生活中&#xff0c;扫描技术越来越常见&#xff0c;通过手机就能将图片转化为可编辑的文档等&#xff1b;但是现在…...

作文网站源码/百度的人工客服

近日荣耀手机CEO赵明在对于荣耀手机是否采用鸿蒙系统一事&#xff0c;做出了回应“荣耀会持续关注鸿蒙生态的发展&#xff0c;并且从消费者体验的角度选择最好的产品和解决方案”&#xff0c;媒体分析认为这意味着荣耀手机暂时不会考虑采用鸿蒙系统&#xff0c;而技术成熟、生态…...

负责加强局网站建设/seo技术是什么

使用spring声明式事务&#xff0c;spring使用AOP来支持声明式事务&#xff0c;会根据事务属性&#xff0c;自动在方法调用之前决定是否开启一个事务&#xff0c;并在方法执行之后决定事务提交或回滚事务。转载于:https://www.cnblogs.com/panxuejun/p/7865002.html...

wordpress 站点错误/如何推广网站

题目连接&#xff1a; https://acm.bnu.edu.cn/v3/statments/jag2016.pdf 分析&#xff1a; 直接判断‘%’到‘’和最近的‘$’的距离&#xff0c;如果 ‘%’到‘’小于%’到最近的‘$’的距离则输出YES否则输出NO AC代码&#xff1a; #include <iostream> #include…...

网站开发的书籍/网站优化排名易下拉系统

2019独角兽企业重金招聘Python工程师标准>>> 一、对称加密和非对称加密入门 1. 如何不被窃听 —— 加密 这种加密方案在密码学里称为对称密码&#xff0c;加密方和解密方使用的是相同的密钥。 知名的密码算法有 AES&#xff08;2001&#xff09;、Blowfish&#xf…...