《C程序基础》PPT课件.ppt

上传人:汽*** 文档编号:569503613 上传时间:2024-07-30 格式:PPT 页数:110 大小:1.26MB
返回 下载 相关 举报
《C程序基础》PPT课件.ppt_第1页
第1页 / 共110页
《C程序基础》PPT课件.ppt_第2页
第2页 / 共110页
《C程序基础》PPT课件.ppt_第3页
第3页 / 共110页
《C程序基础》PPT课件.ppt_第4页
第4页 / 共110页
《C程序基础》PPT课件.ppt_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《《C程序基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《C程序基础》PPT课件.ppt(110页珍藏版)》请在金锄头文库上搜索。

1、第一章 程序基础1.1 1.1 语言程序的基本结构语言程序的基本结构1 1.2 .2 语言基本语法成分语言基本语法成分1.1.3 3 语言数据类型语言数据类型1.4 1.4 表达式和语句表达式和语句1.5 1.5 程序运行过程程序运行过程1.6 1.6 编写简单的程序编写简单的程序1.7 1.7 数据的输入与输出数据的输入与输出1.8 1.8 C C语言宏定义语言宏定义1.9 1.9 算法算法1.1.1010 语言的产生、发展及特点语言的产生、发展及特点自学自学什么是程序?什么是程序?什么是程序?什么是程序?常见的软件:记事本、画图、常见的软件:记事本、画图、常见的软件:记事本、画图、常见的软

2、件:记事本、画图、WordWord、ExcelExcel、暴风影音、暴风影音、暴风影音、暴风影音、Windows XPWindows XP、UnixUnix等。等。等。等。它们用某种计算机语言写成(如它们用某种计算机语言写成(如它们用某种计算机语言写成(如它们用某种计算机语言写成(如C C、VC+VC+、JavaJava、C#C#等),由一系列详细的指令组成,能准确的告诉计算机怎么等),由一系列详细的指令组成,能准确的告诉计算机怎么等),由一系列详细的指令组成,能准确的告诉计算机怎么等),由一系列详细的指令组成,能准确的告诉计算机怎么处理文字或数据。处理文字或数据。处理文字或数据。处理文字或数

3、据。程序员必须给出计算机要执行的详细指令序列,即程序。程序员必须给出计算机要执行的详细指令序列,即程序。程序员必须给出计算机要执行的详细指令序列,即程序。程序员必须给出计算机要执行的详细指令序列,即程序。程序程序程序程序就是就是就是就是完成某种功能的指令序列完成某种功能的指令序列完成某种功能的指令序列完成某种功能的指令序列。编写程序需要什么?编写程序需要什么?编写程序需要什么?编写程序需要什么?程序由一系列符号(字母、数字等)组成,不能由计算程序由一系列符号(字母、数字等)组成,不能由计算程序由一系列符号(字母、数字等)组成,不能由计算程序由一系列符号(字母、数字等)组成,不能由计算机直接识别

4、。机直接识别。机直接识别。机直接识别。程序不能由计算机直接识别,需要转换成二进制形式,程序不能由计算机直接识别,需要转换成二进制形式,程序不能由计算机直接识别,需要转换成二进制形式,程序不能由计算机直接识别,需要转换成二进制形式,称为称为称为称为编译编译编译编译( (Compile)Compile),完成编译功能的程序称为完成编译功能的程序称为完成编译功能的程序称为完成编译功能的程序称为编译器编译器编译器编译器( (Compiler)Compiler)。常见的语言编译器:常见的语言编译器:常见的语言编译器:常见的语言编译器:Turbo CTurbo CTurbo C+Turbo C+Borla

5、nd C+Borland C+Visual C+Visual C+1.1 语言程序的基本结构1.1.1 简单程序介绍观察下面两个程序哪些相同的部分:观察下面两个程序哪些相同的部分:观察下面两个程序哪些相同的部分:观察下面两个程序哪些相同的部分:# #include include .hvoid main( )void main( ) printf printf(This is a C This is a C program!nprogram!n);); # #include include .hvoid main( )void main( ) intint a,b,sum; a,b,sum;

6、a=2; b=3; a=2; b=3; sum=a+b; sum=a+b; printfprintf(sum is %dn, sumsum is %dn, sum); ); # #include include .hvoid main( )void main( ) printfprintf(This is a C program!n);(This is a C program!n); 编译预处理命令编译预处理命令编译预处理命令编译预处理命令函数函数函数函数语言程序的两大部分:语言程序的两大部分:语言程序的两大部分:语言程序的两大部分: 编译预处理命令:以编译预处理命令:以编译预处理命令:以编译

7、预处理命令:以“ “# #” ”开头;一般放在程序的最前面开头;一般放在程序的最前面开头;一般放在程序的最前面开头;一般放在程序的最前面 # #includeinclude表示文件包含,即将后面文件的内容包含到本程序中表示文件包含,即将后面文件的内容包含到本程序中表示文件包含,即将后面文件的内容包含到本程序中表示文件包含,即将后面文件的内容包含到本程序中 stdiostdio.h.h是是是是包含了输入输出函数的头文件包含了输入输出函数的头文件包含了输入输出函数的头文件包含了输入输出函数的头文件 函数:一个程序中可以有多个,必须有一个函数:一个程序中可以有多个,必须有一个函数:一个程序中可以有多

8、个,必须有一个函数:一个程序中可以有多个,必须有一个mainmain函数函数函数函数# #include include .hvoid main( )void main( ) printfprintf( ( This is a C program!nThis is a C program!n ) ); ; 函数:用于实现程序要求的功能函数:用于实现程序要求的功能函数:用于实现程序要求的功能函数:用于实现程序要求的功能 包括包括包括包括函数首部函数首部函数首部函数首部和和和和函数体函数体函数体函数体两部分:两部分:两部分:两部分:函数首部:即函数的第一行,包括函数类型、函数名、参数函数首部:即函

9、数的第一行,包括函数类型、函数名、参数函数首部:即函数的第一行,包括函数类型、函数名、参数函数首部:即函数的第一行,包括函数类型、函数名、参数(放在括号内,可以没有参数(放在括号内,可以没有参数(放在括号内,可以没有参数(放在括号内,可以没有参数)函数体:即由函数体:即由函数体:即由函数体:即由 开始、到开始、到开始、到开始、到 结束的内容结束的内容结束的内容结束的内容函数首部函数首部函数首部函数首部函数体函数体函数体函数体# #include include .hvoid main( )void main( ) printfprintf( ( This is a C program!nThi

10、s is a C program!n ) ); ; 、mainmain是函数名,称为主函数。每个程序必须是函数名,称为主函数。每个程序必须是函数名,称为主函数。每个程序必须是函数名,称为主函数。每个程序必须有且只能有有且只能有有且只能有有且只能有一一一一个个个个mainmain函数。函数。函数。函数。程序总是从程序总是从程序总是从程序总是从mainmain函数开始执行函数开始执行函数开始执行函数开始执行。、voidvoid用于说明函数值的类型,用于说明函数值的类型,用于说明函数值的类型,用于说明函数值的类型,voidvoid表示函数表示函数表示函数表示函数空值空值空值空值( (没有值没有值没有

11、值没有值) )。、函数体由一对大括号括起来;范围以、函数体由一对大括号括起来;范围以、函数体由一对大括号括起来;范围以、函数体由一对大括号括起来;范围以“ “ ” ”开始,开始,开始,开始,“ “ ” ”结结结结束。束。束。束。、printfprintf是是是是C C语言的语言的语言的语言的标准输出函数标准输出函数标准输出函数标准输出函数,表示把,表示把,表示把,表示把“ “” ”内的字符串内的字符串内的字符串内的字符串按原样输出到显示器上按原样输出到显示器上按原样输出到显示器上按原样输出到显示器上(除非遇到除非遇到除非遇到除非遇到%或或或或 )。)。)。)。、“ “ n n” ”是换行符,即

12、输出完后回车换行。是换行符,即输出完后回车换行。是换行符,即输出完后回车换行。是换行符,即输出完后回车换行。、每个语句必须以分号每个语句必须以分号每个语句必须以分号每个语句必须以分号“ “; ;” ”结束结束结束结束。This is a C program!This is a C program!EG101.C1.5.4 1.5.4 VC+ 6.0VC+ 6.0上机步骤上机步骤上机步骤上机步骤语言程序的基本结构:语言程序的基本结构:语言程序的基本结构:语言程序的基本结构:# #include include .hvoid mainvoid main( )( ) 例例例例. . 输出下列图形:输

13、出下列图形:输出下列图形:输出下列图形:* very goodvery good*# #include include .hvoid main( )void main( ) printfprintf(*n);(*n);printfprintf( very good n);( very good n);printfprintf(*n);(*n);printfprintf(*(*nn very good very goodnn*n);*n);原则:一行不要写的太长!原则:一行不要写的太长!原则:一行不要写的太长!原则:一行不要写的太长!例例例例2 2: # #include include .hv

14、oid main( )void main( )/* /* 主函数主函数主函数主函数 * */ / intint a a, ,b b, ,sumsum; ; /* /* 定义三个整型变量定义三个整型变量定义三个整型变量定义三个整型变量 * */ / a=2a=2; ; b=3 b=3; ; /*/* 为为为为变量变量变量变量a a,b b赋值赋值赋值赋值 */*/ sum=a+bsum=a+b; ; printfprintf( ( sum issum is %d%dnn , , sumsum) ); ; 说明:说明:说明:说明:、“ “/* /*/ */” ”表示注释部分,以表示注释部分,以表示

15、注释部分,以表示注释部分,以“ “/*”/*”开始,以开始,以开始,以开始,以“*“*/”/”结束;结束;结束;结束;注释注释注释注释只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,只是对程序的说明,仅起帮助阅读程序的作用,不影响程序的运行,可以放在程序的任意位置。注意不能嵌套注释可以放在程序的任意位置。注意不能嵌套注释可以放在程序的任意位置。注意不能嵌套注释可以放在程序的任意位置。注意不能嵌套注释( (即即即即/*/*/*/)/*/*/*/)。、定义变量后,系统

16、就为其、定义变量后,系统就为其、定义变量后,系统就为其、定义变量后,系统就为其分配相应大小的存储单元分配相应大小的存储单元分配相应大小的存储单元分配相应大小的存储单元,用于存放其,用于存放其,用于存放其,用于存放其值。语言要求变量必须值。语言要求变量必须值。语言要求变量必须值。语言要求变量必须先定义,后使用先定义,后使用先定义,后使用先定义,后使用。a a a ab b b bsumsumsumsum、“ “=”=”为赋值运算符,把为赋值运算符,把为赋值运算符,把为赋值运算符,把“ “=”=”右边表达式的值赋值给左边的变量右边表达式的值赋值给左边的变量右边表达式的值赋值给左边的变量右边表达式的

17、值赋值给左边的变量、“ “%d d” ”表示以表示以表示以表示以“ “十进制整数十进制整数十进制整数十进制整数” ”形式输入输出数据形式输入输出数据形式输入输出数据形式输入输出数据,输出时代以一输出时代以一输出时代以一输出时代以一个十进制整数值,该值由个十进制整数值,该值由个十进制整数值,该值由个十进制整数值,该值由“ “, ,” ”后边对应的变量或表达式提供后边对应的变量或表达式提供后边对应的变量或表达式提供后边对应的变量或表达式提供、本程序只能计算、本程序只能计算、本程序只能计算、本程序只能计算2 2、3 3之和,若要求其它数之和,则要修改程序,之和,若要求其它数之和,则要修改程序,之和,

18、若要求其它数之和,则要修改程序,之和,若要求其它数之和,则要修改程序,给使用程序带来很大的不便。给使用程序带来很大的不便。给使用程序带来很大的不便。给使用程序带来很大的不便。sum is 5sum is 5eg102.c更通用的形式:更通用的形式:更通用的形式:更通用的形式:# #include include .hvoid main( )void main( ) intint a,b,sum; a,b,sum; scanfscanf(%d%d,&a,&b);(%d%d,&a,&b); sum=a+b; sum=a+b; printfprintf(sum is %dn, sum)(sum is

19、 %dn, sum); ; 说明:说明:说明:说明:、scanfscanf是是是是C C语言的语言的语言的语言的标准输入函数标准输入函数标准输入函数标准输入函数,“ “&” ”的含义是得到后面变的含义是得到后面变的含义是得到后面变的含义是得到后面变量的地址。即将输入的数量的地址。即将输入的数量的地址。即将输入的数量的地址。即将输入的数按前面指定的格式按前面指定的格式按前面指定的格式按前面指定的格式给后面指定的变量给后面指定的变量给后面指定的变量给后面指定的变量、“ “%d d” ” 表示输入输出一个整数。表示输入输出一个整数。表示输入输出一个整数。表示输入输出一个整数。、本程序在运行时可输入任

20、意两个整数,并求和输出。、本程序在运行时可输入任意两个整数,并求和输出。、本程序在运行时可输入任意两个整数,并求和输出。、本程序在运行时可输入任意两个整数,并求和输出。eg102.c可以是任意两个整数,即可以是任意两个整数,即可以是任意两个整数,即可以是任意两个整数,即程序执行前不能确定程序执行前不能确定程序执行前不能确定程序执行前不能确定a a、b b的值,程序运行中指定的值,程序运行中指定的值,程序运行中指定的值,程序运行中指定例例例例3 3 3 3:# #include include .hvoid main( )void main( ) floatfloat a,b,c,aver; a

21、,b,c,aver; scanfscanf( ( %f%f%f%f%f%f , , &a&a, ,&b&b, ,&c&c) ); ; aver=(a+b+c)/3; aver=(a+b+c)/3; /*/* 为变量为变量为变量为变量averaver赋值赋值赋值赋值 * */ / printfprintf(aver is (aver is %f%fn, aver)n, aver); 说明:说明:说明:说明:、floatfloat用于声明实型变量用于声明实型变量用于声明实型变量用于声明实型变量、 “ “%f f” ” 表示表示表示表示输入、输出输入、输出输入、输出输入、输出一个实数,输出时默认一个

22、实数,输出时默认一个实数,输出时默认一个实数,输出时默认位小数。位小数。位小数。位小数。“ “%.2 .2f”f”表示控制输出位小数。表示控制输出位小数。表示控制输出位小数。表示控制输出位小数。、本程序可对输入的任意、本程序可对输入的任意、本程序可对输入的任意、本程序可对输入的任意3 3个实数计算平均值。个实数计算平均值。个实数计算平均值。个实数计算平均值。3 4 5 3 4 5 aver is 4.000000aver is 4.000000eg103.c例例例例4 4 4 4:求任意:求任意:求任意:求任意2 2 2 2个整数中的较大数个整数中的较大数个整数中的较大数个整数中的较大数# #

23、include include .hvoid main( )void main( ) intint a,b,c; a,b,c; scanfscanf( ( %d%d%d%d , , &a, a,&b);b); if (ab) if (ab) c=a; c=a; else else c=b; c=b; printfprintf(max=%dn, c);(max=%dn, c); 用函数实现比较大小用函数实现比较大小用函数实现比较大小用函数实现比较大小# #include include .hvoid main( )void main( ) intint a,b,c; a,b,c; scanfsc

