C语言程序设计_第1页
C语言程序设计_第2页
C语言程序设计_第3页
C语言程序设计_第4页
C语言程序设计_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计陈易明E-mail: 参考书参考书KR “C PROGRAMMING LANGUAGE ”课时安排课时安排理论课理论课 :32学时学时上机上机训练:训练:16学时学时考核成绩考核成绩平时考勤平时考勤10%,上机报告,上机报告20%,期末考试,期末考试70%参考书与课时安排课程要求课后请复习课后请复习保持课堂安静,积极回答问题保持课堂安静,积极回答问题认真、独立、按时完成并提交作业认真、独立、按时完成并提交作业重视上机实践,有效利用上机时间重视上机实践,有效利用上机时间第一章 C语言概述nC语言发展历史nC语言基本特点nC语言程序结构n编译和运行程序n1.1 C语言发展历史程序设计

2、语言的发展机器语言汇编语言高级语言面向过程(C)面向对象(C+)CPU指令系统,由0、1序列构成的指令码组成如:10000000 加 10010000 减用助记符号描述的指令系统如 ADD A, B面向机器的语言程序设计是数据被加工的过程程序设计关键是定义类,并由类派生对象冯.诺依曼结构:计算机运算器控制器存储器主机:I/O设备:键盘、显示器等中央处理器CPU 高级语言高级语言n面向开发者的语言面向开发者的语言n以接近人类语言的形式来表现:以接近人类语言的形式来表现:n具有具有标识符标识符,关键字关键字,数据类型数据类型等,按一等,按一定的规则组成程序代码,便于开发和维护,定的规则组成程序代码

3、,便于开发和维护,可读和开发性大大增强。可读和开发性大大增强。C语言的发展史n1972年年 美国贝尔实验室的美国贝尔实验室的Dennis.M.Ritchie 设计出设计出C语言,并语言,并用其将用其将UNIX系统全部改写并实现。系统全部改写并实现。nC语言的设计目的是为描述和实现语言的设计目的是为描述和实现UNIX操作系统提供一种工具语言操作系统提供一种工具语言n由于语言的强大功能和良好的可移由于语言的强大功能和良好的可移植性,植性,C语言先后被移植到各种大、语言先后被移植到各种大、中、小和微型计算机上,并得到了广中、小和微型计算机上,并得到了广泛的使用,成为当代最优秀的程序设泛的使用,成为当

4、代最优秀的程序设计语言之一。计语言之一。 C语言的前生n1960年出现的年出现的Algol 60,它是一种面向问题的高级语言,它是一种面向问题的高级语言,离硬件比较远,不适合用来编写系统程序。离硬件比较远,不适合用来编写系统程序。n1963年英国剑桥大学推出了年英国剑桥大学推出了“组合编程语言组合编程语言”(Combined Programming Language,CPL),它在),它在Algol 60的基础上更接近于硬件,但规模较大,难以实现。的基础上更接近于硬件,但规模较大,难以实现。n因此,因此,1967年剑桥大学的年剑桥大学的Matin Richards对对CPL进行了进行了简化,提

5、出了简化,提出了BCPL(Basic Combined Programming Language)语言。)语言。 u一切从一个叫一切从一个叫“Space Travel”的电的电子游戏开始子游戏开始C语言的创世纪语言的创世纪n1963年,美国麻省理工学院年,美国麻省理工学院MIT、贝尔实验室和通用电器公司决定联合、贝尔实验室和通用电器公司决定联合开发一个操作系统开发一个操作系统MULTICS,其设计目标是,其设计目标是“公用计算服务系统公用计算服务系统”。n那时,计算机还很昂贵,主要是安装在一些政府部门、企业和科研机那时,计算机还很昂贵,主要是安装在一些政府部门、企业和科研机构,一般的家庭买不起

6、,但有时人们又想使用计算机来完成一些计算构,一般的家庭买不起,但有时人们又想使用计算机来完成一些计算任务。所以该项目的出发点是想提供一种计算服务,任务。所以该项目的出发点是想提供一种计算服务,n在城市里布置一台计算机主机,然后用户在自己的家里,使用终端并在城市里布置一台计算机主机,然后用户在自己的家里,使用终端并且通过电话线来接入这台主机。终端很便宜,只有显示器、键盘和通且通过电话线来接入这台主机。终端很便宜,只有显示器、键盘和通信模块,每个家庭都买得起,他们使用终端来连接计算机,然后像使信模块,每个家庭都买得起,他们使用终端来连接计算机,然后像使用水、电、煤气等生活资源那样来使用这台计算机的

