




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章第一章 C程序基础程序基础2/67第一章第一章 C程序基础程序基础n1.1 C语言程序的基本结构语言程序的基本结构n1.2 C程序运行过程程序运行过程n1.3 编写简单的编写简单的C语言程序语言程序n1.4 C语言基本语法成分语言基本语法成分n1.5 C语言数据类型语言数据类型n1.6 数据的输入与输出数据的输入与输出n1.7 算法算法n1.8 C语言的产生、发展及特点语言的产生、发展及特点3/67回忆回忆计算机系统组成计算机系统组成运算器运算器硬件系统硬件系统控制器控制器软件系统软件系统存储器存储器输入设备输入设备输出设备输出设备系统软件系统软件应用软件应用软件 用户为解决具体问题而开
2、发的软件用户为解决具体问题而开发的软件操作系统操作系统语言及其处理程序语言及其处理程序数据库管理系统数据库管理系统系统支撑软件系统支撑软件面向过程:面向过程:C语言语言等等机器语言、汇编语言机器语言、汇编语言面向对象:面向对象:C等等4/671.1 C语言程序的基本结构语言程序的基本结构1.1.1 认识认识C语言程序语言程序n例例1、一个最简单的、一个最简单的C程序程序void main() 每个每个C程序必须有主函数程序必须有主函数main。main是函数是函数名,名,main后的后的圆括号圆括号不能省略,不能省略,void是一种是一种数据类型,说明该函数没有返回值。数据类型,说明该函数没有
3、返回值。5/67n例例2、在屏幕上显示、在屏幕上显示This is my first C program!#include void main()printf(“This is my first C program!”);主函数主函数输出函数输出函数语句结束语句结束预处理命令预处理命令EG101.C6/67n例、在屏幕上显示例、在屏幕上显示This is my first C program! And I am very happy!#include void main()printf(“This is my first C program!n”);printf(“And I am very
4、happy!”);7/67n例、计算两个数的和并显示结果例、计算两个数的和并显示结果#include void main()int value1, value2, sum;value1=3;value2=5;sum=value1+value2;printf(“The sum is :%dn”, sum);变量定义变量定义变量使用变量使用输出结果输出结果如果想显示为如果想显示为应该怎么写?应该怎么写?EG102.C8/67n例、输入两个数,求和并显示例、输入两个数,求和并显示#include void main()int value1, value2, sum;scanf(“%d%d”, &am
5、p;value1, &value2);sum=value1+value2;printf(“%d+%d=%dn”, value1, value2, sum);输入输入2个数个数程序运行起来是程序运行起来是黑屏,不好理解,黑屏,不好理解,怎么做更好一些?怎么做更好一些?printf(“Input two numbers:n”);EG103.C9/67n例例6、输入两个数,求两数中较大的数并输出、输入两个数,求两数中较大的数并输出#include void main( ) int a, b, c; scanf(%d%d, &a, &b); c=max(a,b); /*调用调用
6、max函数计算较大的值函数计算较大的值*/ printf(max=%dn, c); /*main函数结束函数结束*/int max(int x, int y) int z; if (xy) z=x; else z=y; return(z);EG104.c10/671.1.2 C语言程序的基本结构语言程序的基本结构编译预处理命令编译预处理命令/*目前只接触了目前只接触了#include*/void main ( )/*主函数,必有主函数,必有*/ /*一对花括弧为函数体一对花括弧为函数体*/ 声明部分声明部分/*包括变量的声明和函数的声明包括变量的声明和函数的声明*/ 执行部分执行部分/*C语句
7、语句*/其他函数定义其他函数定义 声明部分声明部分 执行部分执行部分11/67通过以上例子可以看出:通过以上例子可以看出:n1、函数是程序的基本单位、函数是程序的基本单位q一个一个C源程序一般由一个主函数和若干其他函数构成,源程序一般由一个主函数和若干其他函数构成,注意一个注意一个C程序程序必须包含且只能包含一个必须包含且只能包含一个main函数。函数。q C程序程序从从main函数开始执行函数开始执行,调用其他函数后再返回,调用其他函数后再返回到到main 函数。函数。main函数可以调用其他函数,其他函数函数可以调用其他函数,其他函数之间也可以互相调用之间也可以互相调用, 注意其他函数不能
8、调用注意其他函数不能调用main函数。函数。qC函数分为函数分为标准函数标准函数和和用户自定义函数用户自定义函数两种形式。两种形式。n在调用标准函数时,要注意加文件包含命令;在调用标准函数时,要注意加文件包含命令;n用户自定义函数是用户根据程序需要,自己编写的函数用户自定义函数是用户根据程序需要,自己编写的函数12/67n2、函数的基本结构、函数的基本结构int max(int x, int y) int z; if (xy) z=x; else z=y; return(z); 函数首部函数首部 返回值类型返回值类型 函数名函数名( (参数列表参数列表) ) 函数体函数体函数首部下面用一对函数
9、首部下面用一对 括起来的部分。括起来的部分。函数体一般包括函数体一般包括声明部分声明部分和和执行部分执行部分。声明部分声明部分: :定义本函数中所使用的变量。定义本函数中所使用的变量。执行部分执行部分: :由若干条语句组成。由若干条语句组成。n3、一个可执行的一个可执行的C语言程序总是从语言程序总是从main函数开函数开始执行,而不论其在整个程序中的位置如何。始执行,而不论其在整个程序中的位置如何。13/67n4、每条语句和数据定义的最后必须有一个分号每条语句和数据定义的最后必须有一个分号;。 说明说明:在以下三种情况下不允许有分号:在以下三种情况下不允许有分号: 的的 a. 定义函数时,函数
10、定义函数时,函数名称后面不使用分号;名称后面不使用分号; b. 在右花括号在右花括号“”后面不使用分号;后面不使用分号; c. 预处理语句后面不使用分号。预处理语句后面不使用分号。#include ;void main( );printf(“This is my first C program!n”);14/67n5、C程序书写格式自由,一行内可以写几个语句,程序书写格式自由,一行内可以写几个语句,一个语句也可以分写在多行上。一个语句也可以分写在多行上。n6、可用、可用/*/对对C程序中的任何部分作注释,注释程序中的任何部分作注释,注释可以写在程序的任何位置上,可以写在程序的任何位置上,“/*
11、”与与“*/”也可不在也可不在同一行上,同一行上,但但/和和*之间不能有空格之间不能有空格。n7、在、在C语言中,大小写字母是有区别的。(语言中,大小写字母是有区别的。(C语言习语言习惯用小写字母)。惯用小写字母)。n8、书写程序时,最好使用缩进格式的形式。、书写程序时,最好使用缩进格式的形式。15/671.1.3 语言的表达式和语句语言的表达式和语句n表达式语句的一般形式:表达式语句的一般形式:表达式表达式;常见的表达式语句有:常见的表达式语句有:1、赋值语句赋值语句:由赋值表达式加上一个分号构成,是:由赋值表达式加上一个分号构成,是程序中使用最多的语句之一。程序中使用最多的语句之一。 q其
12、一般形式为:其一般形式为: 变量变量 = 表达式表达式;q=是赋值运算符,功能是将是赋值运算符,功能是将=右边表达式的值赋给左右边表达式的值赋给左边的一个变量,不是算术中的相等(边的一个变量,不是算术中的相等(=)n例:例:x=9;y=a;i=i+1;q赋值运算符具有右结合性。赋值运算符具有右结合性。n例:例:a=b=3+8;n先做先做3+8,然后将,然后将11赋给赋给b,再将,再将b的值的值11赋给赋给a。16/67n变量赋值的特点:变量赋值的特点:q变量必须先定义,后使用变量必须先定义,后使用n例:例:int x, y; x=6; y=23; z=y-x;q变量被赋值前,值是不确定的。变量
13、被赋值前,值是不确定的。n例例: int i; if(i0) printf(“i是负数是负数”); q对变量的赋值过程是对变量的赋值过程是“覆盖覆盖”过程,即用新值去替换旧过程,即用新值去替换旧值值。n例例: int x; x=1; x=x+1; i没有赋值没有赋值, 这时变量这时变量i具有随机值具有随机值出错出错! 因为没有定义变量因为没有定义变量zx现在的值为现在的值为17/672、函数调用语句函数调用语句:由函数调用表达式加一个分号构:由函数调用表达式加一个分号构成成 。q例:例: scanf(%d%d, &a, &b); printf(“This is my first
14、 C program);3、空语句空语句:只有一个分号的语句,它什么也不做。:只有一个分号的语句,它什么也不做。q例:例:; n除上述表达式语句之外,语句还有:除上述表达式语句之外,语句还有:4、复合语句复合语句:用:用 把一些语句括起来成为复合语句。把一些语句括起来成为复合语句。q例:例: z=x+y; t=z/100; printf(“t=%dn”, t);18/675、控制语句控制语句:完成一定的控制功能,只有种。:完成一定的控制功能,只有种。q条件判断语句条件判断语句nif() else (条件语句条件语句)nswitch (多分支选择语句多分支选择语句)q循环执行语句循环执行语句nf
15、or()(循环语句循环语句)nwhile()(循环语句循环语句)ndo while()(循环语句循环语句)q转向语句转向语句nbreak (中止执行中止执行switch或循环语句或循环语句)ncontinue (结束本次循环语句结束本次循环语句)ngoto (转向语句转向语句)nreturn (从函数返回语句从函数返回语句)19/671.2 C程序运行过程程序运行过程-几个基本概念几个基本概念n 程序程序:一组计算机可以识别和执行的指令,每一条指:一组计算机可以识别和执行的指令,每一条指令使计算机执行特定的操作。令使计算机执行特定的操作。n 源程序源程序:用高级语言或汇编语言编写的程序称为源程
16、:用高级语言或汇编语言编写的程序称为源程序,以序,以ASCII码形式存储。码形式存储。C源程序的扩展名为源程序的扩展名为“.C”。n 目标程序目标程序:源程序经过:源程序经过“编译程序编译程序”翻译所得到的二翻译所得到的二进制代码称为目标程序。目标程序的扩展名为进制代码称为目标程序。目标程序的扩展名为“.OBJ”。n 可执行程序可执行程序:目标程序与库函数连接,形成完整的可:目标程序与库函数连接,形成完整的可在操作系统下独立执行的程序。可执行程序的扩展名在操作系统下独立执行的程序。可执行程序的扩展名为为“.EXE” 。20/67C程序上机步骤程序上机步骤n编辑编辑:将源程序输入计算机内存中将源
17、程序输入计算机内存中修改源程序修改源程序将将改正后的源程序保存为磁盘文件。改正后的源程序保存为磁盘文件。以以ASCII码形码形式输入和存储式输入和存储-扩展名为扩展名为.c(源程序)(源程序)n编译编译:先:先进行语法检查,并将无语法错误的源程序翻进行语法检查,并将无语法错误的源程序翻译成二进制形式的目标代码译成二进制形式的目标代码-扩展名为扩展名为.obj(目标程(目标程序)序)n链接链接:将各模块的二进制目标代码与系统标准模块连将各模块的二进制目标代码与系统标准模块连接,得到一个可执行文件接,得到一个可执行文件-扩展名为扩展名为.exe(可执行(可执行程序)程序)n执行执行:执行经过编译和
18、连接的可执行目标文件。执行经过编译和连接的可执行目标文件。21/67编辑源程序编辑源程序编译编译连接连接test.ctest.objtest.exe结果结果运行运行22/67Turbo C 2.0上机步骤上机步骤1、启动、启动Turbo C、启动:、启动:DOS、Windows、工作窗口、工作窗口: 菜单窗口、编辑窗口、信息窗口、功能键提示行菜单窗口、编辑窗口、信息窗口、功能键提示行2、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、编辑新文件、编辑新文件编辑新文件:编辑新文件:FileNew保存文件:保存文件:FileSave 或或 F2、编辑已存在的文件、编辑已存在的文件打开文
19、件:打开文件:FileLoad 或或 F3保存文件:保存文件:FileSave 或或 F2另存文件:另存文件:FileWrite to23/673 3、编译源程序、编译源程序CompileCompileCompileCompile to to OBJOBJ 或或 Alt+F9Alt+F9编译时如提示错误,则按编译时如提示错误,则按F6F6键在源程序和错误提示键在源程序和错误提示之间进行切换,并修改;修改完毕再重新编译,直到无之间进行切换,并修改;修改完毕再重新编译,直到无任何错误编译成功。任何错误编译成功。注意:编译成功只能说明程序无语法错误,不一定注意:编译成功只能说明程序无语法错误,不一定
20、代表算法正确或运行结果正确。代表算法正确或运行结果正确。4 4、运行源程序、运行源程序RunRunRunRun 或或 Ctrl+F9Ctrl+F9查看结果:查看结果:RunUserRunUser ScreenScreen 或或 Alt+F5Alt+F55 5、退出、退出FileQuitFileQuit 或或 Alt+xAlt+x24/67VC+ 6.0VC+ 6.0上机步骤上机步骤25/6726/671.3 编写简单的语言程序编写简单的语言程序n三种不同的程序设计结构三种不同的程序设计结构q顺序结构顺序结构q选择结构(分支结构)选择结构(分支结构)q循环结构循环结构其中,顺序结构是最基本、最简
21、单的程序结构。其中,顺序结构是最基本、最简单的程序结构。在顺序结构程序中,各语句是按照位置的先后次序,在顺序结构程序中,各语句是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。顺序执行的,且每个语句都会被执行到。27/67n例、已知例、已知a=5,b=10,试交换,试交换a、b的值。的值。 分析:交换两个变量的值,就像一个瓶装酱油,一个瓶分析:交换两个变量的值,就像一个瓶装酱油,一个瓶 装醋,要交换内容需要借助第三个空瓶一样。交装醋,要交换内容需要借助第三个空瓶一样。交 换两个数也需要借助第三个变量。换两个数也需要借助第三个变量。 #include void main( ) int a
22、=5, b=10, temp; temp=a; a=b; b=temp; printf(a=%d, b=%d n, a, b);EG105.C28/67n例例8、求任意三个整数的平均值。、求任意三个整数的平均值。 n编程思路编程思路: q首先要有首先要有3个整数,这个整数,这3个数可以用个数可以用a、b、c 三个整型变量存放三个整型变量存放 q其次平均值应该用一个变量保存,该变量应该是实数类型其次平均值应该用一个变量保存,该变量应该是实数类型q求任意求任意3个整数的平均值,所以这个整数的平均值,所以这3个数应该从键盘输入个数应该从键盘输入q计算平均值:计算平均值:(a+b+c)/3.0,因为,
23、因为C语言中两个整数相除得到的结语言中两个整数相除得到的结果也是整数(去掉小数部分),为保证结果正确必须用实数果也是整数(去掉小数部分),为保证结果正确必须用实数3.0#include void main( ) int a ,b ,c; float ave; scanf(%d%d%d, &a, &b, &c); ave=(a+b+c)/3.0; printf(ave=%fn, ave); EG106.C29/67思考:两个数相除如何才能得到实数?如思考:两个数相除如何才能得到实数?如0.33int a=1, b=3, c;c=a/b;c=?0方法一:方法一: float
24、 a=1, b=3, c;c=a/b;c=?0.333333将变量定义为实型将变量定义为实型方法二:方法二: int a=1, b=3;float c;c=1.0*a/b;c=?0.333333方法三:方法三: 强制类型转换强制类型转换,格式:,格式:(类型类型)变量变量 或或 (类型类型)(表达式表达式)int a=1, b=3;float c;c=(float)a/b;c=? 0.333333int a=1, b=3;float c;c=(float)(a)/b;int a=1, b=3;float c;c=(float)(a/b);c=0.030/67n例例9、输入三角形的三边长,求三角
25、形的面积。、输入三角形的三边长,求三角形的面积。设三边长设三边长a、b、c构成三角形,则构成三角形,则Area=#include #include /*因为要调用因为要调用sqrt,所以包含此头文件,所以包含此头文件*/void main () float a, b, c, s, area; printf(“Input 3 numbers:n”); scanf (%f%f%f, &a, &b, &c); s = 1.0 / 2 * (a + b + c); area = sqrt (s * (s - a) * (s - b) * (s - c); printf (a=%
26、f, b=%f, c=%f, s=%fn, a, b, c, s); printf (area=%7.2fn, area);c)-b)(s-a)(s-s(sEG107.C31/671.4 C语言基本语法成分语言基本语法成分n语言字符集语言字符集q字符是字符是C语言最基本的元素,语言最基本的元素,C语言字符集由字母、数字、语言字符集由字母、数字、空白符、标点符号和特殊字符组成空白符、标点符号和特殊字符组成q在在C程序是用下列字符所组成的字符集写成的:程序是用下列字符所组成的字符集写成的:n字母字母: A-Z,a-zn数字数字: 0-9n标点符号、特殊字符标点符号、特殊字符(28个个): ! #
27、% & + - * / = | . , ; : ? “ ( ) n空白符:空格,制表符空白符:空格,制表符(Tab跳格健跳格健),换行符的总称。空白符除了在字,换行符的总称。空白符除了在字符、字符串中有意义外,在程序中只起间隔作用,编译系统会忽略其符、字符串中有意义外,在程序中只起间隔作用,编译系统会忽略其它位置的空白符。它位置的空白符。32/67n标识符标识符q标识符是给程序中的标识符是给程序中的实体实体所起的名字所起的名字这些实体指:变量,常量,函数,数组,类型这些实体指:变量,常量,函数,数组,类型q标识符的命名规则标识符的命名规则n由字母,数字和下划线组成,必须以字母或下划线开
28、头由字母,数字和下划线组成,必须以字母或下划线开头 n标识符不能与标识符不能与C语言的语言的关键字关键字重名重名n建议用户定义标识符时尽量建议用户定义标识符时尽量不用不用下划线开头下划线开头n注意标识符的有效长度,不同的编译系统有不同的限制,一般注意标识符的有效长度,不同的编译系统有不同的限制,一般不超过不超过32个字符个字符n标识符中区分大小写字母标识符中区分大小写字母 (如(如: sum 和和 SUM 是不同的标识符)是不同的标识符)q定义标识符应遵循的原则定义标识符应遵循的原则n尽量做到见名知义尽量做到见名知义n一般习惯上变量名、函数名用小写,而一般习惯上变量名、函数名用小写,而符号常量
29、符号常量用大写用大写n应尽量避免使用容易认错的字符应尽量避免使用容易认错的字符 如:数字如:数字1和小写字母和小写字母l 下面哪些标识符合法?下面哪些标识符合法?a str20 area student Line TABLE go2map_good hello_world god_ 3th =xy“m+n”hello worldint 33/67n关键字关键字q关键字是关键字是C语言预先定义的、具有特定意义的标识语言预先定义的、具有特定意义的标识符,也称为保留字。符,也称为保留字。C语言包括语言包括32个关键字个关键字: q注意:注意:C语言的关键字都是小写,不能重新定义关语言的关键字都是小写
30、,不能重新定义关键字键字 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile34/67n运算符运算符q运算符是用于描述某种运算功能的符号,如运算符是用于描述某种运算功能的符号,如+ - * / 等等q运算符可以由一个或多个字符组成运算符可以由一个或多个字符组成q根据参与运算的操作数个数,可分为:单目运算符、根据参与运
31、算的操作数个数,可分为:单目运算符、双目运算符和三目运算符双目运算符和三目运算符C语言运算符分为以下几类:语言运算符分为以下几类: 算术运算符:算术运算符:+、-、*、/、% 关系运算符:关系运算符:、=、= =、!= 逻辑运算符:逻辑运算符:!、&、| 位运算符:位运算符:、|、& 赋值运算符:赋值运算符:=及扩展赋值运算符及扩展赋值运算符 条件运算符:条件运算符:? : 逗号运算符:逗号运算符: , 指针和地址运算符:指针和地址运算符:*、& 求字节运算符:求字节运算符:sizeof 分量运算符:分量运算符:.、- 下标运算符:下标运算符: 强制类型转换运算符:强制
32、类型转换运算符:(类型类型) 其他:如函数调用运算符其他:如函数调用运算符( )35/67需要注意的问题:需要注意的问题:、参加操作的数据类型参加操作的数据类型:、要求运算量的个数要求运算量的个数:一元(单目)、二元(双目)或三元(三目)运算符一元(单目)、二元(双目)或三元(三目)运算符、优先级优先级操作数两侧的运算符优先级别不同时,则先执行操作数两侧的运算符优先级别不同时,则先执行“优先级优先级”高的运算。如:高的运算。如:3+53+5* *6 6、结合性结合性操作数两侧的运算符优先级别相同时,则按结合方向处理操作数两侧的运算符优先级别相同时,则按结合方向处理(左结合性左结合性、右结合性右
33、结合性)。如:)。如:3 3* *5/65/6、结果的取值及类型结果的取值及类型语言中的语言中的所有表达式都具有确定的值所有表达式都具有确定的值。当不同类型的数。当不同类型的数据进行运算时,注意结果的值及类型。据进行运算时,注意结果的值及类型。36/67各类数值型数据间的混合运算各类数值型数据间的混合运算 一、自动类型转换一、自动类型转换语言允许不同数据类型之间的各种运算。如语言允许不同数据类型之间的各种运算。如1.5+2*a-1.23456789;在运算中,系统自动将不同类;在运算中,系统自动将不同类型的数据先转换成同一类型,然后再运算。型的数据先转换成同一类型,然后再运算。转换规则如图:转
34、换规则如图:doublefloatlongunsignedintchar,short低低高高向左的箭头表示必定向左的箭头表示必定的转换,纵向的箭头表示的转换,纵向的箭头表示当运算对象为不同类型时当运算对象为不同类型时转换的方向(箭头只表示转换的方向(箭头只表示数据类型级别的高低,由数据类型级别的高低,由低向高转换)。低向高转换)。37/67二、强制类型转换二、强制类型转换语言允许用户使用强制类型转换运算符将一个语言允许用户使用强制类型转换运算符将一个表达式的值转换成所需的数据类型。表达式的值转换成所需的数据类型。形式:形式:(类型名类型名)(表达式表达式 )x = (double)a;z =
35、(int)(x+y);y = (float)(5%3);注意注意 : (1) 为避免出错,应将表达式用括号括起来。为避免出错,应将表达式用括号括起来。(2) 对一个变量进行强制转换后,得到一个所需类型的对一个变量进行强制转换后,得到一个所需类型的中间变量,原来变量的类型和值不发生变化。中间变量,原来变量的类型和值不发生变化。 38/67算术运算符算术运算符n+ - * / %n注意:注意:q两个整数相除舍去小数部分,结果为整数。如两个整数相除舍去小数部分,结果为整数。如5/3=1。但在有负数操作数的情况下,整数除法截。但在有负数操作数的情况下,整数除法截取的方向及取模运算结果的符号取决于具体机
36、器的取的方向及取模运算结果的符号取决于具体机器的实现。整数除法一般靠实现。整数除法一般靠0截取,如果两数符号不同,截取,如果两数符号不同,则运算结果的符号与被除数符号相同。则运算结果的符号与被除数符号相同。q两个数中有一个为实数,则运算结果为两个数中有一个为实数,则运算结果为double型,型,即即1.0/3=0.333333,但,但1/3=0。q要求要求“%”两侧必须为整数,如两侧必须为整数,如7%3=1。39/67算术运算符的优先级和结合性算术运算符的优先级和结合性n当一个表达式中出现多个运算符时,按各运算当一个表达式中出现多个运算符时,按各运算符的优先级和结合性确定各运算符的计算顺序。符
37、的优先级和结合性确定各运算符的计算顺序。、*、/、%的优先级相同,的优先级相同,+、-的优先级相同;的优先级相同;但前三种高于后两种。但前三种高于后两种。、+ - * / %均为均为左结合性左结合性。40/67复合的赋值运算符复合的赋值运算符n在赋值运算符在赋值运算符“=”之前加上之前加上+、-、*、/、%、&、|等等10种双目运算符,可构成种双目运算符,可构成复合的赋值运算符。即构成复合的赋值运算符。即构成+=、-=、*=、/=、%=、=、&=、=、|=10种复合运算种复合运算符。符。n例:例:a += 5;a = a+5;y *= x-2;y = y*(x-2);x %=
38、y/3;x = x%(y/3);41/67自增与自减运算符自增与自减运算符n+、- 作用:使操作数递增作用:使操作数递增1或递减或递减1n形式:形式:q前缀:前缀:+a; -a;q后缀:后缀:a+; a-; q例:例:int x, a = 5; x = a+; int x, a = 5; x = +a; a的值分别是多少?的值分别是多少? x的值分别是多少?的值分别是多少?a = 6; x = 5;a = 6; x = 6;42/67n注意:注意:q自增、自减运算符只能作用于变量,而不能是自增、自减运算符只能作用于变量,而不能是常量或表达式,如:常量或表达式,如:8+、 (x*y)+ 错错q在
39、不需要使用任何具体值且仅需要递增变量的在不需要使用任何具体值且仅需要递增变量的情况下,前缀方式和后缀方式的效果相同。情况下,前缀方式和后缀方式的效果相同。n自增自减运算符,优先级高于自增自减运算符,优先级高于*、/、%运算,结合运算,结合方向为方向为自右至左自右至左。43/67逗号运算符逗号运算符n , 优先级最低,结合性为优先级最低,结合性为自左至右自左至右n一般形式一般形式 : 表达式表达式1 , 表达式表达式2 , 表达式表达式n ;n执行过程执行过程 : 从左至右依次求解表达式从左至右依次求解表达式1,表达,表达式式2表达式表达式n。逗号表达式的值就是表达。逗号表达式的值就是表达式式n
40、 的值。的值。n例:例:int i=2, j=3, k=4; i+1 , j+4 , k-2; 最后表达式语句的值为最后表达式语句的值为2 a=(a=6, a*3, a+3); 最后最后a的值为?的值为?44/67n分隔符分隔符q在在C语言程序中,语言程序中,空格、逗号、回车空格、逗号、回车/换行换行等,在不等,在不同的应用场合起着分隔符的作用。同的应用场合起着分隔符的作用。n例如例如: int x, y ; 中的空格和逗号都起着分隔符的作用,如中的空格和逗号都起着分隔符的作用,如果果int和和x之间没有空格,程序就会出错;而在之间没有空格,程序就会出错;而在x和和y之间少之间少了逗号,了逗号
41、,xy就会被认为是一个变量。就会被认为是一个变量。 n其他符号其他符号q花括号花括号 通常用于标识函数体或一个复合语句通常用于标识函数体或一个复合语句q/*/构成一组注释符,编译时系统将忽略注释构成一组注释符,编译时系统将忽略注释n注释在程序中起提示、解释作用。注释在程序中起提示、解释作用。n在程序调试过程中使用注释可以暂时屏蔽一些语句。在程序调试过程中使用注释可以暂时屏蔽一些语句。45/671.5 C语言数据类型语言数据类型n用程序设计语言处理问题最终是对数据的处理,而数用程序设计语言处理问题最终是对数据的处理,而数据有不同类型的区分,这涉及到数据类型的概念。据有不同类型的区分,这涉及到数据
42、类型的概念。n数据类型数据类型q基本类型基本类型n整型整型(int)n实型(浮点型)实型(浮点型)(float double)n字符型字符型(char)n枚举类型枚举类型q构造类型构造类型n数组、结构体、共用体、文件数组、结构体、共用体、文件q指针类型指针类型q空类型空类型(void)46/67语言中的数据又分常量和变量,现介绍基语言中的数据又分常量和变量,现介绍基本数据类型中的常量和变量。本数据类型中的常量和变量。n 常量常量q在程序执行期间其值不发生变化的量。又可分为在程序执行期间其值不发生变化的量。又可分为直接常量和符号常量直接常量和符号常量q直接常量直接常量n例:例:8(整型)(整型)
43、, 2.6(实型)(实型), b(字符型)(字符型), “student” (字符串)(字符串)q符号常量符号常量n在程序中用在程序中用标识符标识符代表的常数,其值不能被改变,也代表的常数,其值不能被改变,也不能再被赋值。不能再被赋值。定义符号常量的格式定义符号常量的格式: #define 标识符标识符 常量表达式或字符串常量表达式或字符串47/67n例例10、计算圆的周长和面积。、计算圆的周长和面积。#include #define PI 3.14 void main( ) int r; float c, s, v; r=3; c=2*PI*r; s=PI*r*r; printf(“%f,
44、%fn, c, s); 使用符号常量的优点:使用符号常量的优点:(1) (1) 含义清楚含义清楚(2) (2) 修改方便修改方便特点:标识符名一般大写特点:标识符名一般大写EG108.C48/67n变量变量q在程序执行期间值可以变化的量在程序执行期间值可以变化的量q变量声明的格式:变量声明的格式:数据类型数据类型 变量名列表变量名列表 ; n例:例:int x; int a, b, c; x = 3;q说明:说明:n进行变量声明后,计算机系统会为声明的变量分配存储空进行变量声明后,计算机系统会为声明的变量分配存储空间,用以存放数据。间,用以存放数据。n变量的存储空间可能由一个或多个字节组成,内
45、存中的每变量的存储空间可能由一个或多个字节组成,内存中的每个字节都有自己的地址,变量名实际上是一个符号地址。个字节都有自己的地址,变量名实际上是一个符号地址。在程序中对变量的赋值和取值操作实际上是通过变量名找在程序中对变量的赋值和取值操作实际上是通过变量名找到相应的内存地址,然后从对应的存储空间中读取数据。到相应的内存地址,然后从对应的存储空间中读取数据。q变量的初始化:在声明变量的同时对变量赋初值变量的初始化:在声明变量的同时对变量赋初值n例:例:int x=3; int x=3, y=5; int x, y=3, z;3 3x x变量名变量名变量值变量值存储空间存储空间49/671.5.1
46、 整型数据整型数据n整型常量整型常量q十进制整型:十进制整型:23, -32, 0q八进制整型:以八进制整型:以0开头开头017, 023q十六进制整型:以十六进制整型:以0 x(或或0X)开头开头0 x17, 0X2en整型变量整型变量q分三种类型:分三种类型:short int、 int、 long int;每种类型又分;每种类型又分signed和和unsigned,缺省为,缺省为signed。q有符号基本整型有符号基本整型 signed int (16位位)q无符号基本整型无符号基本整型 unsigned int (16位位)q有符号短整型有符号短整型 signed short int
47、(16位位) q无符号短整型无符号短整型 unsigned short int (16位位)q有符号长整型有符号长整型 signed long int (32位位)q无符号长整型无符号长整型 unsigned long int (32位位)说明说明: 括起来的为可选项,说明变量时可以省略不写括起来的为可选项,说明变量时可以省略不写如何定义整型变量呢?如何定义整型变量呢?例例: int a; int x, y; short a ,b; unsigned long m;如果在如果在整常数整常数后面加字母后面加字母U或或u,表示,表示unsigned int型型常量;加字母常量;加字母L或或l表示表
48、示long int型常量型常量。例:例:12U, 432L12U, 432L 50/671.5.2 实型数据实型数据n实型常量实型常量q十进制形式:由数字和小数点组成(必有小数点)十进制形式:由数字和小数点组成(必有小数点)n例:例:2.8, -3.6, 3. , .75(0可省)可省)q指数形式:指数形式:1.289e3, 31.4E 1n实型变量实型变量q分三类:分三类:n单精度型单精度型 float(占占32位,有效数字位,有效数字67)n双精度型双精度型 double (占占64位,有效数字位,有效数字1516)n长双精度型长双精度型long double(占占128位,有效数字位,有
49、效数字1819)q一个一个实型常数实型常数默认为默认为double型。要表示型。要表示float型数,型数,则必须在实数后加上字母则必须在实数后加上字母f或或Fe或或E前面要有数字,前面要有数字,且且e或或E后面的数必须后面的数必须为整数。为整数。51/671.5.3 字符型数据字符型数据n字符常量字符常量q用一对单引号括起来的单个字符用一对单引号括起来的单个字符n例:例:a, 8, A, *q转义字符:以转义字符:以“”开头,后跟一些指定字符,以表开头,后跟一些指定字符,以表示特定的、具有控制功能的字符示特定的、具有控制功能的字符n例:例:n, , ”, , t, ddd, xhhn字符变量
50、字符变量q分两类:分两类:n有符号:有符号:signed char(占占8位)位) n无符号:无符号:unsigned char(占占8位)位)q定义形式:定义形式:char 变量列表变量列表;n例:例:char ch1, ch2; ch1=a; ch2 = $;52/67n字符串常量字符串常量q由一对双引号由一对双引号(“ ”)括起来的字符序列。括起来的字符序列。n例:例:Hello、I love China!、How do you do? q为了判断字符串结束,为了判断字符串结束,C编译器会自动在字符串的编译器会自动在字符串的末尾加一个转义字符末尾加一个转义字符0,作为字符串常量的结束,作
51、为字符串常量的结束标志。标志。0的的ASCII值为值为0,是不可显字符,也不,是不可显字符,也不作任何操作,即作任何操作,即“空操作字符空操作字符”。因此字符串的实因此字符串的实际长度为字符个数加际长度为字符个数加1。q注意注意: a与与a是不同的是不同的 a是字符常量,在内存中占是字符常量,在内存中占1个字节个字节 “a”是字符串常量,在内存中占是字符串常量,在内存中占2个字节个字节aaaa053/67n字符型数据与整型数据的相互运算字符型数据与整型数据的相互运算q字符数据在内存中以相应的字符数据在内存中以相应的ASCII码存放,实质上码存放,实质上是二进制形式,而整型数据也以二进制形式存放
52、,是二进制形式,而整型数据也以二进制形式存放,所以它们之间在一定范围内互相通用所以它们之间在一定范围内互相通用#include void main( ) char ch; ch=a; printf(%cn,ch); printf(%dn,ch); 运行结果:运行结果:a 97#include void main( ) char ch; int x; ch=A; x=ch+32; printf(%c,%dn, ch, ch); printf(%c,%dn, x, x);运行结果:运行结果:A, 65 a, 97EG109.C、EG110.C54/671.6 数据的输入与输出数据的输入与输出nC语
53、言的输入语言的输入/输出均由函数来实现,在使用输输出均由函数来实现,在使用输入输出函数时,应在程序开头写预编译命令:入输出函数时,应在程序开头写预编译命令:#include n本节介绍最常用的输入输出函数本节介绍最常用的输入输出函数q格式输入输出函数:格式输入输出函数:printf和和 scanfq字符输入输出函数:字符输入输出函数:putchar和和getchar55/671.6.1 printf( )函数函数n一般形式:一般形式: printf(“格式控制格式控制”, 输出表列输出表列);q例:例:printf(“hello worldn”); printf(“sum is : %dn”,
54、 sum); printf(“a=%d,b=%dn”, a, b);n格式控制格式控制q普通字符普通字符原样原样输出输出n普通字母、数字及符号普通字母、数字及符号n转义字符:转义字符:n, t等等q格式控制说明:由格式控制说明:由%和格式字符及和格式字符及附加格式说明字符附加格式说明字符组成组成n%d:输出十进制整数:输出十进制整数n%f:输出十进制浮点数:输出十进制浮点数n%c:输出单个字符:输出单个字符56/67n格式控制格式控制q附加格式说明符附加格式说明符n放置位置:在和格式字符之间放置位置:在和格式字符之间n如下字符:如下字符:q字母字母l:输出:输出long型数据或型数据或doub
55、le型数据,如:型数据,如:%ld,%lf等等qm(正整数正整数):数据的最小宽度:数据的最小宽度qn(正整数正整数):对于实数,表示输出:对于实数,表示输出n位小数;对于字符串,表位小数;对于字符串,表示截取的字符个数示截取的字符个数q(负号负号):输出的数据或字符在域内向左对齐(缺省右对齐):输出的数据或字符在域内向左对齐(缺省右对齐)q输出表列:输出项可以是常量,变量,表达式输出表列:输出项可以是常量,变量,表达式例:例:int x=8; 输出结果:输出结果:printf(x=%8.4fn, 6.85); x=6.8500 printf(x=%dn, x); x=857/67注意:注意:
56、、输出整数和实数时,、输出整数和实数时,数数0用以用以指定数字前的空位是否指定数字前的空位是否补补0;无;无0则补空格。则补空格。float a=1.23;printf(%08.1fn, a);000001.2、如果要输出、如果要输出%,则在格式控制字符串中连续用两个,则在格式控制字符串中连续用两个%表示。表示。printf(%f%n, 1.0/3);0.333333%、格式控制符的个数与后面的参数个数应相等,且前格式控制符的个数与后面的参数个数应相等,且前后位置要一一对应。后位置要一一对应。printf(a=%d, b=%dn, a,b);、格式字符与其对应的输出项的类型要保持一致,例格式字
57、符与其对应的输出项的类型要保持一致,例如,不应用如,不应用%f输出整数。输出整数。58/67int a=123; float x=12.345;printf(a=%5d ,a);输出结果:输出结果:a=_ _123printf(a=%2d,a);输出结果:输出结果:a=123printf(a=%-5X,a);输出结果:输出结果:a=7B_ _ _printf(x=%7.2f,x);输出结果:输出结果:x=_ _12.35printf(x=%.2f,x);输出结果:输出结果:x=12.35printf(x=%10.2e,x);输出结果:输出结果:x=_1.23e+001printf(x=%2E,
58、x);输出结果:输出结果:x=1.234500E+001printf(str=%5.3s,Computer);输出结果:输出结果:str=_ _Comprintf(str=%3s,Computer); 输出结果:输出结果:str=ComputerEG111.C-EG114.C59/671.6.2 scanf( )函数函数n一般形式:一般形式:scanf(“格式控制格式控制”, 地址表列地址表列);q格式控制格式控制n格式控制字符:基本同格式控制字符:基本同printf()相似相似n普通字符普通字符原样输入原样输入q地址表列地址表列n由变量地址组成:即在变量名前加地址运算符由变量地址组成:即在变量名前加地址运算符“&”q例:例:scanf(“%d%d”, &a, &b); 要求输入:要求输入:5 8 scanf(“%d,%d”,&a, &b); 要求输入:要求输入:5,8 scanf(“a=%d,b=%d”, &a, &b); 要求输入:要求输入:a=5,b=860/67n注意问题注意问题q用用%c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 砂浆抹面施工方案
- 柱亚克力灯箱施工方案
- 展厅装饰装修承包合同
- 管道除锈施工方案
- 4米高围挡施工方案
- 手球馆地坪施工方案
- 房屋粉刷安装施工方案
- 堤坝护坡混凝土施工方案
- 反光漆施工方案
- 填筑施工方案
- 家乡盐城城市介绍江苏盐城介绍课件
- 市政工程施工安全检查标准
- 银行整村授信工作经验材料工作总结汇报报告2篇
- 四川事业单位工作人员收入分配制度改革实施意见
- 陕西省2023第二届长安杯大中小学国家安全知识竞赛题库及答案
- 基建矿井应急救援预案之综合应急预案汇编(完整版)资料
- GA/T 830-2021尸体解剖检验室建设规范
- 《PEP英语六年级下册Unit3Readandwrite》东城虎英小学王晓惠
- GB/T 3778-2021橡胶用炭黑
- GB/T 210.1-2004工业碳酸钠及其试验方法第1部分:工业碳酸钠
- GB/T 19228.3-2012不锈钢卡压式管件组件第3部分:O形橡胶密封圈
评论
0/150
提交评论