《C程序设计(第三版)谭浩强.ppt》由会员分享,可在线阅读,更多相关《C程序设计(第三版)谭浩强.ppt(431页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 程序设计设程序设计设计计授课教师:授课教师:刘刘 东东第一章 C语言概述本章要点:本章要点:第一节:第一节:C语言出现的历史背景语言出现的历史背景 (阅读)(阅读)第二节:第二节:C语言的特点语言的特点 (了解)(了解)第三节:简单的第三节:简单的C程序介绍程序介绍 (理解)(理解)第四节:第四节:C程序的上机步骤程序的上机步骤 (掌握)(掌握)第一章 C语言概述考考考考 试试试试 内内内内 容容容容一、一、C C语言的结构语言的结构1.1.程序的构成,程序的构成,MAINMAIN函数和其他函数。函数和其他函数。2.2.头文件,数据说明,函数的开始和结束标志。头文件,数据说明,函数的开始和
2、结束标志。3.3.源程序的书写格式。源程序的书写格式。4.4.C C语言的风格。语言的风格。分分分分析析析析:这这这这部部部部分分分分考考考考试试试试形形形形式式式式主主主主要要要要是是是是选选选选择择择择题题题题,一一一一般般般般会会会会出出出出1 1 1 12 2 2 2个题,都是基本概念个题,都是基本概念个题,都是基本概念个题,都是基本概念。注意程序的书写格式。注意程序的书写格式。注意程序的书写格式。注意程序的书写格式。第一节:C语言出现的历史背景一、语言的发展一、语言的发展一、语言的发展一、语言的发展 第一阶段:机器语言第一阶段:机器语言第一阶段:机器语言第一阶段:机器语言 第二阶段:
3、汇编语言第二阶段:汇编语言第二阶段:汇编语言第二阶段:汇编语言 第三阶段:面向过程的高级语言第三阶段:面向过程的高级语言第三阶段:面向过程的高级语言第三阶段:面向过程的高级语言 有人把有人把C C称为称为“高级语言中的低级语高级语言中的低级语言言”或或“中级语言中级语言”,意为兼有高级和,意为兼有高级和低级语言的特点。低级语言的特点。二、二、二、二、C C语言的发展语言的发展语言的发展语言的发展 ALGOL 60 ALGOL 60CPLCPLBCPLBCPLB BC Cn nC语言是国际上广泛流行的计算机高级语言语言是国际上广泛流行的计算机高级语言,既可用来写系统软件,也可用来写应用软件。既可
4、用来写系统软件,也可用来写应用软件。n nC语言是在语言是在B语言的基础上发展起来的,它的语言的基础上发展起来的,它的根源可以追溯到根源可以追溯到ALGOL60。1960年出现的年出现的ALGOL60是一种面向问题的高级语言,它是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了年英国的剑桥大学推出了CPL语言。语言。CPL语言在语言在ALGOL60的基础上接近硬件一的基础上接近硬件一些,但规模比较大,难以实现。些,但规模比较大,难以实现。1967年英国年英国剑桥大学的剑桥大学的MatinRichards对对CPL语
5、言做了语言做了简化,推出了简化,推出了BCPL语言。语言。1970年美国贝尔年美国贝尔实验室的实验室的KenThompson以以BCPL语言为基础,语言为基础,n n又做了进一步简化,设计出了很简单的而且很接近硬件的B语言(取BCPL的第一个字母),并用B语言写了第一个UNIX操作系统但B语言过于简单,功能有限。19721972年至年至19731973年间,贝尔实验室的年间,贝尔实验室的D.M.Ritchie D.M.Ritchie 在在B B语言的基础上设计出了语言的基础上设计出了C C语言语言(取取BCPLBCPL的第的第二个字母二个字母)。C C语言既保持了语言既保持了BCPLBCPL和
6、和B B语言的语言的优点优点(精练,接近硬件精练,接近硬件),又克服了它们的,又克服了它们的缺点缺点(过于简单,数据无类型等过于简单,数据无类型等)。最初的。最初的C C语言只是为描述和实现语言只是为描述和实现UNIXUNIX操作系统提供操作系统提供一种工作语言而设计的。一种工作语言而设计的。19731973年,年,K.ThompsonK.Thompson和和两人合作把两人合作把UNIXUNIX的的90%90%以上用以上用C C改写,即改写,即UNIXUNIX第第5 5版。版。第二节 C语言的特点一、一、一、一、C C语言是一种结构化、模块化的语言语言是一种结构化、模块化的语言语言是一种结构化
7、、模块化的语言语言是一种结构化、模块化的语言二、二、二、二、C C语言具有丰富的运算符及数据结构语言具有丰富的运算符及数据结构语言具有丰富的运算符及数据结构语言具有丰富的运算符及数据结构三、三、三、三、C C语言区分大小写:语言区分大小写:语言区分大小写:语言区分大小写:1 1、小写字母作为基本书写形式、小写字母作为基本书写形式、小写字母作为基本书写形式、小写字母作为基本书写形式 2 2、符号常数等宏定义的参数名采用大写、符号常数等宏定义的参数名采用大写、符号常数等宏定义的参数名采用大写、符号常数等宏定义的参数名采用大写四、四、四、四、C C语言源程序书写灵活语言源程序书写灵活语言源程序书写灵
8、活语言源程序书写灵活五、五、五、五、C C语言生成的目标代码质量高语言生成的目标代码质量高语言生成的目标代码质量高语言生成的目标代码质量高六、六、六、六、C C语言编写的程序可移植性好语言编写的程序可移植性好语言编写的程序可移植性好语言编写的程序可移植性好(比汇编语言比汇编语言比汇编语言比汇编语言)第三节 简单的C程序介绍一、几个基本函数一、几个基本函数一、几个基本函数一、几个基本函数 1.main().1.main().2.printf(2.printf(格式控制格式控制格式控制格式控制,输出列表输出列表输出列表输出列表)3.scanf(3.scanf(格式控制格式控制格式控制格式控制,输入
9、地址列表输入地址列表输入地址列表输入地址列表)二、程序举例二、程序举例二、程序举例二、程序举例 例例例例1 1:main()main()printf(“I am a student.n”);printf(“I am a student.n”);总结:总结:1 1、本程序的作用是输出一行信息、本程序的作用是输出一行信息、本程序的作用是输出一行信息、本程序的作用是输出一行信息2 2、每一个、每一个、每一个、每一个C C程序都必须有一个程序都必须有一个程序都必须有一个程序都必须有一个mainmain函数函数函数函数,3 3、C C程序的函数体由一对花括号括起来程序的函数体由一对花括号括起来程序的函数
10、体由一对花括号括起来程序的函数体由一对花括号括起来4 4、C C程序的每一行叫做一个语句行程序的每一行叫做一个语句行程序的每一行叫做一个语句行程序的每一行叫做一个语句行5 5、每一语句后必须有一分号、每一语句后必须有一分号、每一语句后必须有一分号、每一语句后必须有一分号6 6、“n”“n”是换行符是换行符是换行符是换行符7 7、本程序的输出通过一个、本程序的输出通过一个、本程序的输出通过一个、本程序的输出通过一个C C的库函数的库函数的库函数的库函数printf()printf()实现实现实现实现例例例例2 2:main()/*main()/*求两数之和求两数之和求两数之和求两数之和*/*/i
11、nt value1,value2,sum;/*int value1,value2,sum;/*定义变量定义变量定义变量定义变量*/*/value1=50;value1=50;value2=25;value2=25;sum=value1+value2;sum=value1+value2;printf(“The sum of%d and%d is printf(“The sum of%d and%d is%dn”,value1,value2,sum);%dn”,value1,value2,sum);总结:总结:1、该程序完成的功能是求两个给定数的和,并输出值。、该程序完成的功能是求两个给定数的和,
12、并输出值。2、/*/之间的是注释部分,不影响程序的执行之间的是注释部分,不影响程序的执行3、C语言中使用变量必须语言中使用变量必须先定义先定义,后使用后使用4、%后面的是格式字符串,指定输入输出的格式后面的是格式字符串,指定输入输出的格式例例例例3 3:main()main()float average();float average();float a,b,c,ave;float a,b,c,ave;scanf(“%f,%f,%f”,&a,&b,&c);scanf(“%f,%f,%f”,&a,&b,&c);ave=average(a,b,c);ave=average(a,b,c);print
13、f(“average=%f”,ave);printf(“average=%f”,ave);float average()float average()float x,y,z;float x,y,z;float aver;float aver;aver=(x+y+z)/3;aver=(x+y+z)/3;return(aver);return(aver);总结:总结:1、本程序包括两个函数,、本程序包括两个函数,主调函数和被调函数。主调函数和被调函数。2、scanf()为输入函数为输入函数3、&为取地址运算符为取地址运算符4、return()函数为返回语函数为返回语句,将被调函数计算出来句,将被调
14、函数计算出来的值带回主调函数。的值带回主调函数。二、二、二、二、C C语言源程序的构成语言源程序的构成语言源程序的构成语言源程序的构成1 1、C C语言是一种函数语言,语言是一种函数语言,语言是一种函数语言,语言是一种函数语言,每个程序至少包含一个函每个程序至少包含一个函每个程序至少包含一个函每个程序至少包含一个函数数数数 main()main()2 2、C C语言的源程序总是从语言的源程序总是从语言的源程序总是从语言的源程序总是从mainmain函数开始执行的函数开始执行的函数开始执行的函数开始执行的3 3、C C语言的语句以分号作为分隔符,分号不可少语言的语句以分号作为分隔符,分号不可少语
15、言的语句以分号作为分隔符,分号不可少语言的语句以分号作为分隔符,分号不可少 (1 1)C C语言的一行可以写几条语句,每条语句以分语言的一行可以写几条语句,每条语句以分语言的一行可以写几条语句,每条语句以分语言的一行可以写几条语句,每条语句以分号分隔号分隔号分隔号分隔 (2 2)C C语言的一条语句可以写多行,以分号作为结语言的一条语句可以写多行,以分号作为结语言的一条语句可以写多行,以分号作为结语言的一条语句可以写多行,以分号作为结束标志束标志束标志束标志4 4、C C语言的输入输出靠函数实现语言的输入输出靠函数实现语言的输入输出靠函数实现语言的输入输出靠函数实现5 5、每条、每条、每条、每
16、条C C语句可以为其加注释语句可以为其加注释语句可以为其加注释语句可以为其加注释6 6、一个、一个、一个、一个C C函数的一般形式为:函数的一般形式为:函数的一般形式为:函数的一般形式为:函数类型函数类型函数名函数名(函数形参函数形参)形参类型定义形参类型定义数据定义部分数据定义部分函数执行部分函数执行部分函数体函数体函数的说明部分函数的说明部分(首部)(首部)如:如:intmax(intx,inty)或或intmax(x,y)intx,y;如:如:limit()第四节第四节 C C程序的上机步骤程序的上机步骤 C C语言的源程序必须在某个编译器(编辑环境语言的源程序必须在某个编译器(编辑环境
17、语言的源程序必须在某个编译器(编辑环境语言的源程序必须在某个编译器(编辑环境Turbo C 2.0Turbo C 2.0)下,才能被翻译为机器所能执行的目标代码。下,才能被翻译为机器所能执行的目标代码。下,才能被翻译为机器所能执行的目标代码。下,才能被翻译为机器所能执行的目标代码。一、上机过程(图一、上机过程(图一、上机过程(图一、上机过程(图1.11.1)1 1、编辑:输入源程序,校正拼写及语法错误、编辑:输入源程序,校正拼写及语法错误、编辑:输入源程序,校正拼写及语法错误、编辑:输入源程序,校正拼写及语法错误2 2、编译:翻译源程序为目标代码、编译:翻译源程序为目标代码、编译:翻译源程序为
18、目标代码、编译:翻译源程序为目标代码(.obj)(.obj)3 3、链接:将各个模块连接到一起,形成可执行程序、链接:将各个模块连接到一起,形成可执行程序、链接:将各个模块连接到一起,形成可执行程序、链接:将各个模块连接到一起,形成可执行程序文件文件文件文件(.exe)(.exe)4 4、执行:执行程序、执行:执行程序、执行:执行程序、执行:执行程序二、上机步骤二、上机步骤二、上机步骤二、上机步骤1 1、在、在、在、在DOSDOS环境下,进入环境下,进入环境下,进入环境下,进入TCTC子目录,键入命令子目录,键入命令子目录,键入命令子目录,键入命令TCTC 如:如:如:如:C:cd tcC:c
19、d tc C:TCtc C:TCtc2 2、在编辑窗口中,输入源程序,并进行检查、在编辑窗口中,输入源程序,并进行检查、在编辑窗口中,输入源程序,并进行检查、在编辑窗口中,输入源程序,并进行检查3 3、用、用、用、用ALT+CALT+C激活激活激活激活CompileCompile菜单,选择菜单,选择菜单,选择菜单,选择“Compile to OBJ”“Compile to OBJ”4 4、用、用、用、用ALT+CALT+C激活激活激活激活CompileCompile菜单,选择菜单,选择菜单,选择菜单,选择“Link to EXE”“Link to EXE”5 5、用、用、用、用ALT+RALT
20、+R激活激活激活激活RUNRUN菜单,选择菜单,选择菜单,选择菜单,选择RunRun命令命令命令命令6 6、用、用、用、用ALT+RALT+R激活激活激活激活RUNRUN菜单,选择菜单,选择菜单,选择菜单,选择User screenUser screen命令命令命令命令注:注:注:注:1 1、可用、可用、可用、可用F9F9功能键一次性进行编译和连接功能键一次性进行编译和连接功能键一次性进行编译和连接功能键一次性进行编译和连接 CTRL+F9 CTRL+F9执行程序执行程序执行程序执行程序 ALT+F5 ALT+F5查看运行结果查看运行结果查看运行结果查看运行结果2 2、可用、可用、可用、可用F
21、10F10激活激活激活激活RUNRUN菜单,选择菜单,选择菜单,选择菜单,选择RUNRUN命令命令命令命令3 3、若在编译或链接过程中出现错误,可用、若在编译或链接过程中出现错误,可用、若在编译或链接过程中出现错误,可用、若在编译或链接过程中出现错误,可用F10F10激活菜单,激活菜单,激活菜单,激活菜单,用光标键移到用光标键移到用光标键移到用光标键移到EditEdit菜单,继续进行编辑修改菜单,继续进行编辑修改菜单,继续进行编辑修改菜单,继续进行编辑修改4 4、若要使用以前的旧文件,可使用、若要使用以前的旧文件,可使用、若要使用以前的旧文件,可使用、若要使用以前的旧文件,可使用ALT+F,A
22、LT+F,打开打开打开打开filefile菜单,菜单,菜单,菜单,选择选择选择选择LoadLoad命令,调出所需文件。命令,调出所需文件。命令,调出所需文件。命令,调出所需文件。5 5、若当前源程序已操作完毕,需要输入下一个程序时,应、若当前源程序已操作完毕,需要输入下一个程序时,应、若当前源程序已操作完毕,需要输入下一个程序时,应、若当前源程序已操作完毕,需要输入下一个程序时,应使用使用使用使用ALT+FALT+F打开文件菜单,选择打开文件菜单,选择打开文件菜单,选择打开文件菜单,选择NEWNEW命令,生成一个新命令,生成一个新命令,生成一个新命令,生成一个新文件文件文件文件第二章第二章 算
23、算 法法本章要点:本章要点:本章要点:本章要点:1 1、了解什么是算法;为什么要使用算法;、了解什么是算法;为什么要使用算法;、了解什么是算法;为什么要使用算法;、了解什么是算法;为什么要使用算法;2 2、了解几种简单常见的算法、了解几种简单常见的算法、了解几种简单常见的算法、了解几种简单常见的算法3 3、了解算法的基本性质、了解算法的基本性质、了解算法的基本性质、了解算法的基本性质4 4、掌握算法的表示方法(重点掌握流程图)、掌握算法的表示方法(重点掌握流程图)、掌握算法的表示方法(重点掌握流程图)、掌握算法的表示方法(重点掌握流程图)5 5、了解结构化程序设计的基本方法(阅读)、了解结构化
24、程序设计的基本方法(阅读)、了解结构化程序设计的基本方法(阅读)、了解结构化程序设计的基本方法(阅读)第一节第一节 算法的概念算法的概念一、程序:算法一、程序:算法一、程序:算法一、程序:算法+数据结构数据结构数据结构数据结构=程序程序程序程序 1 1、算法:为解决一个问题而采取的方法和步骤。、算法:为解决一个问题而采取的方法和步骤。、算法:为解决一个问题而采取的方法和步骤。、算法:为解决一个问题而采取的方法和步骤。2 2、数据:程序操作对象、数据:程序操作对象、数据:程序操作对象、数据:程序操作对象算法算法算法算法+数据结构数据结构数据结构数据结构+程序设计方法程序设计方法程序设计方法程序设
25、计方法+语言工具和环境语言工具和环境语言工具和环境语言工具和环境=程序程序程序程序二、程序设计的全过程:二、程序设计的全过程:二、程序设计的全过程:二、程序设计的全过程:分析问题分析问题分析问题分析问题划分模块划分模块划分模块划分模块建立模型建立模型建立模型建立模型选择数据结构选择数据结构选择数据结构选择数据结构和算法和算法和算法和算法描述算法(例如画出流程图)描述算法(例如画出流程图)描述算法(例如画出流程图)描述算法(例如画出流程图)编程序编程序编程序编程序上上上上机调试程序机调试程序机调试程序机调试程序分析运行结果分析运行结果分析运行结果分析运行结果整理结果整理结果整理结果整理结果写出程
26、序说写出程序说写出程序说写出程序说明书等文档。明书等文档。明书等文档。明书等文档。三、说明三、说明三、说明三、说明 1 1、对同一问题,有不同的算法;算法有优劣之分、对同一问题,有不同的算法;算法有优劣之分、对同一问题,有不同的算法;算法有优劣之分、对同一问题,有不同的算法;算法有优劣之分 2 2、计算机算法分为数值算法和非数值算法、计算机算法分为数值算法和非数值算法、计算机算法分为数值算法和非数值算法、计算机算法分为数值算法和非数值算法第二节第二节 算法举例算法举例1 1、有两盘磁带,、有两盘磁带,A A录英语,录英语,B B录音乐,把它们交换过来录音乐,把它们交换过来解解解解:第一步:先将
27、第一步:先将第一步:先将第一步:先将A A磁带中的英语转录到磁带中的英语转录到磁带中的英语转录到磁带中的英语转录到C C磁带上磁带上磁带上磁带上 第二步:再将第二步:再将第二步:再将第二步:再将B B磁带中的音乐转录到磁带中的音乐转录到磁带中的音乐转录到磁带中的音乐转录到A A磁带上磁带上磁带上磁带上 第三步:最后交第三步:最后交第三步:最后交第三步:最后交C C磁带中的英语转录到磁带中的英语转录到磁带中的英语转录到磁带中的英语转录到B B磁带上磁带上磁带上磁带上2 2、把三个任意数按大小顺序排列、把三个任意数按大小顺序排列解:解:解:解:该问题的思路是把大数放在该问题的思路是把大数放在该问题
28、的思路是把大数放在该问题的思路是把大数放在a a中,把次大中,把次大中,把次大中,把次大的数放在的数放在的数放在的数放在b b中,把小数放在中,把小数放在中,把小数放在中,把小数放在c c中,再把这个思中,再把这个思中,再把这个思中,再把这个思路进一步细化,即有下面算法:路进一步细化,即有下面算法:路进一步细化,即有下面算法:路进一步细化,即有下面算法:第一步:输入第一步:输入a,b,c三个数三个数第二步:将第二步:将a和和b比较,较大者放在比较,较大者放在a中,小者放在中,小者放在b中中第三步:将第三步:将a和和c比较,较大者放在比较,较大者放在a中,小者放在中,小者放在c中中第四步:将第四
29、步:将b和和c比较,较大者放在比较,较大者放在b中,小者放在中,小者放在c中中第五步:输出排列好的第五步:输出排列好的a,b,c三个数三个数3 3、求、求5 5!解题思路:设两个变量,一个代表被乘数,一个解题思路:设两个变量,一个代表被乘数,一个解题思路:设两个变量,一个代表被乘数,一个解题思路:设两个变量,一个代表被乘数,一个代表乘数。将每一次乘积放在被乘数中。代表乘数。将每一次乘积放在被乘数中。代表乘数。将每一次乘积放在被乘数中。代表乘数。将每一次乘积放在被乘数中。算法设计:算法设计:S1:使:使P=1S2:使:使i=2S3:使:使P*I,乘积仍放在,乘积仍放在P变量中,表示为变量中,表示
30、为p*I=pS4:使:使i的值加的值加1,即,即i+1=iS5:如果:如果i不大于不大于5,返回重新执行步骤,返回重新执行步骤S3及其后的及其后的S4、S5;否则算法结束。否则算法结束。4 4、有、有5050个学生,要求将他们之中成绩在个学生,要求将他们之中成绩在8080分以上者分以上者打印出来。打印出来。用用用用n n表示学生学号,表示学生学号,表示学生学号,表示学生学号,n n1 1代表第一个学生学号,代表第一个学生学号,代表第一个学生学号,代表第一个学生学号,n ni i代代代代表第表第表第表第i i个学生的学号。用个学生的学号。用个学生的学号。用个学生的学号。用g g代表学生成绩,代表
31、学生成绩,代表学生成绩,代表学生成绩,g gi i代表第代表第代表第代表第i i个学生成绩,算法可表示如下:个学生成绩,算法可表示如下:个学生成绩,算法可表示如下:个学生成绩,算法可表示如下:S1S1:i=1;i=1;S2S2:如果:如果:如果:如果g gi i=80=80,则打印,则打印,则打印,则打印n ni i和和和和g gi i ,否则不打印,否则不打印,否则不打印,否则不打印S3S3:i=i+1;i=i+1;S4S4:如果:如果:如果:如果i=50i=50,返回,返回,返回,返回S2S2,继续执行;否则,算法结,继续执行;否则,算法结,继续执行;否则,算法结,继续执行;否则,算法结束
32、束束束5 5、判定、判定2000250020002500年中的每一年是否闰年,将结果年中的每一年是否闰年,将结果输出闰年的条件是输出闰年的条件是:(:(1 1)能被)能被4 4整除,但不能被整除,但不能被100100整整除的年份都是闰年;(除的年份都是闰年;(2 2)能被)能被100100整除,又能被整除,又能被400400整整除的年份是闰年。不符合这两个条件的年份都不是闰除的年份是闰年。不符合这两个条件的年份都不是闰年。年。算法如下:设算法如下:设算法如下:设算法如下:设y y为被检测的年份为被检测的年份为被检测的年份为被检测的年份S1S1:y=2000y=2000S2S2:若:若:若:若y
33、 y不能被不能被不能被不能被4 4整除,则输出整除,则输出整除,则输出整除,则输出y“y“不是闰年不是闰年不是闰年不是闰年”。然后转到。然后转到。然后转到。然后转到S6S6S3S3:若:若:若:若y y能被能被能被能被4 4整除,不能被整除,不能被整除,不能被整除,不能被100100整除,则输出整除,则输出整除,则输出整除,则输出y“y“是闰年是闰年是闰年是闰年”。然后然后然后然后 转到转到转到转到S6S6S4S4:若:若:若:若y y能被能被能被能被100100整除,又能被整除,又能被整除,又能被整除,又能被400400整除,则输出整除,则输出整除,则输出整除,则输出y“y“是闰年是闰年是闰
34、年是闰年”。否则输出否则输出否则输出否则输出y“y“不是闰年不是闰年不是闰年不是闰年”,然后转到,然后转到,然后转到,然后转到S6S6S5S5:输出:输出:输出:输出y“y“不是闰年不是闰年不是闰年不是闰年”S6S6:y=y+1y=y+1S7S7:当:当:当:当y=2500y2500y2500,算法停止。,算法停止。,算法停止。,算法停止。6 6、求、求1-1/2+1/3+1/33+1/99-1/1001-1/2+1/3+1/33+1/99-1/100算法如下:算法如下:算法如下:算法如下:S1:sign=1S1:sign=1S2:sum=1S2:sum=1S3:deno=2S3:deno=2
35、S4:sign=(-1)*signS4:sign=(-1)*signS5:term=sign*(1/deno)S5:term=sign*(1/deno)S6:sum=sum+termS6:sum=sum+termS7:deno=deno+1S7:deno=deno+1S8:S8:若若若若deno=100,deno=100,返回执行返回执行返回执行返回执行S4S4;否则算法结束;否则算法结束;否则算法结束;否则算法结束7 7、对于一个大于或等于、对于一个大于或等于3 3的正整数,判断它是不是一个素数的正整数,判断它是不是一个素数判断一个正整数判断一个正整数判断一个正整数判断一个正整数n n是否为
36、素数的方法:将是否为素数的方法:将是否为素数的方法:将是否为素数的方法:将 n n作为被作为被作为被作为被除数,将除数,将除数,将除数,将2 2到到到到n n的平方根各个整数轮流作为除数,的平方根各个整数轮流作为除数,的平方根各个整数轮流作为除数,的平方根各个整数轮流作为除数,如果都不能整除,则如果都不能整除,则如果都不能整除,则如果都不能整除,则n n为素数。为素数。为素数。为素数。算法:算法:S1:输入:输入n的值的值S2:i=2(i作为除数)作为除数)S3:n被被i除,得余数除,得余数rS4:如果:如果r=0,表示表示n能被能被i整除,则打印整除,则打印n“不是素数不是素数”,算法结束;
37、,算法结束;否则执行否则执行S5S5:i=i+1S6:如果:如果ib if ab then then 把把把把a a交给交给交给交给maxmax else else 把把把把b b交给交给交给交给maxmax if maxc if maxc then then 输出最大值输出最大值输出最大值输出最大值maxmax else else 输出最大值输出最大值输出最大值输出最大值c c3 3、NSNS图表示法图表示法输出输出输出输出c c b max b max输出输出输出输出maxmax maxc?maxc?真真真真 假假假假 a max a max ab?ab?真真真真 假假假假4 4、流程图表
38、示法、流程图表示法、流程图表示法、流程图表示法开始开始/结束结束输入输出框输入输出框判断框判断框处理框处理框或流程线流程线连接点连接点注释框注释框流程图表示法常用图例流程图表示法常用图例开始开始输入输入a,b,cab?Max=aMax=bmaxc?输出输出max输出输出c结束结束YYNN5 5、计算机语言描述、计算机语言描述、计算机语言描述、计算机语言描述 main()main()int a,b,c,max;int a,b,c,max;scanf(“%d,%d,%d”,&a,&b,&c);scanf(“%d,%d,%d”,&a,&b,&c);if(ab)if(ab)max=a;max=a;el
39、se max=b;else max=b;if(maxc)if(maxc)printf(“The max=%dn”,max);printf(“The max=%dn”,max);else printf(“The max=%dn”,c);else printf(“The max=%dn”,c);第三章第三章数据类型、运算符与表达式数据类型、运算符与表达式本章要点:(本章内容全部要求掌握)本章要点:(本章内容全部要求掌握)1、常量与变量、常量与变量2、整型、实型、字符型数据、整型、实型、字符型数据3、变量赋初值的几种方法、变量赋初值的几种方法4、不同类型的数值型数据的混合运算、不同类型的数值型数据的
40、混合运算5、算术运算符和算术表达式、算术运算符和算术表达式6、赋值运算符和赋值表达式、赋值运算符和赋值表达式7、逗号运算符和逗号表达式、逗号运算符和逗号表达式考考试试内内容容二、数据类型及其运算二、数据类型及其运算1.C的数据类型(基本类型、构造类型、指针类型、的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法。空类型)及其定义方法。2.C运算符的种类、运算优先级和结合性。运算符的种类、运算优先级和结合性。3.不同类型数据间的转换与运算。不同类型数据间的转换与运算。4.C表达式类型(表达式类型(赋值表达式,算术表达式,关系表达式,赋值表达式,算术表达式,关系表达式,逻辑表达式,条件
41、表达式,逗号表达式逻辑表达式,条件表达式,逗号表达式)和求值规则。)和求值规则。分析:这部分考试形式主要是选择题,分析:这部分考试形式主要是选择题,一般会出一般会出4-5个选择题和个选择题和2-3个填空题个填空题。变量主要搞清楚全局变量。变量主要搞清楚全局变量(extern)和局部变量(在一个函数中或在一个模块中)和局部变量(在一个函数中或在一个模块中)。运算符要注意是。运算符要注意是左结合左结合或或右结合右结合,3种逻辑运算符:种逻辑运算符:!(逻辑非)、!(逻辑非)、&(逻辑与)和(逻辑与)和|(逻辑或),位运算:(逻辑或),位运算:&、|和和的运算。另外,条件表达式和逗号表达式也是常的运
42、算。另外,条件表达式和逗号表达式也是常考题型。考题型。第一节第一节C的数据类型的数据类型数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void整型整型int字符型字符型char实型(浮点型)实型(浮点型)枚举类型枚举类型enum单精度型单精度型float双精度型双精度型double数组类型数组类型结构体类型结构体类型struct共用体类型共用体类型unionC语言提供的数据结构是以数据类型出现的,如下:C语言数据有常量和变量之分,它们都属于以上数据类型。语言数据有常量和变量之分,它们都属于以上数据类型。一、常量:在程序运行过程中,值不变的量。一、常量:在程序运行过
43、程中,值不变的量。1、直接常量:即常数。如、直接常量:即常数。如1、2、3.5、a。可以分为实。可以分为实型、整型、字符型。其特点是从字面上即可判定它型、整型、字符型。其特点是从字面上即可判定它们是某一们是某一类型的常量。也称类型的常量。也称“字面常量字面常量”2、符号常量:在一个程序中指定用一个符号代表一个、符号常量:在一个程序中指定用一个符号代表一个常量。符号常量用常量。符号常量用#define命令定义。符号常量一经命令定义。符号常量一经定义其值在其作用域内不能改变。习惯上用大写。定义其值在其作用域内不能改变。习惯上用大写。如在程序的开头有如下定义:如在程序的开头有如下定义:#define
44、PI3.1415926则在整个程序中可用则在整个程序中可用“PI”代替代替3.1415926进行运算进行运算第二节第二节常量与变量常量与变量例:符号常量的使用例:符号常量的使用#definePI3.1415926#defineR2.0main()doublear(doubler),cir(doubler);printf(“area=%f”,ar(R);printf(“tcircum=%f”,cir(R);doublear(doubler)return(PI*r*r)doublecir(doubler)return(2.0*PI*r)同是常量,符号常量比一般常量同是常量,符号常量比一般常量在程序
45、设计中有何优势:在程序设计中有何优势:#definePRICE30main()intnum,t;num=10;t=num*PRICE;printf(“total=%d”,t);(1)含义清楚)含义清楚(2)一改全改)一改全改二、变量:在程序运行的过程中,值可以改变的量。二、变量:在程序运行的过程中,值可以改变的量。标识符:某种对象的名字或标记。标识符:某种对象的名字或标记。1、变量名:、变量名:变量名只能由字母、数字和下划线组成,且第一个字变量名只能由字母、数字和下划线组成,且第一个字符必须为字母和下划线。符必须为字母和下划线。如下是合法的变量名:如下是合法的变量名:sum、i、student
46、_name、_1_2_3、_above、DAY如下是不合法的变量名:如下是不合法的变量名:,$123,#33,3d64,ab注意:注意:1.大写字母和小写字母被认为是两种不同的字符。大写字母和小写字母被认为是两种不同的字符。2.标识符的长度为标识符的长度为8位位,超过超过8位只有前位只有前8位有效(位有效(TurboC则允许则允许32个字符)。个字符)。3.尽量做到见名知意;尽量做到见名知意;如:如:SUM和和sum为两个不同的变量。为两个不同的变量。student_name和和student_number为两个相同的变量。为两个相同的变量。3、变量值:变量定义后,为其分配存储空间,存放的是、
47、变量值:变量定义后,为其分配存储空间,存放的是变量的值。变量的值。inta;a=56;56a变量名变量名变量值变量值存储单元存储单元2、变量定义:、变量定义:变量声明的一般形式:变量声明的一般形式:;如:如:intsum,i;4、变量的使用:先定义,后使用。、变量的使用:先定义,后使用。原因:原因:(1)保证变量正确使用:未被定义的变量不能使用)保证变量正确使用:未被定义的变量不能使用(2)不同类型的变量占用的内存)不同类型的变量占用的内存空间空间不同不同(3)不同类型的变量对应取值的)不同类型的变量对应取值的范围范围不同不同(4)不同类型的变量对应不同的一组)不同类型的变量对应不同的一组操作
48、操作如:定义变量如:定义变量“student”,如果在使用时,误写为如果在使用时,误写为“stdent”,不能使用;不能使用;整数占两个字节,实数占四个字节,字符占一个字节;整数占两个字节,实数占四个字节,字符占一个字节;整数范围为整数范围为-3276832767之间;实数为之间;实数为10-381038;字符为;字符为0255;整数有整数有“求余求余”(%)运算)运算,实型数据没有。实型数据没有。第三节第三节整型数据整型数据一、整型常量:有三种表示形式一、整型常量:有三种表示形式1、十进制数形式:、十进制数形式:1、98、3452、八进制数形式:以、八进制数形式:以0开头的数字。开头的数字。
49、01、0767*81+6*80=(62)103、十六进制数形式:以、十六进制数形式:以0 x开头的数字。开头的数字。0 x3F、0 x7657*162+6*161+5*160二、整型变量:二、整型变量:1、存储形式:数值以补码形式表示,占两个字节、存储形式:数值以补码形式表示,占两个字节见教材见教材P41图图3.2、3.3所示所示2、整型变量的分类、整型变量的分类1)有符号基本整型:以)有符号基本整型:以signedint表示,表示,占两个字节,占两个字节,表示范围表示范围-32768327672)无符号基本整型:以)无符号基本整型:以unsignedint表示,表示范围表示,表示范围0655
50、353)有符号短整型:以)有符号短整型:以signedshortint表示,表示,一般也占一般也占2个字节,要求不长于个字节,要求不长于int型,表示范围型,表示范围-3276832767。4)无符号短整型:以无符号短整型:以unsignedshortint表示,表示,表示范围表示范围0655355)有符号长整型:以)有符号长整型:以signedlongint表示,表示,一般占一般占4个字节,要求不小于个字节,要求不小于int型,表示范围:型,表示范围:-231(2311)6)无符号长整型:以)无符号长整型:以unsignedlongint表示表示表示范围:表示范围:0(2321)3、整型变量