7、计算资源,并缴用水、电、煤气等生活资源那样来使用这台计算机的计算资源,并缴纳相应的费用。纳相应的费用。n这样一来,在主机上必须运行一个操作系统,来对整个系统的资源进这样一来,在主机上必须运行一个操作系统,来对整个系统的资源进行管理。行管理。 nMULTICS系统非常庞大、复杂,它的研制难度远远超出系统非常庞大、复杂,它的研制难度远远超出了人们的预料,因此,贝尔实验室和通用电器公司先后退了人们的预料,因此,贝尔实验室和通用电器公司先后退出了这个项目。出了这个项目。n1969年,当贝尔实验室退出该项目后,它的一个研究员年,当贝尔实验室退出该项目后,它的一个研究员Ken Thompson在在MULT

8、ICS操作系统上编写了一个名为操作系统上编写了一个名为“太空旅行太空旅行”(space travel)的游戏,模拟了一个飞行)的游戏,模拟了一个飞行员驾驶着一艘宇宙飞船在太阳系中遨游,并在各个星体上员驾驶着一艘宇宙飞船在太阳系中遨游,并在各个星体上着陆。着陆。 n后来,由于无法继续访问后来,由于无法继续访问MULTICS操作系统,他就在贝操作系统,他就在贝尔实验室里找了一台没有人使用的尔实验室里找了一台没有人使用的PDP-7计算机,想把游计算机,想把游戏程序移植到这台机器上。戏程序移植到这台机器上。n但是,当时计算机硬件所能执行的都是用机器语言来描述但是,当时计算机硬件所能执行的都是用机器语言

9、来描述的指令,而对于不同类型的计算机来说,它们的机器语言的指令,而对于不同类型的计算机来说,它们的机器语言是不一样的,所以在是不一样的,所以在MULTICS系统上运行的程序,不能系统上运行的程序,不能直接把它搬到直接把它搬到PDP-7这种类型的计算机上去运行。这种类型的计算机上去运行。 n因此,因此,Thompson就和贝尔实验室的另外一名研究员就和贝尔实验室的另外一名研究员Dennis Ritchie,他们两个人一起,在另外一台,他们两个人一起,在另外一台GE-635计算机上,利用它的操作系统,即计算机上,利用它的操作系统,即GECOS所提供的一个所提供的一个交叉汇编器,把空间旅行游戏用交叉

10、汇编器,把空间旅行游戏用PDP-7的汇编语言重新编的汇编语言重新编写了一遍,并且生成写了一遍,并且生成PDP-7的机器语言指令,然后用穿孔的机器语言指令,然后用穿孔纸带的形式把它转移到了纸带的形式把它转移到了PDP-7上面,这样,就可以玩了。上面,这样,就可以玩了。 nQuestion:为什么不直接在为什么不直接在PDP-7这台计算机上编程呢,而需要使用这台计算机上编程呢,而需要使用第三台机器第三台机器GE635呢?呢?n原因很简单,这台原因很简单,这台PDP-7计算机之所以没人来用,是因为它是一台计算机之所以没人来用,是因为它是一台光光秃秃秃秃的计算机,只有硬件而没有任何软件,连汇编程序都没

11、有,这样,的计算机,只有硬件而没有任何软件,连汇编程序都没有,这样,人们就没有办法在上面编程,如果实在想编程的话,只能直接使用机人们就没有办法在上面编程,如果实在想编程的话,只能直接使用机器语言。但机器语言都是一些器语言。但机器语言都是一些0、1字符串,太难懂了,所以没有人愿字符串,太难懂了,所以没有人愿意使用它。意使用它。n Question: 为什么为什么PDP-7计算机只是硬件没有软件?计算机只是硬件没有软件?n当时,计算机水平还很落后,很多研究小组申请项目研制计算机,仅当时,计算机水平还很落后,很多研究小组申请项目研制计算机,仅仅是针对硬件架构,当计算机做好后,测试性能后项目组的任务就