24、anf(%d%d, &a,&b);(%d%d, &a,&b); c=c=max(a, b)max(a, b); ; printfprintf(max=%dn, c);(max=%dn, c); intint max( max(intint x, x, intint y) y) intint z; z; if (xy) z=x; if (xy) z=x; else z=y; else z=y; return(z); return(z); 12 3412 34 max=34max=34eg104.c、eg105.c1.1.2 程序的基本结构# #includeinclude #include#in

25、clude #define#define /* /* 预处理命令预处理命令预处理命令预处理命令 */ */void main( )void main( ) 声明部分声明部分声明部分声明部分/ /* * 定义本函数中用到的变量定义本函数中用到的变量定义本函数中用到的变量定义本函数中用到的变量 */ */ 执行部分执行部分执行部分执行部分/ /* * 完成本函数功能的若干语句完成本函数功能的若干语句完成本函数功能的若干语句完成本函数功能的若干语句 * */ / 其他函数其他函数其他函数其他函数 声明部分声明部分声明部分声明部分 执行部分执行部分执行部分执行部分 1.1.3 编写简单的程序程序的三种

26、结构:顺序结构,选择结构、循环结构。所程序的三种结构:顺序结构,选择结构、循环结构。所程序的三种结构:顺序结构,选择结构、循环结构。所程序的三种结构:顺序结构,选择结构、循环结构。所谓顺序结构,是指在各函数中按照从上到下、从左到右的书写谓顺序结构,是指在各函数中按照从上到下、从左到右的书写谓顺序结构,是指在各函数中按照从上到下、从左到右的书写谓顺序结构,是指在各函数中按照从上到下、从左到右的书写顺序依次执行。顺序依次执行。顺序依次执行。顺序依次执行。例例例例1.4 1.4 已知已知已知已知a=5, b=10a=5, b=10,交换交换交换交换并输出并输出并输出并输出a a、b b的值。的值。的

27、值。的值。分析:交换两个变量需要借分析:交换两个变量需要借分析:交换两个变量需要借分析:交换两个变量需要借助第助第助第助第3 3个变量。个变量。个变量。个变量。# #include include .hvoid main( )void main( ) int int a=5a=5, , b=10b=10, temp; , temp; /*/*初始化初始化初始化初始化* */ /temp=a;temp=a;a=b;a=b;b=temp;b=temp;printfprintf(a=%d,b=%dn, a, b);(a=%d,b=%dn, a, b);思考思考思考思考:交换:交换:交换:交换a a、

28、b b能否不借助于能否不借助于能否不借助于能否不借助于第第第第3 3个变量?个变量?个变量?个变量?eg106.ca=a+b;a=a+b;b=a-b;b=a-b;a=a-b;a=a-b;变量赋初值变量赋初值变量赋初值变量赋初值/ /初始化初始化初始化初始化语言允许在定义变量的同时给变量赋初值,即语言允许在定义变量的同时给变量赋初值,即语言允许在定义变量的同时给变量赋初值,即语言允许在定义变量的同时给变量赋初值,即变量的初变量的初变量的初变量的初始化始化始化始化。float f=3.56; float f=3.56; intint a,b,c=3; a,b,c=3; intint a=3,b=3

29、,c=3a=3,b=3,c=3; ;intint a=b=c=3; a=b=c=3;intint a,b,c=5; a,b,c=5;intint a,b,c; a,b,c;c=5;c=5;例例例例1.61.6:计算圆柱体的表面积。:计算圆柱体的表面积。:计算圆柱体的表面积。:计算圆柱体的表面积。分析:圆柱体表面积分析:圆柱体表面积分析:圆柱体表面积分析:圆柱体表面积S S侧面积侧面积侧面积侧面积S1S1底面积底面积底面积底面积S22S22 S1=dh S1=dh,S2=rS2=r2 2,d=2rd=2r因此,需要知道底面半径因此,需要知道底面半径因此,需要知道底面半径因此,需要知道底面半径r

30、r和和和和圆柱体高圆柱体高圆柱体高圆柱体高h h,怎么办?怎么办?怎么办?怎么办?步骤:步骤:步骤:步骤: 设设设设圆圆圆圆柱柱柱柱体体体体的的的的高高高高为为为为h h,半半半半径径径径为为为为r r,表面积为表面积为表面积为表面积为s s; 输入输入输入输入r r、h h的值;的值;的值;的值; 计算底面周长计算底面周长计算底面周长计算底面周长d=2rd=2r; 计算侧面积计算侧面积计算侧面积计算侧面积s1=dhs1=dh; 计算底面积计算底面积计算底面积计算底面积s2=rs2=r2 2; 计算表面积:计算表面积:计算表面积:计算表面积:s=s1+2s2s=s1+2s2; 输出输出输出输出

31、s s的值。的值。的值。的值。 # #include include .hvoid main( )void main( ) float r, h, s ;float r, h, s ;scanfscanf(%f%f, (%f%f, &r, r,&h);h);d=2*3.14*r;d=2*3.14*r;s1=d*h;s1=d*h;s2=3.14*r*r;s2=3.14*r*r;s=s1+2*s2;s=s1+2*s2;printfprintf(Total area is %(Total area is %.2 .2f n,s);f n,s);, , d d, , s1s1, , s2s2; ;是否

32、可以合并步骤?是否可以合并步骤?是否可以合并步骤?是否可以合并步骤?原则:只出现一次的变量可以省略!原则:只出现一次的变量可以省略!原则:只出现一次的变量可以省略!原则:只出现一次的变量可以省略!# #include include .h#define PI 3.14#define PI 3.14void main( )void main( ) float r, h, s;float r, h, s;printfprintf(Input r, h:);(Input r, h:);scanfscanf(%f%f, (%f%f, &r, r, &h);h);s=2*s=2*PIPI*r*h + 2

33、*r*h + 2*PIPI*r*r;*r*r;printfprintf(Total area is %(Total area is %.2 .2fn,s);fn,s);用一个标识符代表一个常量的,称为用一个标识符代表一个常量的,称为用一个标识符代表一个常量的,称为用一个标识符代表一个常量的,称为符号常量符号常量符号常量符号常量,即标识符形式,即标识符形式,即标识符形式,即标识符形式的常量。其值不能被改变,也不能再被赋值。的常量。其值不能被改变,也不能再被赋值。的常量。其值不能被改变,也不能再被赋值。的常量。其值不能被改变,也不能再被赋值。定义形式:定义形式:定义形式:定义形式: # #defi

34、ne define 符号常量名符号常量名符号常量名符号常量名 常量表达式常量表达式常量表达式常量表达式或或或或字符串字符串字符串字符串如:如: # #define PRICE 30define PRICE 30 #define LETTER #define LETTER abcdefgabcdefg 3.1415926 EG108.C原则:输入原则:输入原则:输入原则:输入/ /输出要有提示信息,输出要有提示信息,输出要有提示信息,输出要有提示信息,以说明相应数据的含义。以说明相应数据的含义。以说明相应数据的含义。以说明相应数据的含义。1.2 语言基本语法成分语言字符集由语言字符集由语言字符集

35、由语言字符集由字母字母字母字母、数字数字数字数字、空白空白空白空白、标点符号标点符号标点符号标点符号和和和和特殊字符特殊字符特殊字符特殊字符组成组成组成组成(在字符串常量和注释中还可以使用(在字符串常量和注释中还可以使用(在字符串常量和注释中还可以使用(在字符串常量和注释中还可以使用汉字汉字汉字汉字和和和和其它图形符号其它图形符号其它图形符号其它图形符号,如,如,如,如、)。由字符集中的字符可以构成)。由字符集中的字符可以构成)。由字符集中的字符可以构成)。由字符集中的字符可以构成C C C C语言进一步的语法成分,如标语言进一步的语法成分,如标语言进一步的语法成分,如标语言进一步的语法成分,

36、如标识符、关键字、运算符等。识符、关键字、运算符等。识符、关键字、运算符等。识符、关键字、运算符等。 1.2.1 语言字符集 字母:字母:字母:字母:A-ZA-Z,a-za-z 数字:数字:数字:数字:0-90-9 标点符号、特殊字符:标点符号、特殊字符:标点符号、特殊字符:标点符号、特殊字符:! !# #% & + +- -* */ /= = | |. ., ,; ;: :? ? ( () ) 空白符:空格,制表符空白符:空格,制表符空白符:空格,制表符空白符:空格,制表符( (TabTab健健健健) ),换行符,换行符,换行符,换行符( (空行空行空行空行) )1.2.2 标识符标识符是标

37、识符是标识符是标识符是给程序中的实体所起的名字。用来标识给程序中的实体所起的名字。用来标识给程序中的实体所起的名字。用来标识给程序中的实体所起的名字。用来标识变量名变量名变量名变量名、符号常量名符号常量名符号常量名符号常量名、函数名函数名函数名函数名、数组名数组名数组名数组名、类型名类型名类型名类型名等实体(程序对象)的等实体(程序对象)的等实体(程序对象)的等实体(程序对象)的有效字符序列。标识符由用户定义。有效字符序列。标识符由用户定义。有效字符序列。标识符由用户定义。有效字符序列。标识符由用户定义。1 1、标识符的命名规则、标识符的命名规则、标识符的命名规则、标识符的命名规则、以字母或下

38、划线开头以字母或下划线开头以字母或下划线开头以字母或下划线开头, , 由由由由字母字母字母字母、数字数字数字数字和和和和下划线下划线下划线下划线三种字符三种字符三种字符三种字符组成的字符序列组成的字符序列组成的字符序列组成的字符序列合法的标识符:合法的标识符:合法的标识符:合法的标识符:a i sum S1 r3 aver _total Class day student a i sum S1 r3 aver _total Class day student 不合法标识符:不合法标识符:不合法标识符:不合法标识符:S S1 1 r r3 3 S S表表表表 S M.D.John $123 3D

39、6 a-b S M.D.John $123 3D6 a-b 、不能与语言的关键字重名,如不能与语言的关键字重名,如不能与语言的关键字重名,如不能与语言的关键字重名,如intint、floatfloat、if if、注意标识符的有效长度,不能超过注意标识符的有效长度,不能超过注意标识符的有效长度,不能超过注意标识符的有效长度,不能超过3232个字符个字符个字符个字符、区分大小写字母:、区分大小写字母:、区分大小写字母:、区分大小写字母:sumsum和和和和SumSum不同不同不同不同2 2 2 2、定义标识符应遵循的原则、定义标识符应遵循的原则、定义标识符应遵循的原则、定义标识符应遵循的原则、尽

40、量不要用下划线开头尽量不要用下划线开头尽量不要用下划线开头尽量不要用下划线开头。因为系统内部使用了一些下划。因为系统内部使用了一些下划。因为系统内部使用了一些下划。因为系统内部使用了一些下划线开头的标识符(如线开头的标识符(如线开头的标识符(如线开头的标识符(如_ _fdfd、_ _cscs、_ _ssss),),),),避免与系统定义的标避免与系统定义的标避免与系统定义的标避免与系统定义的标识符冲突。识符冲突。识符冲突。识符冲突。、不与系统预先定义的、不与系统预先定义的、不与系统预先定义的、不与系统预先定义的“ “标准标识符标准标识符标准标识符标准标识符” ”同名,如同名,如同名,如同名,如

41、mainmain、printfprintf、scanfscanf、intint、floatfloat等等等等 、尽量做到、尽量做到、尽量做到、尽量做到“ “见名知义见名知义见名知义见名知义” ”;如;如;如;如sumsum、areaarea、应尽量避免使用容易认错的字符。如应尽量避免使用容易认错的字符。如应尽量避免使用容易认错的字符。如应尽量避免使用容易认错的字符。如: : 数字数字数字数字1 1与字母与字母与字母与字母l l和和和和字母字母字母字母I I,数字数字数字数字0 0与字母与字母与字母与字母o o和和和和OO,数字数字数字数字2 2与字母与字母与字母与字母Z Z和和和和z z、习惯

42、上习惯上习惯上习惯上变量名、函数名用小写变量名、函数名用小写变量名、函数名用小写变量名、函数名用小写,而,而,而,而符号常量用大写符号常量用大写符号常量用大写符号常量用大写intint a,b,sum; a,b,sum;#define PI 3.14#define PI 3.14关键字是语言关键字是语言关键字是语言关键字是语言预先定义的预先定义的预先定义的预先定义的、具有特定意义的具有特定意义的具有特定意义的具有特定意义的标识符标识符标识符标识符,也,也,也,也称为保留字。语言包括称为保留字。语言包括称为保留字。语言包括称为保留字。语言包括32323232个关键字:个关键字:个关键字:个关键字

43、:1.2.3 关键字autoautobreakbreakcasecasecharcharconstconstcontinuecontinuedefaultdefaultdododoubledoubleelseelseenumenumexternexternfloatfloatforforgotogotoif ifintintlonglongregisterregisterreturnreturnshortshortsignedsignedsizeofsizeofstaticstaticstructstructswitchswitchtypedeftypedefunionunionunsigne

44、dunsigned voidvoidvolatilevolatilewhilewhile语言的关键字都是小写。语言的关键字都是小写。语言的关键字都是小写。语言的关键字都是小写。不能重新定义关键字不能重新定义关键字不能重新定义关键字不能重新定义关键字,也不能也不能也不能也不能把关键字定义为一般标识符把关键字定义为一般标识符把关键字定义为一般标识符把关键字定义为一般标识符。1.2.4 运算符运算符是用于运算符是用于运算符是用于运算符是用于描述某种运算功能的符号描述某种运算功能的符号描述某种运算功能的符号描述某种运算功能的符号,如,如,如,如+ + + +、- - - -、* * * *、/ / /

45、 /、% % % %等,等,等,等,运算符可以运算符可以运算符可以运算符可以由一个或多个字符组成由一个或多个字符组成由一个或多个字符组成由一个或多个字符组成。 语言运算符分为以下几类:语言运算符分为以下几类:语言运算符分为以下几类:语言运算符分为以下几类: 算术运算符:算术运算符:算术运算符:算术运算符:+ +、- -、* *、/ /、% 关系运算符:关系运算符:关系运算符:关系运算符: 、= 、=、=、!=!= 逻辑运算符:逻辑运算符:逻辑运算符:逻辑运算符:! !、&、| | 位运算符:位运算符:位运算符:位运算符:、 、| |、 、& 赋值运算符:赋值运算符:赋值运算符:赋值运算符:=

46、=及扩展赋值运算符及扩展赋值运算符及扩展赋值运算符及扩展赋值运算符 条件运算符:条件运算符:条件运算符:条件运算符:?:?: 逗号运算符:逗号运算符:逗号运算符:逗号运算符: , 指针和地址运算符:指针和地址运算符:指针和地址运算符:指针和地址运算符:* *、& 求字节运算符:求字节运算符:求字节运算符:求字节运算符:sizeofsizeof 分量运算符:分量运算符:分量运算符:分量运算符:. .、- 下标运算符:下标运算符:下标运算符:下标运算符: 强制类型转换运算符:强制类型转换运算符:强制类型转换运算符:强制类型转换运算符:( (类型类型类型类型) ) 其他:如函数调用运算符其他:如函数

