版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计主讲:陶海军主讲:陶海军教材、参考书与课时安排l教材教材C C语言程序设计语言程序设计 贾宗璞贾宗璞 许合利编许合利编 中国矿业大中国矿业大学出版社;学出版社;l参考书参考书C C程序设计程序设计. . 谭浩强谭浩强著著. .清华大学出版社;清华大学出版社;C C程序设计题解与上机指导程序设计题解与上机指导. .谭浩强谭浩强编著编著. .清华大学清华大学出版社;出版社;l课时安排课时安排授课:授课:第第1-131-13教学周周二、周五,教学周周二、周五,5252学时学时 实验上机安排:1-4班:班: 上机时间:上机时间:第第2、3、515周周一下午周周一下午3、4节,节, 第第
2、14周周周二上午周二上午1、2节节 地点:地点:计算机中心微机室计算机中心微机室(1)、()、(2前)前)5-8班:班: 上机时间:上机时间:第第2、3、515周周三下午周周三下午3、4节,第节,第 15周周周四上午周四上午1、2节节 地点:地点:计算机中心微机室计算机中心微机室(1)、()、(2前)前)l上机内容:上机内容: 随教学进度的习题和实验以及课堂布置作业随教学进度的习题和实验以及课堂布置作业l要求要求: :l有问题有问题及时及时向老师或其他同学请教向老师或其他同学请教l作业必须经作业必须经上机调试通过,上机调试通过,所有作业必须所有作业必须独立独立完成完成l上机考勤上机考勤4 4次
3、次缺席,平时成绩不及格处理缺席,平时成绩不及格处理l发现上机时间发现上机时间上网,聊天,打游戏上网,聊天,打游戏,平时成绩按不及格,平时成绩按不及格处理。处理。课程要求l课前请做好预习课前请做好预习l保持课堂安静,头脑清醒,思维活跃保持课堂安静,头脑清醒,思维活跃l认真、独立、按时完成作业认真、独立、按时完成作业l重视上机实践,有效利用宝贵的上机时间重视上机实践,有效利用宝贵的上机时间1 C语言概述重点、难点l本章重点:本章重点:lC C语言的特点语言的特点lC C语言程序的基本结构语言程序的基本结构l算法及其描述方法算法及其描述方法l结构化程序设计方法结构化程序设计方法l本章难点:本章难点:
4、lC C语言与其他高级语言的区别语言与其他高级语言的区别l算法的流程图、算法的流程图、N-SN-S图描述方法图描述方法 内容提要l1.1 C1.1 C语言的发展及特点语言的发展及特点l1.1.1 C1.1.1 C语言的发展语言的发展l1.1.2 C1.1.2 C语言的特点语言的特点l1.2 C1.2 C语言程序的基本结构语言程序的基本结构l1.3 1.3 算法及其描述算法及其描述l1.3.1 1.3.1 算法的概念算法的概念l1.3.2 1.3.2 算法的描述方法算法的描述方法l1.4 1.4 程序设计方法程序设计方法l1.4.1 1.4.1 程序设计的一般步骤程序设计的一般步骤l1.4.2
5、1.4.2 结构化程序设计方法结构化程序设计方法1.1 C语言的发展及特点l1.1.1 C1.1.1 C语言的发展语言的发展 在在C C语言诞生以前,系统软件主要是用语言诞生以前,系统软件主要是用汇编语言汇编语言编编写的。由于汇编语言程序依赖于计算机硬件,所以其写的。由于汇编语言程序依赖于计算机硬件,所以其可可读性和可移植性读性和可移植性都很差;而一般的高级语言又都很差;而一般的高级语言又难以实现难以实现对计算机硬件的直接操作对计算机硬件的直接操作( (这正是汇编语言的优势这正是汇编语言的优势) ),于,于是人们盼望能有一种兼有汇编语言和高级语言特性的新是人们盼望能有一种兼有汇编语言和高级语言
6、特性的新语言。语言。lC C语言就是在这种背景下于语言就是在这种背景下于2020世纪世纪7070年代年代初问世的,当初问世的,当时主要是用于时主要是用于UNIXUNIX系统系统的开发。的开发。l19781978年由美国电话电报公司年由美国电话电报公司(AT&T)(AT&T)贝尔实验室贝尔实验室正式发表正式发表了了C C语言。语言。l同时由同时由B.W.KernighanB.W.Kernighan和和D.M.RitchieD.M.Ritchie合著了著名的合著了著名的The C Programming LanguageThe C Programming Language一书,通常
7、简称为一书,通常简称为K&RK&R,也有人称之为,也有人称之为K&RK&R标准。标准。l美国国家标准化协会美国国家标准化协会ANSI(American National ANSI(American National Standards Institute)Standards Institute)在此基础上制定了一个在此基础上制定了一个C C语言标语言标准,于准,于19831983年发表,通常称之为年发表,通常称之为ANSI CANSI C。l在微机上使用的在微机上使用的C C编译系统主要有编译系统主要有Microsoft CMicrosoft C、Turbo T
8、urbo C C、Quick CQuick C、Borland CBorland C等,它们不仅实现了等,它们不仅实现了ANSI CANSI C标标准,而且还各自作了一些扩充,使之更加方便、完美。准,而且还各自作了一些扩充,使之更加方便、完美。l如今如今C+C+又成为了高级语言的主流,又成为了高级语言的主流,C+C+是面向对象的程是面向对象的程序设计语言,但它的基础是序设计语言,但它的基础是C C 语言,且二者在很多方面语言,且二者在很多方面是兼容的。因此,掌握了是兼容的。因此,掌握了C C语言,再去学习语言,再去学习C+C+,就会达,就会达到事半功倍的效果。到事半功倍的效果。l本书叙述以本书
9、叙述以ANSI CANSI C为基础,为基础, C C语言上机实验时用的是语言上机实验时用的是VC+ 6.0VC+ 6.0。 1.1.2 C语言的特点(1) (1) 与自然语言比较与自然语言比较异同点异同点自然语言自然语言C C语言语言信息交流信息交流交流双方地位平等交流双方地位平等且均有思维、推理能力且均有思维、推理能力人机对话人机对话( (采取命令方式采取命令方式) )计算机一般无思维、推理能力,具有计计算机一般无思维、推理能力,具有计算与逻辑判断能力算与逻辑判断能力语法规则语法规则句法规则句法规则灵活灵活( (可省略、颠倒部分内可省略、颠倒部分内容容) )如:如:“走,上课去!走,上课去
10、!”“上课去,走!上课去,走!”( (上面两句话意思相同,且上面两句话意思相同,且都省略了主语都省略了主语) )固定固定( (一般不可省略、颠倒,必须按部一般不可省略、颠倒,必须按部就班就班) )如:如:scanf(%d%d,&a,&b);scanf(%d%d,&a,&b);x=a+b;x=a+b;( (上面两条上面两条C C语句颠倒后将可能得不到正语句颠倒后将可能得不到正确结果确结果) )表达方式表达方式多样多样算法多样算法多样例 C语言与Pascal语言比较C语言 Pascal语言 含义 BEGIN.END 复合语句if(e) s; IF(e) THEN s
11、 条件语句int i ; VAR i:INTEGER 定义i为整型变量 int a10; VAR a:ARRAY1.10 OF INTEGER 定义整型数组aint f(); FUNCTION f():INTEGER 定义f为返值整型的函数int *p; VAR p:INTEGER 定义p为指向整型变量的指针i+= 2; i=i+2 赋值i+2ii+,+i; i=i+1 i自增值l(2) C(2) C语言的主要特点:语言的主要特点:l1) C1) C语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。ANSI CANSI C一共只有一共只有3232个个关键字关键字( (见附录见附录
12、),如,如intint、longlong、floatfloat、ifif、whilewhile、dodo等;等;9 9种控制语句,程序书写自由,种控制语句,程序书写自由,主要用小写字母表示主要用小写字母表示。l2) 2) 运算符丰富。共有运算符丰富。共有3434种运算符种运算符( (见附录见附录)。C C语言把括号、语言把括号、赋值、逗号等都作为运算符处理,从而使赋值、逗号等都作为运算符处理,从而使C C语言的运算类型极语言的运算类型极为丰富,可以方便地实现其他高级语言难以实现的功能。为丰富,可以方便地实现其他高级语言难以实现的功能。l3) 3) 数据结构类型丰富,具有现代语言的各种数据结构。
13、数据结构类型丰富,具有现代语言的各种数据结构。C C语言语言的数据类型有整型、实型、字符型、数组类型、指针类型、结的数据类型有整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能实现各种复杂数据结构构体类型、共用体类型等。能实现各种复杂数据结构( (如链表、如链表、树、栈等树、栈等) )的运算。尤其是指针类型数据,使用起来更为灵活、的运算。尤其是指针类型数据,使用起来更为灵活、多样。多样。l4) 4) 具有结构化的控制语句。用具有结构化的控制语句。用函数作为程序的基本单位函数作为程序的基本单位,便,便于实现程序的模块化。于实现程序的模块化。C C语言是良好的结构化语言,符合现代
14、语言是良好的结构化语言,符合现代编程风格的要求。编程风格的要求。l5) 5) 语法限制不太严格,程序设计自由度大。如对数组下标越语法限制不太严格,程序设计自由度大。如对数组下标越界不做检查;对变量的类型使用比较灵活,如整型数据与字符界不做检查;对变量的类型使用比较灵活,如整型数据与字符型数据可以通用。型数据可以通用。l6) 6) C C语言允许直接访问物理地址,能进行位语言允许直接访问物理地址,能进行位(bit)(bit)操作操作,能实,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言。人把它称为中级语言。l7)
15、 7) 生成目标代码质量高,程序执行效率高,可达到汇编语言生成目标代码质量高,程序执行效率高,可达到汇编语言程序的程序的80%80%。l8) 8) 与汇编语言相比,用与汇编语言相比,用C C语言写的程序可移植性好。语言写的程序可移植性好。 1.2 C语言程序的基本结构语言程序的基本结构l程序程序(programprogram)是)是为实现特定目标或解为实现特定目标或解决特定问题而用计算机语言编写的命令序决特定问题而用计算机语言编写的命令序列的集合列的集合。l使用使用C C语言编写的程序称为语言编写的程序称为C C语言源程序语言源程序( (简称简称C C语言程序或语言程序或C C程序程序) )。
16、 例1-1 求两个整数之和void main() /*函数首部*/ int a,b,sum; /*定义整型变量a,b,sum */ printf(Please input two integers:n); /*输出提示信息,增强交互性*/ scanf(%d%d,&a,&b); /*输入两个整数,并赋给a,b */ sum=a+b; /*计算a与b的和,并赋给sum */ printf(%d+%d=%dn,a,b,sum); /*输出a、b、sum*/ 程序运行情况如下:程序运行情况如下:Please input two integers:68 (表示空格, 表示按Enter键)
17、 6+8=14例1-2 求两个整数中的较大者#include /*编译预处理*/void main( ) /*主函数首部*/ int x,y,z; /*定义整型变量x、y、z */ int max(int a,int b); /*声明函数max*/ printf(Please input two integers:n); /*输出提示信息*/ scanf(%d,%d,&x,&y); /*输入x,y值*/ z=max(x,y); /*调用max函数*/ printf(The maximum number is %d.n,z); /*输出结果*/int max(int a,int
18、b) /*max函数首部*/ if(ab) return a; /*条件语句,实现选择结构*/ else return b; /*把结果返回主调函数*/程序运行情况如下:Please input two integers:6,8The maximum number is 8.C程序的基本结构(1) C(1) C程序可由一个或多个函数构成,程序可由一个或多个函数构成,函数是函数是C C程序的基本程序的基本单位单位。(2) (2) C C程序必须有一个且只能有一个程序必须有一个且只能有一个mainmain函数函数,即主函数。,即主函数。(3) (3) 一个一个C C程序总是从主函数开始执行程序总是
19、从主函数开始执行,而不论主函数在,而不论主函数在整个程序中位置如何。主函数执行完了,整个程序也就整个程序中位置如何。主函数执行完了,整个程序也就执行完了。执行完了。(4) C(4) C程序中可以有程序中可以有编译预处理命令编译预处理命令( (如如includeinclude命令命令) )。(5) (5) 每一个语句都必须以分号结尾。每一个语句都必须以分号结尾。但编译预处理命令、但编译预处理命令、函数首部函数首部( (即函数的起始行即函数的起始行) )和花括号和花括号“ ”之后不能加分之后不能加分号。号。(6) C(6) C语言本身没有输入输出语句,语言本身没有输入输出语句,输入输出功能是用输输
20、入输出功能是用输入输出库函数来实现的。入输出库函数来实现的。(7) (7) “/ /* *”和和“* */ /”为注释符为注释符,二者之间的部分为注释。,二者之间的部分为注释。C程序的书写规则(1) (1) 一个声明或一条语句占一行。一个声明或一条语句占一行。当然当然C C程序允许一行写程序允许一行写多条语句,也允许一条语句写在多行上,且无需续行符。多条语句,也允许一条语句写在多行上,且无需续行符。(2) (2) 用用 括起来的部分,通常表示程序的某一层次结构。括起来的部分,通常表示程序的某一层次结构。 一般与该结构语句的第一个字母对齐,一般与该结构语句的第一个字母对齐,“ ”最好单最好单独占
21、一行。独占一行。(3) (3) 低一层次的语句或声明可比高一层次的语句或声明缩低一层次的语句或声明可比高一层次的语句或声明缩进若干格后书写。进若干格后书写。以便看起来更加清晰,增加程序的可以便看起来更加清晰,增加程序的可读性。读性。在编程时应力求遵循这些规则,以养成良好的编程风格。在编程时应力求遵循这些规则,以养成良好的编程风格。l格式特点l习惯用小写字母,大小写敏感l不使用行号,无程序行概念l可使用空行和空格l常用锯齿形书写格式 C语言程序设计 第一章第一章 C C语言概述语言概述main( ) . . . . . . .main( ) int i , j , sum; sum=0; for
22、(i=1; i10;i+) for(j=1;j100结束NY图1-6 例1-3的流程图l对于顺序、分支和循环这三种基本结构,有以下共同特对于顺序、分支和循环这三种基本结构,有以下共同特点:点:l1) 1) 虽然结构内部的某些基本框并不是也不可能是单入虽然结构内部的某些基本框并不是也不可能是单入口和单出口口和单出口( (比如选择结构和循环结构中的判断框有两比如选择结构和循环结构中的判断框有两个出口个出口) ),但,但整个结构只有一个入口和一个出口整个结构只有一个入口和一个出口。l2) 2) 结构内的每一部分都有机会被执行到结构内的每一部分都有机会被执行到。也就是说,。也就是说,对每一个基本框来说
23、,都应当有一条从入口到出口的路对每一个基本框来说,都应当有一条从入口到出口的路径通过它。径通过它。l3) 3) 结构内不存在结构内不存在“死循环死循环”( (无终止的循环无终止的循环) ),在有限,在有限时间内必能结束执行过程。时间内必能结束执行过程。l已经证明,由以上三种基本结构顺序组成的算法结构,已经证明,由以上三种基本结构顺序组成的算法结构,可以解决任何复杂的问题。可以解决任何复杂的问题。由这三种基本结构所构成的由这三种基本结构所构成的算法属于算法属于“结构化结构化”的算法,这种设计方法也称为结构的算法,这种设计方法也称为结构化程序设计方法,化程序设计方法,主要有以下三个要求:主要有以下
24、三个要求:l1) 1) 结构化程序的控制结构只能由顺序、分支和循环三结构化程序的控制结构只能由顺序、分支和循环三种基本结构构成种基本结构构成( (当然也可以由这三种基本结构进行组当然也可以由这三种基本结构进行组合形成新的结构,但必须要满足基本结构所要求的三个合形成新的结构,但必须要满足基本结构所要求的三个条件条件) )。l2) 2) 整个程序是由许多个这三种结构的程序块串联起来整个程序是由许多个这三种结构的程序块串联起来的。的。因为这三种结构都只有一个入口和一个出口,所以因为这三种结构都只有一个入口和一个出口,所以是可以把它们串联起来的。是可以把它们串联起来的。l3) 3) 整个程序只有一个入
25、口和出口整个程序只有一个入口和出口。 结构化的流程图描述算法的特点l用这种结构化的流程图描述算法用这种结构化的流程图描述算法直观形象直观形象,比,比较清楚地显示出各个框之间的逻辑关系。较清楚地显示出各个框之间的逻辑关系。l但是这种流程图但是这种流程图占用篇幅较多占用篇幅较多,尤其当算法比,尤其当算法比较复杂时,画流程图既费时又不方便。较复杂时,画流程图既费时又不方便。l基本结构的顺序组合可以表示任何复杂的算法,基本结构的顺序组合可以表示任何复杂的算法,这样我们可以这样我们可以省去基本结构之间的流程线。省去基本结构之间的流程线。(3) 用N-S流程图描述算法l19731973年美国学者年美国学者
26、I.I.N Nassiassi和和B.B.S Shneidermanhneiderman提出提出了一种新的流程图形式。在这种流程图中,完了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全去掉了带箭头的流程线。全部算法写在一个全部算法写在一个矩形框内,在该框内还可以包含其他的从属于矩形框内,在该框内还可以包含其他的从属于它的框,它的框,或者说,由一些基本的框组成一个大或者说,由一些基本的框组成一个大的框。这种流程图称为的框。这种流程图称为N-SN-S结构化流程图,适用结构化流程图,适用于结构化程序设计,而且所用篇幅较少,因而于结构化程序设计,而且所用篇幅较少,因而很受欢迎。很受欢
27、迎。l1) 顺序结构:l2) 选择结构:l3) 循环结构: 例1-3的N-S图 打印sum1sum2deno1sign( 1)signsignsign(1/deno)termsumtermsumdeno1deno 直到deno100图1-11 例1-3的N-S图N-S图描述算法的特点l用传统的流程图和用传统的流程图和N-SN-S图描述算法,图描述算法,直观直观易懂易懂l但但画起来比较费事画起来比较费事。 (4) 用伪代码描述算法l伪代码伪代码(pseudo code)(pseudo code)是用介于是用介于自然语言自然语言和计算机语言之间的文字和符号来描述算和计算机语言之间的文字和符号来描述
28、算法。法。 l它它不用图形符号不用图形符号,因此书写方便、格式紧,因此书写方便、格式紧凑,也比较好懂,凑,也比较好懂,便于向计算机语言描述便于向计算机语言描述的算法的算法( (即程序即程序) )过渡过渡。 例1-3的算法可以用伪代码描述如下 BEGIN (算法开始) 1sum 2deno 1sign while deno 100 (-1)signsign sign1/denoterm sumtermsum deno1deno print sumEND (算法结束)伪代码描述算法的特点l伪代码书写格式比较自由,容易表达出设伪代码书写格式比较自由,容易表达出设计者的思想。计者的思想。同时,用伪代码
29、很容易写出同时,用伪代码很容易写出结构化的算法,并且写出的算法也很容易结构化的算法,并且写出的算法也很容易修改。修改。l用伪代码描述算法不如流程图直观用伪代码描述算法不如流程图直观,可能,可能会出现逻辑上的错误会出现逻辑上的错误( (例如循环或选择结例如循环或选择结构的范围搞错等构的范围搞错等) )。 (5) 用计算机语言描述算法l要完成一件工作,包括要完成一件工作,包括设计算法设计算法和和实现算法实现算法两两个部分。个部分。 l我们的任务是用计算机解题,也就是要用计算我们的任务是用计算机解题,也就是要用计算机实现算法。机实现算法。计算机是无法识别自然语言、流计算机是无法识别自然语言、流程图和
30、伪代码的。程图和伪代码的。只有用计算机语言编写的程只有用计算机语言编写的程序才能被计算机执行序才能被计算机执行( (当然还要编译成二进制目当然还要编译成二进制目标程序标程序) )。因此,在用流程图或伪代码描述出一因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。个算法后,还要将它转换成计算机语言程序。 例1-3的算法可以用C语言描述如下 main() int sign=1; float deno=2.0,sum=1.0,term; while(deno=100) sign=-sign; term=sign/deno; sum=sum+term; deno=deno+1;
31、printf(The sum is %f.n,sum);程序运行结果为:The sum is 0.688172.1.4 程序设计方法程序设计方法l1.4.1 1.4.1 程序设计的一般步骤程序设计的一般步骤(1) (1) 分析问题并确定数据结构分析问题并确定数据结构 (2) (2) 算法设计算法设计(3) (3) 编写程序编写程序(4) (4) 上机调试上机调试(5) (5) 整理写出文档资料整理写出文档资料 1.4.2 结构化程序设计方法(1) (1) 自顶向下,逐步细化自顶向下,逐步细化(2) (2) 模块化设计模块化设计(3) (3) 结构化编码结构化编码1.4.1 运行程序的步骤上机输
32、入与编辑源程序对源程序进行编译与库函数连接运行目标程序 运行程序的步骤和方法Visual C+ 6.0 上机操作上机操作第一步,启动第一步,启动 Microsoft Visual C+ 6.0第二步,创建一个工程第二步,创建一个工程第三步,修改新工程的配置第三步,修改新工程的配置 第四步,确认创建新工程第四步,确认创建新工程 第五步,创建新工程完毕第五步,创建新工程完毕 添加一个文件到一个空的工程中添加一个文件到一个空的工程中第一步,创建新的第一步,创建新的 .c 源文件源文件第二步,查看源文件第二步,查看源文件编写程序编写程序第一步,编写源代码第一步,编写源代码 第二步,打开第二步,打开“编译编译”工具栏工具栏第三步,编译第三步,编译第四步,除错第四步,除错运行程序运行程序l单击 Build 工具栏中的红色感叹号按钮,就可以运行一个编译好的程序:l上机作业:1.编写一个C程序,输出下列信息: * Very good! *2.编写一个C程序,输出一个几何图形,如三角形: * * * * * *3.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 道路交通组织优化合同范本
- 城市广场维修临建合同
- 仓库消防工程安装协议
- 国际水族馆粉刷施工合同样本
- 矿山绿化苗圃施工合同
- 文化公司劳动合同样本
- 2024年简化版离婚合同:财产与子女安排万能模板一
- 咖啡馆植物墙装饰合同
- 我爱吃蔬菜创意课程设计
- 太阳能发电临时设施施工合同
- PS平面设计练习题库(附参考答案)
- 混合云架构整体设计及应用场景介绍
- 《盘点程序说明会》课件
- 期末素养综合测评卷(二)2024-2025学年鲁教版(五四制)六年级数学上册(解析版)
- 小王子-英文原版
- 考核19(西餐)试题
- 2024安全生产法解读
- 吉林省长春市(2024年-2025年小学五年级语文)人教版期末考试(上学期)试卷及答案
- 环保创业孵化器服务行业营销策略方案
- 研究生年终总结和展望
- 浙江省杭州市2023-2024学年高二上学期1月期末地理试题 含解析
评论
0/150
提交评论