12、完仅是针对硬件架构,当计算机做好后,测试性能后项目组的任务就完成了,然后再研制更新的计算机。成了,然后再研制更新的计算机。n如果有需要,则用机器语言编写程序,然后在纸带上打上孔,让计算如果有需要,则用机器语言编写程序,然后在纸带上打上孔,让计算机读入(有孔、无孔,分别代表机读入(有孔、无孔,分别代表1、0) 。Question: 为什么不直接在为什么不直接在GE635上玩游戏呢?上玩游戏呢?答案:一个字,答案:一个字,“贵贵”,两个字,两个字“很贵很贵”,三个字,三个字“非常贵非常贵”玩一小时游戏花费玩一小时游戏花费75美元(当时价值美元(当时价值25桶石油桶石油,现在按现在按70美元美元/桶

13、石油算,约桶石油算,约5250美元)。美元)。n后来,后来,Thompson觉得这台觉得这台PDP-7计算机空在那里有点可计算机空在那里有点可惜,所以就和惜,所以就和Ritchie等人开始为它编写一个新的操作系等人开始为它编写一个新的操作系统,也就是说,在硬件的基础上,再给它增加一些软,这统,也就是说,在硬件的基础上,再给它增加一些软,这样,这台机器就能够用起来,就能做更多的事情。样,这台机器就能够用起来,就能做更多的事情。n他们先是写好了这个操作系统的文件系统和一组基本的软他们先是写好了这个操作系统的文件系统和一组基本的软件工具,然后再编写了一个件工具,然后再编写了一个PDP-7汇编语言的编

14、译器。有汇编语言的编译器。有了这些软件工具后,就能直接在了这些软件工具后,就能直接在PDP-7上编程了。上编程了。n到了到了1970年,这个操作系统的基本元素都已经完成了,年,这个操作系统的基本元素都已经完成了,他们给系统起了一个名字,也就是他们给系统起了一个名字,也就是UNIX。 n到了到了1970年的夏季,研究小组得到了一台新的、功能更强大的机器年的夏季,研究小组得到了一台新的、功能更强大的机器PDP-11,因此需要把,因此需要把UNIX系统从系统从PDP-7移植到移植到PDP-11上面去上面去n这项工作非常的烦琐,因为整个系统都是用汇编语言来编写的,需要这项工作非常的烦琐,因为整个系统都

15、是用汇编语言来编写的,需要把每一条把每一条PDP-7汇编语言指令都转换为相应的汇编语言指令都转换为相应的PDP-11汇编语言指令,汇编语言指令,工作量非常大。工作量非常大。n更重要的是,这种移植工作是一次性的,如果以后又来了一台新的机更重要的是,这种移植工作是一次性的,如果以后又来了一台新的机器,那么整个移植工作又得重新来过,所以这是一个很大的问题。器,那么整个移植工作又得重新来过,所以这是一个很大的问题。n为解决这个问题呢?研究小组就开始考虑用某种高级语言来重写整个为解决这个问题呢?研究小组就开始考虑用某种高级语言来重写整个系统,以提高系统的可移植性和可懂性。系统,以提高系统的可移植性和可懂

16、性。 nThompson为了提高为了提高UNIX操作系统的可移植性,想要用某种操作系统的可移植性,想要用某种高级语言来重写整个系统。但是采用哪一种高级语言来做这件高级语言来重写整个系统。但是采用哪一种高级语言来做这件事呢?他的想法是自己去设计一种高级语言。事呢?他的想法是自己去设计一种高级语言。n他以他以BCPL语言为基础,又作了进一步的简化,设计出很简单语言为基础,又作了进一步的简化,设计出很简单而且很接近硬件的而且很接近硬件的B语言,这个名称取自于语言,这个名称取自于BCPL的第一个字母。的第一个字母。n但是但是B语言过于简单,是一种没有数据类型的语言,功能很有语言过于简单,是一种没有数据

17、类型的语言,功能很有限。因此,当他试图用限。因此,当他试图用B语言来重写语言来重写UNIX操作系统时,效果并操作系统时,效果并不太好。不太好。n到了到了1972年,年,Ritchie在在B语言的基础上又设计出了语言的基础上又设计出了C语言,语言,这个名称取自于这个名称取自于BCPL的第二个字母。的第二个字母。nC语言既保持了语言既保持了BCPL和和B语言的精炼、接近硬件等优点,语言的精炼、接近硬件等优点,又克服了它们过于简单、数据无类型等缺点,所以很快就又克服了它们过于简单、数据无类型等缺点,所以很快就成为研究小组内部的首选编程语言。成为研究小组内部的首选编程语言。 n后来,后来,Ritchi

18、e和和Thompson两个人合作,把整个两个人合作,把整个UNIX系系统用统用C语言重新写了一遍,这样,以后再需要移植的时候,语言重新写了一遍,这样,以后再需要移植的时候,就方便多了,大部分的系统代码都无需改动。就方便多了,大部分的系统代码都无需改动。n1977年,出现了不依赖于具体机器的年,出现了不依赖于具体机器的C语言编译器,使得语言编译器,使得把一个把一个C程序从一台机器移植到另一台机器上所需要的工程序从一台机器移植到另一台机器上所需要的工作大大地简化了,这就推动了作大大地简化了,这就推动了UNIX操作系统迅速地在各操作系统迅速地在各种类型的机器上得以实现。种类型的机器上得以实现。n反过

19、来,随着反过来,随着UNIX系统日益广泛的使用,系统日益广泛的使用,C语言也得到了语言也得到了迅速地推广。所以说,迅速地推广。所以说,C语言和语言和UNIX系统关系非常密切,系统关系非常密切,在发展过程中它们是相辅相成的。在发展过程中它们是相辅相成的。 C语言的发展史告诉我们:语言的发展史告诉我们:1)游戏是推动计算机软件技术发展)游戏是推动计算机软件技术发展的重大推动力!的重大推动力!2)玩游戏是很耗钱或费时间的。)玩游戏是很耗钱或费时间的。3)适量游戏有助于身心健康,并能)适量游戏有助于身心健康,并能极大促进电脑水平的提高。极大促进电脑水平的提高。Ritchie和Thompson在开发UN

