版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章C语言概述1.1C语言的发展简史1.2C语言的特点1.3认识C程序1.4C程序的运行与调试[Return]本章学习目标了解C语言的发展简史和特点掌握C语言的基本结构及如何编写可读性良好的C程序掌握一个C程序的编辑、编译、运行和调试的一般过程1.1C语言的发展简史C语言发源于著名的美国贝尔实验室,是由该实验室的研究人员DennisRitchie
和KenThompson两人于二十世纪七十年代初在设计UNIX操作系统时开发出来的。在C语言诞生以前,系统软件主要是用汇编语言编写的,原来的UNIX操作系统就是1969年由美国贝尔实验室的KenThompson和DennisRitchie利用汇编语言开发成功的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作,于是KenThompson于1970年设计出一种简单而且接近硬件的高级语言——B语言,并用B语言写了UNIX操作系统。1972年到1973年间,DennisRitchie在B语言基础上又设计了C语言。后来,C语言又被多次改进,并出现了多种版本。80年代初,美国国家标准化协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准(1989年再次做了修订)。
本书的叙述以ANSIC新标准为基础。本书选定的编译环境是TurboCV3.0。
目前,在微机上广泛使用的C语言编译系统有MicrosoftC、TurboC、BorlandC等。虽然它们的基本部分都是相同的,但还是略有差异,所以请大家注意自己所使用的C编译系统的特点和规定(参阅相应的手册)。[Return]C语言同时具有汇编语言和高级语言的优势。概括如下:(1)语言简洁、灵活,程序执行效率高。(2)运算符极其丰富,能够实现在其他高级语言中难以实现的运算功能。(3)数据类型丰富,可实现各种复杂的数据结构的运算。(4)灵活的结构化控制语句,是理想的结构化程序设计语言;以函数为程序基本单位,容易实现模块化程序设计。(5)语法不严,程序设计自由。(6)具有直接对硬件进行控制的功能。(7)可移植性好。
1.2C语言的特点(8)C语言的另一面:相对“难”学。[Return]1.3.1一个简单的C程序
1.3认识C程序
WelcometotheCworld!/*exam1_1*/#include<stdio.h>main(){printf(“WelcometotheCworld!\n”);}程序运行结果:【例1-1】在屏幕显示字符串“WelcometotheCworld!”【例1-2】计算两个数的和并输出结果。01
/*exam1_2*/02 #include<stdio.h>/*将stdio.h这个文件包含进来*/03 main() /*主函数名,函数从这里开始*/04 {05 inta,b,sum;/*定义三个整形变量:a,b和sum*/06 a=5;/*给a赋值为5*/07 b=10;/*给b赋值为10*/08 sum=a+b;/*把a+b的值赋给sum*/09 printf(“sumis%d.\n”,sum);/*输出sum的值*/10 }1.3.2C程序的基本结构
下面再来看另一个简单的C程序,并从这个例子出发说明C程序的基本结构。程序行最左边的行号是为了方便介绍程序而添加的,实际输入程序时是不需要的。【01】第1行为注释,C语言的注释以“/*”和“*/”作为注释内容的分界符。注释可增强程序的可读性,帮助我们理解程序的含义。【02】第2行是让计算机系统把文件stdio.h“包含”进来。C语言里有关输入和输出的函数都定义在这个文件里,要把结果输出到屏幕上,就要调用输出函数,也就需要把stdio.h文件包含进来。【03】第3行为程序执行的起点,即main()函数,我们把它称为“主函数”。每一个C程序都由一个或多个函数组成,其中必须有一个名为main的函数。函数体由花括号括起来,main前的int是声明main函数的返回值类型为整形,main右边的园括号内的void表示这个函数没有参数。【04】第4行的左花括号“{”为main()函数体的开始分界符。
下面我们逐行对这个程序进行详细解说。【06】第6行是一个赋值语句,把整数5赋给a。【07】第7行也是一个赋值语句,把整数10赋给b。【08】第8行把运算表达式a+b的计算结果赋给sum。【09】第9行是调用系统函数printf(),按照双引号(””)内的指定格式输出结果,在%d位置上用sum的值代替,引号内的其余字符照原样输出,\n是换行符,告诉计算机在输出完结果后将光标移到下一行的开头。【10】第10行是右花括号“}”是main()函数的结束分界符。【05】第5行声明a、b和sum为整形变量。C语言在使用变量之前必须先声明其类型,这是与Basic语言不同的。一个C程序基本包括以下几个部分:1.#include宏命令及头文件2.main()函数3.花括号{}、语句块和函数体4.变量5.语句6.输入和输出
当我们在程序中加入#include<filename>时,C编译系统会自动把<>内的头文件的内容全部包含进来,并且放置在#include这行的位置上。有时我们需要将已经编写好的另一个程序包含到本程序中,或者在程序中需要调用系统库函数,这时我们就需要使用#include命令。
如,上例中由于使用系统标准输出函数printf(),所以要将含有该函数声明信息的stdio.h文件包含进来。
#include<stdio.h>main(){…}main(){…}char*_Cdeclgets(char*s);void_Cdeclperror(constchar*s);int_Cdeclprintf(constchar*format,...);[Return]
一个C程序由一个或多个函数构成,其中必须有且只有一个主函数main(),一个函数可以调用其他函数,如上面例子中main函数调用printf函数。所有的C程序都是从main函数开始执行,并在main函数中结束。[Return]C程序以函数为单位,编写C程序就是编写一个个函数。每个函数的主体都包括在一对花括号“{}”内。有时把完成某个功能或操作的几个语句用一对花括号括起来,组成一个语句块(也叫复合语句)。若一个函数体内有多对花括号,则最外层的一对是函数体的分界符。[Return]
变量是一个C程序不可缺少的最基本的部分,是用来存放数据的。概括地说,一个计算机程序包括两个部分,第一部分是对数据的描述,第二部分是对操作的描述。变量就是用来描述数据的。C语言的变量必须先声明后使用,声明时要说明变量的数据类型和名字。C语言中的数据类型有整形(int)、浮点型(float)、字符型(char)等。[Return]每个C函数由若干个语句构成,每个语句以“;”结束,可以一行书写多个语句。C语言有表达式语句、函数调用语句、控制语句、变量定义语句等。如上面main()函数体有5个语句,第1个语句(【05】行)为变量定义语句,第2~4语句(【06】~【08】行)为赋值(表达式)语句,第5个语句(【09】行)为函数调用语句。[Return]每个程序必须有0个或多个输入,有至少一个输出。如果一个程序没有输出,我们就无从知道它的运算和操作结果。C语言的输入和输出是通过调用系统提供的标准输入输出函数实现的。如上例中调用printf()函数以指定格式输出计算结果。上例中的“printf(“sumis%d\n”,sum);”指定以双引号内的格式输出,%d处将代入相应的sum的值,双引号内的所有其它字符照原样输出,“\n”是换行符。1.3.3C程序中的单词
C语言的单词可分为标识符、关键字、分界符、空白、和运算符几类。1.C语言的标识符2.C语言的关键字3.C语言的分界符4.C语言的空白5.C语言的运算符
在C语言中,我们称变量、函数的名称、符号常量或者标号为用户标识符。C语言的标识符由英文大小写字母、数字或下划线所组成,首字母必须是英文字母或下划线。标识符的长度没有限定,决定于使用的编译系统,如Turbo
C允许标识符长度为32个字符。通常取前8个字符为有效字符,所以给变量或函数取名时最好保证前8个字符能够区别不同。要注意的是,系统的保留字(又称关键字),是不可以用作标识符的。
以下是合法的标识符例子:
min,t,SIZE,M1,x10,count_1,_myargument以下是不合法的标识符例子:for 使用关键字8h以数字开头-5以减号开头A*出现非法字符*x<y出现非法字符<下面是三个不同的标识符:count,Count,COUNT。[Return]
关键字是编译系统本身提供给用户使用的标识符,用户在进行编程时必须按照系统规定的方式使用这些关键字,而不能更改或者重新定义它们。所以用户自定义的变量名或函数名等标识符不能与关键字相同,如上面的for和short都是关键字,所以不可用作标识符。C语言提供的关键字共有32个,如表1-1所示。※注意:C语言是大小写敏感的!所有关键字都是小写的,若把某个或全部字母写成大写形式,则系统不把它当做关键字,而当成普通标识符。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 while 表1-1C语言的关键字[Return]※注意:为避免遗漏必须配对使用的符号,例如注释符号、函数体的起止标识符(花括号)、圆括号等等,在输入时,可连续输入这些起止标识符,然后再在其中进行插入来完成内容的编辑。C语言的分界符是用来分隔特定的语法单位的。如,花括号“{}”用来界定函数体的范围;圆括号“()”用来界定函数的参数;中括号“[]”用来界定数组的下标;“/*”和“*/”用来界定注释内容的范围;分号“;”用来表示一个语句的结束;等等。[Return]
一个C程序除了必需的关键字和用户自定义的标识符以外,一般还需要有一些辅助性的字符,如空格(space)、制表符、回车、换行、注释等,这些字符起到使程序的版面的层次、段落分明,反映出程序的逻辑结构,从而提高程序的可读性的作用。这些字符在编译时不会被生成任何代码,所以称它们为空白(blank)。[Return]
运算符在表达式中表示对数据执行某类运算。C语言的运算符非常丰富,共有13类34种,其中最常用到的有,算术运算符:加(+)、减(-)、乘(*)、除(/)、求余(%)5种,关系运算符:大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=)6种,赋值运算符(=),等等。各种运算符的作用将分散在后面各章节分别作详细介绍。※注意:C语言的等于运算符由两个“=”组成,即“==”,而赋值运算符是一个“=”。千万别写错!1.3.4如何编写可读性良好的C程序1.命名风格2.注释风格3.布局风格
标识符的命名习惯,尽量遵循如下原则:(1)含义明确(2)规范缩写(3)规范分隔(4)限制长度(5)大小写约定[Return]
C语言的注释格式为:/*……*/。注释时要注意以下几点:(1)“/*”和“*/”
必须成对使用,且“/”和“*”、以及“*”和“/”之间不能有空格,否则都出错。(2)注释的位置,可以单占1行,也可以跟在语句的后面。(3)如果1行写不下,可另起1行继续写。(4)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。(5)编写程序时先编写注释、后编写代码;修改程序时先修改注释、后修改代码。(6)注释不仅仅是只列出代码执行的功能,而且还应给出为什么如此编写代码的原因或理由。[Return]
一个程序的可读性与它的版面布局有很大关系。程序的版面布局又与花括号的格式和空白的使用密切相关。下面介绍常见的几种花括号格式以及空白的使用:(1)花括号的格式1)
1TBS2)
Allman3)
Whitesmith4)
GNUfor(i=1;i<=100;i++){
sum=sum+i;
}for(i=1;i<=100;i++)
{
sum=sum+i;
}for(i=1;i<=100;i++)
{
sum=sum+i;
}for(i=1;i<=100;i++)
{
sum=sum+i;
}[Return](2)空白的使用
在一个程序中适当地使用空白可提高程序的可读性。下面重点说明一下缩进的格式和标识符周围的空白。1)
缩进for(
j=0;j<2;j++)sum=sum+a[j];2)标识符周围的空白for(j=0;j<2;j++) for(k=0;k<3;k++) scanf(“%d”,&a[j][k]);for(j=0;j<2;j++) for(k=0;k<3;k++) printf(“a[%d][%d]=%d\n”,j,k,a[j][k]);一个采用4个空格的缩进的例子:在圆括号旁使用空格和在分号的右侧使用空格例子:[Return]1.4C程序的运行与调试1.4.1C程序设计的基本步骤1.规划程序——流程图
2.编写程序代码及注释——源程序(.C文件)3.编译程序代码——目标程序(.obj文件)
4.链接与执行程序——可执行程序(.exe文件)
5.排错与测试
6.程序代码的优化、修饰和保存[Return]下面以一个简单的例子说明如何绘制程序流程图。【例1-5】画出求5!的程序流程图。
(1)使result=1
(2)使i=2
(3)使result*i=>result(用=>表示存放)
(4)使i+1=>i
(5)如果i的值不大于5,返回(3)继续执行;否则输出result(此时的result的值就是5!),算法结束。用自然语言描述的算法(求解步骤)如下:绘制成流程图如下:图1-5求5!的流程图结束1=>result开始2=>iresult*i=>resulti+1=>ii>5?输出resultfalsetrue开始/结束程序前进方向数据处理判断预定义函数文件输入/输出连接点图1-6常用的流程图符号[Return]
在完成对程序的规划之后,我们便可以根据程序流程图编写程序代码了。在编写代码的过程中,我们会体会到先做规划的好处。程序规划得好,编写程序时逻辑清晰,不容易产生逻辑上的错误,避免反复修改,从而提高效率。编写代码时,不要忘记加上注释。加上注释不但方便别人了解程序的功能,而且方便日后对程序的维护与扩展。总之,一个好的程序员应该养成给编写的代码加上注释的好习惯。
程序编写完后,这些用计算机高级语言编写出来的源代码还不能直接被计算机执行,我们知道计算机能够理解的是由0和1所组成的二进制代码,所以还必须将写好的源程序翻译成为计算机能够理解的目标代码文件(扩展名为obj)。这个工作由高级语言系统提供的编译程序来完成。[Return]
一个源程序经过编译后,若这个程序与库函数或其它程序没有任何联系,便可以执行了。否则,还必须经过链接(link),才能够生成可执行文件(扩展名为exe)。这时运行这个可执行文件,便可看到程序的运行结果了。[Return]
程序通过了编译和链接,执行后得到的并不一定是期望的结果。这就说明程序虽然在语法上没有问题,但是可能在逻辑上出了问题,从而导致输出非预期的结果。这种情况下我们必须根据流程图,逐个排除每个语句的逻辑错误。另外,有时程序在某种输入数据条件下输出正确结果,但是在其它一些输入数据条件下得到不正确的结果。所以我们还必须使用各种可能的输入数据,对程序进行测试,才能保证在任何情况下程序都能正常运行,并得到正确结果,即确保程序的“健壮性”。[Return]
当程序经过测试证明结果完全正确后,有时我们还需要对程序进行优化,以提高程序的运行效率。另外,还要对源程序进行适当的排版、增加注释等修饰性操作,使程序更加层次分明,更加易读。最后,千万别忘记把我们的劳动成果妥善保存起来。1.4.2如何使用TurboC/C+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度爱奇艺体育赛事赛事直播内容制作合同:股票投资回报保障协议3篇
- 二零二五年度环保型渣土运输船租赁合同3篇
- 二零二五年电子商务平台运营咨询合同2篇
- 二零二五年度桉树木材加工节能减排合同3篇
- 二零二五版医疗扶贫公益项目合同3篇
- 二零二五版股份收购项目风险评估及控制合同3篇
- 二零二五版生态旅游区建设项目招标合同及生态保护协议3篇
- 二零二五版数据中心电梯紧急抢修及日常维护合同3篇
- 二零二五年度房产交易居间服务合同12篇
- 二零二五版国际农业劳务输出与管理合同3篇
- 2024年电信综合部办公室主任年度述职报告(四篇合集)
- 购销合同电子版完整版
- 福建省福州市延安中学2023-2024学年八年级上学期期末物理模拟试卷+
- 2024年度医院肝胆外科实习生带教计划课件
- 微机原理与接口技术考试试题及答案(综合-必看)
- 劳务投标技术标
- 研发管理咨询项目建议书
- 转钱委托书授权书范本
- 一种配网高空作业智能安全带及预警系统的制作方法
- 某墓园物业管理日常管护投标方案
- 苏教版六年级数学上册集体备课记载表
评论
0/150
提交评论