47、调用运算符其他:如函数调用运算符其他:如函数调用运算符( )( )运算符和表达式用于描述运算形式的符号称为用于描述运算形式的符号称为用于描述运算形式的符号称为用于描述运算形式的符号称为运算符运算符运算符运算符。如。如。如。如+ +、- -、= =、 参与运算的对象(即数据)称为参与运算的对象(即数据)称为参与运算的对象(即数据)称为参与运算的对象(即数据)称为操作数操作数操作数操作数。表达式表达式表达式表达式是将操作数用运算符连接起来的、符合语法规则是将操作数用运算符连接起来的、符合语法规则是将操作数用运算符连接起来的、符合语法规则是将操作数用运算符连接起来的、符合语法规则的式子。它描述了对哪

48、些数据、以什么顺序施以何种操作。其的式子。它描述了对哪些数据、以什么顺序施以何种操作。其的式子。它描述了对哪些数据、以什么顺序施以何种操作。其的式子。它描述了对哪些数据、以什么顺序施以何种操作。其中运算量可以是常量、变量或函数调用。如:中运算量可以是常量、变量或函数调用。如:中运算量可以是常量、变量或函数调用。如:中运算量可以是常量、变量或函数调用。如:x x+ +3/23/2、max=amax=a+ +b b、t=sin(x)t=sin(x)+ +coscos(x)(x)需要注意的问题:需要注意的问题:需要注意的问题:需要注意的问题:、参加操作的数据类型参加操作的数据类型参加操作的数据类型参

49、加操作的数据类型:、要求运算量的个数要求运算量的个数要求运算量的个数要求运算量的个数:一元(单目)、二元(双目)或三元(三目)运算符一元(单目)、二元(双目)或三元(三目)运算符一元(单目)、二元(双目)或三元(三目)运算符一元(单目)、二元(双目)或三元(三目)运算符、优先级优先级优先级优先级操作数两侧的运算符优先级别不同时,则先执行操作数两侧的运算符优先级别不同时,则先执行操作数两侧的运算符优先级别不同时,则先执行操作数两侧的运算符优先级别不同时,则先执行“ “优先级优先级优先级优先级” ”高高高高的运算。如:的运算。如:的运算。如:的运算。如:3+5*63+5*6、结合性结合性结合性结合

50、性操作数两侧的运算符优先级别相同时,则按结合方向处理(操作数两侧的运算符优先级别相同时,则按结合方向处理(操作数两侧的运算符优先级别相同时,则按结合方向处理(操作数两侧的运算符优先级别相同时,则按结合方向处理(左左左左结合性结合性结合性结合性、右结合性右结合性右结合性右结合性)。如:)。如:)。如:)。如:3*5/63*5/6、结果的取值及类型结果的取值及类型结果的取值及类型结果的取值及类型语言中的语言中的语言中的语言中的所有表达式都具有确定的值所有表达式都具有确定的值所有表达式都具有确定的值所有表达式都具有确定的值。当不同类型的数据进。当不同类型的数据进。当不同类型的数据进。当不同类型的数据

51、进行运算时,注意结果的值及类型。行运算时,注意结果的值及类型。行运算时,注意结果的值及类型。行运算时,注意结果的值及类型。2.0+3.02.0+3.01. 算术运算符和算术表达式一、一、一、一、算术运算符算术运算符算术运算符算术运算符5 5 5 5个基本算术运算符:个基本算术运算符:个基本算术运算符:个基本算术运算符:+ - * / %+ - * / %+ - * / %+ - * / %说明:说明:说明:说明:、+ + + +、- - - -、* * * *、/ / / /的运算对象可以是整型或实型数据;但如果其的运算对象可以是整型或实型数据;但如果其的运算对象可以是整型或实型数据;但如果其

52、的运算对象可以是整型或实型数据;但如果其中一个运算量为实型,则运算结果为中一个运算量为实型,则运算结果为中一个运算量为实型,则运算结果为中一个运算量为实型,则运算结果为doubledoubledoubledouble型。型。型。型。、/ / / /:两个两个两个两个整数相除整数相除整数相除整数相除舍去小数部分,结果为整数。舍去小数部分,结果为整数。舍去小数部分,结果为整数。舍去小数部分,结果为整数。、%:要求两侧的操作数必须为整数:要求两侧的操作数必须为整数:要求两侧的操作数必须为整数:要求两侧的操作数必须为整数。如果两数符号不同,则。如果两数符号不同,则。如果两数符号不同,则。如果两数符号不

53、同,则运算运算运算运算结果的符号与被除数符号相同结果的符号与被除数符号相同结果的符号与被除数符号相同结果的符号与被除数符号相同5/2=2 5/5/2=2 5/2.0=2.52.0=2.51/3=0 1.0/3=0.3333331/3=0 1.0/3=0.3333335%2=15%2=1-5%2=-1 -5%2=-1 5%-5%-2=12=1二、二、二、二、运算符的优先级和结合性运算符的优先级和结合性运算符的优先级和结合性运算符的优先级和结合性当一个表达式中出现多个运算符时,按各运算符的优先级和结当一个表达式中出现多个运算符时,按各运算符的优先级和结当一个表达式中出现多个运算符时,按各运算符的优

54、先级和结当一个表达式中出现多个运算符时,按各运算符的优先级和结合性确定各运算符的计算顺序。合性确定各运算符的计算顺序。合性确定各运算符的计算顺序。合性确定各运算符的计算顺序。、* *、/ /、%的优先级相同,的优先级相同,的优先级相同,的优先级相同,+ +、- -的优先级相同;但前三种高于的优先级相同;但前三种高于的优先级相同;但前三种高于的优先级相同;但前三种高于后两种。后两种。后两种。后两种。、+ - * / %+ - * / %均为均为均为均为左结合性左结合性左结合性左结合性。 3+2-53+2-5x-2*3x-2*32*5%7/32*5%7/3三、三、三、三、自增、自减运算符自增、自减

55、运算符自增、自减运算符自增、自减运算符+、- -:使变量的值增:使变量的值增:使变量的值增:使变量的值增1 1或减或减或减或减1 1(均为一元运算符)(均为一元运算符)(均为一元运算符)(均为一元运算符)形式:形式:形式:形式:、前缀前缀前缀前缀:+i i、-i-i,在使用在使用在使用在使用i i之前,先使之前,先使之前,先使之前,先使i i的值加减的值加减的值加减的值加减1 1、后缀后缀后缀后缀:i+i+、i-i-,在使用在使用在使用在使用i i之后,使之后,使之后,使之后,使i i的值加减的值加减的值加减的值加减1 1比较:比较:比较:比较: intint i=10; i=10; x= x

56、=i+i+; ; y=i; y=i;x=10, i=11, y=11x=10, i=11, y=11 intint i=10; i=10; x= x=+i+i; ; y=i; y=i;x=11, i=11, y=11x=11, i=11, y=11i=3; j=5;i=3; j=5;a=(a=(+i+i)*j;)*j;a=(a=(i+i+)*j;)*j;i=4 a=4*5=20i=4 a=4*5=20a=3*5=15 i=4a=3*5=15 i=4注意:注意:注意:注意:、对于自增、自减运算符,、对于自增、自减运算符,、对于自增、自减运算符,、对于自增、自减运算符,只能用于变量,而不能用于只能

57、用于变量,而不能用于只能用于变量,而不能用于只能用于变量,而不能用于常量和表达式常量和表达式常量和表达式常量和表达式。如:如:如:如:5+5+,( (a+b)+a+b)+都是错误的。都是错误的。都是错误的。都是错误的。、自增自减运算符,、自增自减运算符,、自增自减运算符,、自增自减运算符,优先级高于优先级高于优先级高于优先级高于* *、/ /、%运算运算运算运算,结合方,结合方,结合方,结合方向为向为向为向为自右至左自右至左自右至左自右至左( (单目运算符单目运算符单目运算符单目运算符) ) 。算术运算符优先级关系:算术运算符优先级关系:算术运算符优先级关系:算术运算符优先级关系:+ -+ -

58、* / %* / %+ -+ -( (单目运算符单目运算符) )( (双目运算符双目运算符) )( (双目运算符双目运算符) )2. 赋值运算符和赋值表达式一、一、一、一、赋值运算符赋值运算符赋值运算符赋值运算符(= =)= = = =:双目运算符、优先级双目运算符、优先级双目运算符、优先级双目运算符、优先级14141414、结合性为、结合性为、结合性为、结合性为自右至左自右至左自右至左自右至左二、二、二、二、赋值表达式赋值表达式赋值表达式赋值表达式1 1 1 1、简单赋值表达式:、简单赋值表达式:、简单赋值表达式:、简单赋值表达式:变量名变量名变量名变量名= = = =表达式表达式表达式表达

59、式作用:先计算表达式的值,再将表达式的值赋值给左边的变量作用:先计算表达式的值,再将表达式的值赋值给左边的变量作用:先计算表达式的值,再将表达式的值赋值给左边的变量作用:先计算表达式的值,再将表达式的值赋值给左边的变量结果:结果:结果:结果:赋值表达式的值赋值表达式的值赋值表达式的值赋值表达式的值和类型等于被赋值变量的值和类型和类型等于被赋值变量的值和类型和类型等于被赋值变量的值和类型和类型等于被赋值变量的值和类型如:如:如:如:x=3x=3x=3x=3、i=i+1i=i+1i=i+1i=i+12 2 2 2、多重赋值表达式:、多重赋值表达式:、多重赋值表达式:、多重赋值表达式:变量名变量名变