20、IX很贵的游戏机,绝对的很贵的游戏机,绝对的“发烧级发烧级”接受美国国家技术勋章接受美国国家技术勋章游戏玩家游戏玩家的终极梦的终极梦想想传说中的传说中的神器,声神器,声望望100,000Thompson(左)和(左)和Ritchie(中)于(中)于1999年接受当时美国年接受当时美国总统克林顿授予的国家技术勋章总统克林顿授予的国家技术勋章n一九七八年由美国电话电报公司一九七八年由美国电话电报公司(AT&T)贝尔实验室正式贝尔实验室正式发表了语言。发表了语言。nB.W.Kernighan和和D.M.Ritchit合著了著名的合著了著名的“THE C PROGRAMMING LANGUAG

21、E”一书。通常简称为一书。通常简称为K&R,也有人称之为,也有人称之为K&R标准。标准。n但是,在但是,在K&R中并没有定义一个完整的标准中并没有定义一个完整的标准C 语言,语言,后来由美国国家标准协会(后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个)在此基础上制定了一个C 语言标准,语言标准,于一九八三年发表。通常称之为于一九八三年发表。通常称之为ANSI C。C 语言标准语言标准语言版本 n 目前最流行的语言有以下几种:目前最流行的语言有以下几种:n Microsoft C 或称或称 MS C

22、n Borland Turbo C 或称或称 Turbo Cn AT&T Cn这些语言版本都实现了这些语言版本都实现了ANSI C标准,并在此标准,并在此基础上各自作了一些扩充,使之更加方便、完基础上各自作了一些扩充,使之更加方便、完美。美。 n我们学习的是我们学习的是Turbo CC语言的基本特点:n1、 C语言被称为语言被称为“高级语言中的低级语言高级语言中的低级语言”,这样说不是指它的,这样说不是指它的功能差或难于使用,而是指它功能差或难于使用,而是指它 具有许多汇编语言等低级语言才具具有许多汇编语言等低级语言才具备的功能,备的功能,n C语言允许直接访问物理地址,能进行位操作,

23、能实现汇编语言的语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。大部分功能,可以直接对硬件进行操作。n 所以所以C语言在系统设计十分有效,过去系统软件只能用汇编语言编语言在系统设计十分有效,过去系统软件只能用汇编语言编写,使用写,使用C语言可以减轻程序的负担,提高效率,写出来程序也更语言可以减轻程序的负担,提高效率,写出来程序也更具有可移植性。具有可移植性。计算机的层次C语言的基本特点:n2、C语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。 ANISC语言只有语言只有32个关健字,个关健字,9种控制语句。我们学习的种控制语句。我们学

24、习的TC扩充了扩充了11个关键字,一共也才个关键字,一共也才43个关键字。个关键字。C语言的基本特点:n3、运算符丰富。共有、运算符丰富。共有34种。种。C把括号、赋值、逗号等都把括号、赋值、逗号等都作为运算符处理。从而使作为运算符处理。从而使C的运算类型极为丰富,可以实的运算类型极为丰富,可以实现其他高级语言难以实现的运算。现其他高级语言难以实现的运算。n4、具有结构化的控制语句。、具有结构化的控制语句。n5、语法限制不太严格,程序设计自由度大。、语法限制不太严格,程序设计自由度大。n6、生成目标代码质量高,程序执行效率高。、生成目标代码质量高,程序执行效率高。 C语言的基本特点:语言的基本

