ImageVerifierCode 换一换
格式:DOCX , 页数:106 ,大小:302.27KB ,
资源ID:9795761      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9795761.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(蚂蚁的C编程.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

蚂蚁的C编程.docx

1、蚂蚁的C编程1. C 语言简介 1. C 语言诞生 1972 年,美国贝尔实验室的 Dennis Ritchie 在 B 语言的基础上创造了 C 语言。B 语言是美国贝尔实验室的 Ken Thompson 于 1970 年,以 BCPL(Basic Combined Programming Language 基本组合编程语言)为基础设计出来的。而 BCPL 是我的天离题了打住打住!2. 为何学 C 语言 高效:用 C 语言编写的程序编译后生成的可执行文件小巧,而且运行速度很快。 移植性好:在某个系统下写的C程序不经修改(或者少量修改),重新编译后就可以运行于别的系统。 功能强大:C 可以用于编

2、写操作系统,也可以用于编写编译器和解释器。大多数 Unix 操作系统都是使用 C 来编写的。我们也可以编写 C 程序解决物理和工程上的问题。 低级性:C 语言是一种相对“低级”的语言。这种说法并并没有贬义,而是意味着 C 语言精练而且接近硬件。C 语言可以像汇编语言一样对位、字节和内存地址进行操作。3. C 编译器 C 语言是高级语言,而计算机只懂机器语言,不懂高级语言,故而我们需要用编译器把 C 程序编译成机器语言,这样计算机才可以运行我们用 C 语言编写的程序。编译器的用法请参考: 4. 语言标准 起初,C 语言没有官方标准。那时C 程序设计语言(第一版)(Brian Kernighan

3、和 Dennis Ritchie 于 1978 年合著)是被广泛接受的标准。通常称为 K&R C 或者经典 C(classic C)。书中附录的C 参考手册(C Reference Manual)作为编写 C 编译器的指南,虽然定义了 C 语言,却没有定义 C 标准函数库(Library Standard)。而 C 语言依赖于标准函数库,所以需要定义标准函数库。1983 年,美国国家标准协会(ANSI)成立 X3J11 委员会,致力于建立一个严格的 C 语言标准。X3J11 建立的标准于 1989 年被正式采纳。这个标准(ANSI C89)不但定义了 C 语言,而且定义了 C 标准函数库。19

4、90 年,国际标准化组织(ISO)也采纳了这个标准,称为 ISO C90。C89 标准和 C90 标准完全一样。 1994 年,ANSI 和 ISO 合作,成立 C9X 委员会,致力于修订 C 标准,并且最终建立了 C99 标准。注意:在后面的教程中,除非特别说明 C99 特有,否则都是 C89 和 C99 的共同标准。当前支持 C99 标准的编译器不多。VC6 和 TC 都不支持;GCC3.2 支持。VC7.1 及其更高版本我没用过,不知道支不支持,我猜应该支持吧。2. 第一个 C 程序 这篇文章旨在让各位对 C 有个总体的认识,有看不懂的地方请不必太在意,只要记住就可以了,继续往下学下去就

5、会明白的。首先请看下面这个简单的 C 程序,猜猜它会做些什么。猜不出来也没关系,后面会有详细的解说。#include int main( void )int num;/* 声明一个名叫 num 的变量 */num = 1;/* 将 1 赋值给num*/ printf( This is a simple C program.n ); /* 调用 printf 函数 */printf( My favorite number is %d because it is first.n, num );return 0;在对这个程序进行详细说明之前,我想先请您用编译器把它编译成可执行文件,并且运行,看看运行

6、结果和您的猜想是否一致。下面,我将分两步对这个程序进行详细的讲解。第一步是概要说明,也就是对程序中每一行代码的含义作简单讲解,以帮助您对这个程序有一个大致的理解。第二步是详细说明,也就是程序中的每一行代码进行详细的讲解,以加深您的理解。一、 概要说明 #include - 把另外一个文件包含进来这行代码命令编译器把头文件(.h 文件)stdio.h 中的内容包含到我们的程序中。stdio.h是C语言的标准头文件之一,提供对键盘输入和显示输出等的支持。要使用 printf 函数,就应该包含这个头文件。顺带一提,stdio 代表standard input/output,也就是标准输入输出的意思。

7、int main(void) - 函数头C 程序由一个或多个函数组成。我们的这个程序只有一个函数:main 函数。圆括号 () 表明 main 是一个函数;int 表明 main 函数返回一个整数;void 表明main 函数不接受任何参数。在此,请您紧记,int main(void) ISO/ANSI C标准中定义的 main 函数定义方法之一。进行的预处理是:把特定的头文件包含到我们的源代码里。#include 的作用是将头文件 stdio.h 里的内容包含进我们的程序,产生的结果是将 stdio.h 里的内容一字不漏地插入 #include 出现的 地方,并且删除 #include 。换

8、句话说,就是用 stdio.h 里的内容替换#include 。这个过程是在预处理阶段完成的。C 语言的这种包含文件的机制为多个程序共享相同信息提供了极大的方便。stdio.h 是 C 语言标准中定义了的头文件,它包含着输入输出函数的信息。所有 C 编译器都应该有这个头文件,这是 ANSI/ISO C 标准中规定的。当然,ANSI/ISO C规定的编译器必须提供的头文件可不止这么一个。标准还规定了许多别的头文件,那些我们会在以后慢慢学到。有些程序需要包含 stdio.h ,而有些不需要。如果上面这个例子中没有使用printf 函数,那就不需要包含 stdio.h 。头文件中包含着编译器进行编译

9、时所需的信息。头文件中可能指明了函数名和函数调用方法,但是这些函数的实现代码并不在头文件中,而是在预先编译好了的库文件里。链接器负责在库文件中寻找我们的程序所需的代码,并且把那些代码和我们写的程序进行链接,从而将我的写的程序链接成可执行文件。一句话,头文件用于指导编译器正确地将我们写的源程序编译成可执行文件。2. main 函数在 C 语言中,main 函数是主函数。每个 C 程序都必须有且只能有一个main 函数(主函数)!C 程序从 main 函数开始执行,并且在 main 函数中结束。int是 main 函数的返回值类型,它表明 main 函数应该返回一个整数给程序的调用者(如操作系统)

10、。如果您想了解更多关于 main 函数的东西,请点击下面的链接3. 注释:/* a simple program */* */ 之间的内容都是注释。对程序进行适当的注释可以帮助读者(包括您自己)更快更好地理解您写的代码。注释可以在源程序中的任何地方书写。/* 和 */ 之间的任何内容(包括 /* 和 */)都会被编译器忽略掉。注意:/ 和 * 必须紧挨在一起,它们之间不能有空格。 /* 我是注释 */ /*我是 跨行注释*/ /* 我也是注释 */以上的注释都是合法的; 4. 大括号与函数体C 语言中,所有函数都以大括弧( )作为界定符。函数体从开大括弧 开始,以闭大括弧 结束。在后续教程中,

11、我会对函数进行更详细的讲解。5. int num;这个语句声明了变量 num 。这一行末尾的分号(;)表明这一行是一个语句。; 是语句的一部分,单独一个 ; 也是一个合法的 C 语句。int 是 C 语言中的一个关键字,它代表 C 语言里的一种基本数据类型:整型。关键字是语言的保留字,不能用作其它用途。例如:我们不能关键字来做变量名或者函数名。标识符是指我们为变量或函数等取的名字。在这个语句中,num 就是标识符。C 语言中,所有变量在使用前都必须声明。C89 中,变量的声明必须位于函数体或者程序块的开端。6. 赋值num = 1;赋值是 C 语言中的一种基本操作。上面的语句是一个赋值语句,它

12、的含义是:将 1 赋值给变量 num 。赋值操作完成后,num 的值等于 1 。7. printf 函数printf( This is a simple C program.n ); printf( My favorite number is %d because it first.n, num );这两行代码都调用了 printf 函数。printf 是一个标准 C 函数,也就是说,它是 C 语言标准函数库里定义了的函数。圆括号 () 表明 printf 是一个函数,圆括号里的内容会被传递给 printf 函数。例如,上面第一行代码把“This is a simple C program.n

13、”(不包括双引号)传递给 printf 函数,然后由 printf函数把这些信息显示于显示器。n 是换行符,它提示 printf 开始新的一行。正因为 n 是换行符,所以 n 不会显示出来,而是进行了换行。如果上面的语句中没有 n ,那就不会换行。上面代码第二行中的 %d 告诉 printf 用 num 的值替换掉 %d ,并且以整数形式显示 num 的值。%d 被称为占位符,它告诉 printf 应该在什么地方显示 num 的值。% 用于提醒 printf 在此处显示一个变量的值(本例中是 num 的值);d 告诉 printf 以十进制整数的形式显示 num 的值。8. return(返回

14、)语句return 0;这个 return 语句是我们程序中的最后一个语句。int main( void ) 中的 int表示 main 函数应该返回一个整数,所以我们要使用 return 语句来返回一个整数。3. C 程序的结构 C 程序由一个以上的函数组成,而且必须有 main 函数。此外,C 程序一般还有一些预处理指令。例如 #include 指令。当然并不是必须要有 #include 指令。函数由函数头和函数体组成。函数头由返回值、函数名以及参数列表(可以是void)组成。函数体从 开始,以 结束。函数体里可以有一系列的语句,每个语句以分号(;)结束。例如:预处理指令 #include

15、 函数头 int main( void )函数体开始 变量声明语句 int i;赋值语句 i = 1;函数调用语句 printf( %dn, i );return 语句return 0;函数体结束简而言之,一个简单的标准 C 结构如下: #include /*非必须。若没用到stdio.h里声明的函数,则不需要*/int main(void) 一系列语句 return 0; 4. 第二个 C 程序 首先请看以下代码,并且和我们的第一个 C 程序比较比较,看看这个程序新增了什么知识点。/* meter2centimeters.c -以厘米为单位来表示两米 */#include int main(

16、void) int meters, centimeters;meters = 2;centimeters = 100 * meters; /* 100 乘以 meters */printf( %d-meter is equal to %d centimeters.n, meters, centimeters ); printf( Yes, I said %d centimeters!n, 100 * meters );return 0;下面我们来仔细分析这个小程序。1. 文档这段代码头部的注释标明了文件名和程序的作用,我们把这些注释称为文档。写文档是一个很好的习惯,可以帮助我们了解程序的作用。

