1、教材、参考书与课时安排教材教材C程序程序设计(第二版)(第二版)谭浩浩强编著著清清华大学出版社大学出版社参考参考书C语言程序言程序设计教程教程谭浩浩强高等教育出版社高等教育出版社C高高级实用程序用程序设计王士元王士元清清华大学出版社大学出版社C程序程序设计试题汇编谭浩浩强清清华大学出版社大学出版社课时安排安排64学学时熟记熟记C语言的基本概念语言的基本概念熟悉熟悉TurboC的上机操作环境的上机操作环境会读、会编、会调试会读、会编、会调试C程序程序学习要点熟记熟记C语言的语法语言的语法学会算法分析与算法设计学会算法分析与算法设计课程目的课程要求课前请做好预习课前请做好预习保持课堂安静,头脑清醒
2、,思维活跃保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间重视上机实践,有效利用宝贵的上机时间第1章C语言概述第2章程序的灵魂算法第3章数据类型、运算符与表达式第4章最简单的C程序设计顺序程序设计第5章选择结构程序设计第6章循环控制第7章数组第8章函数第9章预处理命令第10章指针第11章结构体与共用体第12章位运算第13章文件目录C语言发展历史C语言的特点简单的C程序介绍C程序的上机步骤第1章C语言概述 C语言程序设计 第一章第一章 C C语言概述语言概述1.1C语言言发展展历史史程序程序设计语言的言的发展展CPU
3、指令系统,由0、1序列构成的指令码组成如:10000000加10010000减用助记符号描述的指令系统,可进行地址、位操作如ADDA,B编写系统软件,直接对硬件操作,可读性,移植性差面向机器的语言 C语言程序设计 第一章第一章 C C语言概述语言概述可读性,移植性好,编写应用程序一般较难实现汇编语言的某些功能如:地址和位的操作C语言兼有高级和低级语言的功能适合写系统软件和应用软件又称中级语言C语言言发展展过程程v产生背景生背景lALGOL60CPL语言言BCPLB语言,写言,写UNIX系系统v产生生过程程l时间:19721973l地点地点:美国美国贝尔实验室室l目的目的:UNIX操作系操作系统
4、l设计人人:Ken.Thompson和和Dennis.M.RitchievC标准准l标准准C:1978年年K&R合著合著TheCProgrammingLanguagelANSIC:1983年年l87ANSIC:1987年年l1990年国年国际标准的准的ANSIC,1994年再次修年再次修订。vC版本版本lMicrosoftC或称或称MS-ClTurboC或称或称TC C语言程序设计 第一章第一章 C C语言概述语言概述1.2C语言的特点言的特点语言言简洁、紧凑、灵活凑、灵活运算符丰富运算符丰富数据数据结构、数据构、数据类型丰富型丰富v链表、表、树、栈程序程序设计结构化、模构化、模块化化v结构化
5、控制构化控制语句:句:ifelse、while、switch、forv函数作函数作为模模块单位位语法不法不严格、程序格、程序设计自由度大自由度大可以可以访问内存地址、内存地址、进行位运算行位运算生成目生成目标代代码质量高量高可移植性好可移植性好 C语言程序设计 第一章第一章 C C语言概述语言概述32个关键字:(由系统定义,不能重作其它定义由系统定义,不能重作其它定义)auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshor
6、t signed sizeof static structswitch typedef unsigned union voidvolatile whileTurboC扩充了11个关键字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal注意:在注意:在C语言中,关键字都是小写的。语言中,关键字都是小写的。C语言程序设计 第一章第一章 C C语言概述语言概述C语言简洁、紧凑,使用方便、灵活。ANSI C一共只有32个关键字,见365页 附录B 9种控制语句:if()elsefor()while()dowhile()continuebreakswitchg
7、otoreturn C语言程序设计 第一章第一章 C C语言概述语言概述C语言有 9 种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。C语言程序设计 第一章第一章 C C语言概述语言概述表1.1 C语言与Pascal语言比较通过表1.1 我们可以得出结论:C比 Pascal简练,因此源程序更短,编程效率高。C语言PASCAL语言含义 if(e)S;int i;int a10;int f();int*p;i+=2;i+,+I;BEGIN ENDIF(e)THEN S;VAR i:INTEGER;VAR a:ARRAY1.10 OF INTEGER;FUNCTION f(
8、):INTEGER;VAR P:INTEGER;i=i+2;i=i+1;函数体、分程序、复合语句条件语句 定义i为整形变量定义a为一维数组定义f为返回整形值函数;p为指向整形变量的指针变量;赋值语句,使i+2赋给Ii自增值1,i加1赋给I34种运算符:算术运算符:+-*/%+-关系运算符:=!=逻辑运算符:!&|位运算符 :|&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数 :sizeof强制类型转换:(类型)分量运算符:.-下标运算符:其它 :()-注意:各种运算符混合使用,其优先级与结注意:各种运算符混合使用,其优先级与结合方法是难点,可先预习。合方法是难点,
9、可先预习。C语言程序设计 第一章第一章 C C语言概述语言概述C语言运算符丰富(附录C)C数据类型基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union C语言程序设计 第一章第一章 C C语言概述语言概述C语言数据结构丰富1.3简单的简单的C程序介绍程序介绍/*example1.1 The first C Program*/#include void main()printf(“This is a c program.n”
10、);C语言程序设计 第一章第一章 C C语言概述语言概述注释编译预处理主函数语句输出:This is a c program.例例1.1 1.1 第一个程序第一个程序This is a c program.printfprintf语句中的“nn”是换行换行符符 例例1.21.2求求俩个个数数的的和和/*example1.1 calculate the sum of a and b*/#include/*This is the main program */void main()int a,b,sum;/*定义变量*/a=10;b=24;sum=add(a,b);printf(”sum=%dn,
11、sum);/*This function calculates the sum of x and y */int add(int x,int y)int z;z=x+y;return(z);运行结果:sum=34函数语句预处理命令注释 C语言程序设计 第一章第一章 C C语言概述语言概述例例1.3 1.3 从键盘输入两个整数,输出其中较大的数从键盘输入两个整数,输出其中较大的数#include void main()int max(int x,int y)int a,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(max=%d,c);int max(int
12、 x,int y)int z;if(xy)z=x;else z=y;return(z);scanfscanf语句中“&a”的含义是“取地址取地址”输入:10,20输出:max=20声明部分,定义变量声明部分,定义变量调用调用max函数,返回值赋给函数,返回值赋给c定义定义max子函数,函数值、子函数,函数值、形参形参x、y为整型为整型通过通过max函数将函数将z值带回调用处值带回调用处C语言格式特点言格式特点v习惯用用小写小写字母,大小写敏感字母,大小写敏感v不使用行号,不使用行号,无程序行无程序行概念概念v可使用空行和空格可使用空行和空格v常用常用锯齿形形书写格式写格式 C语言程序设计 第一
13、章第一章 C C语言概述语言概述main().main()inti,j,sum;sum=0;for(i=1;i10;i+)for(j=1;j10;j+)sum+=i*j;printf(“%dn”,sum);优秀程序员的素质之一:使用TAB缩进对齐有足够的注释有合适的空行C语言言结构特点构特点v函数与主函数函数与主函数l程序由一个或多个函数程序由一个或多个函数组成成l必必须有且只能有一个主函数有且只能有一个主函数main(),可以放在程序中任一可以放在程序中任一位置位置l程序程序执行从行从main开始,在开始,在main中中结束,其它函数通束,其它函数通过嵌嵌套套调用得以用得以执行。行。v程序程
14、序语句句lC程序由程序由语句句组成成l用用“;”作作为语句句终止符止符v注注释l/*/为注注释,不能嵌套不能嵌套l不不产生生编译代代码例:/*Thisisthemain/*ofexample1.1*/*/非法v编译预处理命令编译预处理命令 C语言程序设计 第一章第一章 C C语言概述语言概述编辑链接编译执行1.4C程序的上机步骤C程序开发步骤file.exe C语言程序设计 第一章第一章 C C语言概述语言概述程序代码的录入,生成源程序*.c语法分析查错,翻译生成目标程序*.obj与其它目标程序或库链接装配,生成可执行程序*.exeTurboC集成开集成开发环境境v配置要求配置要求lUNIX,
15、PC-DOS,MS-DOS,UCDOS操作系操作系统l硬硬盘容量容量约2M,448KRAM运行空运行空间v安装安装TurboCl创建子目建子目录lInstalll若不是可安装若不是可安装盘,将文件拷将文件拷贝到到对应的目的目录下下TC*.*INCLUDELIB*.*SYS*.*C语言程序设计 第一章第一章 C C语言概述语言概述v进入入TurboClD:TCTC.exe l主控菜主控菜单u文件操作文件操作FILE:NewLoadSaveWritetou编辑操作操作EDIT:插入插入/修改修改块查找找/替替换u编译链接接COMPILELINKMAKEu执行行RUNv退出退出TurboClAlt+
16、xlAlt+F,Qv帮助帮助HelplF1lCtrl+F1 C语言程序设计 第一章第一章 C C语言概述语言概述基本操作:F10-调用主菜单F2-存盘F3-打开F1-帮助信息Alt+F9-CompileCtrl+F9-RunAlt+F5-UserScreenAlt+X-退出Tcv常用热键常用热键文本编辑:-移动光标PgUp,PgDn-上下翻页Ctrl+PgUp,Ctrl+PgDn-文件首尾Home行首 End行尾Ddelete Insert Bkspace块操作:Ctrl+KB-块开始标记Ctrl+KK-块结束标记Ctrl+KC-块拷贝Ctrl+KV-块移动Ctrl+KY-块删除Ctrl+KH
17、-块隐藏程序调试:F8-StepoverF7-TraceintoF4-GotoCursorCtrl+F7-AddWatchCtrl+F8-ToggleBreakpointCtrl+F2-ProgramReset窗口操作:F5-窗口缩放F6-窗口切换 C语言程序设计 第一章第一章 C C语言概述语言概述课后作后作业预习“题解与上机指解与上机指导”一一书中中vP181199页的的14.314.10节vP236页实验1教材教材P12:1.5、1.6、1.7、1.8题。注意:有关注意:有关设计程序的作程序的作业,必,必须经过上机上机调试!C语言程序设计 第一章第一章 C C语言概述语言概述算法的概念简
18、单算法举例算法的特性怎样表示一个算法第2章程序的灵魂算法 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法结构化程序设计方法 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法程序包括的内容:程序包括的内容:v数据数据结构:数据的构:数据的类型和型和组织形式形式v算法:操作步算法:操作步骤的描述的描述NikiklausWirth提出提出:程序程序=数据结构数据结构+算法算法教材认为:教材认为:程序程序=算法算法+数据结构数据结构+程序设计方法程序设计方法+语言工具和环境语言工具和环境 灵魂灵魂加工对象加工对象工具工具 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法
19、2.1 算法的概念算法的概念为解决一个解决一个问题而采取的方法和步而采取的方法和步骤,就成,就成为算法。例如:歌曲的算法。例如:歌曲的乐谱,建造房子等。,建造房子等。算法核心是解决算法核心是解决“做什么做什么”和和“怎么做怎么做”的的问题。vP15页的例的例2.1,求,求15之之积。v可以有多种方法,一般采用可以有多种方法,一般采用简单和运算步和运算步骤少少的。的。准确、高效准确、高效计算机算法算机算法类别v数数值运算算法运算算法v非数非数值运算算法运算算法 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法2.2 简单算法算法举例例例例2.1v方法方法1:累乘:累乘v方法方法2:用循
20、:用循环结构解决,灵活、通用。构解决,灵活、通用。例例2.2v通通过循循环选择打印打印例例2.3v判断判断闰年年例例2.4v累加求累加求级数的和,循数的和,循环改改变正正负号和分母加号和分母加1。例例2.5v判断素数判断素数课后认真思考,加深什么是算法的概念 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法2.3 算法的特性算法的特性有有穷性性在合理范在合理范围内可完成内可完成确定性确定性无歧无歧义性性有零个或多个有零个或多个输入入从外界得到信息从外界得到信息有一个或多个有一个或多个输出出问题的答案的答案有效性有效性每步有确定的每步有确定的结果果 C语言程序设计 第二章第二章 程序的
21、灵魂程序的灵魂算法算法2.4 怎怎样表示一个算法表示一个算法自然自然语言表示言表示v2.2节例。易懂,文字冗例。易懂,文字冗长,易歧,易歧义性性流程流程图表示表示v用流程用流程图符号构成,直符号构成,直观,易懂,易懂 N-S流程流程图表示表示伪代代码表示表示计算机算机语言表示言表示q 顺序结构q 选择结构q 循环结构 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法传统流程图流向混乱、可读性差,所以应该采用结构化流程图。结构化程序构化程序设计v基本思想:任何程序都可以用三种基本基本思想:任何程序都可以用三种基本结构表示,构表示,限制使用无条件限制使用无条件转移移语句(句(goto)v
22、结构化程序:由三种基本构化程序:由三种基本结构反复嵌套构成的程序构反复嵌套构成的程序v优点:点:结构清晰,易构清晰,易读,提高程序,提高程序设计质量和效率量和效率三种基本结构三种基本结构v 顺序结构顺序结构ABAB流程图N-S图 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法PAB真假PBA真假v选择结构选择结构kA1A2AiAnk=k2k=k1k=knk=ki.l二分支选择结构二分支选择结构l多分支选择结构多分支选择结构 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法v循环结构循环结构l当型循环结构当型循环结构l直到型循环结构直到型循环结构PA假真当P为真AAP真假A
23、直到P为真注:注:A,B,A1.An可以是一个简可以是一个简单语句,也可以是一个基本结构单语句,也可以是一个基本结构 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法三种基本三种基本结构的共同特点:构的共同特点:v只有一个入口;只有一个入口;v只有一个出口;只有一个出口;v结构内的每一部分都有机会被构内的每一部分都有机会被执行到;行到;v结构内不存在构内不存在“死循死循环”。C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法2.5结构化程序构化程序设计方法方法结构化程序:用三种基本构化程序:用三种基本结构构组成的程序成的程序基本基本设计思路:思路:v复复杂问题分解成分解成几个
24、最基本几个最基本问题,再分,再分别处理。理。采用的方法:采用的方法:v自自顶向下;向下;v逐步逐步细化;化;v模模块化化设计:复:复杂问题按功能分成多个子模按功能分成多个子模块v结构化构化编码:正确采用三种基本:正确采用三种基本结构构实现 C语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法课后作后作业P36页习题:页习题:v2.4、2.8(结合合实验指指导读懂答案)懂答案)v用用N-S图表示表示2.4题中中v用用传统流程流程图求解以下求解以下问题:将一个:将一个16进制数制数转化化为10进制数制数 复复习二二进制的基本概念制的基本概念v“计算机文化基算机文化基础”一一书中中P2733页
25、第3章数据类型、运算符与表达式 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法C的数据类型常量与变量整型数据实型数据字符型数据变量赋初值各种数值型数据间的混合运算算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法3.1C的数据类型的数据类型C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void字符型字符型char整整型型实实型(浮点型)型(浮点型)单精度型单精度型float双精度型双精度型double数组类型数组类型结构体类型结构体类型共用体类型共用体类型短整型短整型sh
26、ort长整型长整型long整型整型int枚举类型枚举类型enum数据类型决定:1.数据占内存字节数2.数据取值范围3.可以进行的操作 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法常量和符号常量常量和符号常量v定定义:程序运行:程序运行过程中,其程中,其值不能被改不能被改变的量(常数)的量(常数)v分分类:直接常量、:直接常量、符号常量符号常量3.2常量与变量常量与变量类型示例整型常量12、0、-3实型常量4.6、-1.23字符常量a、b符号常量PRICE、PAI C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法l符号常量符号常量:用用标识符符代表常量代表常量u一般用大写
27、字母:一般用大写字母:PRICE、PIu定定义格式:格式:#define 符号常量符号常量 常量常量u其其值在作用域内不能改在作用域内不能改变和再和再赋值。例例3.1符号常量举例符号常量举例#definePRICE30#includevoidmain()intnum,total;num=10;total=num*PRICE;printf(total=%dn,total);total=300运行结果:符号常量的优点是:见名知意、一改全见名知意、一改全改改 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法变量量v 定定义:其:其值可以改可以改变的量。的量。v 定定义格式:格式:数据数据类
28、型型 变量名;量名;v 变量量应该有名字,并在内存中占据一定的存有名字,并在内存中占据一定的存储单元。元。v 变量名和量名和变量量值有不同的含有不同的含义l变量名量名实为一个符号地址一个符号地址 a3例例变量的使用变量的使用main()inta;a=3;printf(“a=%d,a);变量名变量值存储单元 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法标识符符v定定义:标识变量名、符号常量名、函数名、数量名、符号常量名、函数名、数组名、名、文件名的字符串序列文件名的字符串序列名字名字。v命名命名规则:l只能由只能由字母、数字、下划字母、数字、下划线组成,且成,且第一个字符第一个字符
29、必必须是字母或下划是字母或下划线l大小写字母含大小写字母含义不同,一般用不同,一般用小写小写l不能使用不能使用关关键字字lTC允允许最最长32个字符,建个字符,建议长度不超度不超过8个字符个字符v使用:使用:先定先定义、后使用、后使用标识符应该“见名知意见名知意”,如,如 total,maxtotal,max标识符应该“不宜混淆不宜混淆”,如,如 l l与与1,O1,O与与0 0这些标识符合法吗?1A、M.D.John、¥123、#33、Tatol、int、max C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法3.3 整型数据整型常量(整常数)的三种表示方法整型常量(整常数)的三种
30、表示方法v十十进制整数:由数字制整数:由数字09和正和正负号表示号表示.如 123,-456,0v八八进制整数:由数字制整数:由数字0开开头,后跟数字后跟数字07表示表示.如 0123,011v十六十六进制整数:由制整数:由0 x开开头,后跟后跟09,af,AF表示表示.如 0 x123,0 xff C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 补充知识:补充知识:字字节和位和位v内存以字内存以字节为单元元组成成v每个字每个字节有一个地址有一个地址v一个字一个字节一般由一般由8个二个二进制位制位组成成v每个二每个二进位的位的值是是0或或101234567012345678910.
31、7643251 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法数数值的表示方法的表示方法原原码、反、反码和和补码v原原码:最高位:最高位为符号位,其余各位符号位,其余各位为数数值本身的本身的绝对值v反反码:l正数:反正数:反码与原与原码相同相同l负数:符号位数:符号位为1,其余位,其余位对原原码取反取反v补码:l正数:原正数:原码、反、反码、补码相同相同l负数:最高位数:最高位为1,其余位,其余位为原原码取反,再取反,再对整个数加整个数加13126912457810119-5=49+7=16=(14)12 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法原码反码补码+70
32、00001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)(用一字节表示数)v负数补码转换成十进制数:最高位不动,其余位取反加负数补码转换成十进制数:最高位不动,其余位取反加1例 补码:11111001 取反:10000110 加1:10000111=-7 C语言程序设计 第三章第三章 程序
33、的灵魂程序的灵魂算法算法整型整型变量量v整型数据在内存中的存放形式整型数据在内存中的存放形式l数据在内存中以二数据在内存中以二进制制补码形式存放形式存放l每一个整型每一个整型变量在内存中占量在内存中占2个字个字节10的原的原码反反码补码-10的原的原码取取绝对值反反码补码00 00 00 00 00 00 10 1000 00 00 00 00 00 10 1000 00 00 00 00 00 10 1010 00 00 00 00 00 10 1000 00 00 00 00 00 10 1011 11 11 11 11 11 01 0111 11 11 11 11 11 01 10整数的
34、最左二进制位是符号位,0正、1负 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v整型整型变量的分量的分类l三三类整型整型变量量有符号无符号基本型(简称整型)intunsignedint短整型short或shortintunsignedshort长整型long或longintunsignedlongl整数类型和取值范围整数类型和取值范围TURBO C所占位数最小取值范围int16-32768+32767short16-32768+32767long32-2147483648+2147483647unsigned int16065535unsigned short16065535un
35、signed long3204294967295 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v整型整型变量的定量的定义l先定先定义后使用后使用强制制类型定型定义inta,b;(指定变量指定变量a、b为整型为整型)unsignedshortc,d;(指定变量(指定变量c、d为无符号短整型为无符号短整型)longe,f;(指定变量指定变量e、f为长整型)为长整型)00 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 0
36、0 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 11 01int 型short 型long 型unsigned int 型unsigned int 型unsigned long 型符号位例例3.2整型变量的定义与使用整型变量的定义与使用#includevoidmain()inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf(“a+u=%d,b+u=%dn,c,d);指定abcd为整型变量指定u为无符号整型变量定义放在函数开头的声明部分作用域不同类型混
37、合运算,类型自动转换结果:a+u=22,b+u=-14定义与赋值同时进行:inta=12;C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v整型数据的溢出整型数据的溢出l此情况称此情况称为“溢出溢出”,运行,运行时不不报错,编程程时要注意要注意01 11 11 11 11 11 11 11整型变量最大值3276710 00 00 00 00 00 00 00加1后是32768的补码形式例例3.3整型数据的溢出整型数据的溢出#includevoidmain()inta,b;a=32767;b=a+1;printf(%d,%dn,a,b);32767,-32768运行结果:改为:long
38、 b;结果是什么?C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法整型常量的整型常量的类型型v整型常量的整型常量的值在在-32768+32767-32768+32767范范围内,内,编译器器认为是是intint类型型 v整型常量的整型常量的值超超过上述范上述范围,而在,而在2147483648 2147483648 +2147483647+2147483647范范围内,内,编译器器认为是是longlong类型型v当系当系统定定义short intshort int与与intint占内存占内存长度相同,度相同,则两两种种类型常量均可以型常量均可以赋给 intint和和short int
39、short int型型变量量v在整型常量后面加大写在整型常量后面加大写L L或小写或小写l l,则告告诉编译器,器,把把该整型常量作整型常量作为longlong类型型处理。例:理。例:123L123L、0L 0L v在整型常量后面加在整型常量后面加u u,则按无符号整型方式存放,按无符号整型方式存放,负数数转换成成补码再按无符号整型方式存放。再按无符号整型方式存放。C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法3.4 浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法v浮点数(浮点数(float)又称)又称为实数(数(real)v两种表示方法:两种表示方法:l十十进制小数
40、形式:制小数形式:必必须有小数点有小数点 如如0.123、.123、123.0、0.0、123.l 指数形式:指数形式:e或或E之前之前后后必必须有数字;指数必有数字;指数必须为整数整数 如如123.456e0、12.3456e1、1.23456e2、0.123456e3、0.0123456e4等等v规范化指数形式范化指数形式l只有一位非零整数的指数形式只有一位非零整数的指数形式l是指数的是指数的输出形式出形式6.28e-2表示6.2810-2-3.0824e4表示3.0824104 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法浮点型浮点型变量量v浮点型数据在内存中的存放形式浮点
41、型数据在内存中的存放形式l浮点型数据在内存中占浮点型数据在内存中占4个字个字节(32位)位)l在内存中分成在内存中分成3部分,指数部分,指数为2的的幂次次+.314159 1数符小数部分指数v浮点型变量的分类浮点型变量的分类单精度单精度 floatfloat 32位67双精度双精度 doubledouble 型型6464位位1516长双精度长双精度long doublelong double型型128128位位1819类类 型型位数位数有效数字有效数字floatx,y;(指定(指定x、y为单精度浮点型变量)为单精度浮点型变量)doublez;(指定(指定z为双精度浮点型变量)为双精度浮点型变量
42、)longdoublet;(指定(指定t t为长双精度浮点型变量)为长双精度浮点型变量)C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v浮点型数据的舍入浮点型数据的舍入误差差l数据超数据超过有效位数,有效位数,则产生生误差差l要避免一个很大的数与一个很小的数加减要避免一个很大的数与一个很小的数加减例例3.4浮点型数据的舍入误差浮点型数据的舍入误差#includevoidmain()floata,b;a=123456.789e5;b=a+20;printf(%fn,b);舍入误差使舍入误差使1.0/3*3的的结果并不等于结果并不等于1!12345678848.000000运行结果:浮
43、点型常量的浮点型常量的类型型l浮点型常量一般按双精度浮点型常量一般按双精度64位位处理,数后加理,数后加F或或f按按单精度精度l浮点型常量不分浮点型常量不分float和和double C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法3.5字符型数据字符型数据字符常量字符常量v定定义:用用单引号引号括起来的括起来的单个个字符字符或或转义字符字符v字符常量的字符常量的值:该字符的字符的ASCII码值v定定义格式:格式:char变量名量名=值v转义字符字符:反斜反斜线后面跟一个字符或一个代后面跟一个字符或一个代码值表示表示如 a A n t 如 a97,A65 n10,t9charch=6
44、5与charch=A与char=101是等效的 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法表表3.3转义字符及其含义转义字符及其含义转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车(不换行)响铃单引号3位8进制数代表的字符水平制表(右移8格)退格换页反斜线双引号2位16进制数代表的字符例例3.5转义字符的使用转义字符的使用#includevoidmain()printf(“abctderftgn”);printf(“htibbjk”);f gdeh j k显示结果:显示结果:打印结果:fab gdeh jik C语言程序设计 第三章第三章 程序的灵魂程序的灵
45、魂算法算法字符字符变量量l存放字符常量,占用一个字存放字符常量,占用一个字节,存放,存放一个一个字符字符l定定义形式:形式:赋值:charc1,c2;c1=a;c2=b;字符数据在内存中的存字符数据在内存中的存储形式及其使用方法形式及其使用方法l以二以二进制存放字符的制存放字符的ASCII码值(0255整数)整数)l与整数的存与整数的存储形式形式类似似v以字符或整数形式以字符或整数形式输出出例例3.6向字符变量赋整数向字符变量赋整数#includevoidmain()charc1,c2;c1=97;c2=98;printf(“%c%cn,c1,c2);printf(“%d%dn,c1,c2);
46、ab9798运行结果:运行结果:输出形式取决于printf函数中的格式符格式符为“%c”时输出的变量值为字字符符格式符为“%d时输出的变量值为整整数数 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法对字符数据字符数据进行算行算术运算运算l实质是是对其其ASCII值进行算行算术运算运算例例3.7大小写字母的转换大小写字母的转换#includevoidmain()charc1,c2;c1=a;c2=b;c1=c1-32;c2=c2-32;printf(“%c%c,c1,c2);AB运行结果:运行结果:字符型与整型间互相赋值字符型与整型间互相赋值例:例:互相赋值互相赋值#includev
47、oidmain()intc1;charc2;c1=a;c2=98;c1=c1-32;c2=c2-32;printf(“%c%c,c1,c2);小写字母比大写字母的小写字母比大写字母的ASCIIASCII码大码大(32)(32)1010 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法字符串常量字符串常量v定定义:用双引号:用双引号(“”)括起来的字符序列括起来的字符序列“Howdoyoudo”,“CHINA”,“a”,“$123.45”v存存储:每个字符串尾每个字符串尾自自动加一个加一个0作作为字字符串符串结束束标志志hello0例例 字符串字符串“hellohello”在内存中在内
48、存中例例 空串空串 “”0v字符常量与字符串常量不同字符常量与字符串常量不同aa0例例a“a”例:charch;ch=“A”;例:charch;ch=A;没有字符串变量,没有字符串变量,没有字符串变量,没有字符串变量,只能用字符数组存放只能用字符数组存放只能用字符数组存放只能用字符数组存放 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法3.6 变量量赋初初值v变量的使用:量的使用:先定先定义,后使用,后使用v变量定量定义位置:位置:一般一般放在函数开放在函数开头v变量初始化量初始化:可以在定可以在定义时赋初初值例:inta=1,b=-3,c;floatdata=3.67;charc
49、h=A;intx=1,y=1,z=1;intx=y=1;()编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1,b=-3,c;abc2字节2字节2字节地址地址.内存1-3随机数错!错!inta=b=c=3 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法3.7 各各类数数值型数据型数据间的混合运算的混合运算v整型、整型、实型、字符型数据型、字符型数据间可以混合运算可以混合运算自自动转换v什么情况下什么情况下发生生l运算运算转换-不同不同类型数据混合运算型数据混合运算时l赋值转换-把一个把一个值赋给与其与其类型不同的型不同的变量量时l输出出转换-输出出时转换成指定的成指
50、定的输出格式出格式l函数函数调用用转换-实参与形参参与形参类型不一致型不一致时转换v运算运算转换规则:不同不同类型数据运算型数据运算时先先自自动转换成同一成同一类型型 C语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法doublefloatlongunsignedintchar,short低高说明说明:必定的转换必定的转换运算对象类型不同时转换运算对象类型不同时转换例例charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledou
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100