25、特点:n7、与汇编语言相比,用、与汇编语言相比,用C语言写的程序可移植性好。语言写的程序可移植性好。 n8、C语言是程序员的语言,是为专业程序员设计的语言,它实现了语言是程序员的语言,是为专业程序员设计的语言,它实现了程序员的期望:很少限制,程序设计自由度大,方便的控制结构,独程序员的期望:很少限制,程序设计自由度大,方便的控制结构,独立的函数,紧凑的关键字集合和较高的执行效率。立的函数,紧凑的关键字集合和较高的执行效率。n缺点:缺点:n 语法限制不太严,编译器不进行太多的错误检查,程序员在编程如语法限制不太严,编译器不进行太多的错误检查,程序员在编程如果不注意的话,很容易出现编译通过但程序出

26、错的现象。果不注意的话,很容易出现编译通过但程序出错的现象。第一个C语言程序n学习任一计算机高级语言的最佳途径都是编程,对于任一学习任一计算机高级语言的最佳途径都是编程,对于任一计算机语言,编写的第一个程序都是输出一个字符串。计算机语言,编写的第一个程序都是输出一个字符串。n出于对出于对KR的敬意,一般讲解第一个程序进都是选择的敬意,一般讲解第一个程序进都是选择KR的的“C PROGRAMMING LANGUAGE ”一书中的第一一书中的第一个例子打印个例子打印“Hello World” 来进行讲解。来进行讲解。第一个C语言程序n如何利用如何利用C语言在屏幕上显示出如下单词:语言在屏幕上显示出

27、如下单词:”Hello World!”?实现过程:实现过程:1、编写源程序;、编写源程序;2、编译,将源程序编译成目标文件、编译,将源程序编译成目标文件: *.obj;3、将目标文件链接成可执行文件:、将目标文件链接成可执行文件:*.exe; 4、运行可执行文件。、运行可执行文件。第一个C语言程序/* 在屏幕上显示在屏幕上显示Hello World! */#include “stdio.h” main() printf ( “hello World!n );/* 功能注释:在屏幕上显示功能注释:在屏幕上显示Hello World! */#include stdio.h“ /*编译预处理编译预处

28、理, 告诉编译程序在本程告诉编译程序在本程 序包含标准输入输出库函数序包含标准输入输出库函数*/main()/主函数,无参数主函数,无参数 /函数头函数头 printf(“Hello World! n”); /*调用库函数调用库函数printf, 将将Hello world显示显示 到屏幕上,到屏幕上,n为换行符为换行符*/ /函数尾函数尾语句结束符语句结束符编译预处理编译预处理n 在在C源程序中加入一些源程序中加入一些“预处理命令预处理命令” 可以改进可以改进程序设计环境,提高编程效率。程序设计环境,提高编程效率。n 预处理命令不是预处理命令不是C语言本身的组成部分,不能直语言本身的组成部分

29、,不能直接对其进行编译,必须在编译之前,先对这些特接对其进行编译,必须在编译之前,先对这些特殊的命令进行相应的处理。殊的命令进行相应的处理。编译预处理编译预处理C C提供的预处理功能主要有三种:提供的预处理功能主要有三种:1. 文件包含文件包含2. 宏定义宏定义3. 条件编译条件编译所有的预处理命令,都是以所有的预处理命令,都是以#开头的开头的 1. 文件包含文件包含 #include “文件名文件名 “ 文件名指的是外部的库函数名或源程序名。文件名指的是外部的库函数名或源程序名。 库函数是由系统建立的具有一定功能的函数的库函数是由系统建立的具有一定功能的函数的集合。库函数中存放同类函数的名称

30、和对应的目集合。库函数中存放同类函数的名称和对应的目标代码。标代码。 只要用了只要用了 #include “库函数名库函数名“ , 就可以调就可以调用库函数中的函数。用库函数中的函数。编译预处理编译预处理 #include stdio.h“n可调用各种可调用各种输入输出输入输出函数:函数:n包括包括: printf ,scanf , getchar,putchar, fopen,fclose,fprintf,fsacnf, fseek,fread,fwrite 等。等。 C语言程序的基本格式n1、每一个、每一个C程序,都由程序,都由函数函数和和变量变量组成。函数包含若干组成。函数包含若干用于实