17、在由多个源文件组成的程序中,文档显得更为重要。由于我们目前为止所写的都是很简单的程序,您也许还不觉得写文档有多大的作用,甚至还觉得浪费时间。但是我们应该养成写文档的习惯,这对我们以后写复杂的程序很有帮助。对于复杂程序,我们应该尽可能把文档写得更详尽。2. 多重声明int meters, centimeters;上面那句声明语句声明了两个变量。我们可以在一句声明语句中声明任意数目的变量,只要变量名之间用逗号(,)隔开就可以了。例如下面这个语句声明了 4 个变量。 int a, b, c, d;3. 乘法运算C 语言中,* 是乘法运算符,所以 centimeters = 100 * meters;

18、 的意思是:用 100 乘以变量 meters的值(本例中为 2),然后把相乘的结果赋值给变量 centimeters 。4. printf 函数printf( %d-meter is equal to %d centimeters.n, meters, centimeters );上面这个语句中占位符 %d 出现了两次。第一个 %d 由变量 meters 的值替换;而第二个 %d 则由 centimeters 的值替换。注意:每个变量由逗号(,)隔开;%d-meter is equal to %d centimeters.n 中的双引号是必须的,而且必须是英文的双引号,不能是中文的双引号。p

19、rintf( Yes, I said %d centimeters!n, 100 * meters );上面这个语句表明,用于替换占位符的不仅仅可以是变量,也可以是表达式(100 * meters 是一个乘法表达式)。5. 如何编写函数 首先请看以下代码。/* my_func.c - 这个程序使用了一个自定义函数 */#include void butler(void); /* ISO/ANSI C 函数原型 */int main(void) /* 函数头 */ /* 函数体开始 */ printf(I will summon the butler function.n); butler();

