C语言程序设计的概念.ppt

上传人:cn****1 文档编号:569143566 上传时间:2024-07-27 格式:PPT 页数:80 大小:390.05KB
返回 下载 相关 举报
C语言程序设计的概念.ppt_第1页
第1页 / 共80页
C语言程序设计的概念.ppt_第2页
第2页 / 共80页
C语言程序设计的概念.ppt_第3页
第3页 / 共80页
C语言程序设计的概念.ppt_第4页
第4页 / 共80页
C语言程序设计的概念.ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《C语言程序设计的概念.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计的概念.ppt(80页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计张书源课程概要课程类型:专业必修课课程组成:1、C语言程序设计共64课时,每周4课时。4学分。考核方式为笔试。2、C语言程序设计实验共32课时,每周2课时。2学分。考核方式为机试。最终成绩由平时成绩和考试成绩组成。学习要求课堂学习与自学相结合机下练习与上机练习相结合养成良好的程序书写习惯以严谨的态度设计和书写程序第1章 C语言程序设计的概念1.1 程序与程序设计语言程序是让计算机完成某个任务所安排的工作步骤。任务程序计算机程序设计语言程序是用计算机程序设计语言来描述的。1、机器语言:是计算机可直接识别的语言。机器语言的指令由二进制数组成。直观性差,现在已经不用它直接编写程序。比如

2、:10000000 代表一个加法10010000 代表一个减法2、汇编语言:汇编语言的指令用“助记符”书写。它的指令与机器语言基本上一一对应的。比如:ADD A, B 表示加法SUB A, B 表示减法机器语言和汇编语言都和机器硬件密切相关,称为面向机器的语言。3、高级语言:高级语言接近于人类的自然语言,方便了人们的学习和掌握。高级语言与机器硬件关联小,用它编写的程序通常不需要修改或只需进行少量修改就能用于不同计算机。第一种高级语言是FORTRAN语言,现在已经有数千种。常用的有C语言、FORTRAN语言、Basic语言、Pascal语言等。高级语言程序的开发过程高级语言程序不能被计算机硬件直

3、接识别,必须把它翻译成机器语言程序才能被计算机执行。分析问题建立模型编写源程序翻译执行程序1.2 C语言及其标准C语言是在开发UNIX操作系统过程中产生的,现在已经成为一种通用的程序设计语言。目前C语言已经成为一种基础语言,很多高级语言都是在C语言的基础上产生的。如:C+、Visual C+、Java、C#等。所以,学习C语言是学习计算机程序设计的起点。C语言的标准C语言有多个标准,主要的C标准有:1、C89:通常称为ANSI C。这是第一个完整的C语言标准,以后的C语言标准都是对它的修订、补充。2、C90:对C89作了少量的修改。3、C99:对C标准作了全面修订,是最新的C标准。本课程基于C

4、99介绍C语言程序设计方法,所以,它与前几年的C语言教材介绍的C语言程序略有不同。1.3 C语言程序概要C语言是一种面向过程的程序设计语言,C语言程序的基本部件是函数。C程序结构:程序头部函数函数一个简单的C程序/* ex1_01.c */#include int main(void) printf(“Hello!”); /* 输出一串字符 */ return 0; /* 返回结果 */int main(void)主函数每个C程序必须有一个主函数。计算机执行程序时就是执行主函数中的语句,当主函数中的语句执行完时,这个C程序就执行完了。主函数的格式:int main(void) return 0

5、;主函数的结束语句。其功能是向操作系统返回一个结果。但这个结果不会显示出来。return 0; 语句必须是主函数中的最后一条语句,在它后面的语句不会被执行。int main(void) return 0; /* 返回结果 */ printf(“Hello!”); /* 这个语句不会执行 */printf(“Hello!”);输出语句。其功能是在程序的执行窗口中显示一个字符串。显示的结果不包含“”,所以,该语句的执行结果为:Hello!#include 这是一条“编译预处理命令”。它不是语句,写在C程序的头部,在结束处不用加分号。本命令的作用是把C系统中的stdio.h文件包含进来。这个文件与输

6、入输出操作有关。当程序中使用了printf()等函数时需要包含此文件。/* */注释。它们是程序中说明性的文字,可提高程序的可读性。注释可写在程序的任何地方,它们不被执行。注释可以不写,但在程序的适当位置书写注释是一个良好的编程习惯,它对我们阅读、调试程序有很大帮助。早期的C程序中,主函数可以没有返回值,也不需要return语句。如:void main() printf(“Hello!”);这种写法在有些系统(如DOS、Windows)中是合法有效的,但我们推荐使用前面的更为通用的写法。main() printf(“Hello!”);练习写一个C程序,在计算机屏幕上输出你的名字。/* myna

7、me.c */#include int main(void) printf(“张书源”); /* 输出我的名字 */ return 0; /* 返回结果 */常见问题:1、分号:每个C语句后应该有分号,其它位置不能有分号。/* myname.c */;#include ;int main(void); printf(“张书源”); /* 输出我的名字 */ return 0; /* 返回结果 */;2、引号:字符串应该加引号,程序执行时这个引号不会显示出来。/* myname.c */#include int main(void) printf(“张书源”); /* 输出我的名字 */ ret

8、urn 0; /* 返回结果 */3、书写习惯:书写程序时应该有层次,同一级别的文本应该对齐,低一级别的文本应该缩格。/* myname.c */#include int main(void)printf(“张书源”);return 0;/* myname.c */#include int main(void) printf(“张书源”); return 0; 书写不规范的程序可以使用,但可读性差。应该在一开始就养成良好的书写习惯。附:C语言程序开发环境用C语言书写的程序称为C语言源程序,这种程序不能被计算机执行,必须经过编译、链接,生成可执行程序后才能使用。源程序.c目标程序.obj可执行程

9、序.exe编译链接编辑执行能够进行C程序编辑、编译、链接的平台称为C语言集成开发环境。常用的有Turbo C 2.0、gcc、Turbo C+ 3.0、Visual C+等。Visual C+开发环境Visual C+ 6.0是一个用于开发Visual C+语言的集成开发环境,但它也可以编译、链接C语言程序,所以可以作为C语言的程序的开发平台。使用方法:1、启动Visual C+ 6.0。开始程序Microsoft Visual StudioMicrosoft Visual C+ 6.02、建立一个C语言源程序文件。选择“File(文件)”菜单中的“New(新建)”菜单项。选择“Files”标

10、签中的“C+ Source File”,输入源程序的文件名(后缀应该使用.c),设置文件存放的路径。单击OK按钮就打开了C源程序的编辑窗口。3、编辑C语言源程序。在编辑窗口中输入C源程序,如果有错误,可以在此进行修改,这个过程称为编辑。4、编译。程序输入后,使用“Build(构建)”菜单中的“Compile(编译)”菜单项进行编译。如果源程序中没有语法错误,会在下面的调试窗口中显示“0 error(s), 0 warning(s)”,表示编译成功,并生成后缀为.obj的目标文件。error(s)是指程序中存在的错误数量,如果有错误,必须进行修改,然后再重新编译。warning(s)是警告数量,

11、有警告的程序可以链接和执行,但通常执行的结果可能有问题。5、链接。链接是为了生成可执行文件。使用“Build(构建)”菜单中的“Build(构建)”菜单项进行链接。链接后可生成后缀为.exe的可执行文件。6、执行。使用“Build(构建)”菜单中的“! Execute(执行)”菜单项可执行这个程序,结果会显示在一个执行窗口中。几点说明:1、如果执行的结果有问题,需要在编辑窗口中修改源程序,然后重新编译、链接、执行。2、可以用工具栏的按钮进行编译、链接和执行。3、生成的可执行文件可以脱离开发环境,在操作系统中直接执行。保存源程序:使用“File(文件)”菜单中的“Save(保存)”菜单项可以保存

12、当前的源程序。也可以用工具栏中的“保存”按钮进行保存。打开已存在的源程序:使用“File(文件)”菜单中的“Open(打开)”菜单项,设置文件路径后,可以打开一个已存在的源程序。也可以用工具栏中的“打开”按钮进行保存。另外,也可以在磁盘上找到后缀为.c的源文件,双击这个文件图标,可以打开这个文件。1.3.1 函数C语言中的函数有三种:1、主函数函数名为 main()。每个C程序中有且仅有一个主函数。程序执行时执行的就是主函数中的语句。2、标准库函数:标准库函数是C编译系统预定义的一些函数,可直接在程序中调用。printf()就是一个标准库函数,它的功能是向执行窗口输出内容。标准库函数在后缀为.

13、h的头文件中声明,使用这些函数时,需要在程序的头部包含相应的头文件。#include #include int main(void) float x; x = sin(0.19); printf(“%f”,x); return 0;3、自定义函数:自定义函数是自己设计的函数。如:int add(int a, int b) int sum; sum = a+b; return sum;与主函数不同,自定义函数中的语句不会直接执行,只有在调用时才执行其中的语句。int add(int a, int b) int sum; sum = a+b; return sum;int main(void) i

14、nt s; s = add(2,3); printf(“%d”, s); return 0;函数声明:在调用库函数和自定义函数前,必须进行函数定义或函数声明。库函数的声明位于相应的头文件中,在程序头部用#include命令包含进来即可。自定义函数声明使用函数原型,以分号结束。如:int add(int, int);它们一般也写在程序的头部。说明:如果函数定义写在了函数调用之前,则可以不写函数声明。如果函数定义写在了函数调用之后,则必须写函数声明。好习惯:建议在写程序时,不论函数定义写在何处,都在程序头部书写函数声明。1.3.2 语句语句构成了函数的执行部分。语句有表达式语句、流程控制语句和块语

15、句三类。1、表达式语句:在C语言中,算式、赋值、函数调用都是表达式。s = 2+3;x = sin(0.19);printf(“%d”,sum);都是表达式语句。表达式语句都以“分号”结束。2、流程控制语句:包括分支语句、循环语句等。int max(int a, int b) int m; if(ab) m = a; else m = b; return m;abm=am=b返回m是否3、块语句:块语句是多个语句构成的复合语句。 语句1; 语句2; 块语句用一对花括号把一组语句括起来,在语法上相当于一条语句。1.3.3 名字与声明1、标识符与关键字:标识符也称名字,包括变量名、函数名、文件名等

16、。标识符的命名规则:(1) 标识符可由大小写字母、数字和下划线组成,且不能以数字开头。如:sum、a1、_b、D_25_1(2) 标识符中的字母区分大小写。如:sum、Sum、SUM是不同标识符。(3) C89中,标识符长度不多于31个字符;C99中,标识符长度不多于63个字符。(4) 标识符不能与关键字同名。关键字又称保留字,它们是系统中有特殊意义的名字。关键字包括:类型的名字,如int、float、void等;语句的名字,如if、else、return等;运算符的名字,如sizeof。好习惯:为变量、函数命名时,尽量使用有意义的文字命名,少用单个字母命名。如:max 代表最大值;sum 代

17、表总和;add 代表求和。2、声明:声明包括变量声明、函数声明等。int add(int, int);int add(int a, int b) int sum; sum = a+b; return sum;声明也以分号结束,它与语句的区别在于:语句是在程序执行时处理的,而声明是在编译时处理的。变量声明的作用是为变量分配存储空间。函数声明的作用是让编译器知道函数的原型,包括参数个数和类型、返回值类型等。在C99中,声明也被当作语句,但属于非执行语句。1.3.4 变量及其赋值1、变量:变量的值是可以改变的。变量必须先声明再使用。变量声明方法:类型 变量1 = 初值1, 变量2 = 初值2, ;类

18、型可以是int(整型)、float(实型)等。实例1:int n; /*声明了一个整型变量n*/声明时,如果没有设置初值,则该变量的值为任意值。实例2:int n = 1; /*声明变量并初始化*/初始化是为变量设置一个初始值。实例3:int a, b = 8, c; /*声明了三个整型变量*/a、b、c都是整型变量,其中b进行了初始化。实例4:int t = -1;float x = 3.5, y;t是整型变量,x、y是实型变量。2、变量的赋值:在C语言中,赋值是一种运算,可用于改变变量的值。“=”称为赋值运算符,它组成的表达式称为赋值表达式。赋值表达式格式:变量名 = 表达式这个运算的值是

19、赋值后变量的值。实例1:int n; /*声明了一个整型变量n*/n = 1; /*n赋值为1*/n = 1; 是一个表达式语句。实例2:int n = 1;n = 2.5;n是整型变量,赋值时会把小数截去,n的值为2。实例3:float x;x = 2.5;x的值是2.5。实例4:int a = 1, b = 2;a = a+b;a的值是3。实例5:int a, b, c;a = b = c = 10;赋值是一种运算,具有“自右向左”的结合性。先计算表达式 c = 10,c赋值为10,表达式值为10。再计算表达式 b = 表达式值,b赋值为10,表达式值为10。再计算表达式 a = 表达式值

20、,a赋值为10,表达式值为10。执行结果为a、b、c的值都是10。练习:int a, b, c=1;a = 5;b = 2+(c=a);结果:a 的值是5;b 的值是7;c 的值是5。3、变量的输入和输出:用printf()函数可以输出变量和表达式的值。输出整型:printf(“%d”, 变量或表达式);输出实型:printf(“%f”, 变量或表达式);实例1:int n = 1;printf(“%d”, n); /*输出n的值*/实例2:int n = 1;printf(“n”); /*输出n*/输出时,用n的值替换%d,所以显示的是1。输出时,显示的是n,不是n的值。实例3:int a

21、= 1, b = 2;printf(“%d, %d, %d”, a, b, a+b);输出时,第1个%d用a的值替换,第2个%d用b的值替换,第3个%d用a+b的值替换。显示结果是:1, 2, 3实例4:int a = 1, b = 2;printf(“a+b=%d”, a+b);输出时,用a+b的值替换%d,其它都原样输出。显示结果是:a+b=3用scanf()函数可以输入变量的值。输入整型:scanf(“%d”, &变量);输入实型:scanf(“%f”, &变量);程序遇到scanf()函数时,会暂停执行,等待用户输入数据,用户输入后,程序再继续执行。实例1:int n;scanf(“%

22、d”, &n);实例2:int a, b;scanf(“%d, %d”, &a, &b);要求输入一个整数,存入变量n。输入两个整数,分别存入变量a和b。#include int main(void) int a, b; scanf(“%d,%d”, &a, &b); printf(“%d”, a+b); return 0;例:输入两个整数,输出它们的和值。1.3.5 算数运算1、基本算数运算:*乘整数或实数2*3 1.5*3.8/除整数或实数2/3 1.5/3.8%模整数6%2 6%4+加整数或实数75+88 13.6+5-减整数或实数13-6 7.1-2.3说明:1、整数的运算结果还是整数

23、,实数的运算结果是实数,整数和实数的运算结果是实数。运算结果2*5102*2.55.0 (不是5)5/22 (不是2.5)5/2.02.52、优先级:*、/、%的优先级高于+、-。运算结果1+2*511(1+2)*5155%2*223、在表达式中,只能用圆括号改变运算的优先顺序。如:算式:写成C表达式:(10*x+5*(3*a+b)/(2*(x+y)*(a-b)2、常用数学函数:绝对值函数:int abs(int i) 求整数的绝对值double fabs(double x) 求实数的绝对值abs(-3)3fabs(-3)3.0fabs(-0.5*3)1.5平方根函数:double sqrt(

24、double x) 求平方根,x不能为负sqrt(2)sqrt(a+b)指数函数和对数函数:double pow(double x, double y) 求x的y次方double exp(double x) 求e的x次方double log(double x) 求x的自然对数double log10(double x) 求x的以10为底的对数pow(3, 4)exp(3.5)log(10)log10(10)取整函数:double ceil(double x) 取大于x的整数(正入负舍)double floor(double x) 取小于x的整数(正舍负入)ceil(3.2)4ceil(-3.2

25、)-3floor(3.2)3floor(-3.2)-4练习把下面的算式写成C表达式。(abs(a)+1)*(abs(b)+1)(-b+sqrt(b*b-4*a*c)/(2*a)练习写一个C程序,输入圆的半径,计算并输出圆的周长和面积。3、自反赋值运算符:自反赋值是某些赋值的简化形式。*=乘赋值 x *= yx = x*y/=除赋值 x /= yx = x/y%= 模赋值 x %= yx = x%y+=加赋值 x += yx = x+y-=减赋值 x -= yx = x-y变量 自反赋值运算符 表达式说明:先计算表达式,再进行自反赋值运算。int a=1, b=2;a += b; /* 相当于a

26、=a+b,执行后a为3 */int x=2, y=3;x *= y+2; /* 相当于x=x*(y+2),执行后x为10 */4、自加运算和自减运算:+自加x+x = x+1-自减x-x = x-1自加是对变量的值加1。自减是对变量的值减1。说明:1、自加和自减只能用于整型变量。如:(x+y)+ 是没有意义的。2、自加和自减有前缀用法和后缀用法。int x=2;x+; /*相当于x = x+1*/int x=2;+x; /*相当于x = x+1*/单独使用时,前缀用法和后缀用法效果是相同的。3、前缀方式是“先增值后引用”,后缀方式是“先引用后增值”。int x=2, y;y = +x;x先增1

27、,再赋值给y。所以x为3,y为3。int x=2, y;y = x+;先把x赋值给y,再对x增1。所以x为3,y为2。建议:尽量不要使用容易误解的用法。int x=2, y;y = +x;int x=2, y;+x;y = x;int x=2, y;y = x+;int x=2, y;y = x;x+;int i=2, n;n = +i*2;int i=2, n;n = i+*2;+i是先增值,后引用。所以,运算后:i值为3,n值为6。i+是先引用,后增值。所以,运算后:i值为3,n值为4。4、“+”和“-”运算的优先级高于乘法和除法。5、正负号运算符:+正号+xx的符号不变-负号-xx的符号变反正负号运算的优先级高于乘法和除法。int x=2, y;y = -x*2;运算后:x值不变,y值为-4。小结:优先级类型运算符结合方向1()自左向右2单目+、-+、-自右向左3双目*、/、%自左向右4双目+、-自左向右5双目=、+=、-+、*=、/=、%=自右向左int i=2, j=3, n;n = j += i+*-2;i*(-2):为-4。i+:i值为3。j += -4:j值为-1。n = -1:n值为-1。实例:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号