31、现指定操作的语句,变量在计算过程中存储有关的用于实现指定操作的语句,变量在计算过程中存储有关的值;值;n2、函数可任意命名,但每一个、函数可任意命名,但每一个C程序中都程序中都必须并且只能必须并且只能有一个有一个名为名为main的主函数;的主函数;C程序都是从程序都是从main函数开始函数开始执行;执行;C语言程序的基本格式n3、函数必须先定义,后使用函数必须先定义,后使用。定义函数时在函数。定义函数时在函数名后加一对名后加一对圆括号圆括号将变量括起来。将变量括起来。n4、由一对、由一对花括号花括号括起构造函数的语句,称为函数括起构造函数的语句,称为函数体。花括号后不加分号。体。花括号后不加分

32、号。C语言程序的基本格式n5、每一条语句的用分号、每一条语句的用分号“;”做为结束。做为结束。C语言程序的基本格式n6、源程序中可以有预处理命令、源程序中可以有预处理命令(include 命令仅为命令仅为其中的一种其中的一种),预处理命令通常应放在源文件或源程,预处理命令通常应放在源文件或源程序的最前面。序的最前面。 n7、一个语言源程序可以由一个或多个源文件组、一个语言源程序可以由一个或多个源文件组成。成。 不能嵌套例:例: /*This is the main /* of example1.1*/ */ 非法非法C语言程序结构/* 在屏幕上显示在屏幕上显示Hello World! */#i

33、nclude “stdio.h” main() printf(“hello World!n”);注释语句注释语句编译预处理编译预处理主函数定义主函数定义函数体函数体程序书写格式特点程序书写格式特点n习惯用习惯用小写小写字母,大小写敏感字母,大小写敏感n不使用行号,不使用行号,无程序行无程序行概念概念n可使用空行和空格可使用空行和空格n常用常用锯齿形锯齿形书写格式书写格式main( ) . . . . . . .main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum)

34、;优秀程序员的素质之一: 使用TAB缩进 对齐 有足够的注释 有合适的空行课堂练习一n编写一个编写一个C语言源程序,执行后,在屏幕上语言源程序,执行后,在屏幕上输出:输出:“ 这是我的第一个这是我的第一个 C语言程序语言程序 ”C语言程序结构注释语句注释语句编译预处理编译预处理主函数定义主函数定义函数体函数体/* 在屏幕上显示:在屏幕上显示: 这是我的第一个这是我的第一个C语言源程序语言源程序! */#include “stdio.h” main() printf (“这是我的第一个n C语言源程序”) ;2、常用计算机语言、常用计算机语言BASICFORTRANPASCALCOBOLCJAV

35、APROLOG计算机基本工作过程n整个过程的执行者是硬件,但硬件是受软件控制的n编程,就是编写软件,使硬件按照人的意图工作1、计算机语言的翻译方式、计算机语言的翻译方式(1)解释方式:)解释方式:(2)编译方式:)编译方式:程序设计语言的工作原理程序设计语言的工作原理高级语言源程序高级语言源程序解释程序解释程序解释并执行解释并执行运算结果运算结果高级语言高级语言 源程序源程序编译程序编译程序执行执行运算结果运算结果操作系统操作系统编译编译机器语言机器语言 程程 序序编译运行n编译过程编译过程程序员(程序员(Programmer)编写程序源代码()编写程序源代码(Source Code)编译器(

36、编译器(Compiler)把源代码转换为可被计算机理解)把源代码转换为可被计算机理解的机器代码(的机器代码(Machine Code),并把机器代码以可执),并把机器代码以可执行文件(行文件(Executable File)的形式保存在磁盘上)的形式保存在磁盘上n软件的运行软件的运行计算机把机器代码读入到内存(计算机把机器代码读入到内存(Memory),由),由CPU运行这些代码,读取输入(运行这些代码,读取输入(Input),产生输出),产生输出(Output),完成程序员预定的功能),完成程序员预定的功能编译语言n一种编译语言对应一种编译器一种编译语言对应一种编译器n程序员按照该语言的语法

37、编写程序源代码,把自程序员按照该语言的语法编写程序源代码,把自己的意图融入到代码中己的意图融入到代码中n编译器读入源代码,把程序员的意图转换成可执编译器读入源代码,把程序员的意图转换成可执行程序,供他人使用行程序,供他人使用解释运行解释运行n解释运行过程解释运行过程程序员编写程序源代码程序员编写程序源代码解释器读入源代码,并执行源代码解释器读入源代码,并执行源代码n解释运行的语言特点解释运行的语言特点执行速度慢执行速度慢好学易用好学易用n先编译、后解释先编译、后解释把源代码编译成更容易解释的中间代码,然后再解释把源代码编译成更容易解释的中间代码,然后再解释运行运行C程序的开发运行过程程序的开发

