1、计算机基础教学系列课程计算机基础教学系列课程C语言语言课程性质课程性质:大学生公共大学生公共基础课程基础课程(必修课必修课)学时学时:讲课讲课34课时课时;实验实验64(课内课内32/32/课外课外32)32)学分学分:2学分学分总评成绩总评成绩=平时成绩平时成绩40%+期末成绩期末成绩60%平时成绩平时成绩:成绩成绩1(作业作业、考勤考勤10%)+成绩成绩2(单元测验单元测验15%)+成绩成绩3(实验报告实验报告15%)期末成绩期末成绩:期末理论机考期末理论机考60%C C 语言程序设计语言程序设计2第一章第一章 C C语言的发展、特点与程序结构语言的发展、特点与程序结构 第二章第二章 基本
2、数据类型、运算符和表达式基本数据类型、运算符和表达式第三章第三章 基本语句与顺序结构基本语句与顺序结构第四章第四章 选择结构选择结构第五章第五章 循环结构循环结构第六章第六章 数组数组第七章第七章 函数函数第八章第八章 指针指针第十章第十章 结构体结构体第十二章第十二章 文件文件3C 语 言 程 序 设 计&推荐参考书:推荐参考书:谭浩强主编谭浩强主编程序设计程序设计(第二版)(第二版)北京:清华大学出版社北京:清华大学出版社4第一章第一章 C C语言语言的发展的发展、特点与程序开发基本知识特点与程序开发基本知识 1 1.1 1C C语言的发展与特点语言的发展与特点1 1.2 2 程序设计的基
3、本方法程序设计的基本方法1 1.3 3 算法的概念及其表示算法的概念及其表示1 1.4 C4 C语言的基本结构语言的基本结构 1 1.5 5 应用程序的开发步骤和运行过程应用程序的开发步骤和运行过程 下一章目 录习题5l C语言是一门优秀的程序设计语言语言是一门优秀的程序设计语言C语言是在语言是在19731973年由美国贝尔实验室开发的。年由美国贝尔实验室开发的。19831983年年,ANSIANSI为为C C语言制定了新的标准语言制定了新的标准,称为称为ANSICANSIC,并于并于19891989年最终完成。年最终完成。目前使用较多的版本有目前使用较多的版本有ANSIC,BorlandC,
4、TurboC,MicrosoftC/C+,VisualC+等。等。C C语言的发展语言的发展lC C语言是结构化程序设计语言语言是结构化程序设计语言l功能强大,功能强大,具有丰富的数据类型及具有丰富的数据类型及运算符运算符。l简洁紧凑,使用方便灵活。简洁紧凑,使用方便灵活。lC C语言具有自我扩充能力语言具有自我扩充能力lC C语言具有汇编语言的功能语言具有汇编语言的功能l可移植性好可移植性好C C语言的特点语言的特点q程序的概念程序的概念程序是计算机解决问题所需的一系列指令的集合。程序是计算机解决问题所需的一系列指令的集合。q著名计算机科学家著名计算机科学家NikiklausWirth提出了
5、提出了“算法算法数据结构数据结构程序程序”的公式的公式 程序就是在数据的某些特定的表示方式和结构的基础上,程序就是在数据的某些特定的表示方式和结构的基础上,对抽象算法的具体描述。对抽象算法的具体描述。1.2 1.2 程序设计的基本方法程序设计的基本方法q程序数据结构算法程序设计方法语言工具程序数据结构算法程序设计方法语言工具l数据结构是数据的类型和数据的组织形式。数据结构是数据的类型和数据的组织形式。l算法是为解决一个问题而采用的方法和有限的步骤。算法是为解决一个问题而采用的方法和有限的步骤。l程序设计方法程序设计方法l确定语言和编程环境确定语言和编程环境面向过程的程序设计面向过程的程序设计l
6、所谓面向过程的程序设计所谓面向过程的程序设计,是指利用面向过程的语言工具是指利用面向过程的语言工具(如如Pascal、Fortran和和C语言等语言等)进行程序开发的各项活动进行程序开发的各项活动。基本思想:基本思想:把一个需要求解的复杂问题分为把一个需要求解的复杂问题分为若干个模块来处理,每个模块处若干个模块来处理,每个模块处理一个子问题;设计时遵循自顶理一个子问题;设计时遵循自顶向下、逐步细化、模块化设计和向下、逐步细化、模块化设计和结构化编码的原则。结构化编码的原则。优点:优点:编程简单、结构性强、可读性好;编程简单、结构性强、可读性好;遵循这种结构的程序只有一个入口和一个出口。遵循这种
7、结构的程序只有一个入口和一个出口。缺点:缺点:存在数据与程序模块的分离和程序的可重用性差等问题。存在数据与程序模块的分离和程序的可重用性差等问题。面向对象的程序设计面向对象的程序设计 Program Design in C Languagel面向对象的程序设计将一些新的理念和结构化程序设计中面向对象的程序设计将一些新的理念和结构化程序设计中好的思想相融合,提供了一种全新的程序设计方法。好的思想相融合,提供了一种全新的程序设计方法。基本思想基本思想将将一一个个需需要要解解决决的的问问题题分分解解为为一一系系列列实实体体(对对象象),然然后后围围绕绕这这些些对对象象建建立立数数据据和和函函数数;函
8、函数数的的功功能能决决定定了了该该对对象象的的行行为为。规规定定一一个个对对象象的的函函数数可可以以访访问问另另一一对对象象的的函函数数,但但一一个个对对象象的的数数据据不不能能应应用用于于另另一一对象的函数中。对象的函数中。几个基本概念:几个基本概念:三类机制:三类机制:类、对象、属性、事件、方法类、对象、属性、事件、方法封装、继承、多态封装、继承、多态1.3 1.3 算法及其表示算法及其表示l 算法的特性算法的特性有穷性有穷性 一个算法的操作步骤应当是有限的一个算法的操作步骤应当是有限的;确定性确定性 算法中的每一个步骤应当有确定的意义算法中的每一个步骤应当有确定的意义,不能不能 有二义性
9、有二义性;有效性有效性 算法中的每一个步骤应当正确算法中的每一个步骤应当正确、可行可行,并且能并且能 有效地执行有效地执行;有零个或多个输入有零个或多个输入执行算法时需要从外界获取的信息执行算法时需要从外界获取的信息;有一个或多个输出有一个或多个输出 执行算法后应当得到正确的结果。执行算法后应当得到正确的结果。算法举例算法举例【例例1.1】输入三个数,然后输出其中最大的数。输入三个数,然后输出其中最大的数。(1)输入变量输入变量x,y,z的值的值(2)比较比较x和和y,如果如果xy,则则x送送max;否则否则y送送max。(3)比较比较max与与z,如果如果zmax,则将则将z送送max。(4
10、)输出输出max,max即为最大数。即为最大数。算法算法对同一个问题对同一个问题,算法是不唯一的算法是不唯一的,例如例如:求和求和1+2+3+100(1)=(1+2)+3)+4)+100)(2)=(1+100)50一个好的算法应该是一个好的算法应该是:正确、易读、效率高。正确、易读、效率高。算法的表示方法算法的表示方法&常用的算法描述方法有常用的算法描述方法有:自然语言描述自然语言描述、伪代码伪代码、流程图流程图、N-SN-S图图、PADPAD图图等。等。1.自然语言自然语言 就是用人们日常使用的语言来描述或表示算法的就是用人们日常使用的语言来描述或表示算法的方法。方法。英语和程序设计语言混合
11、使用称为伪代码。英语和程序设计语言混合使用称为伪代码。Begin 算法开始算法开始inputx,y,zifxythenmax=xelsemax=yifzmaxthenmax=zprintmaxend算法结束算法结束2.用伪代码表示算法用伪代码表示算法l用一些图框和方向线表示算法的图形表示法。用一些图框和方向线表示算法的图形表示法。l特点特点:直观形象,易于理解,便于检查和交流。直观形象,易于理解,便于检查和交流。l常用流程图符号及含义如下常用流程图符号及含义如下:起止框起止框处理框处理框判断框判断框输入或输出框输入或输出框流程线流程线连接点连接点3.用流程图表示算法用流程图表示算法流程图流程图
12、:【例例1.1】对任意给定对任意给定的三个整数的三个整数 x,y,z,求求出其最大值。出其最大值。开始开始读入读入x,y,zmaxxmaxzmaxy zmax?输出输出max结束结束TF xy?TF17读入读入x,y,zxyFTmaxxmaxyTFzmaxmaxz打印打印max单元的值单元的值 例例:对任意给定的对任意给定的三个整数三个整数 x,y,z,求出其最大值。求出其最大值。4.用用N-SN-S流程图表示算法流程图表示算法结构化程序设计结构化程序设计C语言是结构化程序设计语言语言是结构化程序设计语言,有三种基本结构。有三种基本结构。顺序结构顺序结构 选择结构选择结构 循环结构循环结构 实
13、践证明实践证明,任何复杂的算法都可以用这三种基本任何复杂的算法都可以用这三种基本结构来描述。结构来描述。程序设计的目标在正确的前提下程序设计的目标在正确的前提下,其重要性排列次其重要性排列次序依次为序依次为:可读可读、可维护可维护、可移植和高效可移植和高效。顺序结构顺序结构 矩形框矩形框 用于表示顺序结构用于表示顺序结构。执行时按语句的执行时按语句的先后顺序执行。先后顺序执行。先执行语句先执行语句A A,再执行语句再执行语句B B。ABAB顺序结构的流程图顺序结构的流程图顺序结构的顺序结构的N-S图图选择结构(分支结构)选择结构(分支结构)根据条件的真或假选择执行不同的操作内容。根据条件的真或
14、假选择执行不同的操作内容。当当条件成立执行语句条件成立执行语句A A,否则执行语句,否则执行语句B B。条件条件ABTF条件条件T FA B选择结构的流程图选择结构的流程图选择结构的选择结构的N-S图图循环结构循环结构(1)当型当型(while型循环型循环)当条件成立当条件成立,执行循环体执行循环体,否则跳出循环体。否则跳出循环体。条件条件语句块语句块条件条件语句块语句块TFL L形框形框用于表示循环结构用于表示循环结构(2)直到型循环直到型循环 (do-while型循环型循环 )首先执行循环体首先执行循环体,若条件不成立继续执行循环体若条件不成立继续执行循环体,直到条件成立为止。直到条件成立
15、为止。语句块语句块条件条件语句块语句块条件条件FT【例例1.2】在屏幕上显示一行文字在屏幕上显示一行文字“WelcometoC!”。#includevoidmain()/*定义主函数定义主函数*/printf(“WelcometoC!n”);程序运行结果程序运行结果:WelcometoC!l 函数函数(Function)C程序包含一个或多个函数程序包含一个或多个函数,其中必须有一个其中必须有一个main()圆括号指示一个函数圆括号指示一个函数包含函数体包含函数体,表示表示main函数结束函数结束printf(“Welcome”);printf(“to C!n”);printf(“Welcome
16、ntonC!n”);程序运行结果程序运行结果:WelcometoC!程序运行结果程序运行结果:WelcometoC!注释注释/*文本文本*/或或/不被执行不被执行以提高程序的可读性以提高程序的可读性 语句语句(Statement)必须以必须以;结尾结尾格式输出函数格式输出函数printf()。调用标准函数调用标准函数,显示引号中的内容显示引号中的内容。#includevoidmain()inta,b,sum;/声明部分声明部分,定义变量类型定义变量类型a=123;b=456;/执行部分执行部分,赋值语句赋值语句sum=a+b;/执行部分执行部分,赋值语句赋值语句printf(“sum=%dn”
17、,sum);/执行部分执行部分,输出语句输出语句程序运行结果程序运行结果:sum=579赋初值赋初值计算计算输出输出定义变量定义变量【例例1.3】求两个整数的和求两个整数的和l 函数体函数体包括变量说明部分包括变量说明部分语句执行部分语句执行部分 /文件包含文件包含预处理命令预处理命令 /将标准输入输出头文件包含到源程序中将标准输入输出头文件包含到源程序中预编译命令预编译命令void main()主函数主函数 函数体开始函数体开始声明部分声明部分执行部分执行部分 函数体结束函数体结束#include void main()int a,b,c ;/定义变量类型定义变量类型 printf(“inp
18、uttwonumbers:n”);/提示提示 scanf(“%d,%d”,&a,&b);/输入变量输入变量 c=max(a,b);/调用调用求最大值的求最大值的函数函数 printf(“max=%dn”,c);int max(x,y)int x,y;int z ;if(xy)z=x;else z=y;return(z);【例例1.4】求两个数中的较大值求两个数中的较大值l程序由两个函数组成:程序由两个函数组成:main函数和函数和max函数函数。l运行程序运行程序屏幕显示提示信息;屏幕显示提示信息;键盘输入键盘输入a、b的值;的值;屏幕显示屏幕显示c的值。的值。inputtwonumbers:
19、123,456 max=456l一个一个C程序由一个或多个函数组成程序由一个或多个函数组成,其中必须有一个主函其中必须有一个主函数数main()。程序程序执行时总是从主函数开始执行时总是从主函数开始,main()可以可以置于程序的任何位置。置于程序的任何位置。l程序中需有预处理命令程序中需有预处理命令(如如#include),预处,预处理命令通常放在程序的最前面。理命令通常放在程序的最前面。l分号分号是是C C语句结束的标志语句结束的标志,每个语句和数据定义后必须有每个语句和数据定义后必须有一个分号。预处理命令、函数头和花括号一个分号。预处理命令、函数头和花括号“”之后不能之后不能加分号。加分
20、号。1.4.21.4.2 C C语言程序基本结构语言程序基本结构lC C程序书写灵活,程序书写灵活,一行可以写几个语句一行可以写几个语句,一个语句可以写在一个语句可以写在多个程序行上。多个程序行上。#include#include void main void main()()int a int a,b b,sum sum;a=123a=123;b=456 b=456;sum=a+b sum=a+b;printf printf(“sum=%d“sum=%dn”n”,sumsum););lC语言本身没有输入输出语句语言本身没有输入输出语句,输入输出的操作是由库函数输入输出的操作是由库函数scan
21、f()和和printf()等函数完成的。等函数完成的。1.4.2 1.4.2 C C语言程序基本结构语言程序基本结构 lC程序严格区分大小写。程序严格区分大小写。一般变量、语句等用小写字母书一般变量、语句等用小写字母书写;符号常量等用大写字母书写。写;符号常量等用大写字母书写。l标识符、保留字之间必须至少加一个空格以示分隔。标识符、保留字之间必须至少加一个空格以示分隔。函数函数lC语言的函数有语言的函数有两种两种:标准库函数和用户定义的标准库函数和用户定义的函数。函数。用户自定义函数,可有可无,数目不限。用户自定义函数,可有可无,数目不限。如例如例1.4中的中的intmax(intx,inty
22、)C语言提供的库函数语言提供的库函数,如输出函数如输出函数printf()和输和输入函数入函数scanf()。函数定义函数定义:函数头函数头+函数体函数体 函数头函数头:说明函数的类型说明函数的类型、名字名字、参数及参数的类型。参数及参数的类型。intmax(intx,inty)#include void main()int a,b,sum;a=123;b=456;sum=a+b;printf(“sum=%dn”,sum);函数体函数体函数头函数头 函数体函数体:由由“”括起,括起,包括变量声明和执行部分。包括变量声明和执行部分。函数定义函数定义1.4.3 C1.4.3 C语言的字符集、关键字
23、和标识符语言的字符集、关键字和标识符l字符集字符集:C C语言允许使用字符的集合语言允许使用字符的集合l字符集字符集的组成的组成:26个小写字母个小写字母abcdefghi.z26个大写字母个大写字母ABCDEFG.Z10个数字个数字09其他符号其他符号+-*/=,._:;?”|&!%#()空格空格(SPACE)制表符制表符(Tab)C C语言的关键字语言的关键字l关键字关键字:C C语言中预定的具有特定含义的词语言中预定的具有特定含义的词,也称也称 保留字保留字。共有。共有3232个。个。l分四类分四类:类型说明类型说明:int,long,float,。语句定义语句定义:ifelse,whi
24、le,for。存储类存储类:auto,static,。长度运算符长度运算符:sizeof标识符标识符l标识符标识符:用来标识变量用来标识变量、符号常量符号常量、数组数组、函数的名字函数的名字。l组成组成:只能由英文字母、数字和下划线组成。只能由英文字母、数字和下划线组成。第一个字符不能是数字,只能是字母或下划线。第一个字符不能是数字,只能是字母或下划线。VC6VC6.0 0中有效长度为中有效长度为1255个字符。个字符。l例如例如:x,m1,average,k123,_1,5AN,WA-11,alot,$11,注意注意:l标识符严格标识符严格区分大小写区分大小写 例如例如:ABC,abc 是不
25、同的标识符是不同的标识符l不能和不能和C C语言的关键字语言的关键字、用户定义的函数名以及系统库函数用户定义的函数名以及系统库函数同名。同名。lC C的的“.h h”头文件中经常使用头文件中经常使用以下划线开头的内部变量名,以下划线开头的内部变量名,因此用户最好避免使用这类标因此用户最好避免使用这类标识识符。符。l取名应尽可能见名知意。如取名应尽可能见名知意。如:alfa,aver,pi,bata等。等。例例:以下各标识符组中以下各标识符组中,合法的用户标识符分别为合法的用户标识符分别为:(1)A)PAdB)scanfC)voidD)4aP#Da10maxtemp(2)A)b-bB)CCPC)
26、hiyD)_iswabcfloatINT(3)A)_0123B)del_wordC)listD)keep%ssipedsigned*jerwind分隔符分隔符l分隔符分隔符分隔符主要有逗号和空格两种。分隔符主要有逗号和空格两种。逗逗号号用用于于分分隔隔变变量量或或参参数数,空空格格用用于于分分隔隔单单词词(在在关关键键字字和标识符之间必须用空格分隔和标识符之间必须用空格分隔)。例如例如:int a,b,c;max(x,y,z)1.5 1.5 应用程序的开发过程应用程序的开发过程 应用程序开发阶段:应用程序开发阶段:分析解决问题的性质、特点、目标分析解决问题的性质、特点、目标以及数据来源及其特征
27、等。以及数据来源及其特征等。需求分析需求分析确定解决问题的方法和步骤,建立确定解决问题的方法和步骤,建立数学模型和确定相应的求解方法。数学模型和确定相应的求解方法。确定算法确定算法确定应用程序结构确定应用程序结构,设计出每个模块设计出每个模块的数据结构和算法的数据结构和算法,画出流程图等。画出流程图等。程序设计程序设计根据确定的算法,用计算机语言根据确定的算法,用计算机语言(如如 C C语言语言)编写源程序。编写源程序。编写程序编写程序在在一定的开发环境下调试和运行程一定的开发环境下调试和运行程序,得出程序运行结果。序,得出程序运行结果。调试程序调试程序1.5 1.5 应用程序的开发过程应用程
28、序的开发过程编辑编辑编译编译连接连接运行运行编辑器编辑器file.cfile.cpp编译器编译器file.obj连接器连接器file.exeLibrariesCPU装载程序装载程序RAM建立、修改、保存源文件建立、修改、保存源文件生成目标文件生成目标文件生成可执行文件生成可执行文件运行可执行文件运行可执行文件1.5 1.5 应用程序的开发过程应用程序的开发过程:在在VisualC+6.0环境下环境下,开发和运行程序的步骤开发和运行程序的步骤如下如下:1 1.启动启动VC“开始开始”“程序程序”“Microsoft VisualC+6.0”即可启动即可启动VCVC6.0。2 2.编辑、建立源文件
29、。编辑、建立源文件。3 3.编译、连接和运行源程序。编译、连接和运行源程序。习题习题1.一个一个C C语言程序是由组成语言程序是由组成 a)主程序主程序 b)子程序子程序 c)函数函数 d)过程过程2.一个完整的一个完整的C C语言的程序语言的程序 a)至少包含一个主至少包含一个主函数函数 b)至少包含一个主至少包含一个主函数函数与一个子与一个子函数函数 c)必须由一个主必须由一个主函数函数与一个以上的子与一个以上的子函数函数组成组成 d)必须由一个主必须由一个主函数函数与一个子与一个子函数函数组成组成40习题习题3.C C语言程序的执行总是从语言程序的执行总是从。a)main函数的入口开始函
30、数的入口开始 b)编译预处理命令开始编译预处理命令开始 c)源程序的第一个函数开始源程序的第一个函数开始 d)源程序的第一行语句开始源程序的第一行语句开始41习题习题4 4.在在C C语言的源程序中,主函数的位置语言的源程序中,主函数的位置 。a)必须在源程序的最后必须在源程序的最后 b)任意任意 c)必须在源程序的开头必须在源程序的开头5 5.一个函数一般由两部分组成一个函数一般由两部分组成,它们分别是和它们分别是和。6 6.函数体使用函数体使用_符号开始,使用符号开始,使用_符号结束。符号结束。函数头函数头函数体函数体 42习题习题7 7.C C程序的每条语句的结束标志是程序的每条语句的结
31、束标志是_符号。符号。8 8.在在C C程序中程序中,注释以注释以_符号开始,使用符号开始,使用_符号符号 结束。结束。9 9.算法是算法是 _。1010.表示算法的常用方法有表示算法的常用方法有 _、_、_等等。1111.结构化程序的三种基本结构是结构化程序的三种基本结构是 _、_、_。;/*/解决某一问题所采取的方法和步骤解决某一问题所采取的方法和步骤自然语言自然语言流程图流程图伪代码伪代码顺序结构顺序结构选择结构选择结构循环结构循环结构431212.判断下述说法是否正确判断下述说法是否正确。如不正确如不正确,说明理由说明理由。a)printf 函数总是从新行的起始位置开始打印。函数总是从
32、新行的起始位置开始打印。b)计算机会把计算机会把/*/*和和*/之间的注释文本打印到屏幕上。之间的注释文本打印到屏幕上。c)所有的变量在使用前都必须予以声明。所有的变量在使用前都必须予以声明。d)C语言认为变量语言认为变量 number 和和 NuMbEr 是相同的。是相同的。e)声明语句可放在函数体中的任何位置。声明语句可放在函数体中的任何位置。f)打印三行输出的打印三行输出的C语言程序必须用三条语言程序必须用三条 printf 语句。语句。g)printf 函数的格式控制串中使用转义字符函数的格式控制串中使用转义字符 n 会把光标会把光标定位到屏幕上下一行的开始位置。定位到屏幕上下一行的开
33、始位置。442.1 数据与数据类型数据与数据类型2.2 常量、变量和标准函数常量、变量和标准函数2.3 基本基本运算符及其表达式运算符及其表达式第二章第二章 数据类型数据类型、运算符和表达式运算符和表达式下一章上一章目 录习题45整型整型:包括有、无符号的基本整型、短整型、长整型包括有、无符号的基本整型、短整型、长整型实型实型:包括包括单精度实型、双精度实型单精度实型、双精度实型 float,double字符型字符型:用于表示和存储用于表示和存储ASCII字符。字符。char 2.1 2.1 数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型自定义自定义是是C C语言
34、数语言数据类型的基据类型的基本型本型,其值不其值不可再分解为可再分解为其他类型其他类型。一种特殊的一种特殊的数据类型,数据类型,其值为某个其值为某个量的内存地量的内存地址。址。一种无返回一种无返回值函数的数值函数的数据类型。据类型。void用新的类型用新的类型名替代已有名替代已有类型名使用。类型名使用。用用typedef定义定义一种由单种一种由单种或多种数据或多种数据类型构造而类型构造而成的数据类成的数据类型型。数组数组结构结构共用体共用体枚举类型枚举类型C语言的基本数据类型语言的基本数据类型46 2.2 2.2 常量、变量和标准函数常量、变量和标准函数2.2.1 常量常量2.2.2变量变量2
35、.2.3标准函数标准函数下一节第二章目 录习题47 2.2.1 2.2.1 常量常量l常量常量 在程序执行期间其值保持不变的量在程序执行期间其值保持不变的量lC语言有以下几种类型的常量语言有以下几种类型的常量:整型常量整型常量实型实型(浮点型浮点型)常量常量字符常量字符常量字符串常量字符串常量 48l有三种形式有三种形式:十进制整数十进制整数:八进制整数八进制整数:由数字由数字 0 0 开头开头十六进制整数十六进制整数:由前缀由前缀 0 x0 x 或或 0X0X 开头开头1 1.整型常量整型常量如如:014 -011 0177777如如:0 x11 0XAFBDE 0X00FFH 如如:11,
36、-13,0,65535,1,00021/3 10454.10*3 01 9 949整整数又可分为数又可分为:长整型整数长整型整数:用后缀用后缀 L/l表示。表示。012L,65536L,0XCL无符号整数无符号整数:用后缀用后缀 U/u表示。表示。017u,0 xfdbU无符号长整数无符号长整数:用后缀用后缀 UL/ul表示。表示。15uL50l实实型型常常量量又又称称实实数数,指指带带有有小小数数部部分分的的数数。C C语语言言中中的的实实数数是以十进制表示的是以十进制表示的,有两种表示形式有两种表示形式:十进制小数形式十进制小数形式:由数字、数符和由数字、数符和小数点小数点组成。组成。例例
37、:0.123,.123,123.,0.0,-2.5,指数形式指数形式:又称科学记数法又称科学记数法。用。用E E(或或e e)表示以表示以10为底的为底的指指数数。如:如:100000000 1108 1E+8 0.0000125 1.2510-5 1.25E-05 0.9110-3 0.91E-03尾数部分尾数部分指数部分指数部分字母字母E/eE/e前必须有前必须有数字数字,而而E E后面的阶码必须为后面的阶码必须为整数整数。2.实型常量实型常量浮点数浮点数51 例例:下列下列不合法不合法的指数形式的指数形式:单独的小数点和单独的指数部分单独的小数点和单独的指数部分 如如:.E-5 E10E
38、-5 E10 阶码阶码只能是整数,不能带小数点。只能是整数,不能带小数点。如如:1234E11234E1.5 52 2.E E6 6.5e 5e n(2*3)E-3 2*3)E-3 5*E45*E410101212不能写成不能写成 E12E12,必须写成:,必须写成:1E121.0E12523 3.字符常量字符常量l字符常量字符常量:是用单引号括起来的一个字符是用单引号括起来的一个字符 如如:a,A,9,+,?,合法合法 “a”,99999,非法非法l在内存中在内存中,字符字符常量常量以以ASCII码存储码存储,一个字符占一个字节一个字符占一个字节。l由于字符常量是按整数存储的由于字符常量是按
39、整数存储的,可以像整数一样在程序中参可以像整数一样在程序中参与相关的运算。如与相关的运算。如:a32;/执行结果执行结果97-32=6599;/执行结果执行结果57-9=4853以以“”开头的字符序列开头的字符序列,有特定的含义。有特定的含义。如如:表示输出一个反斜杠符表示输出一个反斜杠符 ”表示输出一个双引号表示输出一个双引号 ddd (dddddd表示八进制的表示八进制的ASCIIASCII码)码)xhh(hhhh表示十六进制的表示十六进制的ASCIIASCII码)码)例例:n(回车换行回车换行)1212 xa A A 101101 x41x41注注:00或或000000是代表是代表ASC
40、IIASCII码为码为0 0的字符的字符,即即空字符空字符(NULL)(NULL),表示整数表示整数0 0。转义字符转义字符54【例例2.1】转义字符的应用转义字符的应用#include void main()printf(“atbncbd100 x40n”);abd输出到显示屏输出到显示屏55l字符串常量字符串常量:用一对双引号括起的字符序列。例用一对双引号括起的字符序列。例:“CHINA”,“a”,“$12.5”,“”,“w x5353np103103q”l字符串长度字符串长度:字符串中所有字符的个数字符串中所有字符的个数l系统自动在每个字符串的末尾加上一个空字符系统自动在每个字符串的末尾
41、加上一个空字符NULLNULL,即即00作为字符串的结束。作为字符串的结束。0是一个是一个ASCIIASCII码为码为0 0的字符。的字符。例例:“CHINA”在内存中所占的字节为在内存中所占的字节为:4 4.字符串常量字符串常量56l字符常量由字符常量由单单引号括起来引号括起来,字符串常量由字符串常量由双双引号括起来。引号括起来。字符串常量和字符常量的主要区别:字符串常量和字符常量的主要区别:l字符常量只能是单个字符,字符串常量可以含有多个字符。字符常量只能是单个字符,字符串常量可以含有多个字符。l字符常量占一个字节字符常量占一个字节,字符串常量占的字节数等于字符个数字符串常量占的字节数等于
42、字符个数加加1 1。l比较比较:A A与与”A A”的区别的区别若输出的字符串中含双引号若输出的字符串中含双引号(”),则要使用转义字符则要使用转义字符(”)。例例:printf(“he said“I am a student.”n”);输出输出:he said“I am a student.”AA占一个字节占一个字节“A”A占两个字节占两个字节0575.符号常量符号常量l 符号常量符号常量:用标识符表示的常量用标识符表示的常量格式格式:#define 标标识识符符 常量常量功能功能:用该用该标识符标识符代表后面的常量值代表后面的常量值例例:#define PI 3.#define STAR
43、*预处理命令预处理命令#define也称为宏定义也称为宏定义,一个一个#define命令只能命令只能定义一个符号常量定义一个符号常量,用一行书写用一行书写,不用分号结尾。不用分号结尾。58#include#define PI 3./用预处理命令定义符号常量用预处理命令定义符号常量 voidmain()floatr,area,l;/定义变量类型为实型定义变量类型为实型 scanf(“%f”,&r&r);/输入输入r的值的值 area=PI*r*r;l=2*PI*r;printf(“area=%fnl=%fn”,area,l);【例例2.2】求半径为求半径为r的圆面积和圆周长的圆面积和圆周长59l
44、 说明说明:符号常量名习惯用大写字母表示符号常量名习惯用大写字母表示该命令通常放在文件头该命令通常放在文件头在程序中在程序中,符号常量不允许重新赋值。符号常量不允许重新赋值。例例:#define PI 3.PI=5.6;或或 scanf(“%f”,&PI);5.符号常量符号常量602.2.2 2.2.2 变量变量:变量变量概述概述:整型变量整型变量:实型变量实型变量:字符型变量字符型变量:变量的初始化变量的初始化61int x=23;23FF022BytesRAM变量概述变量概述l变量变量:在程序执行期间其值可以改变的量在程序执行期间其值可以改变的量l变量在使用之前必须被声明变量在使用之前必须
45、被声明每一个变量有名字,类型,长度和值。每一个变量有名字,类型,长度和值。对变量赋值过程是对变量赋值过程是“覆盖覆盖”过程,用新值去替换旧值过程,用新值去替换旧值。从内存中读出变量的值,该变量保持不变。从内存中读出变量的值,该变量保持不变。90 x=90;printf(“%d”,x);62l定义变量的形式定义变量的形式:类型说明符类型说明符 变量名表变量名表;例例:int a,b;/*/*定义两个整型变量定义两个整型变量a a和和b*/b*/char c;/*/*定义字符型变量定义字符型变量c*/c*/float f1,f2;/定义单精度实型变量定义单精度实型变量f1和和f2变量概述变量概述变
46、量类型变量类型(type)变量名变量名(name)是一个标识符是一个标识符631 1.整型变量整型变量用来存放整型数据的变量用来存放整型数据的变量整型变量的分类表整型变量的分类表类型名称类型名称类型说明符类型说明符字节数字节数数值范围数值范围基本整型基本整型int2-3276832767短整型短整型shortint2-3276832767长整型长整型longint4-21474836482147483647无符号基本整型无符号基本整型unsignedint2065535无符号短整型无符号短整型unsigned short int2065535无符号长整型无符号长整型unsigned longi
47、nt404294967295与操作系统、编译系统、与操作系统、编译系统、机器字长有关。机器字长有关。64l有符号的整数有符号的整数 最高位是符号位最高位是符号位正整数在内存中以二进制正整数在内存中以二进制原码原码形式存放。形式存放。负整数在内存中以二进制负整数在内存中以二进制补码补码的形式存放。的形式存放。有符号正整数有符号正整数 1010 0 0 0 0 0 0 0 00 0 0 0 1 0 1 0符号位符号位RAM有符号负整数有符号负整数-10-101 1 1 1 1 1 1 11 1 1 1 0 1 1 0符号位符号位RAM-10-10的原码的原码1 0 0 0 0 0 0 00 0 0
48、 0 1 0 1 01 1 1 1 1 1 1 11 1 1 1 0 1 0 11 1 1 1 1 1 1 11 1 1 1 0 1 1 0按位取反按位取反加加1 1后得到后得到-10-10的补码的补码65l无符号整数无符号整数无符号整数的所有二进制位无符号整数的所有二进制位全部用来全部用来存放数值存放数值,不能存放负数。不能存放负数。无符号整数无符号整数65535u1 1 1 1 1 1 1 11 1 1 1 1 1 1 1RAM66 例例:求求5050的三次方的三次方#include voidmain()shortint x;x=50*50*50;printf(“%dn”,x);程序运行结
49、果为程序运行结果为:-6072(错)(错)67将以上程序改为将以上程序改为:#include voidmain()intx;x=50*50*50;printf(“%dn”,x);运行结果:运行结果:125000因此因此,在定义整型变量时,要注意数据类型允许的在定义整型变量时,要注意数据类型允许的数值范围。数值范围。68l用来存放实型数据的变量用来存放实型数据的变量l分单精度型、双精度型和长双精度型三类分单精度型、双精度型和长双精度型三类2 2.实型变量实型变量69#include void main()float f;/f为单精度实型变量为单精度实型变量 double d;/d为双精度实型变量
50、为双精度实型变量 f=33333.33333;d=33333333333333.333333;printf(“f=%fnd=%fn”,f,d);输出结果输出结果:f=33333.332031 d=33333333333333.332000【例例2.3】实型变量的使用实型变量的使用无无效效数数字字f;703.字符变量字符变量l用来存放字符常量的变量用来存放字符常量的变量l例例:char c1,c2,c3;c1=A;c2=n;c3=97;l每个字符变量分配一个字节用于存放一个字符。每个字符变量分配一个字节用于存放一个字符。(存放的是字符的存放的是字符的ASCII码值码值)l字符数据与整型数据可字符