《C语言程序设计》案例讲解完整版.docx
《《C语言程序设计》案例讲解完整版.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》案例讲解完整版.docx(106页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》案例讲解完整版
C语言程序设计
能力标准:
1.了解C语言的作用;
2.熟悉C程序结构;
3.掌握TC集成调试环境的使用。
知识点:
1.C语言是人和计算机交流的一种工具;
2.C语言程序的执行过程。
模块一认识C语言
1.C语言的发展
计算机语言是计算机和人交流的工具,必须遵守一定的规则,具有一定的书写格式。
C语言就是一种计算机语言,诞生于1972年,是由美国电话电报公司(AT&T)贝尔实验室的Dennis.M.Ritchie设计。
C语言诞生至今已30多年,其发展经历了ALGOL(1960年)—CPL(1963年)—B(1970年)—C(1972年)的演变过程。
2.人机交流
人和计算机交流可以采用对话形式的一问一答方式,也可采用任务方式,即把需要交流的内容集中在一起,一次性完成。
前者的专业述语叫解释方式,后者叫编译方式。
用C语言进行人和计算机交流采用的是编译方式。
具体过程如下:
✧
#include
main()
{
floatm,k,j;
k=5;
m=1;
for(j=1;j<=k;j++)
m=m*j;
printf(“%f!
=%f\n”,k,m);
}
编程首先人将和计算机交流的内容按要求,用C语言写成任务,如要计算机计算5!
,则需要写出以下任务:
上述用C语言表示的任务,称为程序。
所谓程序指由一系指令组成,完成某个具体功能的指令集合。
✧编译计算机本身是一堆零件,它只知道高低电平,对应到二进制就是“0”和“1”这两个符号,当然它是不认识我们用上述符号写成的程序,因此我们需要将上述程序进行转换,转换成由“0”和“1”的组合来表示的二进制程序,也就是机器语言程序。
我们把这样的转换称之为编译。
✧连接为了方便程序的编写,专业人员已经将许多常用的功能写成了固定的程序,并已进行编译,我们在编写实际应用程序时可以直接使用现成的功能程序,这些功能程序要和用户编写的程序连接起来,形成最终计算机能够执行的机器语言程序。
✧执行经过上述三步之后生成的机器语言程序,在TurboC系统中称为目标程序,把目标程序交给计算机,计算机在操作系统的支持下,就能按人的要求实现相应的功能,就是执行程序,并把执行的结果输出在输出设备上,供人来阅读,从而实现人机交流。
为了区别不同过程中生成的不同对象,计算机中用不同的文件扩展名来表示,编程阶段生成的文件扩展名是.c,编译阶段生成的文件扩展名是.obj,连接阶段生成的文件扩展名是.exe。
以上过程可用图1.1表示。
3.C语言程序的基本结构
/*求圆的面积*/
#include
main()
{
floatr,s;/*定义变量r,s表示圆的半径和面积*/
r=5.365;/*给半径赋值*/
s=3.14*r*r;/*计算面积*/
printf(“s=%f\n”,s);/*输出面积*/
}
下面通过几个C语言程序的实例,介绍C语言程序的基本构成和书写格式。
【例1-1】已知圆的半径,请编程求圆的面积。
【例1-2】
/*求两个整数中的大数*/
#include
main()
{
intnum1,num2,m;/*定义变量num1,num2和m*/
scanf(“%d%d”,&num1,&num2);/*输入两个整数*/
m=max(num1,num2);/*调用max函数求大数存入m变量*/
printf(“max=%d\n”,m);/*输出大数*/
}
/*用户设计的函数max*/
intmax(intx,inty)
{
if(x>y)
returnx;/*比较返回大数*/
else
returny;
}
请编程求两个整数中的大数。
结合以上示例,可见C语言程序由以下几部分组成:
1.C语言程序由函数组成,每个函数完成相对独立的功能,函数是C语言程序的基本模块单元。
main和max是函数名,x,y是函数max的形式参数;
2.一个C语言程序总是从main函数开始执行,main函数执行结束,程序执行即结束;
3.C语言程序的开头部分一般是编译预处理命令(如#include,#define命令)和全局变量的定义语句。
4.C语言程序的书写格式
1.C语言的语句以分号“;”作为语句结束标志;
2.每行通常写一条语句,一行也可写多条语句,长语句也可分在多行书写;
3.为了使程序更加清晰,便于阅读,采取缩进书写格式,不同一层次的语句依次缩进两个字符或者一个水平制表符;
4.注释由“/*”开始,由“*/”结束;
5.复合语句由“{}”括起来;
6.编译预处理命令后不加“;”。
5.人机交流过程的演示(TC集成调试环境的使用)
TurboC是美国Borland公司的产品,Borland公司是一家专门从事软件开发、研制的大公司。
该公司在1987年首次推出TurboC1.0产品,其中使用了全然一新的集成开发环境,即使用了一系列下拉式菜单,将文本编辑、程序编译、连接以及程序运行一体化,大大方便了程序的开发。
TurboC2.0则是该公司1989年出版的,TurboC2.0在原来集成开发环境的基础上增加了查错功能,并可以在Tiny模式下直接生成.com(数据、代码、堆栈处在同一64K内存中)文件,还可对数学协处理器(支持8087/80287/80387等)进行仿真。
使用TurboC2.0可以进行C语言源程序的编辑、编译、连接和运行,方便用户程序的调试。
5.1TurboC2.0基本配置要求
TurboC2.0可运行于IBM-PC系列微机,包括XT,AT及IBM兼容机。
此时要求DOS2.0或更高版本支持,并至少需要448K的RAM,可在任何彩、单色80列监视器上运行。
支持数学协处理器芯片,也可进行浮点仿真,这将加快程序的执行。
5.2TurboC2.0的启动
在DOS系统下TurboC2.0安装完毕,将在C盘根目录下建立一个TC子目录,TC下还建立了两个了目录LIB和INCLUDE,LIB子目录中存放库文件,INCLUDE子目录中存放所有头文件。
运行TurboC2.0时,只要在TC子目录下键入TC并回车即可进入TurboC2.0集成开发环境。
5.3TurboC2.0窗口介绍
进入TurboC2.0集成开发环境中后,屏幕上显示如图1.2的TC工作窗口。
其中顶上一行为TurboC2.0主菜单,中间窗口为编辑区,接下来是信息窗口,最底下一行为参考行。
这四个窗口构成了TurboC2.0的主屏幕,以后的编程、编译、调试以及运行都将在这个主屏幕中进行。
5.4C语言程序的编辑
1.编辑一个新文件
如果要输入或编辑一个新的C语言程序,应该先选File菜单,然后选择子菜单new,编辑窗口被清空,光标定位在左上角(Line1、Col1),这时注意默认的文件名为“NONAME.C”。
用户可以开始输入和编辑源程序了。
输入和编辑程序的操作类似于通常的字处理软件,通过Insert键进行插入和改写状态的切换,如果有“Insert”显示,表示处于插入状态。
程序输入完毕要及时进行保存,保存文件操作应选择File菜单的子菜单Save,这时会弹出一个对话框如图1.3所示,要求用户输入文件名及其路径来修改默认的路径和文件名。
注意文件的扩展名“.c”不可省略。
一旦用新的文件名保存文件后,编辑窗口默认的文件名“NONAME.C”被改为新的文件名。
2.编辑一个已存在的文件
如果要重新编辑一个已经存在的文件,应选择File菜单下的子菜单Load,这时会弹出一个类似于图1.3的对话框,当用户输入要打开的文件名和路径后,即打开了此文件,这时用户就可对其进行重新编辑并保存。
编辑窗口这时会显示打开的文件名。
3.重命名一个文件
如果要对正在编辑的文件重命名,请选择File菜单下的子菜单Writeto,这时会弹出一个同样类似图1.3的对话框,要求用户输入新的文件名和路径。
完成之后编辑窗口将以新的文件名显示。
5.5C语言程序的编译和连接
编辑好源程序并存盘后,应当对源程序进行编译、连接和运行。
在TurboC集成环境中,进行编译、连接和运行是十分方便的,既可以将编译、连接和运行分三个步骤进行,也可以将编译和连接合起来作为一步进行,然后再运行;还可以三者合在一起一次完成。
既可对单个模块的程序进行编译、连接和运行,也可以一次对多个文件模块的程序进行编译、连接和运行。
1.对单文件程序的编译和连接
(1)编译选择Compile菜单下的子菜单ComplietoOBJ,此时系统显示默认的目标文件名。
编译后,目标文件将保存在当前工作目录或配置文件TCCONFIG.TC所指定的输出目录中。
(2)连接有了目标文件后,还不能直接运行,还要将目标文件与系统提供的库函数和包含文件等连接成一个可执行文件(扩展名为.exe),才能运行这个.exe文件。
选择Compile菜单的子菜单LinkEXEfile,就可执行连接操作,在当前工作目录或者配置文件TCCONFIG.TC所指定的输出目录中生成一个可执行文件。
应注意的是,必须是在编译没有错误的情况下才能进行连接。
(3)一次完成编译和连接选择Compile菜单下的子菜单MakeEXEfile,即可一次完成编译和连接,从而在当前工作目录或者配置文件TCCONFIG.TC所指定的输出目录中生成一个目标文件和一个可执行文件。
注:
在选择相关菜单时,请注意有些菜单后面跟有快捷键提示,也就是说可以直接按对应的快捷键实现菜单的功能。
如进行存盘操作,需要选择File菜单的子菜单Save,也可以直接按F2键,相当于进行了上面的选择。
2.对多个程序文件进行编译和连接
如果一个源程序包含多个文件模块,则应当对各文件分别进行编译,得到多个目标文件,然后将这些目标文件和库函数、包含文件等连接成一个可执行文件。
TurboC提供了多个程序文件进行编译和连接的简便方法,即将这些文件组成一个“项目”,为此要建立一个“项目文件”,以.prj作为扩展名,项目文件中包含这些文件,然后将该项目文件交付编译和连接,就可以得到可执行文件了。
具体步骤如下:
(1)在TurboC编辑环境中,输入各源文件名,如有两个文件需要进行编译和连接,则.prj文件内容见图1.4所示。
(2)将上述编辑的内容保存成项目文件。
选择File菜单的子菜单Save或Writeto,输入项目文件名包括路径,并且注意一定要包含扩展名.prj,以表示建立的是项目文件。
(3)建立项目。
选择Project菜单的子菜单Projectname,输入刚建立的项目文件名。
(4)编译和连接。
选择Compile菜单下的子菜单MakeEXEfile,系统就会对此项目文件进行编译和连接,并生成两个目标文件和一个可执行文件,生成的可执行文件名同项目文件名。
注:
在选择MakeEXEfile菜单进行编译和连接时,系统首先查找有无项目文件,如果在Projectname中指定了项目文件,则系统优先编译该项目文件,而不是编译编辑窗口中的文件。
应特别注意,在处理完一个多程序文件的编译和连接后,应及时将Projectname清空,否则就会在编译连接时仍然把项目文件当做编译对象,而不是编译编辑窗口中的源文件。
3.编译和连接过程中的显示信息
(1)编译过程中出现的信息如图1.5所示,窗口最上方的Compiling表示是编译阶段的信息;第一行表示编译的主文件是HELLO.C;第二行正在编译的是正在编辑的文件HELLO.C;接下来表示编译的行数是220,警告0个,错误1个;下面一行表示占用的存储空间为299KB;最后一行表示编译成功(Success)或者有错误(Errors),请用户按任意键继续。
需要解释的是,只有编译没有错误时,才可以进行连接,否则仍需要进行编辑,再编译。
(2)连接过程中出现的信息如图1.6所示,连接过程出现的信息和编译的信息类似,只有警告和错误都为0,才表示连接成功,并且最下面也有文字提示Success。
只有连接成功才能生成可执行文件。
5.6C语言程序的运行
经过成功的编译和连接之后,就生成了可执行文件,这时就可以运行了。
运行一个程序,可采用以下几种方法:
1.在TC的集成环境中运行
选择Run菜单下的子菜单Run,即可运行程序。
2.在DOS环境下运行
在DOS提示符下,输入可执行文件的文件名和路径,即可运行程序。
3.在WINDOWS环境下运行
(1)选择WINDOWS开始菜单中的运行子菜单,然后输入文件名及路径。
(2)在资源管理器中双击所生成的可执行文件名。
5.7在TC集成环境中查看运行结果
在TC集成环境中有一个用户屏幕(UserScreen),程序运行结果将显示在用户屏幕,从编辑窗口切换到用户屏幕,选择Run菜单下的子菜单UserScreen,或用快捷键Alt+F5即可进入用户屏幕,从用户屏幕按任意键即可进入编辑窗口。
6.C语言学习要求
1.按时上课及上机;
2.勤于思考,多查阅资料;
3.多进行实践;
4.具有团队协作精神;
5.分组学习。
7.实验一TC集成调试环境的初识
7.1实验目的
1.熟悉TC集成调试环境;
2.掌握在TC环境下编辑、编译、连接和运行C语言程序的过程;
3.熟悉C语言程序的组成及书写格式。
7.2实验要求
1.普通微机;
2.TC集成调试环境。
7.3实验内容及步骤
1.TC集成调试环境的熟悉
1.1启动TC集成调试环境;
1.2熟悉各菜单项;
1.3熟悉各功能键;
1.4熟悉编辑窗口各部分的意义;
1.5退出TC集成环境。
2.调试【例1.1】程序并记录相关信息
2.1输入【例1.1】程序,输入时省略注释部分。
源程序:
2.2用program1.c文件名保存文件在自己的目录下。
2.3编译program1.c源程序文件,生成program1.obj目标文件(该步可能需要反复进行)。
编译提示信息:
修改情况记录:
错误原因分析:
2.4连接程序,生成可执行文件program1.exe(2.3和2.4两步可能需要反复进行)。
连接提示信息:
修改情况记录:
错误原因分析:
2.5执(运)行program1.exe文件,记录输出结果。
运行结果:
2.6修改【例1.1】程序,求半径为6.2圆的面积,重复2.1~2.5步骤,并记录每一步相关信息。
3.调试【例1.2】程序并记录相关信息,用program2.c文件名保存源程序。
调试步骤同2.。
4.编程求5!
,并调试该程序,记录每一步相关信息。
7.4思考题
1.请总结C语言程序调试的步骤。
2.为什么程序修改后需要重新进行编译、连接和运行?
3.TC为什么称为集成调试环境?
8.课后练习(要求所有程序必须上机运行通过)
1.模仿讲议中C语言程序,编写程序求圆的周长。
2.模仿讲议中C语言程序,编写程序求两个整数中的小数。
3.上机运行下列程序,并记录输出结果。
4.
#include
main()
{
printf(“HelloCprogramworld!
\n”);
printf(“Iamanuniversitystudent!
\n”);
}
请参照第3题的程序,编程输出下列图形。
*
**
**
******
5.请参照第4题的程序,编程输出下列图形。
(可选做)
*
**
**
*********
6.C语言程序由哪几部分组成?
其程序的基本单位是什么?
9.补充阅读
9.1计算机语言的发展过程
1.第一代语言----机器语言(低级语言)
机器语言是由0、1组成的机器指令集合,是面向机器的语言。
要使计算机按人的意图工作,就必须使计算机懂得人的意图,接收人向它发出的命令和信息。
人要和机器交换信息就要解决一个“语言”的问题。
计算机并不懂人类的语言(无论是中文或英文),例如,我们要写y=2x+3,机器不能接受。
它只能识别0和1两种状态,如光电输入机中纸带有孔的地方代表1,无孔的地方代表0。
由0和1组成各种排列组合,通过线路转变成电信号,让计算机执行各种不同的操作。
这种直接用0和1组成的机器指令编写程序,就是机器语言源程序。
对计算机来说,这是它唯一能直接读懂的语言,所以,通常称之为机器语言。
但是,对于使用计算机的人来说,这是十分难懂的语言,它难读、难记、难写,容易出错,不同的机型又不通用,显然人和机器之间的通信存在巨大的鸿沟,只有填补上这个鸿沟,才能让用户使用起来方便容易,机器又能懂,计算机才能发挥更大的作用,为此,人们研究了一种汇编语言。
2.第二代语言----汇编语言(低级语言)
LDAA取出A
ADDBA和B相加
STAC存入C
PRINTC打印C
STOP停止
汇编语言也叫符号语言,它是把用二进制数表示的指令,用一些符号来表示,例如,用表示操作的英文缩写来代替汇编语言指令代码。
下面是一段汇编语言代码。
这种用符号代替二进制代码的指令,就叫汇编语言。
像LDA、ADD这类符号称之为指令符号或助记符。
用汇编语言编写的程序,称为汇编语言程序。
这种语言,相对于机器语言来说容易读、容易记,但是,机器却不能识别。
因此,计算机是无法执行的。
为了让机器能执行汇编语言程序,这时就需要一个翻译,正如一个不懂汉语的外国人到中国来无法同中国人直接交流,需要借助于翻译一样,借助于翻译,将汇编语言程序翻译成机器语言程序,这个翻译过程叫做“汇编”。
汇编后产生的机器代码称为目标程序。
翻译可由人手工完成,也可用计算机来完成,用计算机来做翻译,实际上是研制了翻译程序,把这个翻译程序称为汇编程序。
汇编过程如图1.7所示。
汇编语言使程序设计工作前进了一大步,但是仍然存在很多缺点:
第一,不便于我们求解问题过程的描述,如一个数学公式,汇编语言的表达式与人们的习惯表达形式差距很大;第二,它仍然是面向机器的语言,不同机型,汇编语言也不一样,因此用它编制程序,没有通用性。
为了克服这些不足之处,人们进一步研制开发出了高级语言。
3.第三代语言----算法语言(高级语言)
算法语言是更接近人的自然语言和数学表达式的一种语言,由表达不同意义的“关键字”和“表达式”按照一定的语法语义规则组成、完全不依赖机器的指令系统。
这样的高级语言为人们提供了很大的方便,编制出来的程序易读易记,也便于修改、调试,大大提高了编制程序的效率和程序的通用性,便于推广交流,从而极大地推动了计算机的普及与应用。
常见的BASIC、FORTRAN、ALGOL、COBOL、C等都是高级语言。
高级语言更接近人的习惯,便于人的理解与使用,可计算机却更难理解与接受,计算机不能直接理解那些英语单词、数学表达式。
所以,为了填补计算机和人之间的鸿沟,还得求助于翻译。
这种翻译通常分为两种形式,一种叫解释方式,另一种叫编译方式。
编译方式是事先编好一个称为编译程序的机器指令程序,并放在计算机中,把用高级语言编写的源程序输入计算机,编译程序就把源程序整个翻译成用机器指令表示的目标程序,然后执行该目标程序,得到计算结果。
其过程如图1.8所示。
解释方式是事先编好一个称为解释程序的机器指令程序,并放在计算机中,把用高级语言编写的源程序输入计算机,它并不像编译方式那样把源程序整个翻译成用机器指令表示的目标程序,而是逐句地翻译,译出一句立即执行,即边解释边执行。
其过程如图1.9所示。
C语言采用的是编译方式。
高级语言的用户可以完全不顾机器指令,也不必深入懂得计算机内部结构和工作原理,就能方便地使用高级语言编写程序进行各种科学计算和事务处理,并且由于采用编译(解释)程序代替人工翻译,大大降低了人们的工作量,因此,有人说,高级语言的出现是计算机发展中“最惊人的成就”。
目前,世界上已有100多种高级语言,比较流行的有几十种之多,比如:
✧FORTRAN(FormulaTranslator的缩写)语言是世界上最早出现的高级语言,从1954年问世以来,经过几次大的发展,功能有很大的增强,它特别适用于科学计算和工程计算。
✧COBOL(CommonBusinessLanguage的缩写)语言适用于非数值计算的商业、管理领域。
✧PASCAL语言是最早出现的结构化语言,适用于计算机教学。
✧PL/1语言是一种大型语言,功能强,适用于数值计算和数据处理。
✧Ada语言是一种工程化的大型语言,适用于大型软件工程。
✧C语言是近年来广泛推广的结构化语言,适用于编写系统软件。
✧BASIC语言是一种简单会话式语言,在世界上应用最广泛。
4.第四代语言----非过程化语言(高生产率语言)
非过程化语言就是目前比较流行的面向对象语言,该语言只需要编程人员对问题进行描述。
比如C++/VisualC++,JAVA语言等。
目前也出现了智能化语言,主要用于人工智能等领域。
比较有代表性的有LISP语言和PROLOG语言。
9.2C语言的特点
C语言是一种出现比较晚的高级语言,它吸取了早期高级语言的长处,克服了某些不足,形成了自己的风格和特点。
总的来说,C语言是一种简洁、功能强大、可移植性好的结构化程序设计语言。
C语言具有如下特点:
✧C语言简洁、紧凑;
✧C语言是一种结构化程序设计语言;
✧C语言具有丰富的数据类型;
✧C语言提供了丰富的运算符;
✧C语言可以直接对硬件进行操作;
虽然C语言具有灵活简炼的特点,但在有些方面也存在不足,了解其不足有助于使用,避免出现错误。
其不足简单概括如下:
✧运算符多,难于记忆;
✧C语言类型转换比较灵活,在许多情况下不做检查,对类型要求不够严格;
✧C语言中对数组进行初始化主要是判定是否越界,越界时会发生编译错误,但在动态赋值时不判定越界,这样容易造成数据存储方面的混乱。
总之,C语言有诱人的优点,也有值得注意的不足,使用时应特别加以注意。
模块二C语言程序设计入门
能力标准:
1.能编写、分析基本的C语言程序;
2.熟练掌握程序的多种调试方法。
知识点:
1.基本数据类型;
2.各种运算符及表达式;
3.三种基本的程序结构。
案例一一个经典C语言入门程序
—helloworld.c
教学目的:
1.巩固C语言程序结构;
2.掌握printf函数输出字符串的功能;
3.掌握clrscr函数的功能与使用;
4.熟悉用编译预处理命令#include命令包含头文件。
在模块一中,我们已经知道C语言程序由函数构成,并且任何一个程序有且只有一个main函数,程序的执行总是从main函数开始的,由main函数的第一条语言开始执行,到main函数的最后一条语句结束。
下面是一个最简单的C语言程序,我们将对该程序的每一行进行分析。
/*Helloworld!
*/
#include
main()
{
printf(“Helloworld!
\n”);
}
一、案例分析
1.“/*Helloworld!
*/”行是一个注释行,用来说明该段程序的功能。
一般如果在程序的开头加上这样的注释行,便于用户阅读与分析程序。
注释可以用中文或英文,如果操作系统是英文的,则中文字符在编译时是不认识的符号,建议使用英文注释,便于和国际接轨。
2.“#includ