60、量名变量名1 1 1 1= = = =变量名变量名变量名变量名2 2 2 2= = = = = = =变量名变量名变量名变量名n n n n= = = =表达式表达式表达式表达式作用:先计算表达式的值,然后将表达式的值赋值给各个指定作用:先计算表达式的值,然后将表达式的值赋值给各个指定作用:先计算表达式的值,然后将表达式的值赋值给各个指定作用:先计算表达式的值,然后将表达式的值赋值给各个指定的变量的变量的变量的变量如:如:如:如:a=b=c=3+4a=b=c=3+4a=b=c=3+4a=b=c=3+4a=(b=(c=3+4)说明:应该理解为说明:应该理解为说明:应该理解为说明:应该理解为变量名

61、变量名变量名变量名1=1=1=1=( ( ( (变量名变量名变量名变量名2=2=2=2=( ( ( (=( ( ( (变量名变量名变量名变量名n=n=n=n=表达式表达式表达式表达式) ) ) ) ) ) )三、三、三、三、复合复合复合复合(自反)(自反)(自反)(自反)赋值运算符赋值运算符赋值运算符赋值运算符(+=+=、-=-=、* *= =、/=/=、%=%=、=、&=&=、=、|=|=)a+=5;a+=5;a=a+5;a=a+5;y*=x-2;y*=x-2;y=y*(x-2);y=y*(x-2);x%=y/3;x%=y/3;x=x%(y/3);x=x%(y/3);a+=a-=a*aa+=

62、a-=a*aa=a+(a=a-a*a)a=a+(a=a-a*a)3. 逗号运算符和逗号表达式一、一、一、一、逗号运算符逗号运算符逗号运算符逗号运算符(, ,), , , ,:双目运算符、优先级双目运算符、优先级双目运算符、优先级双目运算符、优先级15(15(15(15(最低最低最低最低) ) ) )、结合性为、结合性为、结合性为、结合性为自左至右自左至右自左至右自左至右二、二、二、二、逗号表达式逗号表达式逗号表达式逗号表达式 形式:形式:形式:形式:表达式表达式表达式表达式1 1 1 1, , , ,表达式表达式表达式表达式2 2 2 2, , , , , , ,表达式表达式表达式表达式n n

63、 n n运算运算运算运算:从左至右依次计算表达式从左至右依次计算表达式从左至右依次计算表达式从左至右依次计算表达式1 1 1 1、表达式、表达式、表达式、表达式2 2 2 2、表达式、表达式、表达式、表达式n n n n;结果:结果:结果:结果:表达式表达式表达式表达式n n n n的值的值的值的值( ( ( (和类型和类型和类型和类型) ) ) )即为整个逗号表达式的值即为整个逗号表达式的值即为整个逗号表达式的值即为整个逗号表达式的值( ( ( (和类型和类型和类型和类型) ) ) )i=1, j=2, k=3i=1, j=2, k=3逗号表达式,值为逗号表达式,值为逗号表达式,值为逗号表达

64、式,值为3 3i+, j+4, k-2i+, j+4, k-2逗号表达式,值为逗号表达式,值为逗号表达式,值为逗号表达式,值为1 1x=(a=3, b=5, c=b*4)x=(a=3, b=5, c=b*4)赋值表达式,值为赋值表达式,值为赋值表达式,值为赋值表达式,值为2020运算符优先级:运算符优先级:( )( )+ -+ -* / %* / %+ -+ -= += +=等等, ,1.2.5 其它符号分隔符分隔符分隔符分隔符:在:在:在:在C C语言程序中,语言程序中,语言程序中,语言程序中,空格空格空格空格、逗号逗号逗号逗号、回车回车回车回车/ /换行换行换行换行等,在各自不同等,在各自

65、不同等,在各自不同等,在各自不同的应用场合起着的应用场合起着的应用场合起着的应用场合起着分隔符分隔符分隔符分隔符的作用。的作用。的作用。的作用。# #include include .hvoid main( )void main( )/* /* 主函数主函数主函数主函数 * */ / intint a,b,sum; a,b,sum;/* /* 定义整型变量定义整型变量定义整型变量定义整型变量 * */ / scanfscanf(%d%d,&a,&b);(%d%d,&a,&b);/ / 输入两个整数输入两个整数输入两个整数输入两个整数 sum=a+b;sum=a+b;/ / 求和求和求和求和 p

66、rintfprintf(sum is %dn, sum);(sum is %dn, sum);/ / 输出输出输出输出 花括号花括号花括号花括号:“ “ ” ”和和和和“ “ ” ”通常用于标识通常用于标识通常用于标识通常用于标识函数体函数体函数体函数体或者一个语句块(或者一个语句块(或者一个语句块(或者一个语句块(复合语复合语复合语复合语句句句句)注释符注释符注释符注释符:“ “/*/*” ”和和和和“ “* */ /” ”构成一组构成一组构成一组构成一组注释符注释符注释符注释符。编译系统将。编译系统将。编译系统将。编译系统将/* . */* . */之间之间之间之间的所有内容看作注释,编译

67、时编译系统忽略注释。的所有内容看作注释,编译时编译系统忽略注释。的所有内容看作注释,编译时编译系统忽略注释。的所有内容看作注释,编译时编译系统忽略注释。1.3 语言数据类型字符型字符型字符型字符型( (char)char)实型实型实型实型( (浮点型浮点型浮点型浮点型) )单单单单精精精精度度度度型型型型( (floatfloat) )双精度型双精度型双精度型双精度型( (doubledouble) )整型整型整型整型短整型短整型短整型短整型( (short short intint) )整型整型整型整型( (intint) )长整型长整型长整型长整型( (long long intint)

68、)枚举类型枚举类型枚举类型枚举类型( (enumenum) )数组类型数组类型数组类型数组类型结构体类型结构体类型结构体类型结构体类型( (structstruct) )共用体类型共用体类型共用体类型共用体类型( (union)union)文件类型文件类型文件类型文件类型( (FILE)FILE)基本类型基本类型基本类型基本类型构造类型构造类型构造类型构造类型指针类型指针类型指针类型指针类型空类型空类型空类型空类型( (void)void)C C数据类型数据类型数据类型数据类型1. 常量在程序运行过程中其在程序运行过程中其在程序运行过程中其在程序运行过程中其值不能被改变值不能被改变值不能被改变

69、值不能被改变的量。的量。的量。的量。语言中的语言中的语言中的语言中的常量区分为不同的类型常量区分为不同的类型常量区分为不同的类型常量区分为不同的类型:18 0 -318 0 -34.6 -1.23 0.04.6 -1.23 0.0a xa x整型常量整型常量整型常量整型常量实型常量实型常量实型常量实型常量字符型常量字符型常量字符型常量字符型常量字面常量字面常量字面常量字面常量用一个标识符代表一个常量的,称为用一个标识符代表一个常量的,称为用一个标识符代表一个常量的,称为用一个标识符代表一个常量的,称为符号常量符号常量符号常量符号常量,即标识符形式,即标识符形式,即标识符形式,即标识符形式的常量

70、。其值不能被改变,也的常量。其值不能被改变,也的常量。其值不能被改变,也的常量。其值不能被改变,也不能再被赋值不能再被赋值不能再被赋值不能再被赋值。定义形式:定义形式:定义形式:定义形式:# #define define 符号常量名符号常量名符号常量名符号常量名 常量表达式常量表达式常量表达式常量表达式或或或或字符串字符串字符串字符串如:如:如:如: # #define PI 3.14define PI 3.14PI=3.1415926; PI=3.1415926; / /符号常量不能被赋值符号常量不能被赋值2. 变量:在程序运行过程中其在程序运行过程中其在程序运行过程中其在程序运行过程中其值

71、可以被改变值可以被改变值可以被改变值可以被改变的量的量的量的量int int a,b,sum;a,b,sum;float x,y;float x,y;变量的特点:变量的特点:变量的特点:变量的特点:每个变量都应该有一个名字;每个变量都应该有一个名字;每个变量都应该有一个名字;每个变量都应该有一个名字;在内存中占据一定的存储单元;在内存中占据一定的存储单元;在内存中占据一定的存储单元;在内存中占据一定的存储单元;在存储单元中存放变量的值。在存储单元中存放变量的值。在存储单元中存放变量的值。在存储单元中存放变量的值。3 3sumsumsumsum变量名变量名变量名变量名变量值变量值变量值变量值存储

72、单元存储单元存储单元存储单元每个变量在使用之前必须先进行定义(声明),每个变量在使用之前必须先进行定义(声明),每个变量在使用之前必须先进行定义(声明),每个变量在使用之前必须先进行定义(声明),C C要求变量必须要求变量必须要求变量必须要求变量必须先定义后使用先定义后使用先定义后使用先定义后使用。进行变量声明后,计算机系统会为声明的变量分配相应大小的进行变量声明后,计算机系统会为声明的变量分配相应大小的进行变量声明后,计算机系统会为声明的变量分配相应大小的进行变量声明后,计算机系统会为声明的变量分配相应大小的存储空间,用以存放数据。存储空间,用以存放数据。存储空间,用以存放数据。存储空间,用

73、以存放数据。1.3.1 整型数据一、整型常量的表示方法一、整型常量的表示方法一、整型常量的表示方法一、整型常量的表示方法、十进制形式十进制形式十进制形式十进制形式,如,如,如,如112112、0 0、-3-3;、八进制形式八进制形式八进制形式八进制形式,以数字以数字以数字以数字0 0开头开头开头开头,如,如,如,如01230123;、十六进制形式十六进制形式十六进制形式十六进制形式,以以以以0 0x x开头开头开头开头,如,如,如,如0 0x123x123每种形式的整型常量又都可以表示成短常量和长常量。凡每种形式的整型常量又都可以表示成短常量和长常量。凡每种形式的整型常量又都可以表示成短常量和

74、长常量。凡每种形式的整型常量又都可以表示成短常量和长常量。凡在整型常量后面紧跟在整型常量后面紧跟在整型常量后面紧跟在整型常量后面紧跟大写字母大写字母大写字母大写字母L L或或或或小写字母小写字母小写字母小写字母l l则表示此常量为长则表示此常量为长则表示此常量为长则表示此常量为长整型常量,如整型常量,如整型常量,如整型常量,如2525L L。int int x, y, zx, y, z;x=10x=10; y= y=010010; z= z=0x100x10;printfprintf(x=%d, y=%d, z=%dn, x,y,z)(x=%d, y=%d, z=%dn, x,y,z); x=

75、10, y=8, z=16x=10, y=8, z=16EG109.C二、整型变量二、整型变量二、整型变量二、整型变量1 1 1 1、整型数据在内存中的存放形式、整型数据在内存中的存放形式、整型数据在内存中的存放形式、整型数据在内存中的存放形式:以二进制补码的形式存放以二进制补码的形式存放以二进制补码的形式存放以二进制补码的形式存放intintintint i; i; i; i;i=10;i=10;i=10;i=10;数据存放示意图:数据存放示意图:数据存放示意图:数据存放示意图:i i i i10数据在内存中的实际存放情况:数据在内存中的实际存放情况:数据在内存中的实际存放情况:数据在内存中

76、的实际存放情况:( ( ( (以以以以2 2 2 2B B B B为例为例为例为例) ) ) )10101515141413131212111110109 98 87 76 65 54 43 32 21 10 00 00 00 00 00 00 00 00 00 00 00 00 01 10 01 10 0-10-10计算机中数的表示计算机中数的表示计算机中数的表示计算机中数的表示1 11 11 11 11 11 11 11 11 11 11 11 10 01 11 10 02 2、整型变量的分类:、整型变量的分类:、整型变量的分类:、整型变量的分类:根据数值的范围可以分为三种:根据数值的范围

77、可以分为三种:根据数值的范围可以分为三种:根据数值的范围可以分为三种:、基本型基本型基本型基本型,以,以,以,以intint表示;占表示;占表示;占表示;占2 2个字节(个字节(个字节(个字节(VC+6.0VC+6.0中中中中4 4B B)、短整型短整型短整型短整型,以,以,以,以short short intint或或或或shortshort表示;占表示;占表示;占表示;占2 2个字节个字节个字节个字节( (- -32768327683276732767) )、长整型长整型长整型长整型,以,以,以,以long long intint或或或或longlong表示;占表示;占表示;占表示;占4

78、4个字节个字节个字节个字节( (-2,147,483,648-2,147,483,6482,147,483,6472,147,483,647,即即-2-23131(2(23131-1)-1) )为了充分利用变量的表数范围,可以将变量定义为为了充分利用变量的表数范围,可以将变量定义为为了充分利用变量的表数范围,可以将变量定义为为了充分利用变量的表数范围,可以将变量定义为“ “无符无符无符无符号号号号” ”类型。即类型。即类型。即类型。即所有位都用于存放数值本身,不包含符号所有位都用于存放数值本身,不包含符号所有位都用于存放数值本身,不包含符号所有位都用于存放数值本身,不包含符号。unsigned

79、unsigned:无符号数无符号数无符号数无符号数signedsigned:有符号数;默认为有符号类型有符号数;默认为有符号类型有符号数;默认为有符号类型有符号数;默认为有符号类型3 3、整型变量的定义:、整型变量的定义:、整型变量的定义:、整型变量的定义:intint a, b, sum;a, b, sum;unsigned unsigned intint i, j, area;i, j, area;longlong x, y; x, y;每个变量被指定为一确定类型后,每个变量被指定为一确定类型后,每个变量被指定为一确定类型后,每个变量被指定为一确定类型后,计算机系统计算机系统计算机系统计算

80、机系统在编译时就在编译时就在编译时就在编译时就为其分配相应为其分配相应为其分配相应为其分配相应大小大小大小大小的存储单元的存储单元的存储单元的存储单元,用以存放数据。,用以存放数据。,用以存放数据。,用以存放数据。同时据此检查该变量所进行的运算是否合法。同时据此检查该变量所进行的运算是否合法。同时据此检查该变量所进行的运算是否合法。同时据此检查该变量所进行的运算是否合法。1.3.2 实型数据例例例例. . . . 计算计算计算计算20!20!20!20!,并输出结果,并输出结果,并输出结果,并输出结果。1!=11!=12!=22!=23!=63!=64!=244!=245!=1205!=120

81、6!=7206!=7207 7!5000!50008 8!4!4万万万万9 9!36!36万万万万1010!360!360万万万万1111!4!4千万千万千万千万1212!5!5亿亿亿亿1313!65!65亿亿亿亿存放结果的变量应该定义为存放结果的变量应该定义为存放结果的变量应该定义为存放结果的变量应该定义为什么类型?什么类型?什么类型?什么类型?intint ? ? long long intint ? ? unsigned long unsigned long intint ? ? 一、实型常量的表示方法一、实型常量的表示方法一、实型常量的表示方法一、实型常量的表示方法实数又称为实数又称为

82、实数又称为实数又称为浮点数浮点数浮点数浮点数,实型常量有两种表示形式:,实型常量有两种表示形式:,实型常量有两种表示形式:,实型常量有两种表示形式:、十进制数形式十进制数形式十进制数形式十进制数形式:如:如:如:如0.1230.123、.123.123、123.0123.0、123.123.、0.0.、指数形式指数形式指数形式指数形式:字母:字母:字母:字母e(E)e(E)之前必须有数字,且之前必须有数字,且之前必须有数字,且之前必须有数字,且e e后面的指数后面的指数后面的指数后面的指数必须为整数必须为整数必须为整数必须为整数如:如:如:如:1.231.23e2e2、12300E-21230

83、0E-2、.123e3.123e3、123.e0 123.e0 而而而而2.12.1e3.5e3.5、E2E2、.e2.e2 _规范化的指数形式规范化的指数形式规范化的指数形式规范化的指数形式:在小数部分中,在小数部分中,在小数部分中,在小数部分中,小数点左边有且只有一位非零的数字,指小数点左边有且只有一位非零的数字,指小数点左边有且只有一位非零的数字,指小数点左边有且只有一位非零的数字,指数占数占数占数占3 3位位位位。如。如。如。如1 1. .2323E+002E+002。一个实数在用指数形式一个实数在用指数形式一个实数在用指数形式一个实数在用指数形式(%(%e e或或或或%E)E)输出输

84、出输出输出时,是按规范化的指数形式输出的时,是按规范化的指数形式输出的时,是按规范化的指数形式输出的时,是按规范化的指数形式输出的。二、实型变量二、实型变量二、实型变量二、实型变量1 1 1 1、实型数据在内存中的存放形式、实型数据在内存中的存放形式、实型数据在内存中的存放形式、实型数据在内存中的存放形式:实型数据是实型数据是实型数据是实型数据是按指数形式存储按指数形式存储按指数形式存储按指数形式存储(分成(分成(分成(分成小数部分和指数部分,小数部分和指数部分,小数部分和指数部分,小数部分和指数部分,分别存放分别存放分别存放分别存放)。)。)。)。如实数如实数如实数如实数314.159314

85、.159在内存中的存放形式如下:在内存中的存放形式如下:在内存中的存放形式如下:在内存中的存放形式如下:+ +0.3141590.3141593 3数符数符数符数符小数部分小数部分小数部分小数部分指数部分指数部分指数部分指数部分2 2 2 2、实型变量的分类:、实型变量的分类:、实型变量的分类:、实型变量的分类:实型变量分为实型变量分为实型变量分为实型变量分为单精度单精度单精度单精度( (float)float)、双精度型双精度型双精度型双精度型( (double)double)和和和和长长长长双精度双精度双精度双精度( (long double)long double)。类型类型长度长度有效

86、数字有效数字绝对值范围绝对值范围floatfloat32bit32bit6 67 73.4103.410-38-383.4103.4103838doubledouble64bit64bit151516161.7101.710-308-3081.7101.710308308long doublelong double80bit80bit181819193.4103.410-4932-49321.1101.1104932 4932 注意:注意:注意:注意: 表示数据的精度:表示数据的精度:表示数据的精度:表示数据的精度:0.1234567890120.123456789012 表示数据的范围:绝对

87、值范围表示数据的范围:绝对值范围表示数据的范围:绝对值范围表示数据的范围:绝对值范围0 0 实数在参加运算时,都是按实数在参加运算时,都是按实数在参加运算时,都是按实数在参加运算时,都是按doubledouble类型处理。类型处理。类型处理。类型处理。3 3 3 3、实型数据的舍入误差、实型数据的舍入误差、实型数据的舍入误差、实型数据的舍入误差:由于不同类型的实型数据在计算机中有效数字的位数不同,有由于不同类型的实型数据在计算机中有效数字的位数不同,有由于不同类型的实型数据在计算机中有效数字的位数不同,有由于不同类型的实型数据在计算机中有效数字的位数不同,有时不能精确表示某个实数,只能近似表示

88、,所以时不能精确表示某个实数,只能近似表示,所以时不能精确表示某个实数,只能近似表示,所以时不能精确表示某个实数,只能近似表示,所以应避免将一个很大应避免将一个很大应避免将一个很大应避免将一个很大的数和一个很小的数直接相加减的数和一个很小的数直接相加减的数和一个很小的数直接相加减的数和一个很小的数直接相加减。1 1.2 .2E30 E30 1 11.3.3 字符型数据一、字符常量一、字符常量一、字符常量一、字符常量的字符常量是用的字符常量是用的字符常量是用的字符常量是用单引号单引号单引号单引号( ( ( ( ) ) ) )括起来的一个字符。如括起来的一个字符。如括起来的一个字符。如括起来的一个

89、字符。如 a a a a 、 8 8 8 8 、 x x x x 、 D D D D 、 ? ? ? ? 、 $ $ $ $ 等。等。等。等。 转义字符转义字符转义字符转义字符:以:以:以:以“ ”开头的字符序列。开头的字符序列。开头的字符序列。开头的字符序列。字符字符字符字符含义含义含义含义nn换行,光标移到下一行行首换行,光标移到下一行行首换行,光标移到下一行行首换行,光标移到下一行行首t t水平制表水平制表水平制表水平制表bb退格退格退格退格r r回车,光标移到本行开头回车,光标移到本行开头回车,光标移到本行开头回车,光标移到本行开头 反斜扛字符反斜扛字符反斜扛字符反斜扛字符“ “ ”

90、” 单引号字符单引号字符单引号字符单引号字符“ “ ” ”双引号字符双引号字符双引号字符双引号字符“ “ ” ” dddddd1 1到到到到3 3位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符位八进制数所代表的字符 xhhxhh1 1到到到到2 2位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符位十六进制数所代表的字符101101、x41x41:A A11、x1x1:3232、x1Ax1A:二、字符变量二、字符变量二、字符变量二、字符变量字符变量用来存放字符常量。但字符变量用来存放字符常量。但字符变量用来存放字符常量。但字符变量用来存放字符常量。但只

91、能存放一个字符只能存放一个字符只能存放一个字符只能存放一个字符。char ch1, ch2;char ch1, ch2;ch1=a; ch2=101;ch1=a; ch2=101;三、字符数据在内存中的存储形式及使用方法三、字符数据在内存中的存储形式及使用方法三、字符数据在内存中的存储形式及使用方法三、字符数据在内存中的存储形式及使用方法字符数据在内存中以相应的字符数据在内存中以相应的字符数据在内存中以相应的字符数据在内存中以相应的ASCIIASCIIASCIIASCII码存放,即以码存放,即以码存放,即以码存放,即以二进制形二进制形二进制形二进制形式式式式存放,占存放,占存放,占存放,占1

92、1 1 1个字节。个字节。个字节。个字节。ch1=ach1=a97970110 00010110 0001ch2=bch2=b98980110 00100110 0010字符型数据和整型数据在一定范围内通用。字符型数据和整型数据在一定范围内通用。字符型数据和整型数据在一定范围内通用。字符型数据和整型数据在一定范围内通用。 字符数据用整数形式输出字符数据用整数形式输出字符数据用整数形式输出字符数据用整数形式输出# #include include .hvoid main( )void main( ) char char chch; ; chch=97;=97; printfprintf(%c,(

93、%c,%d%dn, n, chch, ,chch); ); a, 97a, 97 字符数据与整数进行算术运算字符数据与整数进行算术运算字符数据与整数进行算术运算字符数据与整数进行算术运算# #include include .hvoid main( )void main( ) char char chch; ; intint x x; ; chch=A;=A; x=ch+32x=ch+32; ; printfprintf(%c,(%c,%d%dn, n, chch, , chch); ); printfprintf(%c%c,%dn, x, x);,%dn, x, x); A, 65A, 65

94、a, 97a, 97如如需要存放需要存放ASCIIASCII码为码为128128 255255之间的字符,需要将字符之间的字符,需要将字符变量定义为变量定义为unsigned charunsigned char。( (默认为默认为signed charsigned char:- -128127)128127)unsigned char ch1,ch2;unsigned char ch1,ch2;EG111.C、EG112.C四、字符串常量四、字符串常量四、字符串常量四、字符串常量字符串常量由一对字符串常量由一对字符串常量由一对字符串常量由一对双引号双引号双引号双引号( ( ) )括起来的字符序

95、列。如括起来的字符序列。如括起来的字符序列。如括起来的字符序列。如 How How are you!are you! 、 ChinaChina 、 a a 、 $123.45$123.45 、等。可以输出一个等。可以输出一个等。可以输出一个等。可以输出一个字符串,如:字符串,如:字符串,如:字符串,如:printfprintf(Hello!);(Hello!);。系统在存储字符串时自动在字符串末尾加一个结束标志系统在存储字符串时自动在字符串末尾加一个结束标志系统在存储字符串时自动在字符串末尾加一个结束标志系统在存储字符串时自动在字符串末尾加一个结束标志00,据此判断字符串是否结束。,据此判断字

96、符串是否结束。,据此判断字符串是否结束。,据此判断字符串是否结束。 ChinaChina C C C Ch h h hi i i in n n na a a a0000 a a a a a aa a00注意注意注意注意:写字符串时不必加:写字符串时不必加:写字符串时不必加:写字符串时不必加00,它是系统自动加上的。,它是系统自动加上的。,它是系统自动加上的。,它是系统自动加上的。1.3.4 枚举类型当一个变量的取值仅有少数几种可能时,把每个值一一列当一个变量的取值仅有少数几种可能时,把每个值一一列当一个变量的取值仅有少数几种可能时,把每个值一一列当一个变量的取值仅有少数几种可能时,把每个值一一

97、列举出来,称为枚举类型。相应的变量只能取这些列举出来的值,举出来,称为枚举类型。相应的变量只能取这些列举出来的值,举出来,称为枚举类型。相应的变量只能取这些列举出来的值,举出来,称为枚举类型。相应的变量只能取这些列举出来的值,而不能取别的值。而不能取别的值。而不能取别的值。而不能取别的值。枚举类型属于简单数据类型,但其使用方法与结构体类型枚举类型属于简单数据类型,但其使用方法与结构体类型枚举类型属于简单数据类型,但其使用方法与结构体类型枚举类型属于简单数据类型,但其使用方法与结构体类型相似。将在复杂构造数据类型中讲述。相似。将在复杂构造数据类型中讲述。相似。将在复杂构造数据类型中讲述。相似。将

98、在复杂构造数据类型中讲述。1.3.5 指针类型1 1、地址地址地址地址在计算机中,把内存区划分为一个一个的存储单元,每个单元在计算机中,把内存区划分为一个一个的存储单元,每个单元在计算机中,把内存区划分为一个一个的存储单元,每个单元在计算机中,把内存区划分为一个一个的存储单元,每个单元为一个字节(位),它们都有一个编号,这个编号就是为一个字节(位),它们都有一个编号,这个编号就是为一个字节(位),它们都有一个编号,这个编号就是为一个字节(位),它们都有一个编号,这个编号就是内存单元内存单元内存单元内存单元的地址的地址的地址的地址。说明:说明:说明:说明:1 1、每个变量都占有各自的内存单元,具

99、、每个变量都占有各自的内存单元,具、每个变量都占有各自的内存单元,具、每个变量都占有各自的内存单元,具有相应的地址有相应的地址有相应的地址有相应的地址 。2 2、一个变量所占有的内存单元个数是由、一个变量所占有的内存单元个数是由、一个变量所占有的内存单元个数是由、一个变量所占有的内存单元个数是由其类型决定的。其类型决定的。其类型决定的。其类型决定的。3 3、首地址:变量所占第、首地址:变量所占第、首地址:变量所占第、首地址:变量所占第1 1个字节的地址个字节的地址个字节的地址个字节的地址4 4、注意、注意、注意、注意表示地址的数表示地址的数表示地址的数表示地址的数与与与与整数整数整数整数的不同

100、:属的不同:属的不同:属的不同:属于不同的数据类型于不同的数据类型于不同的数据类型于不同的数据类型( (指针、整型指针、整型指针、整型指针、整型) )2 2、指针指针指针指针一个变量占有内存单元,具有相应的地址,通过地址能找到所一个变量占有内存单元,具有相应的地址,通过地址能找到所一个变量占有内存单元,具有相应的地址,通过地址能找到所一个变量占有内存单元,具有相应的地址,通过地址能找到所需的变量,可以说:需的变量,可以说:需的变量,可以说:需的变量,可以说:地址地址地址地址“ “指向指向指向指向” ”该变量该变量该变量该变量。因此,把一个因此,把一个因此,把一个因此,把一个变量的地址变量的地址

101、变量的地址变量的地址称为该变量的称为该变量的称为该变量的称为该变量的“ “指针指针指针指针” ”。可以定义一种变量,专门用来存放其它变量的地址(指针),可以定义一种变量,专门用来存放其它变量的地址(指针),可以定义一种变量,专门用来存放其它变量的地址(指针),可以定义一种变量,专门用来存放其它变量的地址(指针),这种变量称为这种变量称为这种变量称为这种变量称为指针变量指针变量指针变量指针变量。变量的指针变量的指针变量的指针变量的指针就是变量的地址。就是变量的地址。就是变量的地址。就是变量的地址。指针变量指针变量指针变量指针变量就是存放变量地址的变量。就是存放变量地址的变量。就是存放变量地址的变

102、量。就是存放变量地址的变量。整型变量整型变量整型变量整型变量i i指针变量指针变量指针变量指针变量ipip如何使如何使如何使如何使ipip和和和和i i建立联系?建立联系?建立联系?建立联系?赋值:赋值:赋值:赋值:ipip=&i;=&i;20002000i i30003000ipip200020001.4 语句语句用来向计算机系统发出操作指令,完成一定操作任语句用来向计算机系统发出操作指令,完成一定操作任语句用来向计算机系统发出操作指令,完成一定操作任语句用来向计算机系统发出操作指令,完成一定操作任务务务务。一个程序应当包含若干语句。一个程序应当包含若干语句。一个程序应当包含若干语句。一个程

103、序应当包含若干语句。说明:说明:说明:说明:声明部分的内容不是语句声明部分的内容不是语句声明部分的内容不是语句声明部分的内容不是语句,它,它,它,它只是对变量的定义,不产只是对变量的定义,不产只是对变量的定义,不产只是对变量的定义,不产生机器操作生机器操作生机器操作生机器操作。如:。如:。如:。如:intint a,b; a,b;语句的分类:语句的分类:语句的分类:语句的分类:1 1、控制语句控制语句控制语句控制语句:完成一定的控制功能:完成一定的控制功能:完成一定的控制功能:完成一定的控制功能 if ( ) if ( ) else else for ( ) for ( ) while ( )

104、 while ( ) do do while( ) while( ) continue continue breakbreak switch switch gotogoto return return2 2、函数调用语句函数调用语句函数调用语句函数调用语句:由一个函数调用加一个分号构成:由一个函数调用加一个分号构成:由一个函数调用加一个分号构成:由一个函数调用加一个分号构成 printfprintf(This is a C statement!n)(This is a C statement!n); ;3 3、表达式语句表达式语句表达式语句表达式语句:由表达式加分号构成:由表达式加分号构成:由

105、表达式加分号构成:由表达式加分号构成 x=1 x=1x=1 x=1; ;i=i+1 i=i+1i=i+1 i=i+1; ;任何表达式都可以加上分号而构成语句。任何表达式都可以加上分号而构成语句。任何表达式都可以加上分号而构成语句。任何表达式都可以加上分号而构成语句。 i+i+; ;i+,b-i+,b-; ; x+yx+y; ; 赋值语句赋值语句赋值语句赋值语句: 由赋值表达式加上一个分号构成由赋值表达式加上一个分号构成由赋值表达式加上一个分号构成由赋值表达式加上一个分号构成。赋值语句赋值语句赋值语句赋值语句:变量名变量名变量名变量名= =表达式表达式表达式表达式; ;作用:先计算表达式的值,再

106、将表达式的值赋值给左边的变量作用:先计算表达式的值,再将表达式的值赋值给左边的变量作用:先计算表达式的值,再将表达式的值赋值给左边的变量作用:先计算表达式的值,再将表达式的值赋值给左边的变量如:如:如:如:x=3; i=i+1; i+;x=3; i=i+1; i+;变量赋值的特点:变量赋值的特点:变量赋值的特点:变量赋值的特点: 变量必须已经定义(变量必须已经定义(变量必须已经定义(变量必须已经定义(C C要求变量要求变量要求变量要求变量“ “先定义后使用先定义后使用先定义后使用先定义后使用” ”)。)。)。)。 新定义的变量被赋值前,值不确定。新定义的变量被赋值前,值不确定。新定义的变量被赋

107、值前,值不确定。新定义的变量被赋值前,值不确定。 对变量的赋值过程是对变量的赋值过程是对变量的赋值过程是对变量的赋值过程是“ “覆盖覆盖覆盖覆盖” ”过程,即用新值去替换旧值。过程,即用新值去替换旧值。过程,即用新值去替换旧值。过程,即用新值去替换旧值。 读出变量的值,变量的值保持不变。读出变量的值,变量的值保持不变。读出变量的值,变量的值保持不变。读出变量的值,变量的值保持不变。 参与表达式运算的所有变量都保持原来的值不变。参与表达式运算的所有变量都保持原来的值不变。参与表达式运算的所有变量都保持原来的值不变。参与表达式运算的所有变量都保持原来的值不变。 赋值运算是赋值运算是赋值运算是赋值运

108、算是右结合性右结合性右结合性右结合性,即,即,即,即“ “取右送左取右送左取右送左取右送左” ”。intint a,b,c; a,b,c;a=1; b=2;a=1; b=2;a=3;a=3;c=a*b*b;c=a*b*b;intint a=1,b=2,c=3; /* a=1,b=2,c=3; /* 变量的初始化变量的初始化变量的初始化变量的初始化 * */ /a=-1; b=-2;a=-1; b=-2;c=a*b*b;c=a*b*b; 赋值语句的几种形式赋值语句的几种形式赋值语句的几种形式赋值语句的几种形式:简单赋值语句:简单赋值语句:简单赋值语句:简单赋值语句:i=1i=1; ; y=sin

109、(x)y=sin(x); ;多重赋值语句:多重赋值语句:多重赋值语句:多重赋值语句:i=j=0i=j=0; ; a=b=c=3+x a=b=c=3+x; ;复合(自反)赋值语句:复合(自反)赋值语句:复合(自反)赋值语句:复合(自反)赋值语句:x x+=+=1 1; ; a a-=-=a*aa*a; ; 等价于:等价于:等价于:等价于:x=x+1; a=a-a*a;x=x+1; a=a-a*a;原则:不用太过复杂的表达式!原则:不用太过复杂的表达式!原则:不用太过复杂的表达式!原则:不用太过复杂的表达式!4 4、空语句空语句空语句空语句(仅由一个分号构成仅由一个分号构成仅由一个分号构成仅由一个

110、分号构成) ; ;用处:语法上需要一个语句,但是不需要做任何工作,比用处:语法上需要一个语句,但是不需要做任何工作,比用处:语法上需要一个语句,但是不需要做任何工作,比用处:语法上需要一个语句,但是不需要做任何工作,比如有些循环体。如有些循环体。如有些循环体。如有些循环体。5 5、复合语句复合语句复合语句复合语句(用用用用 括起来的语句序列括起来的语句序列括起来的语句序列括起来的语句序列) temp=a temp=a; ; a=b a=b; ; b=temp b=temp; ; 说明说明说明说明: : : : 复合语句是一个整体复合语句是一个整体复合语句是一个整体复合语句是一个整体, , ,

111、, 相当于一个语句相当于一个语句相当于一个语句相当于一个语句 一个复合语句中可以包含其它的复合语句一个复合语句中可以包含其它的复合语句一个复合语句中可以包含其它的复合语句一个复合语句中可以包含其它的复合语句 在复合语句的在复合语句的在复合语句的在复合语句的花括号后不能再加分号花括号后不能再加分号花括号后不能再加分号花括号后不能再加分号1.5 程序运行过程1.1.5.5.1 1 几个基本概念几个基本概念qq源程序源程序源程序源程序:用高级语言或汇编语言编写的程序称为源程序,以:用高级语言或汇编语言编写的程序称为源程序,以:用高级语言或汇编语言编写的程序称为源程序,以:用高级语言或汇编语言编写的程

112、序称为源程序,以ASCIIASCII码形式存储。码形式存储。码形式存储。码形式存储。C C源程序的扩展名为源程序的扩展名为源程序的扩展名为源程序的扩展名为“ “. .C C” ”(.CPP.CPP)。)。)。)。qq目标程序目标程序目标程序目标程序:源程序经过:源程序经过:源程序经过:源程序经过“ “编译程序编译程序编译程序编译程序” ”翻译所得到的二进制代翻译所得到的二进制代翻译所得到的二进制代翻译所得到的二进制代码称为目标程序。目标程序的扩展名为码称为目标程序。目标程序的扩展名为码称为目标程序。目标程序的扩展名为码称为目标程序。目标程序的扩展名为“ “. .OBJOBJ” ”。qq可执行程

113、序可执行程序可执行程序可执行程序:目标程序与库:目标程序与库:目标程序与库:目标程序与库函数连接,形成完整的可在操函数连接,形成完整的可在操函数连接,形成完整的可在操函数连接,形成完整的可在操作系统下独立执行的程序。可作系统下独立执行的程序。可作系统下独立执行的程序。可作系统下独立执行的程序。可执行程序的扩展名为执行程序的扩展名为执行程序的扩展名为执行程序的扩展名为“ “. .EXEEXE” ” 。# #include include .hvoid main( )void main( ) printf printf(This is a C program!n);(This is a C pro

114、gram!n); 1.5.2 C程序上机步骤一、一、一、一、编辑编辑编辑编辑:将源程序输入计算机内存中将源程序输入计算机内存中修改源程序修改源程序将改正将改正后的源程序保存为磁盘文件。后的源程序保存为磁盘文件。以以以以ASCIIASCII码形式输入和存储码形式输入和存储码形式输入和存储码形式输入和存储-扩展名为扩展名为扩展名为扩展名为. .C C或或或或. .CPPCPP(源程序)源程序)源程序)源程序)二、二、二、二、编译编译编译编译:先先进行语法检查,并将无语法错误的源程序翻译成进行语法检查,并将无语法错误的源程序翻译成二进制形式的目标代码二进制形式的目标代码-扩展名为扩展名为. .OBJ

115、OBJ(目标程序目标程序目标程序目标程序)三、三、三、三、链接链接链接链接:将各模块的二进制目标代码与系统标准模块连接,将各模块的二进制目标代码与系统标准模块连接,得到一个可执行文件得到一个可执行文件-扩展名为扩展名为. .EXEEXE(可执行程序可执行程序可执行程序可执行程序)四、四、四、四、执行执行执行执行:执行经过编译和连接的可执行目标文件。执行经过编译和连接的可执行目标文件。编辑编辑编辑编辑键盘输入键盘输入源程序源程序A.cA.c编译编译编译编译目标程序目标程序A.A.objobj链接链接链接链接可执行程序可执行程序A.exeA.exe执行执行执行执行结果结果1.5.4 VC+ 6.0

116、上机步骤1 1 1 1、启动、启动、启动、启动VC+ 6.0VC+ 6.0VC+ 6.0VC+ 6.0、启动:启动:启动:启动:开始开始菜单菜单程序程序VisualVisual C+ 6.0 C+ 6.0、工作窗口工作窗口工作窗口工作窗口: : : : 编辑窗口、工作空间窗口、输出窗口编辑窗口、工作空间窗口、输出窗口2 2 2 2、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、在编辑状态下输入或修改源文件、编辑新文件、编辑新文件、编辑新文件、编辑新文件 编辑新文件:编辑新文件:文件文件文件文件新建新建新建新建文件文件文件文件“C+ Source C+

117、 Source C+ Source C+ Source File”File”File”File” 保存文件:保存文件:文件文件文件文件保存保存保存保存 或或 Ctrl+SCtrl+SCtrl+SCtrl+S、编辑已存在的文件编辑已存在的文件编辑已存在的文件编辑已存在的文件 打开文件:打开文件:文件文件文件文件打开打开打开打开 或或 Ctrl+O Ctrl+O Ctrl+O Ctrl+O 或或 直接双击文件直接双击文件直接双击文件直接双击文件 另存文件:另存文件:文件文件文件文件另存为另存为另存为另存为编译时的提示信息将显示在输出窗口,双击错误信息则转编译时的提示信息将显示在输出窗口,双击错误信

118、息则转到相应出错处,修改完毕再重新编译,直到无任何错误后编译到相应出错处,修改完毕再重新编译,直到无任何错误后编译成功,显示成功,显示“ “0 0 error(s), 0 warning(s)error(s), 0 warning(s)” ”。注意:编译成功只能说明程序无语法错误,不一定代表算注意:编译成功只能说明程序无语法错误,不一定代表算注意:编译成功只能说明程序无语法错误,不一定代表算注意:编译成功只能说明程序无语法错误,不一定代表算法正确或运行结果正确。法正确或运行结果正确。法正确或运行结果正确。法正确或运行结果正确。3 3、编译源程序、编译源程序、编译源程序、编译源程序组建组建组建组

119、建编译编译编译编译 或或 Ctrl+F7Ctrl+F7编译时若弹出如下提示框,选择编译时若弹出如下提示框,选择“ “是是” ”。4 4、运行源程序、运行源程序、运行源程序、运行源程序组建组建组建组建执行执行执行执行 或或 Ctrl+F5Ctrl+F51.6 编写简单的C程序前面已讲,此处略。前面已讲,此处略。前面已讲,此处略。前面已讲,此处略。1.7 数据的输入输出语言对数据的输入输出实行函数化。语言对数据的输入输出实行函数化。语言对数据的输入输出实行函数化。语言对数据的输入输出实行函数化。语言没有提供输入输出语句,其输入输出功能均语言没有提供输入输出语句,其输入输出功能均语言没有提供输入输出

120、语句,其输入输出功能均语言没有提供输入输出语句,其输入输出功能均由函数由函数由函数由函数来实现来实现来实现来实现。如。如。如。如printfprintf、scanfscanf等称为等称为等称为等称为标准输入输出函数标准输入输出函数标准输入输出函数标准输入输出函数。使用标准输入输出函数时;需要在程序开始使用预编译命使用标准输入输出函数时;需要在程序开始使用预编译命使用标准输入输出函数时;需要在程序开始使用预编译命使用标准输入输出函数时;需要在程序开始使用预编译命令令令令# #includeinclude 或或或或# #includeinclude stdiostdio.h.h 。由于由于prin

121、tf函数和函数和scanf函数使用频繁,规定:使用函数使用频繁,规定:使用printf和和scanf这两个函数可以不用这两个函数可以不用#include命令。命令。-本规则不本规则不适用于适用于VC6.0,VC6.0中必须加上。中必须加上。1.7.1 printf函数格式:格式:格式:格式:printfprintf( (格式控制格式控制格式控制格式控制, , 输出表列输出表列输出表列输出表列) )功能:在终端的当前光标处输出若干个任意类型的数据功能:在终端的当前光标处输出若干个任意类型的数据功能:在终端的当前光标处输出若干个任意类型的数据功能:在终端的当前光标处输出若干个任意类型的数据1. 1

122、. 1. 1. 格式控制格式控制格式控制格式控制: : : : 用用用用 括起来的字符串,包括两部分:括起来的字符串,包括两部分:括起来的字符串,包括两部分:括起来的字符串,包括两部分:普通字符普通字符普通字符普通字符( ( ( (包括转义字符包括转义字符包括转义字符包括转义字符): ): ): ): 需要原样输出的字符需要原样输出的字符需要原样输出的字符需要原样输出的字符 格式说明格式说明格式说明格式说明: : : : 由由由由% % % %和和和和格式字符格式字符格式字符格式字符组成组成组成组成,其作用是将输出数据按指定,其作用是将输出数据按指定,其作用是将输出数据按指定,其作用是将输出数

123、据按指定的格式输出的格式输出的格式输出的格式输出printfprintf(This is a C program!n);(This is a C program!n);printfprintf(a=a=%d%d, b=, b=%d%dnn, a, b);, a, b);printfprintf函数使用的格式控制符:函数使用的格式控制符:函数使用的格式控制符:函数使用的格式控制符:格式字符格式字符说明说明d d, ,i i以带符号的十进制形式输出整数以带符号的十进制形式输出整数以带符号的十进制形式输出整数以带符号的十进制形式输出整数( (正数不输出符号正数不输出符号正数不输出符号正数不输出符号)

124、 )o o以无符号形式输出八进制整数以无符号形式输出八进制整数以无符号形式输出八进制整数以无符号形式输出八进制整数( (不输出前导符不输出前导符不输出前导符不输出前导符0)0)x x, ,X X以无符号形式输出十六进制整数以无符号形式输出十六进制整数以无符号形式输出十六进制整数以无符号形式输出十六进制整数( (不输出前导符不输出前导符不输出前导符不输出前导符0 0x)x)u u以无符号十进制形式输出整数以无符号十进制形式输出整数以无符号十进制形式输出整数以无符号十进制形式输出整数c c以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符以字符形式输出,只输

125、出一个字符s s输出字符串输出字符串输出字符串输出字符串f f以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐含输出6 6位小数位小数位小数位小数e e, ,E E以指数形式输出单、双精度数,小数位数为以指数形式输出单、双精度数,小数位数为以指数形式输出单、双精度数,小数位数为以指数形式输出单、双精度数,小数位数为6 6位位位位g g, ,GG选用选用选用选用%f f或或或或%e e格式中输出宽度较短的一种格式,不输出无意格式中输出宽度较短的一种格式,不输出无意格式中输出宽度较短的一种格式,不输出无意格式

126、中输出宽度较短的一种格式,不输出无意义的义的义的义的0 0intint a=123,b=-1; float x=12.34; char a=123,b=-1; float x=12.34; char chch=65;=65;printfprintf(a=(a=%d%d,b=,b=%d%d,a,b);,a,b);输出结果:输出结果:a=123,b=-1a=123,b=-1printfprintf(a=(a=%X%X,b=,b=%x%x,a,b);,a,b);输出结果:输出结果:a=7B,b=a=7B,b=ffffffffffffffffprintfprintf(a=(a=%o%o,b=,b=%o

127、%o,a,b);,a,b);输出结果:输出结果:a=173,b=37777777777a=173,b=37777777777printfprintf(x=(x=%f%f,x);,x);输出结果:输出结果:x=12.340000x=12.340000printfprintf(x=(x=%e%e,x);,x);输出结果:输出结果:x=1.234000e+001x=1.234000e+001printfprintf(x=(x=%g%g,x);,x);输出结果:输出结果:x=12.34x=12.34printf(printf(%f%f%,1.0/3);,1.0/3);输出结果:输出结果:0.33333

128、3%0.333333%printfprintf( (chch= =%c%c, ,chch); );输出结果:输出结果:chch=A=Aprintfprintf( (strstr= =%s%s,I love China!);,I love China!); 输出结果:输出结果:strstr=I love China!=I love China!EG113.C在格式控制符中,在格式控制符中,在格式控制符中,在格式控制符中,% % % %和后面跟随的单个字符之间又可以插入以下和后面跟随的单个字符之间又可以插入以下和后面跟随的单个字符之间又可以插入以下和后面跟随的单个字符之间又可以插入以下几种修饰符。

129、几种修饰符。几种修饰符。几种修饰符。字符字符字符字符说明说明说明说明字母字母字母字母l l用于输出长整型,可加在用于输出长整型,可加在d d、o o、x x、u u前面前面字母字母字母字母h h用于输出短整型数据用于输出短整型数据mm( (正整数正整数正整数正整数) )数据最小宽度数据最小宽度. .n n( (正整数正整数正整数正整数) )对实数,表示输出几位小数;对实数,表示输出几位小数;对字符串,表示截取的字符个数对字符串,表示截取的字符个数- -输出的数字或字符在域内向左靠输出的数字或字符在域内向左靠EG114.C例:例:intint i=79; i=79;%d%di i7 79 9%5

130、d%5di i7 79 9%1 1d di i7 79 9float x=33.1234567; double y=-555.12345678E-9;float x=33.1234567; double y=-555.12345678E-9;%f%fx x3 33 3. .1 12 23 34 45 55 5%6.2f%6.2fx x3 33 3. .1 12 2%4 4.2f.2fx x3 33 3. .1 12 2%.2f%.2fx x3 33 3. .1 12 2%e%ey y- -5 5. .5 55 51 12 23 35 5e e- -0 00 07 7%.3e%.3ey y- -

131、5 5. .5 55 51 1e e- -0 00 07 7 2. 2. 2. 2. 输出表列输出表列输出表列输出表列: : : :由由由由0 0 0 0到多个具体参数组成,其中的参数可以是到多个具体参数组成,其中的参数可以是到多个具体参数组成,其中的参数可以是到多个具体参数组成,其中的参数可以是常常常常量量量量、变量变量变量变量或或或或表达式表达式表达式表达式。printfprintf(%dn, (%dn, 2525); );printfprintf(x=%dn, (x=%dn, x x); );printfprintf(x*y=%dn, (x*y=%dn, x*yx*y); );print

132、fprintf(|y|=%dn, (|y|=%dn, fabsfabs(y)(y); );EG115.C注意:注意:注意:注意:、输出整数和实数时,、输出整数和实数时,、输出整数和实数时,、输出整数和实数时,数数数数0 0 0 0用以用以用以用以指定数字前的空位是否指定数字前的空位是否指定数字前的空位是否指定数字前的空位是否补补补补0 0 0 0;无;无;无;无0 0 0 0则补空格。则补空格。则补空格。则补空格。float a=1.23;float a=1.23;printf(%printf(%0 08.1fn, a);8.1fn, a);000001.2000001.2、如果要输出、如果要

133、输出、如果要输出、如果要输出% % % %,则在格式控制字符串中连续用两个,则在格式控制字符串中连续用两个,则在格式控制字符串中连续用两个,则在格式控制字符串中连续用两个% % % %表示。表示。表示。表示。printfprintf(%f(%f%n, 1.0/3);n, 1.0/3);0.333333%0.333333%、格式控制符的个数与后面的参数个数应相等,且前格式控制符的个数与后面的参数个数应相等,且前格式控制符的个数与后面的参数个数应相等,且前格式控制符的个数与后面的参数个数应相等,且前后位置要一一对应。后位置要一一对应。后位置要一一对应。后位置要一一对应。printfprintf(

134、(a=a=%d%d, b=, b=%d%dnn, , a a, ,b b); );、格式字符与其对应的输出项的类型要保持一致,例格式字符与其对应的输出项的类型要保持一致,例格式字符与其对应的输出项的类型要保持一致,例格式字符与其对应的输出项的类型要保持一致,例如,不应用如,不应用如,不应用如,不应用%f f输出整数。输出整数。输出整数。输出整数。1.7.2 scanf函数格式:格式:格式:格式: scanfscanfscanfscanf( ( ( ( 格式控制格式控制格式控制格式控制 , , , ,地址表列地址表列地址表列地址表列) ) ) )功能:功能:功能:功能:从键盘读入字符序列,并按指

135、定的格式转换成相应的数从键盘读入字符序列,并按指定的格式转换成相应的数从键盘读入字符序列,并按指定的格式转换成相应的数从键盘读入字符序列,并按指定的格式转换成相应的数据,存储到地址表列所指定的内存单元中据,存储到地址表列所指定的内存单元中据,存储到地址表列所指定的内存单元中据,存储到地址表列所指定的内存单元中“地址表列地址表列地址表列地址表列”由若干个地址组成,可以是由若干个地址组成,可以是由若干个地址组成,可以是由若干个地址组成,可以是变量的地址变量的地址变量的地址变量的地址或或或或字符串字符串字符串字符串的首地址的首地址的首地址的首地址。# #include include .hvoid

136、main( )void main( ) intint a,b,c; a,b,c; scanfscanf( (%d%d%d%d%d%d, , & &a a, ,& &b b, ,& &c c); ); printfprintf(a=%d,b=%d,c=%dn, (a=%d,b=%d,c=%dn, a a, ,b b, ,c c); ); 注:输入整数、实数或字符注:输入整数、实数或字符串时,如果串时,如果格式控制部分只格式控制部分只格式控制部分只格式控制部分只有格式控制符,不含其它字有格式控制符,不含其它字有格式控制符,不含其它字有格式控制符,不含其它字符符符符,则,则数据之间以数据之间以一个一

137、个一个一个或或多多多多个个个个空格空格空格空格、或、或TabTabTabTab键键键键或或回车键回车键回车键回车键分分隔。隔。EG116.CEG116.Cscanfscanfscanfscanf函数的格式控制符:函数的格式控制符:函数的格式控制符:函数的格式控制符:格式字符格式字符说明说明d d, , i i用来输入用来输入带符号带符号带符号带符号的十进制整数的十进制整数u u用来输入用来输入无符号无符号无符号无符号的十进制整数的十进制整数o o用来输入用来输入无符号的八进制整数无符号的八进制整数无符号的八进制整数无符号的八进制整数x x, , X X用来输入用来输入无符号的十六进制整数无符号

138、的十六进制整数无符号的十六进制整数无符号的十六进制整数c c用来输入单个字符用来输入单个字符s s用来输入字符串,将字符串送到一个字符数组中,在输用来输入字符串,将字符串送到一个字符数组中,在输入时入时以非空白字符开始以非空白字符开始以非空白字符开始以非空白字符开始,以第一个空白字符结束以第一个空白字符结束以第一个空白字符结束以第一个空白字符结束。字符。字符串以串结束标志串以串结束标志00作为最后一个字符。作为最后一个字符。f f用来输入实数,可以用小数形式或指数形式输入用来输入实数,可以用小数形式或指数形式输入e e, , E E, , g g, , GG与与f f作用相同,作用相同,e e

139、与与f f,g g可以相互替换(大小写相同)可以相互替换(大小写相同)在在在在%和格式字符之间可插入附加的格式说明符:和格式字符之间可插入附加的格式说明符:和格式字符之间可插入附加的格式说明符:和格式字符之间可插入附加的格式说明符:字符字符字符字符说明说明说明说明l l l l用于输入长整型数据(可用用于输入长整型数据(可用用于输入长整型数据(可用用于输入长整型数据(可用%ldld、%lo%lo、%lx%lx)以及以及以及以及doubledouble型数据型数据型数据型数据(用(用(用(用%lf lf或或或或%le le)h h h h用于输入短整型数据(可用用于输入短整型数据(可用用于输入短

140、整型数据(可用用于输入短整型数据(可用%hdhd、%ho%ho、%hxhx)m m m m( ( ( (正整数正整数正整数正整数) ) ) )域宽,指定输入数据所占宽度(列数)域宽,指定输入数据所占宽度(列数)域宽,指定输入数据所占宽度(列数)域宽,指定输入数据所占宽度(列数)* * * *赋值抑制符,表示本输入项读入后不赋给任何变量赋值抑制符,表示本输入项读入后不赋给任何变量赋值抑制符,表示本输入项读入后不赋给任何变量赋值抑制符,表示本输入项读入后不赋给任何变量格式:格式:格式:格式:% * % * m lm l或或或或h h 格式字符格式字符格式字符格式字符说明:说明:说明:说明:、与、与

141、、与、与printfprintf函数不同,函数不同,函数不同,函数不同,scanfscanf函数的函数的函数的函数的格式控制部分一般不包含格式控制部分一般不包含格式控制部分一般不包含格式控制部分一般不包含其它字符其它字符其它字符其它字符;scanfscanf(%d%d%d%d%d%d, &a,&b,&c);, &a,&b,&c);printfprintf(a=a=%d%d, b=, b=%d%d, c=, c=%d%dnn, a,b,c);, a,b,c);、对于、对于、对于、对于unsignedunsigned型型型型变量所需的数据,可以用变量所需的数据,可以用变量所需的数据,可以用变量所需

142、的数据,可以用%u u、%d%d或或或或%o o、%x%x格式输入格式输入格式输入格式输入;、格式控制中若带域宽,系统自动按域宽截取所需数据、格式控制中若带域宽,系统自动按域宽截取所需数据、格式控制中若带域宽,系统自动按域宽截取所需数据、格式控制中若带域宽,系统自动按域宽截取所需数据;scanf(scanf(%3d%3d%3d%3d, &a,&b);, &a,&b);1234567812345678 a=123, b=456a=123, b=456scanf(scanf(%3c%3c%3c%3c, &ch1,&ch2);, &ch1,&ch2);abcdefgabcdefg ch1=a, ch

143、2=dch1=a, ch2=dchar char s120s120, ,s220s220; ;scanf(%sscanf(%s%3s%3s, s1,s2);, s1,s2);Computer ComputerComputer Computer s1=Computer, s2=Coms1=Computer, s2=Com、赋值抑制符、赋值抑制符、赋值抑制符、赋值抑制符* *,表示按格式说明读入数据后不送给任何变量,表示按格式说明读入数据后不送给任何变量,表示按格式说明读入数据后不送给任何变量,表示按格式说明读入数据后不送给任何变量scanf(%2dscanf(%2d%*3d%*3d%2d, &a

144、,&b);%2d, &a,&b);1234567812345678 a=12, b=67a=12, b=67EG117.CEG117.C、EG118.CEG118.C、EG119.CEG119.C;EG120.CEG120.C、输入实数时不能规定精度;、输入实数时不能规定精度;、输入实数时不能规定精度;、输入实数时不能规定精度;scanf(%scanf(%7.27.2f, &a);f, &a);scanf(%scanf(%5 5f, &a);f, &a);12.34567812.345678 a=12.340000a=12.340000使用使用使用使用scanfscanf函数应注意的问题:函数

145、应注意的问题:函数应注意的问题:函数应注意的问题:、地址表列必须提供、地址表列必须提供、地址表列必须提供、地址表列必须提供变量变量变量变量或或或或字符串字符串字符串字符串在内存中的在内存中的在内存中的在内存中的地址地址地址地址,不能写,不能写,不能写,不能写成变量名的形式;成变量名的形式;成变量名的形式;成变量名的形式;intint a,b; a,b;scanfscanf(%d%d, (%d%d, &a, a,&b);b);char char str20str20; ;scanfscanf(%s, (%s, strstr); );、如果在如果在如果在如果在“格式控制格式控制格式控制格式控制”字

146、符串中除格式控制符外还有其它字字符串中除格式控制符外还有其它字字符串中除格式控制符外还有其它字字符串中除格式控制符外还有其它字符,则在输入时应输入相同的字符;符,则在输入时应输入相同的字符;符,则在输入时应输入相同的字符;符,则在输入时应输入相同的字符;scanfscanf(%d(%d, ,%d,&a,&b)%d,&a,&b)1212, , 3434 scanfscanf(%d(%d: :%d%d: :%d,&a,&b,&c)%d,&a,&b,&c)1212: :3434: :5656 scanfscanf(a=%d, b=%d, c=%d, &a,&b,&c);(a=%d, b=%d, c=

147、%d, &a,&b,&c);a=12, b=34, c=56a=12, b=34, c=56 、在用在用在用在用“% % % %c”c”c”c”输入字符时,空格字符和转义字符也都作为有输入字符时,空格字符和转义字符也都作为有输入字符时,空格字符和转义字符也都作为有输入字符时,空格字符和转义字符也都作为有效字符输入效字符输入效字符输入效字符输入;scanfscanf(%c%c%c, (%c%c%c, &c1,c1,&c2,c2,&c3);c3);A B CA B C c1=A, c2= , c3=B、在输入数据时,遇以下情况之一认为一个数据输入结束:、在输入数据时,遇以下情况之一认为一个数据输入

148、结束:、在输入数据时,遇以下情况之一认为一个数据输入结束:、在输入数据时,遇以下情况之一认为一个数据输入结束:、遇到、遇到、遇到、遇到空格空格空格空格或按或按或按或按TabTabTabTab键或键或键或键或回车回车回车回车键;键;键;键;、满足域宽满足域宽满足域宽满足域宽,如,如,如,如%4%4%4%4d d d d,输入输入输入输入4 4 4 4位即结束;位即结束;位即结束;位即结束;、遇到非法字符遇到非法字符遇到非法字符遇到非法字符。int int a; char b; float c;a; char b; float c;scanfscanf( (%d%c%f%d%c%f,&a,&b,&

149、c);,&a,&b,&c);12P12o.3512P12o.35 a=12,b=P,c=12.00000scanfscanf(%d%d, &x,&y);(%d%d, &x,&y);12, 3412, 34 x=12, y无无正确数据正确数据数据类型及数据类型及printfprintf、scanfscanf的总结的总结数据数据整数整数实数实数字符字符字符串字符串变量类型变量类型intintfloatfloat( (一般情况一般情况) )double(double(高精高精度、大数度、大数) )charchar数组数组char str20;char str20;输入格式输入格式%d%d%f%f%(

150、%(lf le lf le lglg) )%c%c%s%s输出格式输出格式%d%d%f %e %g%f %e %g%c%c%s%s定义数据类型的原则:定义数据类型的原则:定义数据类型的原则:定义数据类型的原则: 只要是存放整数都定义为只要是存放整数都定义为intint; 实数:一般情况下定义为实数:一般情况下定义为floatfloat即可,如果需要精度高或数值即可,如果需要精度高或数值大则定义为大则定义为doubledouble。关于输入、输出的格式控制符:关于输入、输出的格式控制符:关于输入、输出的格式控制符:关于输入、输出的格式控制符: intint型数据的输入输出都使用型数据的输入输出都

151、使用%d d。 floatfloat型数据的输入使用型数据的输入使用%f f,doubledouble型数据输入必须使用型数据输入必须使用%lf lf;数值比较大的数输出一般使用数值比较大的数输出一般使用%e(%E)e(%E)。 scanfscanf函数中不要加其它符号;函数中不要加其它符号;printfprintf函数中往往要加,作为输函数中往往要加,作为输出数据的说明信息。出数据的说明信息。1.8 宏定义1.8.1 不带参数的宏定义1 1、形式:、形式:、形式:、形式:# #define define 标识符标识符标识符标识符 字符串字符串字符串字符串其中:其中:其中:其中:、# #def

152、inedefine是宏定义命令;是宏定义命令;是宏定义命令;是宏定义命令;、标识符通常称为符号常量;、标识符通常称为符号常量;、标识符通常称为符号常量;、标识符通常称为符号常量;、“ “字符串字符串字符串字符串” ”可以包含任意字符。可以包含任意字符。可以包含任意字符。可以包含任意字符。# #define PI 3.1415926define PI 3.1415926#define LETTER#define LETTER abcdefg abcdefg4 4、说明:、说明:、说明:、说明:、宏名一般习惯用大写字母表示,以示与变量名相区别;、宏名一般习惯用大写字母表示,以示与变量名相区别;、宏

153、名一般习惯用大写字母表示,以示与变量名相区别;、宏名一般习惯用大写字母表示,以示与变量名相区别;、宏定义不是语句,不必加分号,否则连分号一起替换;、宏定义不是语句,不必加分号,否则连分号一起替换;、宏定义不是语句,不必加分号,否则连分号一起替换;、宏定义不是语句,不必加分号,否则连分号一起替换;#define PI 3.1415926;#define PI 3.1415926;area=PI*r*r;area=PI*r*r;area=3.1415926;*r*r;area=3.1415926;*r*r;、# #definedefine命令一般写在程序开头,但也可以在其它位置;命令一般写在程序开

154、头,但也可以在其它位置;命令一般写在程序开头,但也可以在其它位置;命令一般写在程序开头,但也可以在其它位置;、可以用、可以用、可以用、可以用# #undefundef命令终止宏定义的作用域;命令终止宏定义的作用域;命令终止宏定义的作用域;命令终止宏定义的作用域;# #define G 9.8define G 9.8# #undefundef、宏定义中还可以引用已定义的宏名:、宏定义中还可以引用已定义的宏名:、宏定义中还可以引用已定义的宏名:、宏定义中还可以引用已定义的宏名:#define R 3.0#define R 3.0#define PI 3.1415926#define PI 3.14

155、15926#define L 2.0*PI*R#define L 2.0*PI*R#define S PI*R*R#define S PI*R*R、对于双引号括起来的字符串内的字符,即使与宏名相同、对于双引号括起来的字符串内的字符,即使与宏名相同、对于双引号括起来的字符串内的字符,即使与宏名相同、对于双引号括起来的字符串内的字符,即使与宏名相同也不进行替换;也不进行替换;也不进行替换;也不进行替换;printfprintf(L=%fn, L);(L=%fn, L);printfprintf(L=%fn, 2.0*PI*R);(L=%fn, 2.0*PI*R);、宏定义是专门用于预处理命令的一个

156、专用名词,与定义、宏定义是专门用于预处理命令的一个专用名词,与定义、宏定义是专门用于预处理命令的一个专用名词,与定义、宏定义是专门用于预处理命令的一个专用名词,与定义变量的含义不同,只做字符替换,不分配内存空间。变量的含义不同,只做字符替换,不分配内存空间。变量的含义不同,只做字符替换,不分配内存空间。变量的含义不同,只做字符替换,不分配内存空间。1.9 算法一、一、一、一、算法的概念算法的概念算法的概念算法的概念广义的说,广义的说,广义的说,广义的说,为解决一个问题而采取的方法和步骤为解决一个问题而采取的方法和步骤为解决一个问题而采取的方法和步骤为解决一个问题而采取的方法和步骤称为称为称为称

157、为算法算法算法算法。对同一个问题可能有不同的解决方法和步骤,即对同一个问题可能有不同的解决方法和步骤,即不同的算法不同的算法不同的算法不同的算法。在保证算法正确的基础上,还要考虑算法的质量,即在保证算法正确的基础上,还要考虑算法的质量,即选择较优的算选择较优的算选择较优的算选择较优的算法法法法。比如,交换两个整数,处理过程如下:比如,交换两个整数,处理过程如下:方法一:方法一:intint a=10,b=5,temp; a=10,b=5,temp;temp=a;temp=a;a=b;a=b;b=temp;b=temp;方法二:方法二:intint a=10,b=5; a=10,b=5;a a=

158、a+b;=a+b;b=a-b;b=a-b;a=a-b;a=a-b;方法三:方法三:intint a=10,b=5; a=10,b=5;b b=a+b;=a+b;a=b-a;a=b-a;b=b-a;b=b-a;二、算法的特性二、算法的特性1. 1. 1. 1. 有穷性有穷性有穷性有穷性一个算法包含一个算法包含一个算法包含一个算法包含有限的有限的有限的有限的操作步骤操作步骤操作步骤操作步骤2. 2. 2. 2. 确定性确定性确定性确定性算法中的每一个步骤是确定的,算法中的每一个步骤是确定的,算法中的每一个步骤是确定的,算法中的每一个步骤是确定的,含义是唯一的含义是唯一的含义是唯一的含义是唯一的3.

159、 3. 3. 3. 有零个或多个有零个或多个有零个或多个有零个或多个输入输入输入输入4. 4. 4. 4. 有一个或多个有一个或多个有一个或多个有一个或多个输出输出输出输出5. 5. 5. 5. 有效性有效性有效性有效性算法中每一个步骤应能有效地执行,并得到确定的结果算法中每一个步骤应能有效地执行,并得到确定的结果算法中每一个步骤应能有效地执行,并得到确定的结果算法中每一个步骤应能有效地执行,并得到确定的结果1.9.2 算法的表示三种基本控制结构三种基本控制结构三种基本控制结构三种基本控制结构:1 1、顺序结构顺序结构顺序结构顺序结构:按语句书写的先后次序执行;:按语句书写的先后次序执行;2

160、2、选择(分支)结构选择(分支)结构选择(分支)结构选择(分支)结构:根据指定条件的判断结果从若干组:根据指定条件的判断结果从若干组语句中选择一组执行;语句中选择一组执行;3 3、循环结构循环结构循环结构循环结构:根据判断给定条件是否满足,决定是否重复:根据判断给定条件是否满足,决定是否重复执行程序中的某一段程序执行程序中的某一段程序。一、一、一、一、流程图流程图流程图流程图名称名称名称名称符号符号符号符号含义含义含义含义箭头箭头箭头箭头流向或路径流向或路径流向或路径流向或路径矩形矩形矩形矩形处理功能处理功能处理功能处理功能圆形圆形圆形圆形连接点连接点连接点连接点平行四边形平行四边形平行四边形

161、平行四边形输入或输出输入或输出输入或输出输入或输出菱形菱形菱形菱形判断判断判断判断圆弧矩形圆弧矩形圆弧矩形圆弧矩形流程的起点或终点流程的起点或终点流程的起点或终点流程的起点或终点尖头框尖头框尖头框尖头框循环循环循环循环双边矩形框双边矩形框双边矩形框双边矩形框调用子程序调用子程序调用子程序调用子程序二、二、二、二、N-SN-SN-SN-S流程图流程图流程图流程图提供了描述三种基本逻辑结构的图形工具;与传统的程序提供了描述三种基本逻辑结构的图形工具;与传统的程序流程图对比如下:流程图对比如下:、顺序结构顺序结构顺序结构顺序结构A A模块模块模块模块B B模块模块模块模块( (a) a) 传统流程图

162、传统流程图传统流程图传统流程图A A模块模块模块模块B B模块模块模块模块( (b) N-Sb) N-S图图图图、选择(分支)结构选择(分支)结构选择(分支)结构选择(分支)结构( (a) a) 传统流程图表示传统流程图表示A A模块模块模块模块B B模块模块模块模块判断条件判断条件判断条件判断条件成立吗?成立吗?成立吗?成立吗?成立成立成立成立不成立不成立不成立不成立( (b) N-Sb) N-S图表示图表示判断条件判断条件成立吗?成立吗?成立成立 不成立不成立A A模块模块B B模块模块、循环结构循环结构循环结构循环结构:. . 当型循环结构当型循环结构当型循环结构当型循环结构(while

163、while)不满足不满足满足满足循环体循环体循环条件循环条件满足吗?满足吗?( (a) a) 流程图表示流程图表示( (b) N-Sb) N-S图表示图表示循环体循环体循环体循环体 循环条件满足吗?循环条件满足吗?循环条件满足吗?循环条件满足吗?. . 直到型循环结构直到型循环结构直到型循环结构直到型循环结构(do-whiledo-while)不满足不满足满足满足循环体循环体循环条件循环条件满足吗?满足吗?( (a) a) 流程图表示流程图表示( (b) N-Sb) N-S图表示图表示循环体循环体循环体循环体 循环条件满足吗?循环条件满足吗?循环条件满足吗?循环条件满足吗?1.10 语言的产生

164、及特点一、一、一、一、语言的产生语言的产生语言的产生语言的产生语言的产生和发展与语言的产生和发展与UNIXUNIX操作系统分不开。操作系统分不开。19601960 AlgolAlgol 60 60国际委员会国际委员会19631963CPLCPL(Combined Combined Programming LanguageProgramming Language)伦敦大学、剑桥大学伦敦大学、剑桥大学19671967 BCPLBCPL(Basic CPLBasic CPL)剑桥大学剑桥大学MatinMatin RichadsRichads19701970 B B贝尔实验室贝尔实验室Ken Thom

165、psonKen Thompson19721972 C C贝尔实验室贝尔实验室D.M.RitchieD.M.Ritchie1978-1978-The C Programming LanguageThe C Programming LanguageANSI CANSI C二、二、二、二、语言的特点语言的特点语言的特点语言的特点语言简洁、紧凑,使用方便灵活语言简洁、紧凑,使用方便灵活运算符丰富运算符丰富数据结构丰富数据结构丰富结构化控制结构结构化控制结构语法限制不太严格,程序设计自由度大语法限制不太严格,程序设计自由度大既有高级语言的优点、又有低级语言的特点既有高级语言的优点、又有低级语言的特点目标

166、代码质量高目标代码质量高可移植性强可移植性强计算机中数的表示数的表示方法有:二进制、八进制、十六进制、十进制。数的表示方法有:二进制、八进制、十六进制、十进制。数的表示方法有:二进制、八进制、十六进制、十进制。数的表示方法有:二进制、八进制、十六进制、十进制。 二进制转换为十进制:二进制转换为十进制:二进制转换为十进制:二进制转换为十进制: (101011)(101011)2 2=1*2=1*20 0+1*2+1*21 1+1*2+1*23 3+1*2+1*25 5=(43)=(43)1010八进制、十六进制转化为十进制类似。八进制、十六进制转化为十进制类似。八进制、十六进制转化为十进制类似。

167、八进制、十六进制转化为十进制类似。 将十进制转化为二进制的方法是:将十进制转化为二进制的方法是:将十进制转化为二进制的方法是:将十进制转化为二进制的方法是: 用十进制数用十进制数用十进制数用十进制数除以除以除以除以2 2 2 2取余数取余数取余数取余数,再把商不断除以,再把商不断除以,再把商不断除以,再把商不断除以2 2 2 2,记下每次的,记下每次的,记下每次的,记下每次的余数,直到商为余数,直到商为余数,直到商为余数,直到商为0 0 0 0。把每次的余数倒排过来就是十进制数转化。把每次的余数倒排过来就是十进制数转化。把每次的余数倒排过来就是十进制数转化。把每次的余数倒排过来就是十进制数转化

168、成的二进制数。成的二进制数。成的二进制数。成的二进制数。 十进制转化为八进制则十进制转化为八进制则十进制转化为八进制则十进制转化为八进制则除以除以除以除以8 8 8 8,转化为十六进制则,转化为十六进制则,转化为十六进制则,转化为十六进制则除以除以除以除以16161616,方法类似。,方法类似。,方法类似。,方法类似。 二进制和八进制、十六进制之间的转化简单:二进制和八进制、十六进制之间的转化简单:二进制和八进制、十六进制之间的转化简单:二进制和八进制、十六进制之间的转化简单: 一位八进制数转化为一位八进制数转化为一位八进制数转化为一位八进制数转化为3 3 3 3位二进制数、一位十六进制数转化

169、位二进制数、一位十六进制数转化位二进制数、一位十六进制数转化位二进制数、一位十六进制数转化4 4 4 4位二进制数。位二进制数。位二进制数。位二进制数。(356.4)(356.4)8 8=(=(0 011 101 110.111 101 110.10000) )2 2(356.4)(356.4)1616=(=(000011 0101 0110.0111 0101 0110.010000) )2 2 3 3 3 3位二进制转化为位二进制转化为位二进制转化为位二进制转化为1 1 1 1位八进制(不足部分整数部分左补齐、位八进制(不足部分整数部分左补齐、位八进制(不足部分整数部分左补齐、位八进制(不

170、足部分整数部分左补齐、小数部分右补齐);小数部分右补齐);小数部分右补齐);小数部分右补齐);4 4 4 4位二进制转化为位二进制转化为位二进制转化为位二进制转化为1 1 1 1位十六进制(不足部分位十六进制(不足部分位十六进制(不足部分位十六进制(不足部分整数部分左补齐、小数部分右补齐)。整数部分左补齐、小数部分右补齐)。整数部分左补齐、小数部分右补齐)。整数部分左补齐、小数部分右补齐)。(1011110100101.1011)(1011110100101.1011)2 2( (00001 011 110 100 101.101 11 011 110 100 101.101 10000) )

171、2 2( 1 3 6 4 5. 5 4)( 1 3 6 4 5. 5 4)8 8(1011110100101.1011)(1011110100101.1011)2 2( (0000001 0111 1010 0101.1011)1 0111 1010 0101.1011)2 2( 1 7 A 5. B)( 1 7 A 5. B)1616 原码、反码、补码原码、反码、补码原码、反码、补码原码、反码、补码原码:二进制数的最高位作为符号位。正数的符号位为原码:二进制数的最高位作为符号位。正数的符号位为原码:二进制数的最高位作为符号位。正数的符号位为原码:二进制数的最高位作为符号位。正数的符号位为0

172、0 0 0、负、负、负、负数的符号位为数的符号位为数的符号位为数的符号位为1 1 1 1,其余位是这个数绝对值的二进制形式。,其余位是这个数绝对值的二进制形式。,其余位是这个数绝对值的二进制形式。,其余位是这个数绝对值的二进制形式。10=(1010)10=(1010)2 2-10=(1010)-10=(1010)2 2原码:原码:原码:原码:0 0000 1010000 10100 0000 000 00000000 00000000 1010 10101 1000 1010000 10101 1000 0000 000 0000 00000000 1010 1010反码:正数的反码与原码相同

173、反码:正数的反码与原码相同反码:正数的反码与原码相同反码:正数的反码与原码相同 负数的反码是原码除符号位之外其余取反。负数的反码是原码除符号位之外其余取反。负数的反码是原码除符号位之外其余取反。负数的反码是原码除符号位之外其余取反。反码:反码:反码:反码:0 0000 1010000 10100 0000 000 00000000 00000000 1010 10101 1111 0101111 01011 1111 111 11111111 11111111 0101 0101补码:正数的补码与原码相同补码:正数的补码与原码相同补码:正数的补码与原码相同补码:正数的补码与原码相同 负数的补码

174、是反码的基础上加负数的补码是反码的基础上加负数的补码是反码的基础上加负数的补码是反码的基础上加1 1 1 1。补码:补码:补码:补码:0 0000 1010000 10100 0000 000 00000000 00000000 1010 10101 1111 01111 0110101 1111 111 11111111 11111111 01 011010一、自动类型转换一、自动类型转换一、自动类型转换一、自动类型转换、一般算术转换、一般算术转换、一般算术转换、一般算术转换将短的数扩展为机器处理的长度,将短的数扩展为机器处理的长度,将短的数扩展为机器处理的长度,将短的数扩展为机器处理的长度

175、,使运算符两端有相同的类型使运算符两端有相同的类型使运算符两端有相同的类型使运算符两端有相同的类型doubledoublefloatfloatlonglongunsignedunsignedintintchar,shortchar,short低低高高float x; float x; intint a; long b=21; a; long b=21;x+a 2.0+B b+Ax+a 2.0+B b+A、赋值转换、赋值转换、赋值转换、赋值转换进行赋值运算时,将赋值号右侧进行赋值运算时,将赋值号右侧进行赋值运算时,将赋值号右侧进行赋值运算时,将赋值号右侧表达式的值的类型自动转换为其左表达式的值的

176、类型自动转换为其左表达式的值的类型自动转换为其左表达式的值的类型自动转换为其左侧变量的类型侧变量的类型侧变量的类型侧变量的类型a=3.2; / a=3 (a=3.2; / a=3 (intint) )x=3+2; / x=5.0 (float)x=3+2; / x=5.0 (float)a=b; / a=21 (a=b; / a=21 (intint) )数值型数据间的混合运算二、强制类型转换二、强制类型转换二、强制类型转换二、强制类型转换使用使用使用使用强制类型转换运算符强制类型转换运算符强制类型转换运算符强制类型转换运算符将一个表达式的值转换成另一种类型将一个表达式的值转换成另一种类型将一

177、个表达式的值转换成另一种类型将一个表达式的值转换成另一种类型形式:形式:形式:形式: ( ( ( (类型标识符类型标识符类型标识符类型标识符) ) ) )( ( ( (表达式表达式表达式表达式) ) ) )( (double)(a) (double)(a) (intint)(x+y) (float)(5%3)(x+y) (float)(5%3)说明:说明:说明:说明:1 1、当表达式为单个变量时,可省、当表达式为单个变量时,可省、当表达式为单个变量时,可省、当表达式为单个变量时,可省略括号;略括号;略括号;略括号;( (double)a (double)a (intint)x+y)x+y2 2

178、、在强制类型转换时,原变量的在强制类型转换时,原变量的在强制类型转换时,原变量的在强制类型转换时,原变量的值和类型不变,只是得到一个所需类型值和类型不变,只是得到一个所需类型值和类型不变,只是得到一个所需类型值和类型不变,只是得到一个所需类型的中间变量。的中间变量。的中间变量。的中间变量。# #include include .hvoid main( )void main( ) float x=8.57; float x=8.57; intint i; i; i=( i=(intint)x;)x; printfprintf(x=%fn, x);(x=%fn, x); printfprintf(

179、i=%dn, i); (i=%dn, i); x=8.570000x=8.570000i=8i=8EG120.CT h e E n dC运算符优先级表优先级优先级运算符运算符运算数个数运算数个数结合性结合性1( )( ) - . - .自左至右自左至右2! ! + - - ( + - - (type) * type) * & & sizeofsizeof1自右至左自右至左3* * / %/ %2自左至右自左至右4+ -+ -2自左至右自左至右52自左至右自左至右6 = =2自左至右自左至右7= != !=2自左至右自左至右8& &2自左至右自左至右9 2自左至右自左至右10| |2自左至右自左至右11&2自左至右自左至右12| |2自左至右自左至右13?:?:3自右至左自右至左14= += -= *= /= %= += -= *= /= %=2自右至左自右至左15, ,自左至右自左至右

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号