C语言程序设计课件-武汉理工大学.ppt
- 文档编号:5853309
- 上传时间:2023-05-09
- 格式:PPT
- 页数:158
- 大小:1.67MB
C语言程序设计课件-武汉理工大学.ppt
《C语言程序设计课件-武汉理工大学.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件-武汉理工大学.ppt(158页珍藏版)》请在冰点文库上搜索。
2023/5/9,1,武汉理工大学计算机学院,授课教师:
王红霞,C语言程序设计,2023/5/9,2,选用教材与参考书,主教科书顾治华、陈天煌等C语言程序设计机械工业出版社2007.2参考教材顾治华、陈天煌等C语言程序设计实验指导机械工业出版社2007.2参考书谭浩强C语言程序设计清华大学出版社,2023/5/9,3,课程内容,第一章C语言程序设计概述第二章算法及算法设计简介第三章数据描述与基本操作第四章选择结构程序设计第五章循环结构程序设计第六章数组与指针第七章函数与模块化程序设计方法,2023/5/9,4,第一章C语言程序设计基础,1.1程序与程序设计1.2C语言简介1.3简单的C语言程序1.4C语言程序的上机步骤1.5C语言的基本词法1.6C语言程序的基本结构,2023/5/9,5,程序与计算机语言,程序是存放在计算机中的操作指令的集合。
用程序设计语言安排好的处理问题的步骤称为计算机程序,用程序设计语言编制一个能完成某项任务的计算机程序的过程叫做计算机程序设计。
程序设计=数据结构+算法+程序设计方法+编程语言,程序设计的关键:
必须掌握一种程序设计语言。
掌握程序设计的逻辑思维。
2023/5/9,6,程序设计过程,
(1)问题的提出,要达到的要求;
(2)确定数据结构和所采用的算法;(3)编制程序;(4)调试程序;(5)整理并写出文档;,2023/5/9,7,C语言的特点,
(1)语言简洁、紧凑,使用方便、灵活。
C语言一共只有32个关键字,主要用小写字母表示。
(2)比其他高级语言更接近硬件,比低级语言更接近算法。
程序易编、易读、易查错、易修改,兼有高级语言和低级语言的优点。
(3)数据类型和运算符十分丰富,程序设计和算法描述更为简单和方便。
(4)语法结构十分简单,语句数目少,简单易学。
2023/5/9,8,(6)它是一种模块化的程序设计语言,适合大型软件的研制和调试。
(5)它是一种结构化程序设计语言,提供了完整的程序控制语句(选择语句和循环语句),很适合结构化的程序设计方法。
(7)生成目标代码质量高,程序执行效率高。
(8)用c语言写的程序可移植性好。
(9)它提供了大量的库函数以供调用,简化了程序设计工作。
2023/5/9,9,C语言程序的结构,C语言是结构化的程序设计语言。
C语言是模块化的程序设计语言,程序是由函数构成的。
一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。
因此,函数是C程序的基本单位。
一个函数由两部分组成:
函数的首部,函数的第一行。
包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。
函数体,即函数首部下面的大括弧.内的部分。
如果一个函数内有多个括弧,则最外层的一对为函数的范围。
函数体一般包括:
声明部分:
在这部分中定义所用到的变量。
执行部分:
由若干个语句组成。
2023/5/9,10,(4)一个C程序总是从main函数开始的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前,在另一些函数之后)。
(5)C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
(6)每个语句和数据定义的最后必须有一个分号。
分号是C语句的必要组成部分。
分号不可少。
(7)C语言本身没有输入输出语句。
输入输出的操作是由库函数scanf和printf等函数来完成的。
(8)可以用/*/对C程序中的任何部分作注释。
2023/5/9,11,简单的C语言程序示例,例一main()printf(“ThisisaCprogram.n”);,本程序的作用是输出以下一行信息:
ThisisaCprogram.,2023/5/9,12,例二main()inta,b,sum;/*这是定义变量*/a=123;b=456;/*以下3行为C语句*/sum=a+b;printf(“sumis%dn”,sum);,程序的运行结果:
Sumis579,2023/5/9,13,例三,/*example1.3输入两个数,求其中较大的数*/#includeintmax(intx,inty)/*被调用函数*/intz;if(xy)z=x;elsez=y;return(z);/*将z的值返回,通过max带回调用处*/main()/*主函数*/inta,b,c;scanf(“%d,%d”,运行结果:
4,6max=6,2023/5/9,14,C程序的上机步骤,2023/5/9,15,C语言的基本词法标识符,定义:
在程序中使用的变量名、函数名、标号等统称为标识符。
除库函数的函数名由系统定义外,其余的都由用户自己定义。
命名规则:
标识符只能是字母(AZ,az)、数字(09)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。
例如:
以下标识符是合法的:
a,x,x3,BOOK_1,sum5,_x7。
以下标识符是非法的:
3s,s*T,-3x,bowy-1,M.D.John,ab。
2023/5/9,16,
(1)标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。
TurboC规定标识符的长度为32。
一般情况下,标识符的长度不要超过8个字符。
(2)在标识符中,大小写是有区别的。
例如SUM和sum是两个不同的标识符。
变量名应尽量使用小写字母,以增加程序的可读性。
(3)标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。
因此,命名应尽量有相应的意义,以便于阅读理解,做到“顾名思义”。
在C语言中,所有的变量都是先定义后应用,使用没有定义的变量名被认为是“非法”的。
在使用标识符时还必须注意以下几点:
2023/5/9,17,C语言的基本词法关键字,定义:
关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。
用户定义的标识符不应该与关键字相同。
分类:
语言的关键字分为以下3类:
(1)类型说明符用于定义和说明变量、函数或其它数据结构的类型。
如int,double,float,long,short,auto,signed,static,struct,unsigned,char,enum,extern,register和union等。
2023/5/9,18,
(2)语句定义符用于表示一个语句的功能。
如条件语句的语句定义符ifelse,循环语句的语句定义符do,while,for等。
(3)预处理命令字用于表示一个预处理命令,使用时前面要加“”。
如include,define,ifdef,endif等。
关键字后必须有空格、圆括号、尖括号、双引号等分隔符,否则与其它字符一起组成新的标识符。
2023/5/9,19,C语言的基本词法其它,运算符语言中含有相当丰富的运算符。
运算符与变量,函数一起组成表达式,表示各种运算功能。
运算符由一个或多个字符组成。
分隔符在语言中采用的分隔符有逗号和空格两种。
逗号主要是用在类型说明和函数参数表中分隔各个变量。
空格多用于语句各单词之间作间隔符。
常量C语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转义字符等多种。
2023/5/9,20,语言的字符集,
(1)字母小写字母az共26个,大写字母AZ共26个。
(2)数字09共10个。
(3)空格符、制表符、换行符等统称为空白符。
(4)标点和特殊字符,2023/5/9,21,C语言程序设计的基本结构,
(1)顺序结构,2023/5/9,22,
(2)选择结构,或称分支结构,此结构中必包含一个判断框。
根据给定的条件P是否成立而选择执行A框或B框,2023/5/9,23,(3)循环结构,它又称为重复结构,即反复执行某一部分的操作。
又两类循环结构:
(a)当型(while型)循环结构,它的功能是判断当前给定的条件p1成立时,执行A框操作,执行完A后,再判断条件p1是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p1条件不成立为止,此时不执行A框,而从b点脱离循环结构。
2023/5/9,24,(b)直到型(Until型)循环结构,它的功能是先执行A框,然后判断给定的p2条件是否成立,如果p2条件不成立,则再执行A,然后再对p2条件作判断,如果p2条件仍然不成立,又执行A如此反复执行A,直到给定的p2条件成立为止,此时不再执行A,从b点脱离本循环结构。
2023/5/9,25,本章课堂练习,
(1)以下说法中正确的是().A)C语言程序总是从第一个函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分,2023/5/9,26,解答:
C解释:
C语言程序总是从main()函数开始执行,而不论其在程序中的位置。
当主函数执行完毕时,亦即程序执行完毕。
除main函数外,其它函数都是在执行main函数时被调用执行的。
在C语言中,函数不允许嵌套定义。
习惯上,将主函数main()放在最前头,但并不是必须的。
2023/5/9,27,
(2)以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面,2023/5/9,28,解答:
D解释:
凡是用“/*”和“*/”括起来的文字,都是注释。
其出现的位置可以任意。
2023/5/9,29,(3)下列标识符中,合法的变量名有:
A)a.bB)$888C)A1D)3x56,2023/5/9,30,解答:
C解释:
变量名只能由字母、数字和下划线三种字符所组成,且第一个字符必须为字母或下划线。
C语言的关键字不能用作变量名。
另外,C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。
习惯上,变量名和函数名中的英文字母用小写,以增加可读性。
2023/5/9,31,第二章算法及算法设计简介,2.1算法的概念2.2算法的设计与表达2.3简单的算法实例2.4结构化程序设计方法简介,2023/5/9,32,算法的概念,任何一个程序应包含的如下两方面的内容:
(1)对数据的描述。
在程序中要指定数据的类型和数据的组织形式,即数据结构(datastructure).
(2)对操作的描述。
即操作步骤,也就是算法(algorithm)。
著名计算机科学家沃思(NikiklausWirth)提出公式数据结构算法程序,算法:
是对解决某个问题的方法步骤的描述。
程序:
从计算机角度来说,程序是用某种计算机能理解并执行的计算机语言描述解决问题的方法和步骤。
2023/5/9,33,实际上,一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。
因此,可以这样表示:
程序算法数据结构程序设计方法语言工具和环境在这4个方面中,算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的算法。
算法是解决“做什么”和“怎么做”的问题。
2023/5/9,34,算法的表示,1、用自然语言表示算法采用汉语、英语或其它语言来描述解决问题的方法和步骤。
由于自然语言容易出现“歧义性”,且描述问题的文字冗长,因此一般很少使用自然语言来描述算法。
2023/5/9,35,例1:
有50个学生,要求将他们之中成绩在80分以上者打印出来。
用n表示学号,n1代表第一个学生学号,ni代表第i个学生学号。
用g代表学生成绩,gi代表第i个学生成绩,算法可表示如下:
S1:
1iS2:
读入学号ni和成绩giS3:
如果gi80,则打印ni和gi,否则不打印S4:
i+1iS5:
如果i50,返回S2,继续执行;否则,算法结束。
2023/5/9,36,2、用流程图表示算法,
(1)常用的流程图符号,2023/5/9,37,上例用流程图表示:
(1)流程图表示算法的优点:
表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。
简单,易于掌握。
流程图,2023/5/9,38,3、用NS图表示算法,1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。
在这种流程图中,完全去掉了带箭头的流程线。
全部算法写在一个矩形框内,在该框内还可以包含其他的从属于它的框。
这种流程图又称NS结构化流程图。
NS流程图用以下的流程图符号:
(1)顺序结构:
A,B,2023/5/9,39,
(2)选择结构:
P,成立,不成立,A,B,(3)循环结构:
当p1成立,A,当型循环结构,直到p1成立,A,直到型循环结构,用以上3种NS流程图中的基本框,可以组成复杂的NS流程图,以表示算法,2023/5/9,40,上例用NS图表示:
用NS表示算法如图,2023/5/9,41,4、用伪码表示算法,伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。
它不用图形符号,因此书写方便,格式紧凑,也比较好懂,便于向计算机语言算法(即程序)过渡。
例有50个学生,要求将他们之中成绩在80分以上者打印出来。
用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生学号。
用g表示学生成绩,gi表示第i个学生成绩。
2023/5/9,42,BEGIN(算法开始)1=iWhileiiEND(算法结束),用伪代码表示算法如下:
2023/5/9,43,5、用计算机语言表示算法,设计算法的目的是为了实现算法。
因此,不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。
我们的任务是用计算机解题,也就是要用计算机实现算法。
计算机是无法识别流程图和伪代码的。
只有用计算机语言编写的程序才能被计算机执行(当然还要经过编译成目标程序才能被计算机识别和执行)。
因此,在用流程图或伪代码描述出一个算法后,还要将它转换成计算机语言程序。
2023/5/9,44,例:
有50个学生,要求将他们之中成绩在80分以上者打印出来。
用n表示学生学号,n1表示第一个学生学号,ni表示第i个学生学号。
用g表示学生成绩,gi表示第i个学生成绩。
C语言程序如下:
main()intg50,n50,i;for(i=0;i=80)printf(“%6d,%3dn”,ni,gi);,2023/5/9,45,例2:
对一个大于或等于3的正整数,判断它是不是一个素数。
方法:
将n(其中n3)作为被除数,将2到(n-1)各个整数轮流作为除数,如果都不能被整除,则n为素数。
简单的算法实例,2023/5/9,46,算法表示如下:
S1:
输入n的值S2:
2i(i作为除数)S3:
n被i除,得余数rS4:
如果r等于0,表示n能被i整除,则打印n“不是素数”,算法结束;否则执行S5S5:
i+1iS6:
如果in-1,返回S3;否则,打印n“是素数”,算法结束。
2023/5/9,47,S1:
1signS2:
1sumS3:
2denoS4:
(-1)*signsignS5:
sign*(1/deno)termS6:
sum+termsumS7:
deno+1denoS8:
若deno100返回S4;否则算法结束。
例3:
求1-1/2+1/31/4+1/991/100。
2023/5/9,48,结构化程序设计方法简介,1、三种基本结构回顾,
(1)顺序结构,2023/5/9,49,
(2)选择结构,或称分支结构,2023/5/9,50,(3)循环结构,它又称为重复结构,即反复执行某一部分的操作。
又两类循环结构:
(a)当型(while型)循环结构,2023/5/9,51,(b)直到型(Until型)循环结构,2023/5/9,52,2、结构化程序,所谓结构化程序,就是仅仅使用顺序、选择、循环等三种基本结构所构造的程序。
3、结构化程序设计方法,结构化程序设计方法的基本思想是,把一个复杂问题的求解过程分阶段进行。
每个阶段的问题都控制在人们容易理解和处理的范围内。
2023/5/9,53,1=i,i+1=i,gi80,i50,结束,开始,打印ni,gi,Y,N,N,Y,读入ni和gi,2023/5/9,54,解答:
()用自然语言表示()用传统的流程图表示()NS流程图()用伪代码表示等。
1、算法的表示形式主要有哪些?
课堂练习,2023/5/9,55,2、设计算法:
A、B两人各有一桶油,现两人要将各自桶内的油互换。
解答:
必须借助另外一个空桶,并按如下算法进行:
(用Si表示第i步操作,A的桶叫A,B的桶叫B,空桶叫M)开始:
S0:
将A桶中的油倒入M桶中;S1:
将B桶中的油倒入A桶中;S2:
将M桶中的油倒入B桶中;,2023/5/9,56,3、设计算法写出求n!
的算法,解答:
S0:
给出n的值;S1:
1=p;S2:
2=i;S3:
p*i=p;S4:
i+1=i;S5:
若i=n,返回S3;否则,结束,第三章数据描述与基本操作,3.1基本数据类型3.2常用的运算符和表达式3.3表达式及赋值语句3.4基本输入输出操作的实现3.5顺序结构程序设计实例,概述,使用高级语言编写程序,必须在程序中做好两件事:
一是描述数据,二是描述数据的加工方法。
前者是通过数据定义语句实现的,后者是通过若干执行语句,包括用各种运算符构成的表达式来实现的。
本单元主要介绍C语言的基本数据类型,为后续单元的学习奠定一个基础。
关于复杂的数据类型(如数组、指针、结构型、共用型等)将在以后单元中介绍。
3.1C语言的数据类型,C语言具有十分丰富的数据类型。
所谓数据类型是指数据的内在表现形式。
具体的数据类型有以下若干种:
1.基本数据类型:
整型、实型和字符型。
2.构造类型:
由若干个相关的基本数据类型数据组合在一起形成的一种复杂的数据类型,如数组型、结构型和共用型。
3.指针型:
一种简单的数据类型,它是用来表示内存地址的。
指针类型的数据可以表示基本类型数据的地址,它可以表示结构类型数据的首地址和其中某个具体数据的地址。
4.枚举型:
某数据在程序运行中,只取固定的几个值。
我们可以把这几个值列出来,以后这个数据只能取这几个值中的某一个。
5.空类型:
没有任何具体值的数据类型。
C语言中的数据类型如下图所示:
数据类型,基本类型,整型,字符型,实型(浮点型),单精度型,双精度型,枚举类型,构造类型,数组类型,结构体类型,共用体类型,指针类型,空类型,2023/5/9,62,常量和变量,2.常量的分类
(1)整型常量
(2)实型常量(3)字符常量(4)字符串常量(5)符号常量常量的类型,可通过书写形式来判别。
常量1.常量的概念在程序运行过程中,其值不能被改变的量称为常量。
2023/5/9,63,变量1.变量的概念在程序运行过程中,其值可以被改变的量称为变量。
2.变量的两个要素
(1)变量名。
每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。
(2)变量值。
在程序运行过程中,变量值存储在内存中。
在程序中,通过变量名来引用变量的值。
2023/5/9,64,变量有以下几个特征:
变量名、变量值、变量的数据类型、变量的地址、变量的存储类别、变量的作用域及变量的生存期等。
变量必须先定义后使用。
定义变量格式如下:
数据类型关键字;如intx,y,z;变量的初始化:
变量赋初值的过程就是变量初始化过程。
整型数据,整型常量:
整型常量就是整常数,包括正整数和负整数及0。
其书写形式如下:
(1)十进制整数。
如123,456,0。
(2)八进制整数。
以0开头的是八进制数。
如0123表示八进制数123,即(123)8。
(3)十六进制整数。
以0x开头的数是十六进制数。
如0x123,代表十六进制数,(123)16116216316256323291。
整型常量在一般微型机中占用2个字节,不管是十进制、八进制或十六进制整数,它们的数值范围都是十进制的3276832767。
注意:
C语言还提供一种“长整型常量”。
它们的数值范围是十进制的21474836482147483647,在计算机中占用四个字节,它们的书写方法是在数据的末尾加一个大写字母“L”或小写字母“l”,如0L,038L,0x15L。
2023/5/9,67,整型变量,1.分类根据占用内存字节数的不同,整型变量又分为类:
(1)基本整型(类型关键字为int)。
(2)短整型(类型关键字为shortint)。
(3)长整型(类型关键字为longint)。
(4)无符号整型。
无符号型又分为无符号基本整型(unsignedint)、无符号短整型(unsignedshort)和无符号长整型(unsignedlong)三种,只能用来存储无符号整数。
2.占用内存字节数与值域上述各类型整型变量占用的内存字节数,随系统而异。
在16位操作系统中,一般用字节表示一个int型变量,且long型(字节)int型(字节)short型(字节)。
2023/5/9,69,实型数据,实型常量.表示形式实型常量即实数,在语言中又称浮点数,其值有两种表达形式:
(1)一般形式的实数,它是由整数、小数点、小数三部分组成。
其中整数部分或小数部分可以省略。
数的正负用前面的“”(可以省略)号或“”号来区分。
例如,12.345,1.2345,47.0,.234,47.等都是实型常量。
(2)指数形式的实数,它是由尾数、小写字母e或大写字母E、指数三部分组成,尾数部分可以是十进制整型常量或一般形式的实数,指数部分是十进制的短整型常量(可以带E负号)例如,12.3e2,1.2e-3,47.0e2,.234e-3等都是实型常量。
C语言规定,字母e(或者E)之前必须要有数字,且e(或者E)后面的指数必须为整数。
如:
e3,5e3.5,.e3都是不合法的指数形式。
注意:
实型常量在一般的微机中是占用4个字节的,不管是一般形式还是指数形式,它们的数值范围都是1010有效数字7位。
例如,1.23456789和1.234567是相同的,因为实型常量的有效数字是7位,所以1.23456789中的后两位是无效的。
38,38,2023/5/9,72,实型变量,语言的实型变量,分为两种:
(1)单精度型。
类型关键字为float,一般占字节(位)、提供位有效数字。
(2)双精度型。
类型关键字为double,一般占个字节、提供1516位有效数字。
字符型数据,A、把单个字符用一对单引号括起来表示字符常量。
如a,d,w,?
等都是字符常量。
B、用该字符的ASCII码值表示字符常量。
如65表示AC、转义字符:
反斜杠开头后跟规定的单个字符或数字,并用一对单引号括起来表示字符常量。
如下:
一字符常量,1.字符常量是ASCII码字符集里的一个字符,包括字母(大、小写有区别)、数字和标点符号以及特殊字符等,均为半角字符。
2.字符常量表示形式:
2023/5/9,75,例1:
字符与整数的转化,#includestdio.hvoidmain()inti;charn;n=97;i=b;printf(n=%cn,n);printf(i=%dn,i);printf(i=%cn,i);,程序的输出为:
n=ai=98i=b,2023/5/9,76,例2字符参与整数运算,#includestdio.hvoidmain()charn;n=a;n=n-65;printf(n=%dn,n);,程序的输出结果为:
n=32,2023/5/9,77,例3字母的大小写转换,#includestdio.hvoidmain()charn,i;n=a;i=B;n=n-32;i=i+32;printf(n=%cn,n);printf(i=%cn,i);,程序的输出为n=Ai=b,二字符串常量,字符串就是用两个双引号(“)号后括住的若干个字符,例如,“abc”,“123456”,“aBbB”都是字符串。
转义符可以出现在字符串中,例如,“ABC”,“101102x43x44”等都是字符串,分别表示“ABCD”、“ABCD”两个字符串。
一个字符串中所有的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 武汉理工大学