版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
•本章要点
・c语言的特点
・c程序的结构
■在计算机上运行C程序的方法
•主要内容
1.1c语言出现的历史背景
1.2C程序的特点
1.3简单的C语言程序介绍
1.4运行C程序的步骤和方法
1.1C语言出现的历史背景
❖c语言是国际上广泛流行的高级语言。
❖C语言是在B语言的基础上发展起来的。
❖B(BCPL)语言是1970年由美国贝尔实验室设计
的,并用于编写了第一个UNIX操作系统,在PDP7
上实现。优点:精练,接近硬件,缺点:过于简
单,数据无类型。
♦1973年贝尔实验室的D.M.Ritchie在B语言的基
础上设计出了C语言,对B取长补短,并用之改写
了原来用汇编编写的UNIX,(即UNIX第5版),但
仅在贝尔实验室使用。
1.1C语言出现的历史背景
♦1975年UNIX第6版发布,C优点突出引起关注。
01977年出现了《可移植C语言编译程序》,推动了
UNIX在各种机器上实现,C语言也得到推广,其发
展相辅相成。
♦1978年影响深远的名著《TheCProgramming
Language》由BrianMKernighan和Dennis
M.Ritchie合著,被称为标准C。
之后,C语言先后移植到大、中、小、微型计算机
上,已独立于UNIX和PDP,风靡世界,成为最广泛的
几种计算机语言之一。
1.1C语言出现的历史背景
❖19834,美国国家标准化协会(ANSI)根据C语言各种
版本对C的发展和扩充,制定了新的标准ANSIC,
比标准C有了很大的发展。
1988年K&R按照ANSIC修改了他们的《TheC
ProgrammingLanguage》o
.:♦1987年,ANSI公布了新标准——87ANSICo
♦1990年,国际标准化组织接受了87ANSIC为ISOC
的标准QS09899—1990)。
♦1994年,ISO又修订了C语言标准。
❖目前流行的C语言编译系统大多是以ANSIC为基础
进行开发的。
1.1C语言出现的历史背景
说明:
不同版本的c编译系统所实现的语言功能和
语法规则又略有差别,因此读者应了解所用的
c语言编译系统的特点(可以参阅有关手册)。
本书的叙述基本上以ANSIC为基础。
1.2C语言的特点
(1)语言简洁、紧凑,使用方便、灵活。32个关键
字、9种控制语句,程序形式自由。
(2)运算符丰富。34种运算符。
(3)数据类型丰富,具有现代语言的各种数据结构。
(4)具有结构化的控制语句,是完全模块化和结
构化的语言。
(5)语法限制不太严格,程序设计自由度大。
12C语言的特点
(6)允许直接访问物理地址,能进行位操作,能
实现汇编语言的大部分功能,可直接对硬件进
行操作。兼有高级和低级语言的特点。
(7)目标代码质量高,程序执行效率高。只比
汇编程序生成的目标代码效率低10%-20%。
(8)程序可移植性好(与汇编语言比)。基本上
不做修改就能用于各种型号的计算机和各种
操作系统。
1.2C语言的特点
问题:既然有了面向对臬的C++语言,为什么还
要学习C语言?
解释I:C++是由于开发大型应用软件的需要而产
生的,并不是所有的人都要去编写大型软件。
解释2-面向对象的基础是面向过程。C++是面向
对象的语言,c是面向过程的,学起来比c语言
困难得多,所以不太适合程序设计的初学者。
说明:本程序的作用是输出一行信息:
ThisisaCprogram.
#include<stdio.h>/*文件包含*/
voidmain()/*主函数*/
{/*函数体开始*/
printf(nThisisaCprogram.\n''M*输出语句*/
}/*函数体茸束*/
说明:main-主函数名,void-函数类型
每个C程序必须有一个主函数main
是函数开始和结束的标志,不可省
♦每个C语句以分号结束
♦:♦使用标准库函数时应在程序开头一行写:’
ttinclude<stdio.h>
说明:输出一行信息:sumis579
例1.2求两数之和
ttinclude<stdio.h>
voidmain()/*求两数之和*/
(
inta,b,sum;/*声明,定义变量为整型*/
/*以下3行为C语句*/
a=123;b=456;
sum=a+b;
printf(sumis%d'n”,sum);
说明:/**/表不注释。注释只是给人看的,对
编译和运行不起作用。所以可以用汉字或英文字
符表示,可以出现在一行中的最右侧,也可以单
独成为一行。
1.3简单的C语言程序介绍
c程序:
(1)c程序是由函数构成的。这使得程序容易实现
模块化。
(2)一个函数由两部分组成:
函数的首部:例1.3中的max函数首部
intmax(intx,inty)
函数体:花括号内的部分。若一个函数有多个花
括号,则最外层的一对花括号为函数体的范围。
函数体包括两部分:
声明部分:inta,b,c;可缺省
执行部分:由若干个语句组成。可缺省
1.3简单的C语言程序介绍
注意:
函数的声明部分和执行部分都可缺省,例如:
voiddump()
{
)
这是一个空函数,什么也不做,但是合法的函数。
1.3简单的C语言程序介绍
小结:
(3)C程序总是从main函数开始执行的,与main函数
的位置无关。
(4)C程序书写格式自由,一行内可以写几个语句,
一个语句可以分写在多行上,C程序没有行号。
(5)每个语句和数据声明的最后必须有一个分号。
(6)C语言本身没有输入输出语句。输入和输出的操
作是由库函数scanf和printf等函数来完成的。C
对输入输出实行“函数化”。
1.4运行C程F
1.4.1运行C程序的步骤
•上机输入与编存源程后
•对源程序进行编译
•与库函数连接
•运行目标程序
1.4运行C程序的步骤和方法
1.4.2上机运行C程序的方法
•目前使用的大多数C编译系统都是集成环境(IDE)的。
可以用不同的编译系统对C程序进行操作。
•常用的有TurboC2.0、TurboC++3.0、VisualC++
等。
•TurboC++3.0:是一个集成环境,它具有方便、直观
和易用的界面,虽然它也是DOS环境下的集成环境,但
是可以把启动TurboC++3.0集成环境的DOS执行文件
tc.exe生成快捷方式,也可以用鼠标操作。
•VisualC++:也可以用VisualC++对C程序进行编译。
例:TurboC++3.0的使用
将TurboC++3.0编译程序装入磁盘某一目录下
例如:
放在C盘根目录下一级TC3.0子目录下。
⑴进入TurboC++3.0集成环境
①在DOS环境下
C:\TC3,0>tc/
②在Windows环境下
找到可执行文件tc.exe,执行该文件。
主菜单:11个菜单项:
FileEditSearchRunCompileDebugProject
OptionsWindowHelp
(2)编辑源文件
新建:单击“File”菜单下的“New”,
TurboC++IDE
・
一
一
•
.•.
.,.
.•
.,-
.,.
.,.
.,.
.,.
.,.
.,,
.•.
•.•
•,.
,.-
•.•
•.•.-
•.•
•.■
•.•
•.■
,.■
•.■
,.■
".■
,.■
•."
,.
•."
•.■
,.■
•.•
•.•
•.■
•.•
•.
>1
修改:选择“File”一“Open”(即单击“File”的下
拉菜单中的“Open”项,修改已有的源程序。
在编辑(EDIT)状态下光标表示当前进行编辑的位
置,在此位置可以进行插入、删除或修改,直到
自己满意为止。
wine
Name
\TC3.0\M
BARCHARTPLOTEMP.C
BGIDEMO.iPLOTEMP1.C
CH2<25.iPL0TEHP2.C
CPftSDEMOPL0TEMP3.C
GETOPT.CPL0TEMP4.C
GREP2MSGPL0TEMP5.C
HELLO.CPL0TEMP6.C
MfiTHERR.iSALESTAG.C
:\TC3.0\M.C
ARCHART.C145。00am
保存:在编辑(EDIT)状态下光标表示当前进行编辑
的位置,在此位置可以进行插入、删除或修改,
直到自己满意为止。
(3)对源程序进行编译
选择“Compile”(或“Alt+F9”)对源程序进行编译。
cLcpp源程序,出现1个错误(error),0个警告
(warming)。
(4)将目标程序进行连接
选择菜单“Compile”—>"Link”,如果不出现
方陶彳奈舞J一个后缀为.exe的可执行文件。
选菜单“Run”一“Run”(或按“Ctrl+F9”
键)。
(6)退出TurboC++3.0环境
选择“File”-“Quit”。
•本章要点
■算法的概念
■算法的表示
■结构化程序设计方法
•主要内容
2.1算法的概念
2.2简单算法举例
2.3算出的特性
2.4怎样表示一个算法
2.5化程序设计方沫
一个程序应包括两个方面的内容:
♦:♦对数据的描述:数据结构(datastructure)
对操作的描述:算法(algorithm)
著名计算机科学家沃思提出一个公式:
数据结构+算法=程序
完整的程序设计应该是:
数据结构+算法+程序设计方法+语言工具
2.1算法的概念
广义地说,为解决一个问题而采取的方法和步
骤,就称为“算法”。
对同一个问题,可有不同的解题方法和步骤
100
例:求n
n=\
等方法1:1+2,+3,+4,一直加到100加99次
❖方法2:100+(1+99)+(2+98)+..+(49+51)+50
=100+49X100+50加51次
2.1算法的概念
为了有效地进行解题,不仅需要保证算法正确,
还要考虑算法的质量,选择合适的算法。希望方
法简单,运算步骤少。
计算机算法可分为两大类别:
♦:♦数值运算算法:求数值解,例如求方程的根、求
函数的定积分等。
♦:♦非数值运算:包括的面十分广泛,最常见的是用
于事务管理领域,例如图书检索、人事管理、行
车调度管理等。
2.2简单算法举例
例2.1:求1X2X3X4X5
步骤1:先求1x2,得到结果2
步骤2:将步骤1得到的乘积2再乘以3,得到结果6
步骤3:将6再乘以4,得24
步骤4:修24再乘以5,得120
如果要求1*2x…x1000,则要写999个步骤
可以设两个变量:一个变量代表被乘数,一个变
量代表乘数。不另设变量存放乘积结果,而直
接将每一步骤的乘积放在被乘数变量中。设P为
被乘数,i为乘数。用循环算法来求结果,算法
可改写:
S1:使p=l。
S2:使i=2。
S3:使pXi,乘积仍放在变量p11^,可表示为:pXip
S4:使i的值加1,BPi+lio
S5:如果i不大于5,返回重新执行步骤S3以及其后
的步骤S4和S5;否则,算法结束。最后得到p的值就
是5!的值。
如果题目改为:求1x3x5X.......X1000算法只
需作很少的改动:
・si:1—P岑当而依
S2:3一i
S3:pXi一p
S4:i+2Tp
S5:若臼1,返回S3。否则,结束。
用这种方法表示的算法具有通用性、灵活
性。S3到S5组成一个循环,在实现算法时要
反复多次执行S3,S4,S5等步骤,直到某一时
刻,执行S5步骤时经过判断,乘数i已超过规
定的数值而不返回S3步骤为止。此时算法结束,
变量P的值就是所求结果。
例2.2有50个学生,要求将他们之中成绩在80分以上者打印出来。设n表
示学号,小代表第一个学生学号,代表第i个学生学号。用G代表学生
成绩,gj代表第i个学生成绩,算法表示如下:
S1:1Ti
S2:如果》80,则打印和,否则不打印。
S3:i+1一i
S4:如果i450,返回S2,继续执行。否则算法结束
变量i作为下标,用来控制序号(第几个学生,第
几个成绩)。当i超过50时,表示已对50个学生的
成绩处理完毕,算法结束。
例2.3判定2000〜2500年中的每一年是否闰年,将结果输出。
分析:闰年的条件是:(1)能被4整除,但不能被100整除
的年份都是闰年,如1996,2004年是闰年;(2)能被100
整除,又能被400整除的年份是闰年。如1600,2000年
是闰年。不符合这两个条件的年份不是闰年。
变量i作为下标,用来控制序号(第几个学生,第
几个成绩)。当i超过50时,表示已对50个学生的
成绩处理完毕,算法结束。
设y为被检测的年份,算法可表示如下:
S1:2000一y
S2:若y不能被4整除,贝》输出y“不是闰年”。然后转
到S6。
S3:若y能被4整除,不能被100整除,则输出y“是闰
年”。然后转到S6。
S4:若y能被100整除,又能被400整除,输出y“是闰
年力,否则输出“不是闰年”。然后转到S6。
S5:输出y“不是闰年”。
S6:y+1—>y
S7:当y42500时,转S2继续执行,如y>2500,算法
停止。
以上算法中每做一步都分别分离
出一些范围(巳能判定为闰年或
非闰年),逐步缩小范围,直至①y不能被
执行S5时,只可能是非闰年。4整除
“其它”包括能被4整除,又能被非闰年
100整除,而不能被400整除的那
些年份(如1990)是非闰年。
/y被100②y被4整除,
整除,又能但不能被10。
被400整除整除
闰年闰年
④其他
非闰年
例2.4求11算法如下:
111
1——+———+■4-
234
S1:sign=l单词作变量名,以使算
S2sum=l法更易于理解:
S3deno=2sum表示累加和,deno是
S4sign=(-1)xsign英文分母(denominator)
S5term=signx(1/deno)缩写,sign代表数值的符
S6sum=sum+term号,term代表某一项。
S7deno=deno+l
S8若deno4100返回S4,否则算法结束。
反复执行S4到S8步骤,直到分母大于100为止
o一共执行了99次循环,向sum累加入了99个分
数。sum最后的值就是多项式的值。
例2.5对一个大于或等于3的正整数,判断它是不是一个素数。
概念:所谓素数,是指除了1和该数本身之外,不能被
其它任何整数整除的数。例如,13是素数。因为它
不能被2,3,4,…,12整除。
分析:判断一个数n(n>3)是否素数的方法:
将n作为被除数,将2到(n-1)各个整数轮流作为除数,
如果都不能被整除,则n为素数。
算法如下:
S1:输入n的值
S2:i=2(i作为除数)
S3:n被i除,得余数r
S4:如果r=0,表示n能被i整除,则打印n“不是
素数”,算法结束。否则执行S5
S5:i+1一i
S6:如果i4n-l,返回S3。否则打印n“是素
数”。然后结束。
实际上,n不必被2到(n-1)的整数除,只需被2到n/2
间整数除,甚至只需被2到爪之间的整数除即可
2.3算法的特性
一个算法应该具有以下特点:
❖有穷性:包含有限的操作步骤。
确定性:算法中的每一个步骤都应当是确定的。
❖有零个或多个输入:输入是指在执行算法时需要
从外界取得必要的信息。
❖有一个或多个输出:算法的目的是为了求解,
“解”就是输出。>
❖有效性:算法中的每一个步骤都应当能有效地执
行,并得到确定的结果。
2.4算法的表示
可以用不同的方法表示算法,常用的有:
e自然语言
8流程图
③汩S流程图
8伪代码
2.4.1用自然语言表示算法
自然语言就是人们日常使用的语言,可以是
汉语或英语或其它语言。用自然语言表示通俗
易懂,但文字冗长,容易出现“歧义性”。自
然语言表示的含义往往不大严格,要根据上下
文才能判断其正确含义,描述包含分支和循环
的算法时也不很方便。因此,除了那些很简单
的问题外,一般不用自然语言描述算法。
2.4.2用流程图表示算法
常用的流程图符号:
CD<>口
起止框判断框处理框输入/输出框
o
二II
注释框流向线连接点
例2.6将求5!的算法用流程图表示
如果需要将最后结
果打印出来,可在
菱形框的下面加一
个输出框。
例2.7将例2.2的算法用流程图
表示。打印50名学生中成绩在80
分以上者的学号和成绩。
J__
如果如果包括7
/输入n)、gj/----------
这个输入数据
|i+10i
的部分,流程
N
图为——<Q>50^>
l=»i
-YN
1
L输出ni、gi/
1।工।
i+1-
---------------------------<^i>50>
例2.8将例2.3判定
闰年的算法用流程
图表示
例2.9将例2.4的算法用流程图表示
11111
1——+————+—......+-----
23499100
例2.10将例2.5判断素数的算法用流程图
表示
小结:
流程图是表示算法的较好的工具。
一个流程图包括以下几部分:
⑴表示相应操作的框;
⑵带箭头的流程线;
⑶框内外必要的文字说明。
2.三种基本结构
三种基本结构:
顺序结构、选择结构、循环结构
用这三种基本结构作为表示一个良好算法的
基本单元。
三种基本结构的图示:
A
AB
B
顺序结构
选择结构
当型(While型)循环结构直到型(Until型)循环
三种基本结构的共同特点:
⑴只有一个入口。
⑵只有一个出口。(请注意:一个菱形判断框有两
个出口,而一个选择结构只有一个出口。不要将
菱形框的出口和选择结构的出口混淆。)
⑶结构内的每一部分都有机会被执行到。
(4)结构内不存在“死循环”(无终止的循环)。
不正确的流程表示:
t
B
图中没有一条从入口到出口
的路径通过A框流程内的死循环
小结:
❖由三种基本结构顺序组成的算法结构,可
以解决任何复杂的问题。由基本结构所构
成的算法属于“结构化”的算法,它不存
在无规律的转向,只在本基本结构内才允
许存在分支和向前或向后的跳转。
2.4.4用N-S流程图表示算法
1973年美国学者提出了一种新的流程图形式。在
这种流程图中,完全去掉了带箭头的流程线。全部
算法写在一个矩形框内,在该框内还可以包含其它
的从属于它的框,或者说,由一些基本的框组成一
个大的框。这种流程图又称N—S结构化流程图。
N-S流程图用以下的流程图符号:
A
直到Pi成立
⑴顺序结构当Pi成立
(2)选择结构
A
(3)循环结构
用三种N-S流程图中的基本框,可以组成复杂的N-S流程图。图中的A框或B
框,可以是一个简单的操作,也可以是三个基本结构之一。
A框可以是一个选择结构
B框可以是一个循环结构
例2.11将例2.1的求5!算
法用N・S图表不
1令
20i
t*i=>t
i+l今i
直到i〉5
输出t
N-S图表示算法的优点
♦:♦比文字描述直观、形象、易于理解;比传
统流程图紧凑易画。尤其是它废除了流程线,
整个算法结构是由各个基本结构按顺序组成
的,N—S流程图中的上下顺序就是执行时的
顺序。用N—S图表示的算法都是结构化的算
法,因为它不可能出现流程无规律的跳转,
而只能自上而下地顺序执行。
小结:
❖一个结构化的算法是由一些基本结构顺序组成
的。在基本结构之间不存在向前或向后的跳转,
流程的转移只存在于一个基本结构范围之内(如
循环中流程的跳转);一个非结构化的算法可
以用一个等价的结构化算法代替,其功能不变。
如果一个算法不能分解为若干个基本结构,则
它必然不是一个结构化的算法。
2.4.5用位代码表示算法(学)
❖概念:伪代码是用介于自然语言和计算机语言之
间的文字和符号来描述算法。
♦特点:它如同一'篇文章一'样,自上而下地写下
来。每一行(或几行)表示一个基本操作。它不用
图形符号,因此书写方便、格式紧凑,也比较
好懂,也便于向计算机语言算法(即程序)过渡。
❖用处:适用于设计过程中需要反复修改时的流程
描述。
2.4.6用计算机语言表示算法
❖概念:用计算机实现算法。计算机是无法识别流
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省吉林市(2024年-2025年小学五年级语文)统编版期中考试(下学期)试卷及答案
- 2024-2025学年重庆市八中高三上学期适应性月考卷(一)地理试题及答案
- 上海市县(2024年-2025年小学五年级语文)统编版能力评测(上学期)试卷及答案
- 二年级数学计算题专项练习集锦
- 高一化学上册全册教案
- DB11T 1480-2017 生产安全事故应急避难场所分级管理规范
- 演艺消费季剧场类演出项目补助申报书
- 河南省郑州市2024-2025学年高一上学期10月月考生物试卷(含答案)
- 2024-2025学年江西省景德镇市高一(上)期中物理试卷(含答案)
- 手动清洁器具市场需求与消费特点分析
- 检验科标本采集课件
- 四年级语文上册第六单元【集体备课】课件
- 直销成功之推崇配合带动教学课件
- 低倍组织检验课件
- 机械加工工时定额时间标准
- 事业单位政审表
- GB 19517-2023国家电气设备安全技术规范
- 施工现场临时水电消防监理细则
- 山东东营市商业市场调研
- 一代元帅刘伯承
- 高压电力用户报装容量测算方法
评论
0/150
提交评论