38、运行过程n1、源程序的编辑源程序的编辑可使用任意纯文本编辑可使用任意纯文本编辑器编写,如记事本,器编写,如记事本,WORD,UltraEit等均可,等均可,得到源程序文件得到源程序文件 *.c。n2、编译编译由专门的编辑程序(编译器)对由专门的编辑程序(编译器)对源程序进行语法分析和检查,如无语法错误则转源程序进行语法分析和检查,如无语法错误则转换生成目标码程序文件换生成目标码程序文件 *.obj。n3、链接链接与其它库函数或目标程序文件链接与其它库函数或目标程序文件链接生成可执行文件生成可执行文件 *.exe。n4、执行执行C语言集成开发环境n集成开发环境集成开发环境IDE:Integrat

39、ed Development Environmentn包含文本编辑、程序编译、连接以及程包含文本编辑、程序编译、连接以及程序运行,调试一体化的程序软件包。序运行,调试一体化的程序软件包。n常用的集成开发环境主要有:美国常用的集成开发环境主要有:美国Borland 公司公司1989年出版的年出版的Turbo C2.0,微软的微软的Microsoft Visual C+。 n因为因为TC是在是在DOS下进行操作的,在下进行操作的,在WINDOWS中也要在命令窗口中进行操作,中也要在命令窗口中进行操作,比较麻烦,所以推荐大家使用:比较麻烦,所以推荐大家使用:n“C/C+程序设计学习与实验系统程序设计

40、学习与实验系统 ”共享版。共享版。n作者:钟家民作者:钟家民 nhttp:/ 编写程序求变量a+b之和。n如何编写程序?第二个程序/* 求:求:a+b= ? */#include “stdio.h” main() a=12; b=14; printf(“ a+b=“);/* 求求:a+b= ? */#include stdio.h main() int a=12; /定义定义a为整型变量为整型变量 int b=14; /定义定义b为整型变量为整型变量 printf ( a+b= %d, a+b );n在C语言中,所有变量必须先说明后使用,说明用于申明变量的性质,变量说明语句格式如下:变量类型名

41、变量变量类型名变量1,变量,变量2,变量变量n;变量类型名有:int 整数; float 浮点数char 字符单字节short 短整数 long 长整数single 单精度浮点数 double 双精度浮点数第二个程序求两数之和/* 两数求和两数求和*/#include stdio.hvoid main() int a,b, sum; /定义三个整型变量定义三个整型变量 a = 12;/给变量赋值给变量赋值 b = 14; sum = a+b;/求和求和 printf(“a+b=%d”, sum);/输出显示输出显示/ %d输出转换说明,用整型值输出转换说明,用整型值sum来代替它来代替它修改程

42、序如下,运行结果修改程序如下,运行结果sum=?#include stdio.hvoid main() int a,b, sum; a = 12.50 ; b = 14.50; sum = a+b; printf(a+b=%d, sum);再修改程序如下,运行结果再修改程序如下,运行结果sum=?#include stdio.hvoid main() float a,b, sum; /定义三个浮点型变量定义三个浮点型变量 a = 12.50 ; b = 14.50; sum = a+b; printf(a+b=%d, sum);/* 两数求和,两数求和,sum=? */#include std

43、io.hvoid main() float a,b, sum; a = 12.50 ; b = 14.50; sum = a+b; printf(a+b= %f , sum); / %f输出转换说明,用浮点型值输出转换说明,用浮点型值sum来代替它来代替它输出函数 printf()nprintf函数称为格式输出函数函数称为格式输出函数,用来向标准输出设备用来向标准输出设备(屏幕屏幕)写数据写数据;nprintf(“格式控制串格式控制串”,参数表,参数表 ); n格式化字符串包括两部分内容格式化字符串包括两部分内容: n一部分是正常字符一部分是正常字符, 这些字符将按原这些字符将按原 样输出样输

44、出; n另一部分是格式化规定字符另一部分是格式化规定字符, 以以“%”开始开始, 后跟一个或几个后跟一个或几个规定字符规定字符, 用来确定输出内容格式。用来确定输出内容格式。n参数表是需要输出的一系列参数参数表是需要输出的一系列参数, 其个数必须与格式化字其个数必须与格式化字符串所说明的输出符串所说明的输出 参数个数一样多参数个数一样多, 各参数之间用各参数之间用,分开分开, 且顺序一一对应且顺序一一对应, 否则将会出现意想否则将会出现意想 不到的错误。不到的错误。参数可以是变量参数可以是变量, 常量和表达式。常量和表达式。n1. 格式化规定符格式化规定符 Turbo C2.0提供的格式化规定