20、 /* 调用 butler 函数 */ printf(Yes. Bring me some tea and writeable CD-ROMS.n); return 0; /* 函数体结束 */ void butler(void) /* butler 函数 */ printf(You rang, sir?n); 上面的代码中,butler 出现了 3 次。第一次是作为函数原型;第二次是函数调用语句;第三次是函数定义。下面我们分别对 butler 的这三次出现作详细说明。1. 函数原型是声明函数的一种方式,是 C89 标准加入的概念,老旧的编译器可能不支持函数原型。函数原型用于告诉编译器我们将要

21、使用的函数的属性。例如,butler 的函数原型中,第一个 void 指明 butler 函数没有返回值;第二个 void 表明 butler 没有参数,也就是不接收任何参数。在 main 函数前面写了 butler 的函数原型后,当 main 函数调用 butler 时,编译器就能检测到 butler 函数调用语句是否正确。正如变量要声明后才能使用一样,函数也要声明后才能调用。本例中,如果 main 函数前面没有 butler 的函数原型,那么我们就不能在 main 函数中调用 butler 函数,除非我们把函数定义放在 main 函数之前。不过把函数定义置于 main 函数之前是一种不好的

22、编程风格,因为这将导致我们花不少时间来寻找 main 函数的所在地。想象一下,如果我们写了几十个函数,如果每个函数定义都置于 main 函数之前,那样 main 函数还算好找;但是如果我们不小心把某些函数放在了 main 函数后面,也就是说 main 函数被放在一堆函数中间,那就很难找了!C89 标准出台之前,C 语言也支持函数声明,不过我们只能指定函数的返回值类型,而不能列出参数列表。例如: void butler();C89 之前,函数就是像上面所写的那样声明的。C89 和 C99 标准都支持这种声明方式,不过它们同时也指出,这种声明方式迟早会被淘汰!所以我们不要使用这种声明方式,而要用函

