《程序设计和C语言案例 (1).ppt》由会员分享,可在线阅读,更多相关《程序设计和C语言案例 (1).ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C程序设计基础知识编程实践算法理解科学思维2019前言QIAN YAN为什么 学习 c程序设计 了解计算机的工作原理,理解计算机处理问题的方式,掌握用计算机处理问题的方法,培养计算思维,提高分析问题和解决问题的能力,更好的融入现代充斥计算机的社会,具有开发与本领域有关的应用程序知识基础。1 1 1 1程序设计和C语言第第第第 章章章章目 录1.1 什么是计算机程序1.2 什么是计算机语言1.3 C语言的发展及其特点1.4 最简单的C语言程序1.5 运行c程序的步骤和方法1.6 程序设计的任务什么是计算机程序指令程序软件1.11.1 什么是计算机程序指令程序软件指指令令:可以被计算机理解并执行的
2、基本操作命令。程程序序:一组计算机能识别和执行的指令。一个特定的指令序列用来完成一定的功能。软软件件:与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。延迟符什么是计算机语言机器语言汇编语言高级语言1.21.2 什么是计算机语言机器语言人和计算机都能识别的语言计算机能直接识别和接受的二进制代码称为机器指令机器指令。机器指令的集合就是该计算机的机器语言机器语言。特点:难学,难记,难检查,难修改,难以推广使用。依赖具体机器难以移植。汇编语言机器语言的符号化。用英文字母和数字表示指令的符号语言符号语言。特点:比机器语言简单好记,但仍然难以普及。汇编指令需通过汇编程序转换为机
3、器指令才能执行。依赖具体机器难以移植。高级语言高级语言更接近于人们习惯使用的自然语言自然语言和数学语言数学语言。特点:功能强大,不依赖于具体机器。用高级语言编写的源程序需要通过编译程序转换为机器指令的目标程序。延迟符B8 7F 01BB 21 0203 D8B8 1F 042B C3MOV AX 383MOV BX 545ADD BX AXMOV AX 1055SUB AX BXS=1055-(383+545)高级语言的发展02 0201 0103 03初期高级语言,没有严格规范,可以随意跳转。难以维护。BASIC、FORTRAN等等非结构化的语言基本结构:顺序、分支、循环。不允许随意跳转。便
4、于理解和维护。QB、VB、C等等结构化语言程序必须由具有良好特性的基本结构(顺序结构、选择结构、循环结构)构成,程序中的流程不允许随意跳转,程序总是由上而下顺序执行各个基本结构。特点:程序结构清晰,易于编写、阅读和维护。面向对象的语言延迟符C语言的发展及其特点C语言的发展C语言的特点1.31.3.1 C语言的发展早期19721973年间,美国贝尔实验室的D.M.Ritchie 在B语言的基础上设计出了C语言。最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的。随着UNIX的日益广泛使用,C语言也迅速得到推广。1978年以后,C语言先后移植到大、中、小和微型计算机上。C语言便很
5、快风靡全世界,成为世界上应用最广泛的程序设计高级语言。发展以UNIX第7版中的C语言编译程序为基础,1978年,Brian W.Kernighan和Dennis M.Ritchie 合著了影响深远的名著The C Programming Language,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它是实际上第一个C语言标准。标准1989年,美国国家标准协会(ANSI)公布了一个完整的C语言标准ANSI X3.1591989(常称为ANSI C或C 89)。1990年,国际标准化组织ISO接受C 89作为国际标准ISO/IEC 9899:1990,它和C 89基本上是相同的。199
6、9年,ISO又对C语言标准进行了修订,在基本保留原来的C语言特征的基础上,增加了一些功能,尤其是C+中的一些功能,并在2001年和2004年先后进行了两次技术修正,它被称为C 99,C 99是C 89的扩充。延迟符目前一些C语言编译系统并未完全实现C 99建议的功能,它们多以C 89为基础开发。本课程的C语言环境目前上机课本课本本书以C99标准为依据(C99新增功能作特别说明)。目前 目前C语言编译系统多数并未完全实现C99建议的功能。例题运行书中程序基本都可以在VC+6.0上编译和运行。延迟符1.3.2 C语言的特点语言简洁、紧凑,使用方便、灵活0102030405060708C C语法限制
7、不太严格,程序设计自由度大运算符丰富 数据类型丰富具有结构化的控制语句,用函数作为程序的模块单位,便于实现程序的模块化,C语言是完全模块化和结构化的语言生成目标代码质量高,程序执行效率高程序可移植性好允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此C语言既具有高级语言的功能,又具有低级语言的许多功能,可用来编写系统软件1.3.2 C语言的特点1.语言简洁、紧凑,使用方便、灵活1.37个关键字,9种控制语句2.书写形式自由3.c是一个很小内核语言延迟符1.3.2 C语言的特点2.运算符丰富1.34种运算符,括号、赋值、强制类型转换都作为运算符
8、处理2.运算类型丰富3.灵活使用各种运算符可以实现很多高级语言无法实现的运算延迟符1.3.2 C语言的特点3.数据类型丰富1.整型、浮点型、字符型、数组类型、指针类型、结构体类型和共用体类型等等2.c99增加了复数浮点类型、超长整型和布尔类型。延迟符1.3.2 C语言的特点4.语法限制不太严格,程序设计自由度1.对于数组下标越界不进行检查2.变量类型使用灵活,整型数据与字符数据以及逻辑型数据可以通用。3.放宽了语法检查,不要过分依赖C语言编译器差错。延迟符1.3.2 C语言的特点5.具有结构化的控制语句,用函数作为程序的模块单位,便于实现程序的模块化,C语言是完全模块化和结构化的语言1.分支
9、if else,switch2.循环 dowhile,while延迟符1.3.2 C语言的特点6.允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此C语言既具有高级语言的功能,又具有低级语言的许多功能。1.既是成功的系统描述语言,2.也是通用的程序设计语言延迟符1.3.2 C语言的特点7.程序可移植性好1.C本身非常简洁,因此容易移植;2.C的编译系统可编译“标准链接库”中大部分功能,所以不需要修改源代码。3.几乎所有系统都可以使用C语言。延迟符1.3.2 C语言的特点8.目标代码质量高,程序执行效率高总结:1.由于C的可移植性高和硬件控制能力强、表达
10、和运算能力强,许多大的软件都是用C编写的;2.c现在也经常用于“嵌入式系统程序”;因此c的应用非常广泛。延迟符最简单的C语言程序程序举例C语言程序的结构1.41.4.1 最简单的C语言程序例1.1 输出字符要求在屏幕上输出:要求在屏幕上输出:This is a C program.解题解题思路思路在在主函数中用主函数中用printfprintf函数原样输出以上文字。函数原样输出以上文字。代码#include/这是编译预处理指令int main()/定义主函数/函数开始的标志 printf(This is a C program.n);/输出所指定的一行信息 return 0;/执行完毕时返回函
11、数值0/函数结束的标志延迟符1.4.1 最简单的C语言程序#include int main()printf(This is a C program.n);return 0;main是函数的名字,表是函数的名字,表示示“主函数主函数”;每一个;每一个C语言程序都必须有一个语言程序都必须有一个 main 函数。函数。main前面的前面的int表示此函表示此函数的类型是数的类型是int类型类型(整型整型),即在执行主函数后会,即在执行主函数后会得到一个值得到一个值(即函数值即函数值),其值为整型。其值为整型。return 0;的作用是当的作用是当main函函数执行结束前将整数数执行结束前将整数0作
12、为函作为函数值,返回到调用函数处。数值,返回到调用函数处。函数体由花括号函数体由花括号括起来。括起来。1.4.1 最简单的C语言程序#include int main()printf(This is a C program.n);return 0;printf是是C编译系统提供的函数编译系统提供的函数库中的输出函数库中的输出函数(详见第详见第4章章)。printf函数中函数中双引号双引号内的字符内的字符串按原样输出。串按原样输出。n是换行符,即在输出是换行符,即在输出This is a C program.后,显示屏上的光后,显示屏上的光标位置移到下一行的开头。标位置移到下一行的开头。每个语句
13、最后都有一个每个语句最后都有一个分号分号,表,表示语句结束。示语句结束。1.4.1 最简单的C语言程序#include int main()printf(This is a C program.n);return 0;在使用函数库中的输入输出函数时,编译系统要求程序提供有关此函数的信息,程序第1行“#include”的作用就是用来提供这些信息的。stdio.h是系统提供的一个文件名,stdio是standard input&output的缩写。文件后缀.h的意思是头文件(header file),因为这些文件都是放在程序各文件模块的开头的。输入输出函数的相关信息已事先放在stdio.h文件中。
14、1.4.1 最简单的C语言程序#include/这是编译预处理指令int main()/定义主函数/函数开始的标志 printf(This is a C program.n);/输出所指定的一行信息 return 0;/函数执行完毕时返回函数值0/函数结束的标志/表示从此处到本行结束是“注释”,用来对程序有关部分进行必要的说明。在写C程序时应当多用注释,以方便自己和别人理解程序各部分的作用。在程序进行预编译处理时将每个注释替换为一个空格,因此在编译时注释部分不产生目标代码,注释对运行不起作用。注释只是给程序员看的,而不是让注释只是给程序员看的,而不是让计算机执行的。计算机执行的。程序的注释以/
15、开始的单行注释1.这种注释可以单独占一行,也可以出现在一行中其他内容的右侧。此种注释的范围从/开始,以换行符结束。2.如果注释内容一行内写不下,可以用多个单行注释。以/*开始,以*/结束的块注释1.这种注释可以包含多行内容。它可以单独占一行(在行开头以/*开始,行末以*/结束),也可以包含多行。2.编译系统在发现一个/*后,会开始找注释结束符*/,把二者间的内容作为注释。延迟符/第一行注释/继续注释/*整个内容都是注释*/程序的注释以/开始的单行注释#include int main()printf(/how do you do!n);return 0;以/*开始,以*/结束的块注释#incl
16、ude int main()printf(/*how do you do!*/n);return 0;延迟符注意:在字符串中的注意:在字符串中的/和和/*都不是注释,它是字符串都不是注释,它是字符串的一部分。的一部分。1.4.1 最简单的C语言程序例1.2 求和求求两个整数之和两个整数之和解题解题思路思路1.设置3个变量,a、b、sum。2.a和b用来存放两个整数,sum用来存放和数。3.用赋值运算符“=”把相加的结果传送给sum。4.输出变量sum中的数据。代码#include/编译预处理指令 int main()/定义主函数/函数开始 int a,b,sum;/声明变量a,b,sum为整型
17、 a=123;/对变量a赋值 b=456;/对变量b赋值 sum=a+b;/sum中放入a和b相加结果 printf(sum is%dn,sum);/输出结果 return 0;/使函数返回值为0/函数结束延迟符1.4.1最简单的C语言程序#include/编译预处理指令 int main()/定义主函数/函数开始 int a,b,sum;/声明变量a,b,sum为整型 a=123;/对变量a赋值 b=456;/对变量b赋值 sum=a+b;/sum中放入a和b相加结果 printf(sum is%dn,sum);/输出结果 return 0;/使函数返回值为0/函数结束printf(sum
18、is%dn,sum);第一个参数是双引号中的内容sum is%dn,它是输出格式字符串,作用是输出用户希望输出的字符和输出的格式。其中红色内容是用户希望输出的字符,d是指定的输出格式,d表示用“十进制整数”形式输出。第二个参数sum表示要输出变量sum的值。在执行printf函数时,将sum变量的值(以十进制整数表示)取代双引号中的%d。输出时用输出时用sum的值取代的值取代%dprintf(sum is%dn,sum);1.4.1 最简单的C语言程序例1.3 求最大数求两个整数中的较大者求两个整数中的较大者解题解题思路思路1.用一个函数来实现求两个整数中的较大者。2.在主函数中调用此函数并输
19、出结果。代码:main函数#include int main()/主函数:定义主函数/主函数体开始int max(int x,int y);/对被调用函数max的声明int a,b,c;/定义变量a,b,cscanf(%d,%d,&a,&b);/输入a和b的值c=max(a,b);/调用max函数,得到的值赋给cprintf(max=%dn,c);/输出c的值return 0;/返回函数值为0/主函数体结束延迟符1.4.1 最简单的C语言程序代码:max函数/定义max函数,求两个整数中的较大者int max(int x,int y)/函数值、x、y为整型 int z;/声明部分,声明变量z为
20、整型if(xy)z=x;/若xy,将x的值赋给变量zelse z=y;/否则,将y的值赋给变量zreturn(z);/将z的值作为返回值返回延迟符1.4.1 最简单的C语言程序#include/主函数int main()/定义主函数/主函数体开始int max(int x,int y);/对被调用函数max的声明int a,b,c;/定义变量a,b,cscanf(%d,%d,&a,&b);/输入变量a和b的值c=max(a,b);/调用max函数,将得到的值赋给cprintf(max=%dn,c);/输出c的值return 0;/返回函数值为0/主函数体结束/求两个整数中的较大者的max函数i
21、nt max(int x,int y)/定义max函数,函数值为整型,形式参数x和y为整型 int z;/max函数中的声明部分,定义本函数中用到的变量z为整型if(xy)z=x;/若xy成立,将x的值赋给变量zelse z=y;/否则(即xy不成立),将y的值赋给变量zreturn(z);/将z的值作为max函数值,返回到调用max函数的位置#include/主函数int main()int max(int x,int y);int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%dn,c);return 0;/求两个整数中的较大者的max函数
22、int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);本程序包括两个函数:主函数main;被调用的函数max。max函数的作用是将x和y中较大者的值赋给变 量 z,最 后 通 过return语句将z的值作为max的函数值返回给调用max函数的主函数。scanf(%d,%d,&a,&b);scanf是输入函数的名字,作用是输入变量a和b的值,输入字符串的内容为输入数据的格式,&a为变量a的地址。c=max(a,b);max(a,b)调用max函数。调用时将a和b作为max函数的实际参数的值传送给max函数中的形式参数x和y。Int max(
23、int x,int y);由于max定义在main函数之后,需要先声明max函数。1.4.1 最简单的C语言程序#include int main()int max(int x,int y);int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%dn,c);return 0;int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);1.4.1 最简单的C语言程序#include/主函数int main()/定义主函数/主函数体开始int max(int x,int y);/对被调用函数max的
24、声明int a,b,c;/定义变量a,b,cscanf(%d,%d,&a,&b);/输入变量a和b的值c=max(a,b);/调用max函数,将得到的值赋给cprintf(max=%dn,c);/输出c的值return 0;/返回函数值为0/主函数体结束/求两个整数中的较大者的max函数int max(int x,int y)/定义max函数,函数值为整型,形式参数x和y为整型 int z;/max函数中的声明部分,定义本函数中用到的变量z为整型if(xy)z=x;/若xy成立,将x的值赋给变量zelse z=y;/否则(即xy不成立),将y的值赋给变量zreturn(z);/将z的值作为ma
25、x函数值,返回到调用max函数的位置本例程序中两个函数都有return语句,请注意它们的异同。两个函数都定义为整型,都有函数值,都需要用return语句为函数指定返回值。在main函数中的return语句指定的返回值一般为0。max函数的返回值是max函数中求出的两数中的最大值z,只有通过return语句才能把求出的z值作为函数的值并返回调用它的main函数中。1.4.2 C语言程序的结构一个程序由一个或多个源程序文件组成:源程序文件:(例题中都是只包括一个源程序文件)1.预处理指令2.全局声明3.函数定义延迟符#include int main()int max(int x,int y);i
26、nt a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(max=%dn,c);return 0;int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);预处理指令全局声明Main函数Max函数1.4.2 C语言程序的结构函数是C程序的主要组成部分:一个C语言程序是由一个或多个函数组成的,其中必须包含唯一一个main函数程序中被调用的函数可以是系统提供的库函数,也可以是用户根据需要自己编制设计的函数延迟符int main()int max(int x,int y);int a,b,c;scanf(%d,%d
27、,&a,&b);c=max(a,b);printf(max=%dn,c);return 0;库函数调用库函数调用自定义函数1.4.2 C语言程序的结构一个函数包括两个部分:函数首部和函数体。函数体一般包括声明部分和执行部分延迟符int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);函数首部函数体声明部分执行部分执行部分执行部分int max(int x,int y)函数首部说明:intmax(int x,int y)函数函数参数参数参数参数类型 名类型 名类型 名1.4.2 C语言程序的结构程序总是从main函数开始执行程序中的操作是由函
28、数中的C语句完成的在每个数据声明和语句的最后必须有一个分号C语言本身不提供输入输出语句,输入输出操作由函数完成程序应当包含注释延迟符运行C程序的步骤和方法步骤产生的文件1.51.5 运行C程序的步骤与方法开始编辑编译有错?连接执行 结果 正确?结束无正确有不正确可执行目标程序f.exe源程序f.c目标程序f.obj库函数和其他目标程序程序设计的任务问题分析设计算法1.61.6 程序设计的任务编写编写程序程序设计设计算法算法问题问题分析分析对源程序进对源程序进行编辑、编行编辑、编译和连接译和连接运行程序运行程序分析结果分析结果编写程编写程序文档序文档PPT模板下载: 谢谢观看THANK YOU本章内容结束