入门C语言:掌握未来编程的必备工具
✨✨ 欢迎大家来到贝蒂大讲堂✨✨
????????养成好习惯,先赞后看哦~????????
所属专栏:C语言学习
贝蒂的主页:Betty‘s blog
1. C语言是什么
在我们生活中,我们和父母、朋友、老师交流时候使用的就是语言,在这个世界上有许多的国家、民族,自然也有很多语言如:汉语、英语、法语等等,这种人与人交流使用的语言我们称为自然语言。然而计算机并不能理解我们的语言唉,那我们又该如何去与它交流呢,这时候就有人发明了如:Python,C++,JAVA等计算机语言。C语言便是其中最具有代表性之一。
下表是常见的计算机语言以及应用场景:
编程语言 | 应用场景 |
---|---|
C/C++ | C++是在C语言基础上演变而来的,所以应用场景也非常类似。主要应用于嵌入式开发,客户端开发和游戏开发等领域 |
C# | 相比于C/C++,C#的应用场景就窄了许多,主要应用于Windows服务应用程序和游戏开发领域 |
Python | Python这些年来随着人工智能的爆火而流行起来,它的应用场景也很多:网络爬虫,数据分析,人工智能等领域 |
Java | Java相对于C/C++更易理解,常用于桌面应用程序,Web应用程序,移动应用程序 |
HTML | HTML作为一种用于创建网页的标记语言,可以实现网页制作、响应式网页设计和在线表单等功能 |
JavaScript | JavaScrip是前端开发的一门脚本语言,和Java没有任何关系 |
2. C语言的历史与辉煌
C语言是由美国计算机科学家丹尼斯·里奇(Dennis Ritchie)和肯·汤普森(Ken Thompson)在20世纪70年代初期开发出来的一种程序设计语言。其开发的背景是在当时,计算机硬件越来越先进,但软件开发却还停留在汇编语言阶段,需要一种更高级的语言来提高软件开发效率。
C语言最初是在Unix操作系统下开发的,用于实现该操作系统的内核和系统工具。在此后的几年中,C语言逐渐被广泛应用于其他领域,如编译器、操作系统、数据库、游戏开发等。
1983年,ANSI(美国国家标准协会)开始制定C语言的标准,称为ANSI C。1990年,国际标准化组织(ISO)也发布了C语言的标准,称为ISO C。这些标准定义了C语言的语法、库函数等方面的规范,并为C语言的跨平台移植提供了基础。
在C语言的历史上一共有三次比较大的改变,分别为:C89标准,C99标准,C11标准
随着计算机技术的不断发展,C语言也不断演化和改进。目前,C语言已经成为一种广泛应用的程序设计语言,仍然被广泛使用于各种领域。同时,C语言也对其他编程语言的发展产生了深刻影响,如C++、Java等。
即使诞生至今已有数十载,世界上早已诞生了数千种语言,但C语言一直稳居计算机语言排行榜前三的位置,可见其的重要性
3. 编译与连接
C语⾔是⼀⻔编译型计算机语⾔,C语⾔源代码都是⽂本⽂件,⽂本⽂件本⾝⽆法执⾏,必须通过编译器编译和链接器的链接,⽣成⼆进制的可执⾏⽂件,可执⾏⽂件才能执⾏
图像演示:
- 每个源⽂件(.c)单独经过编译器处理⽣成对应的⽬标⽂件(.obj为后缀的⽂件)
- 多个⽬标⽂件和库⽂件经过链接器处理⽣成对应的可执⾏程序(.exe⽂件)
- 这里先简单介绍一下,后面会详细为大家接受该过程
4. 集成开发环境
集成开发环境(IDE)⽤于提供程序开发环境的应⽤程序,⼀般包括代码编辑器、编译器、调试器和图形⽤⼾界⾯等⼯具。集成了代码编写功能、分析功能、编译功能、调试功能等⼀体化的开发软件服务套。
以下是常见的集成开发环境
集成开发环境 | 优点 | 缺点 |
---|---|---|
VS2022 | 功能强大支持多种编程语言,提供了丰富的开发工具和调试器 | 安装包较大 |
XCode | Xcode功能多样,方便调试观察 | 只适用于苹果电脑 |
CodeBlocks | 轻量级的集成开发环境,专门针对C和C++语言 | 需要配置环境 |
Dev-C++ | 简单易用,特别容易上手 | 语法检查不严,已经不在维护 |
CLion | 功能丰富,有自动纠错功能 | 收费 |
综合下来来看,笔者还是选择了VS2022的集成开发环境:VS下载教程
5. 第一个C语言程序
5.1 创建一个项目
- 点击右上角视图
- 右击源文件
- 选择C++文件
5.2 hello world
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
Ctrl+f5 执行程序
输出结果:hello world
- 每个C语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝,main 函数也被叫做:主函数。 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类型的值。所以在 main 函数的最后写 return 0, 正好前后呼应。
-
include<stdio.h>是一个头文件,里面包含了我们常用的printf,scanf等库函数,就像工具箱一样我们每次要使用“工具”都要找出工具箱,所以我们用使用库函数一定包含对应的头文件
- printf是一个库函数,它的作用为打印我们想打印的数据,注意括号里一定要加" "
- C语言每条语句结束后都要加;,表示一段代码的结束
6. 字符和ASCII表
6.1 什么是字符
像‘a’,‘b’,‘c’,‘1’,‘#’等由单引号引起来的变量,我们称为字符。
6.2 转义字符
而在字符中有一种特殊的字符,比如‘\n’,‘\0’,这些特殊的字符,我们称它为转义字符,并且每一个转移字符都有特殊含义。下面是一些常见的转义字符及其含义。
转义字符 | 意义 |
---|---|
\a | 响铃(BEL) |
\b | 退格(BS) ,将当前位置移到前一列 |
\f | 换页(FF),将当前位置移到下页开头 |
\n | 换行(LF) ,将当前位置移到下一行开头 |
\r | 回车(CR) ,将当前位置移到本行开头 |
\t | 水平制表(HT) (跳到下一个TAB位置) |
\v | 垂直制表(VT) |
\\ | 代表一个反斜线字符"" |
\' | 代表一个单引号(撇号)字符 |
注意事项:
区分,斜杠:"/" 与 反斜杠:"" ,此处不可互换
6.3 ASCII表
我们知道在计算机中所有的数据都是以⼆进制的形式存储的,那这些a','b','@'字符在内存中分别以什么样的⼆进制存储的呢?
所以有人为它们每个字符都编了个二进制序列,这个叫做编码,为了⽅便⼤家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准ASCII编码,C语⾔中的字符就遵循了ASCII编码的⽅式。
- 其中Dec是十进制,Oct是八进制,Hex是十六进制,Chr是编码。
- 字符AZ的ASCII码值从6590
- 字符az的ASCII码值从97122
- 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32
- 数字字符09的ASCII码值从4857
- 在这些字符中ASCII码值从0~31这32个字符是不可打印字符,⽆法打印在屏幕上观察
7. 字符串
7.1 字符串是什么
那什么是字符串呢?使⽤双引号括起来的⼀串字符就被称为字符串,如“abcd”,“1234”,但是和字符不同的是,字符串会在结尾默认加个'\0',作为其结束标志
7.2 打印字符串
printf("hello world");
puts("hello world");
- 打印字符串可以有多种方式,后续会为大家详细讲解
8. 关键字
C语⾔中有⼀批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字。
注意:
- 关键字都有特殊的意义,是保留给C语⾔使⽤的
- 程序员⾃⼰在创建标识符的时候是不能和关键字重复的
- 关键字也是不能⾃⼰创建的
下面是常见的32个关键字:
auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile
9. 注释
9.1 注释的含义
在 C语言中,注释是程序中的一种特殊语句,在程序进行时,会被编译器跳过,用于向程序的读者解释代码的作用和用途。注释是程序员编写代码时的重要工具,可以提高代码的可读性和可维护性。在我们的代码中增加合理的注释,也能给面试官留下好的印象。
9.2 单行注释
双斜杠 // 后⾯,从双斜杠到⾏尾都属于注释。这种注释只能是单⾏,可以放在⾏⾸,也可以放在⼀⾏语句的结尾。这是C99标准新增的语法。
示例:
#include<stdio.h>
int main()
{
printf("hello world");//放在末尾用于备注
//放在开头用于注销这段代码
//puts("hello world");
return 0;
}
9.3 多行注释
注释放在 /*...*/ 之间,内部可以分⾏。也就是说可以一次性注释多行代码
#include<stdio.h>
int main()
{
/*printf("hello world");
return 0;*/
}
- 不管是哪⼀种注释,都不能放在双引号⾥⾯。双引号⾥⾯的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤。
推荐阅读
-
入门C语言的第一步:掌握Linux命令的使用技巧
-
翁恺教授带你入门C语言编程,第五周作业——如何编写数素数的代码?
-
入门级C语言教程:掌握函数的使用
-
推荐的 C 语言编程必备软件
-
C 语言入门(准备工作)--超级详细的建议和指导,带您顺利跨过编程门槛
-
C 语言初学者必备的开发工具 - Dev-Cpp [ 图文安装教程 ]
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON
-
用于 C 语言入门学习的五个编程软件
-
35 岁实现财务*,腾讯程序员手握2300万提前退休?-1000万房产、1000万腾讯股票、加上300万的现金,一共2300万的财产。有网友算了一笔账,假设1000万的房产用于自住,剩下1300万资产按照平均税后20-50万不等进行计算,大约花上26-60年左右的时间才能赚到这笔钱。也就是说,普通人可能奋斗一辈子,才能赚到这笔钱。在很多人还在为中年危机而惶惶不可终日的时候,有的人的35岁,就已经安全着陆,试问哪个打工人不羡慕?但问题是有这样财富积累必然有像样的实力做靠山。没有人可以不劳而获。 看到这里,肯定有人说,那么对于普通人来说,卷可能真就成了唯一的出路。但是卷也有轻松的卷,“偷懒”的卷法,对于程序员而言,刨除掉一时无法改掉的开会传统占用的大部分时间,如何把有限的时间和精力放在真正重要的架构设计、需求设计上,而不是重复的造*,编码、改bug、手动测试。因此在科技改变生活的今天,学会使用AI工具成为程序员们的必备技能。 以全栈式全自动的软件开发工具飞算SoFlu软件机器人为例,作为全球首款面向微服务架构设计和最佳实践的软件机器人,SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。 而作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 FuncGPT(慧函数)具有五大核心能力: ● 自然语言:通过自然语言即可生成函数,降低软件开发门槛。 ● 秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。 ● 一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。 ● 质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。 ● 灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。 以“将文件流转换为File对象”这个需求为例,以下是FuncGPT(慧函数)秒级生成的代码: / 类名:FileConverter // 函数名:convertStreamToFile // 函数功能:将文件流转换为File对象 // POM依赖包:无 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileConverter { /** * 将文件流转换为File对象 * @param inputStream 文件流 * @param filePath 文件路径 * @param fileName 文件名 * @return 转换后的File对象 * @throws IOException 如果发生I/O异常 */ public static File convertStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException { File file = new File(filePath + File.separator + fileName); // 创建File对象 try (FileOutputStream outputStream = new FileOutputStream(file)) { // 创建文件输出流 byte buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 从文件流读取数据并写入文件 outputStream.write(buffer, 0, bytesRead); } } return file; // 返回转换后的File对象 } } // 函数示例 // 将文件流转换为File对象示例 // 入参:inputStream,文件流 // 入参:filePath,文件路径 // 入参:fileName,文件名 // 出参:file,转换后的File对象 // 调用示例: // InputStream inputStream = new FileInputStream("example.txt"); // String filePath = "C:\\Users\\User\\Documents"; // String fileName = "example.txt"; // File file = FileConverter.convertStreamToFile(inputStream, filePath, fileName); // System.out.println(file.getAbsolutePath); // 输出结果:例如,将文件流转换为File对象后,文件的绝对路径为:C:\Users\User\Documents\example.txt // 则输出结果为:C:\Users\User\Documents\example.txt 通过分析,不难发现以上代码:
-
零基础学编程从入门到精通,系统化的编程视频教程上线,中文编程开发语言工具构件之缩放控制面板构件用法