23、数原型。 2. 在 main 函数里,语句 butler(); 的作用是调用 butler 函数。因为 butler 的参数列表为空(void),所以函数名(butler)后面的括号中不能有任何参数,也不能是 butler(void); 。 3. butler 函数和 main 函数的定义方式一样,也是由函数头和函数体构成。注意,函数定义仅仅是一个定义而已,并不能决定函数什么时候执行,也不能决定函数是否执行。本例中,main 函数什么时候调用 butler 函数,butler 函数就什么时候执行;如果 main 函数没有调用 butler 函数,那么 butler 函数就不会执行。所有 C 程

24、序都是从 main 函数开始执行的。无论 main 函数处在源文件中的任何位置,中间也罢,末尾也罢,总之,C 程序一定从 main 函数开始执行。把 main 函数放在其它函数定义之前是一个好的编程习惯,因为这样可以让读者很快地弄清楚程序的结构。 到目前为止,我们已经对函数有了一个概要的了解。在后续的教程中,我们还会更详细更系统地学习函数。6. 关键字和保留标识符 关键字是保留字,不能用来做标识符(如变量名),例如:int double; 是错误的,因为 double 是关键字,不能做变量名。使用关键字来做变量名是一种语法错误,不能通过编译!下表列出了 C 语言的所有关键字,其中红色的是 IS

25、O C99 标准新增的关键字。 auto enum restrict unsigned break extern return voidcase float short volatilecharfor signed whileconst goto sizeof _Bool7. 第三个 C 程序 首先请看下面这个小程序,试着自己编译运行一下。如果不懂怎么编译,请点击下面的超链接: Dev-C+安装&使用教程 /* circle.c - 计算圆的面积 */ #include int main( void ) float radius; /* 圆的半径 */ printf( Please enter

26、 the radius: ); /* 获取用户输入 */ scanf( %f, &radius ); /* 圆面积计算公式:圆周率 * 半径的平方 */ printf( The area of the circle is: %.3fn, 3.14 * radius * radius ); printf( Press ENTER to quit. ); getchar(); getchar(); return 0; “enter the radius”的意思是:输入圆的半径,然后按回车(Enter)。这个程序要求我们输入数字,例如:15、31.6。不要输入字母,例如:abc、t156。输入字母将

27、导致程序出错!以后我们会学如何处理这种错误,不过现在还是老老实实地输入数字吧!当然,您也可以试着输入字母,看看到底会发生什么事情。下面我们来仔细讲解这个程序的知识点。1. 程序的第 7 行,我们使用float声明了一个名为 radius的变量。float代表的数据类型是浮点型,也就是小数。在以往的程序中,我们都是使用 int 来声明变量。int 代表整型,也就是整数。用 int 声明的变量只能存储整数;而用 float 声明的变量可以存储小数。2. 为了接受用户输入,我们需要使用 scanf函数。和 printf一样,scanf 也是标准库里定义的函数,我们称这样的函数为标准函数。和print

28、f一样,scanf的函数原型也位于标准头文件 stdio.h 里。占位符 %f 的作用是命令 scanf 函数读取浮点数;&radius 告诉 scanf 用读取到的浮点数给变量 radius 赋值。其中 & 必不可少,否则程序将会出错。& 在这里是取址运算符,用于获取变量 radius 的内存地址,从而告诉 scanf 将读取到的浮点数存储到那个地址所指示的内存空间,也就达到了给 radius 赋值的目的。如果您看不懂上面这些内容,没什么关系,真的,只要您可以记住就好了。以后,我们将更深入地学习这些知识。3. radius 是浮点型变量,3.14 默认是双精度浮点型(double)恒量,所以表达式 3.14 * radius* radius 的结果是一个双精度浮点数。这里看不懂也没关系,以后我们会详细学习。4. 要显示浮点型数据,我们需要使用占位符 %f。%d 是用于显示整数的,如果我们将第二个 printf 中的 %.3f 换成 %d,那么输出会不正常。.3 的作用是告诉 printf 只输出小数点后 3 位。我们也可以改成 .2 或者 .0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1