45、符如下提供的格式化规定符如下: 符号作用符号作用 %d 十进制有符号整数十进制有符号整数 %u 十进制无符号整数十进制无符号整数 %f 浮点数浮点数 %s 字符串字符串 %c 单个字符单个字符 %p 指针的值指针的值 %e 指数形式的浮点数指数形式的浮点数 %x, %X 无符号以十六进制表示的整数无符号以十六进制表示的整数 %0 无符号以八进制表示的整数无符号以八进制表示的整数 %g 自动选择合适的表示法自动选择合适的表示法 n(1). 可以在可以在“%”和字母之间插进数字表示最大场宽。和字母之间插进数字表示最大场宽。n %3d 表示输出表示输出3位整型数位整型数, 不够不够3位右对齐。位右对

46、齐。n %9.2f 表示输出场宽为表示输出场宽为9的浮点数的浮点数, 其中小数位为其中小数位为2, 整数整数位为位为6, 小数点占一位小数点占一位, 不够不够9位右对齐。位右对齐。 n对浮点数对浮点数, 若整数部分位数超过了说明的整数位宽度若整数部分位数超过了说明的整数位宽度, 将按将按实际整数位输出实际整数位输出; 若小数部分位数超过了说明的小数位宽若小数部分位数超过了说明的小数位宽度度, 则按说明的宽度以四舍五入输出。则按说明的宽度以四舍五入输出。 n如果用浮点数表示字符或整型量的输出格式如果用浮点数表示字符或整型量的输出格式, 小数点后的小数点后的数字代表最大宽度数字代表最大宽度, 小数

47、点前的数字代表最小宽度。小数点前的数字代表最小宽度。 例如例如: %6.9s 表示显示一个长度不小于表示显示一个长度不小于6且不大于且不大于9的字符串。的字符串。若大于若大于9, 则则 第第9个字符以后的内容将被删除。个字符以后的内容将被删除。 n(2). 可以在可以在“%”和字母之间加小写字母和字母之间加小写字母l, 表示输表示输出的是长型数。出的是长型数。 例如例如: %ld 表示输出表示输出long整数整数 %lf 表示输出表示输出double浮点数浮点数n (3). 可以控制输出左对齐或右对齐可以控制输出左对齐或右对齐, 即在即在%和字和字母之间加入一个母之间加入一个- 号可号可 说明

48、输出为左对齐说明输出为左对齐, 否则否则为右对齐。为右对齐。 例如例如: %-7d 表示输出表示输出7位整数左对齐位整数左对齐n2. 一些特殊规定字符一些特殊规定字符n 字符字符 作用作用 n 换行换行 f 清屏并换页清屏并换页 r 回车回车 t Tab符符 xhh 表示一个表示一个ASCII码用码用16进制数进制数 表示表示, 其中其中hh是是1到到2个个16进制数进制数输出函数 printf()例子:例子:#include stdio.hvoid main() printf(%dnn,336); printf(the octal number of 17 is %onn,17); prin

49、tf(the hex number of 30 is %xnn,30); printf(%f is floating formatnn,13.5); printf(%cnn,a); printf(%snn,a fling bird);/* 两数求和两数求和*/#include stdio.hvoid main() int a,b, sum; a = 12; b = 14; sum = a+b; printf(%d+%d=%d, a,b,sum);n前面的程序是在源程序中就输入了要求和前面的程序是在源程序中就输入了要求和的数,如果我们想要在键盘中输入数据,的数,如果我们想要在键盘中输入数据,如果

50、实现呢?如果实现呢?n可以使用可以使用scanf()函数。函数。输入函数 scanf()nscanf()函数是格式化输入函数函数是格式化输入函数, 它从它从标准输入设备标准输入设备(键盘键盘) 读取输入的信息。读取输入的信息。n格式格式: nscanf(, ); 输入函数 scanf()n格式化字符串包括以下三类不同的字符格式化字符串包括以下三类不同的字符; 1、 格式化说明符格式化说明符: 格式化说明符与格式化说明符与printf()函数中的格式函数中的格式说明符基本相同。说明符基本相同。2、分隔符要输入多个数据,在要格式化字符中加入、分隔符要输入多个数据,在要格式化字符中加入分隔符分隔符(1)空白字符)空白字符: 空白字符会使空白字符会使scanf()函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论