C语言的基本要素-文档资料_第1页
C语言的基本要素-文档资料_第2页
C语言的基本要素-文档资料_第3页
C语言的基本要素-文档资料_第4页
C语言的基本要素-文档资料_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-71本书本书内容内容 第第1 1章章 基础知识基础知识第第2 2章章 C C语言的基本要素语言的基本要素第第3 3章章 变量名、数据类型、运算符和表达式变量名、数据类型、运算符和表达式第第4 4章章 C C程序基本控制结构程序基本控制结构第第5 5章章 函数函数第第6 6章章 数组和指针数组和指针第第7 7章章 递归递归第第8 8章章 结构、联合、位运算和枚举类型结构、联合、位运算和枚举类型 第第9 9章章 预处理命令预处理命令 第第1010章章 文件文件 第第1111章章 高级话题高级话题第第1212

2、章章 C89 Vs C99C89 Vs C99实验实验 (待安排)(待安排) C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-72变量定义、算术表达式、变量定义、算术表达式、赋值语句和赋值语句和while语句语句 本章主要内容本章主要内容ARM Vector TableFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x00第一个第一个C语言程序语言程序 C语言程

3、序的开发过程语言程序的开发过程for循环语句循环语句 、常量 字符的输入和输出操作字符的输入和输出操作 、函数字符、整型数组和外部变量字符、整型数组和外部变量 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-73本章的节本要求本章的节本要求 本章主要介绍本章主要介绍C语言的语言的核心要素核心要素,通过,通过本章的学习读者会对本章的学习读者会对C语言有一个整体语言有一个整体的基本概念,并能够编制基本的的基本概念,并能够编制基本的C程序。程序。 本章将主要集中在以下本章将主要集中在以下基本内容基本内容上:上:变量、常量、运算符、表达式、控制变量、常量、运算

4、符、表达式、控制流、函数、以及基本的输入输出库函流、函数、以及基本的输入输出库函数等。数等。 让初学者快速让初学者快速建立对建立对C语言程序设计的语言程序设计的整体概念整体概念,并能够编制一些简单有趣,并能够编制一些简单有趣的的C程序。程序。最常使用的最常使用的2020元素元素 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-74 学习或者教学学习或者教学C语言最重要的第一步是语言最重要的第一步是让学习者让学习者能够动手能够动手。 动手能够增强学习者的信心,而信心动手能够增强学习者的信心,而信心对学好对学好C语言来说是重要的。语言来说是重要的。 在阅读

5、过程中,作者希望初学者在阅读过程中,作者希望初学者把主把主要精力放在基本要素上要精力放在基本要素上,感觉有难度,感觉有难度的内容可以先放一放。的内容可以先放一放。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-752.1 C语言程序的开发过程语言程序的开发过程 第一步:编辑第一步:编辑得到源程序。得到源程序。 第二步:编译第二步:编译得到目标码。得到目标码。 第三步:连接第三步:连接得到可执行代码。得到可执行代码。 第四步:装载运行程序第四步:装载运行程序得到结果。得到结果。程序开发调试过程程序开发调试过程 C C语言程序设计(语言程序设计(C99C

6、99版)版) 清华大学出版社第二章2022-3-762.2 第一个第一个C语言程序语言程序 开发工具:开发工具:VC+工具,或者工具,或者Dev-C+工具等工具等 。 其次,学会该工具的基本使用方法。其次,学会该工具的基本使用方法。 下面以下面以“Hello World”程序为例:程序为例: 例题例题2.1 输出输出“Hello World!” C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-77#include int main (void) printf(Hello World!n); return 0; 预处理命令预处理命令主函数主函数被调函数被

7、调函数函数参数函数参数函数返回值函数返回值 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-78 main( )函数是函数是特殊函数特殊函数。 任何任何C程序必须程序必须有且只能有有且只能有一个一个main( )函数。函数。 main( )函数可以放在函数可以放在C程序的任意位置。程序的任意位置。 C程序的运行必须程序的运行必须从从main( )函数开始,函数开始,而且也在而且也在main( )函数中结束函数中结束。 通过通过main这个名字才能找到将要执行这个名字才能找到将要执行的的程序入口程序入口。 mainmain C C语言程序设计(语言程序设

8、计(C99C99版)版) 清华大学出版社第二章2022-3-79 函数就是组成函数就是组成C语言程序的一个一个的语言程序的一个一个的功能模块功能模块,就像房子是由一块块砖头,就像房子是由一块块砖头搭建起来的一样,搭建起来的一样,C程序就是程序就是由一个个由一个个的函数组建的函数组建而来的。而来的。 函数是函数是C程序的基本单位程序的基本单位,一般一个函,一般一个函数完成某一个相对独立的功能。数完成某一个相对独立的功能。 在在C语言中,满足函数定义格式要求的语言中,满足函数定义格式要求的就是一个函数。就是一个函数。 函数包括函数包括函数头和函数体函数头和函数体两部分两部分 。 C C语言程序设计

9、(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-710图图2.1 函数定义的基本形式及函数调用的传值过程函数定义的基本形式及函数调用的传值过程 int Max (int x, int y)int Max (int x, int y) int z; int z; if ( xy ) if ( xy ) z = x ; z = x ; else else z = y ; z = y ; return (z); return (z); 函数头函数头函数体函数体变量定义部分变量定义部分可执行语句部分可执行语句部分c = Max (a, b)c = Max (a, b)(函数调用

10、时的复制传(函数调用时的复制传值过程)值过程) 函函数数定定义义部部分分函数参数的对应关系函数参数的对应关系 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-711例题例题2.2 比较两个整数的大小比较两个整数的大小int Max (int x, int y);c = Max (a, b);int Max (int x, int y) ;声明时有类型声明时有类型调用时无类型调用时无类型定义时有类型定义时有类型 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-712C 程序的基本结构程序的基本结构 1. C语言程

11、序的注释语言程序的注释 /*和和*/中间中间所所包含的任何内容即为注释部分。包含的任何内容即为注释部分。 2. main( )函数及其返回值函数及其返回值 是主函是主函数的函数名,数的函数名,main( )函数名是操作系函数名是操作系统调用统调用C程序的入口。程序的入口。 3. 函数参数和返回值函数参数和返回值 int Max (int x, int y)”则有两个参数,一个是则有两个参数,一个是x,一,一个是个是y。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-713int Max (int x, inty)int Max (int x, int

12、y)函数返回值函数返回值类型类型函 数函 数名名函 数 参函 数 参数表数表 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-714 4. 函数体函数体包含在函数名后面的一包含在函数名后面的一对大括弧对大括弧“ ”之间的部分就是函数之间的部分就是函数体。体。 构成函数体的基本要素,一般分为两构成函数体的基本要素,一般分为两种:种:一种是变量定义、声明语句;一一种是变量定义、声明语句;一种是可执行语句。种是可执行语句。 变量定义语句:变量定义语句: int a, b, c; int z;函数体大括弧函数体大括弧 之间的内容。之间的内容。 C C语言程序设

13、计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-715C程序的运行过程程序的运行过程 假设假设例题例题22的每一条语句所对应的的每一条语句所对应的机器指令都只占据一个字节机器指令都只占据一个字节 。 那么程序编译、连接、装载以后所对那么程序编译、连接、装载以后所对应的程序内存空间将抽象为如图应的程序内存空间将抽象为如图2.2所所示的结构。示的结构。 同时,同时,假定:假定: 1. 假定计算机有两个读写头,一个是假定计算机有两个读写头,一个是程序读写头程序读写头;另一个是;另一个是数据读写头数据读写头。 2. 假定变量定义语句也会在程序中产假定变量定义语句也会在程序中产

14、生可执行代码生可执行代码 对应对应PCPC对应对应SPSP C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-716printf( );printf( );system( );system( );return 0;return 0;0 x100000070 x100000070 x100000060 x100000060 x100000050 x100000050 x100000040 x100000040 x000000000 x000000000 xFFFFFFFF0 xFFFFFFFFmain(void)main(void)int a,b,c;in

15、t a,b,c;a=10;a=10;b=20;b=20;0 x100000030 x100000030 x100000020 x100000020 x100000010 x100000010 x100000000 x10000000程序读写头程序读写头z z system( )system( )y y 0 x1000101F0 x1000101F0 x3000FFFB0 x3000FFFB0 x100010080 x100010080 x100010070 x100010070 x3000FFFA0 x3000FFFA0 x100010000 x10001000printf( )printf(

16、 )int z;int z;if(xy) z=x;if(xy) z=x;else z=y;else z=y;return(z);return(z);0 x100001040 x100001040 x100001030 x100001030 x100001020 x100001020 x100001010 x100001010 x100001000 x10000100Max(x,y)Max(x,y) 主主 函函 数数主主自自定定义义函函数数 库库函函数数 数数据据区区c=Max(a,b);c=Max(a,b);x xc c0 x3000FFFD0 x3000FFFD0 x3000FFFC0 x3

17、000FFFCb ba a0 x3000FFFF0 x3000FFFF0 x3000FFFE0 x3000FFFE 程程序序区区 堆堆栈栈区区数据读写头数据读写头图图2.2 2.2 程序和数据在内存中的抽象程序和数据在内存中的抽象PCPCSPSP C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-717变量定义、算术表达式、赋值语句和变量定义、算术表达式、赋值语句和while语句语句 完成一段数据转换任务:完成一段数据转换任务: 它按照公式它按照公式m = (1+3n+3n2+n3),计算计算m的值。的值。 当正整数当正整数n从从0变化到变化到99时,要

18、求在终时,要求在终端上显示表格端上显示表格2.1的内容:的内容: C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-718表表2.1 例题例题2.3的数值转换表的数值转换表n nm = (1+3n+3n2+n3)0 01 11 18 82 227273 364644 4125125.97979411929411929898970299970299999910000001000000 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-719例题例题2.3 数值转换程序数值转换程序(第一版第一版): 在程序中,设计了两

19、个函数:在程序中,设计了两个函数: 一个是必不可少的一个是必不可少的main( )函数函数, 另一个是另一个是数据转换函数数据转换函数Convert( ),它它完成公式完成公式m = (1+3n+3n2+n3)的计算。的计算。注意结果的取注意结果的取值范围。值范围。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-720将将int改为改为long有什么好处?有什么好处?int Convert (int x); int main (void) while ( n=bottom ) m = Convert (n); int Convert (int x)

20、int z; z = 1 + 3*x + 3*x*x + x*x*x; return (z); C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-721变量定义语句变量定义语句 :变量类型和变量名列变量类型和变量名列表表 int top;int bottom;int step;int a, b, c;变量类型变量类型变量名列表变量名列表 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-722表表2.2 几种不同的数据类型几种不同的数据类型类型类型在典型系在典型系统中占据统中占据的字节数的字节数意义意义C C标准规

21、定的最小取值范围标准规定的最小取值范围charchar1 1字符型字符型0 0127127或者或者0 0255255shortshort2 2短整型短整型-32768-327683276732767longlong4 4长整型长整型-2-231312 23131-1-1floatfloat4 4浮点型浮点型1E37 1E37 1E+371E+37 ,6 6位精位精度度doubledouble8 8双精度浮双精度浮点型点型1E37 1E37 1E+371E+37 ,1010位精度位精度 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-723 赋值语句赋值

22、语句 : top = 0; bottom = 99; step = 1; n = top;将将0 0赋值给赋值给toptop变量,并非代变量,并非代数运算的等于符号。数运算的等于符号。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-724 算术表达式算术表达式 : z = 1 + 3*x + 3*x*x + x*x*x; /* 算术表达式算术表达式 */注意注意3x3x需要写为需要写为3 3* *x x。C C语言中语言中3x3x时错误的。时错误的。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-725当当

23、时时while循环语句循环语句 :while ( n=bottom )m = Convert (n);printf (%dt%dn, n, m);n = n+step;当型循环结构。当型循环结构。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-726 while循环操作步骤循环操作步骤: 1. 测试测试while后的条件表达式,如果条后的条件表达式,如果条件不成立则退出件不成立则退出while循环语句;循环语句; 2. 如果条件表达式成立,则执行如果条件表达式成立,则执行while后面的循环体部分(也就是后面的循环体部分(也就是while后大后大括弧

24、之间的内容,如果循环体只有一括弧之间的内容,如果循环体只有一个语句,也可以去掉大括弧,此时循个语句,也可以去掉大括弧,此时循环体就是环体就是while后的第一条语句)。后的第一条语句)。 3. 转入转入1(进行下一次进行下一次while循环循环)。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-727表表2.3 while循环时内存的变换过程循环时内存的变换过程 循环循环次次数数第第1 1次次第第2 2次次第第3 3次次. .第第9898次次第第9999次次第第10100 0次次退出退出m m1 18 82727. .9411941192929702

25、970299991000100000000 01000100000000 0n n0 01 12 2. .979798989999100100stepstep1 11 11 1. .1 11 11 11 1 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-728 显示输出函数显示输出函数printf( ) printf( )是一个通用的格式输出函数。是一个通用的格式输出函数。它有它有两个输出参数两个输出参数,第一个参数是格,第一个参数是格式输出控制字符串,第二个参数是输式输出控制字符串,第二个参数是输出项,出项,第二个参数可以缺省第二个参数可以缺省,也

26、可以,也可以有多个输出项。有多个输出项。 在第一个参数中的在第一个参数中的是格式控制字符是格式控制字符,它控制后面参数中对应的输出项以它控制后面参数中对应的输出项以后面字符对应的格式输出。后面字符对应的格式输出。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-729d dn ntt表示跳表示跳8 8个空格个空格 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-730表表2.4常用的输出格式控制字符常用的输出格式控制字符%d%d以整数形式输以整数形式输出出6d6d以整数形式输以整数形式输出,且输出出,且输出域宽

27、为域宽为6 6位。位。f f以浮点数形式以浮点数形式输出输出6f6f以浮点形式输以浮点形式输出,且输出出,且输出域宽为域宽为6 6位。位。.2f.2f以浮点形式输以浮点形式输出,且小数出,且小数点后点后2 2位。位。6.2f6.2f以浮点形式输以浮点形式输出,出,6 6位宽度,位宽度,小数点后小数点后2 2位。位。数字表示输数字表示输出的域宽出的域宽字母表字母表示输出示输出数据类数据类型型 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7312.4 for循环语句循环语句用用for( )循环实现循环实现while。如下:。如下:for ( n=top

28、; n=bottom; n = n+step ) m = Convert (n); printf (%dt%dn, n, m);ForFor型循环型循环 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-732 基本语法格式如下:基本语法格式如下:for ( 循环初值条件循环初值条件; 循环终止条件循环终止条件; 循环循环步进表达式步进表达式 ) . 两个“;”号分隔三个表达式。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-733例题例题2.4 用用for循环计算循环计算1到到100的和的和。 sum = 0

29、; for (i = 1; i=100; i=i+1) sum = sum+i; 注意循环边界注意循环边界 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-734 for循环的执行步骤一共四步,如下:循环的执行步骤一共四步,如下: 1. 首先首先执行循环初值表达式(执行循环初值表达式(只在进入只在进入for循环时执行一次,以后的每一次循环不再循环时执行一次,以后的每一次循环不再执行循环初值表达式),执行循环初值表达式), 2. 其次其次判断循环终止条件表达式判断循环终止条件表达式。如果条。如果条件不满足则退出件不满足则退出for循环语句。循环语句。 3

30、. 如果条件满足则执行循环体(如果条件满足则执行循环体(for后大括后大括弧之间的内容,当只有一个语句时,可以弧之间的内容,当只有一个语句时,可以不加大括弧,此时循环体就是不加大括弧,此时循环体就是for后第一条后第一条语句)。语句)。 4. 执行循环步进表达式执行循环步进表达式,转入,转入2(进行下一(进行下一次循环条件判断)。次循环条件判断)。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7352.5 常量常量 程序中程序中恒定不变的量恒定不变的量,就是常量。,就是常量。 但是,直接在程序中使用数字表示常但是,直接在程序中使用数字表示常量,会给

31、编程带来更大的麻烦:量,会给编程带来更大的麻烦: 第一,数目字的意义不明确,不便阅第一,数目字的意义不明确,不便阅读;读; 第二,一旦这些常量有变化时,需要第二,一旦这些常量有变化时,需要找到每一个数目字并进行修改,这不找到每一个数目字并进行修改,这不但麻烦而且容易出错。但麻烦而且容易出错。 有什么办法表示数目字常量吗?有什么办法表示数目字常量吗? C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-736用用#define定义宏定义宏 宏的定义格式如下:宏的定义格式如下:#define NAME 替换字符串替换字符串程序在编译预处理时,自动用程序在编译预

32、处理时,自动用“替换替换字符串字符串”取代取代NAME。 例题例题2.5 数值转换数值转换( 第第2版版):#define TOP 0#define BOTTOM 99#define STEP 1符号表示常量符号表示常量 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-737 for(n=TOP; n=BOTTOM; n=n+STEP ) m = Convert (n); printf (%dt%dn, n, m); /* n = n+STEP; */ 在步进表达式在步进表达式中步进。中步进。 C C语言程序设计(语言程序设计(C99C99版)版) 清

33、华大学出版社第二章2022-3-738用用const定义常量定义常量 const int SINT_MAX = 65535; 就定义了一个常量,它与用宏定义的就定义了一个常量,它与用宏定义的宏名是有区别的:宏名是有区别的:#define定义的宏名定义的宏名在编译前的编译预处理阶段用字符串在编译前的编译预处理阶段用字符串替换宏名得到常量,这个常量在编译替换宏名得到常量,这个常量在编译以后将位于只读程序存储区;以后将位于只读程序存储区; 而而const定义的常量将有对应的名字,定义的常量将有对应的名字,它位于数据存储区。它位于数据存储区。 const const定义的常量有名字,位定义的常量有名字

34、,位于数据区。于数据区。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7392.6 字符的输入和输出操作字符的输入和输出操作 getchar( )和和putchar( )函数函数 文本的输入文本的输入/输出是按照字符流的方式输出是按照字符流的方式来处理的。字符流实际就是字符序来处理的。字符流实际就是字符序列列它被分成若干行,每一行有零它被分成若干行,每一行有零个或者多个字符,一行紧接一行,直个或者多个字符,一行紧接一行,直到整个流结束。到整个流结束。 int getchar(void); int putchar(int ch); 获取一个字符输出一

35、个字符 chch为为intint。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-740while(ch=getchar( ) != EOF) putchar(ch); chch为什么必须是为什么必须是intint?可?可以是以是charchar吗?吗? C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-741scanf( )和和printf( )函数函数 scanf( )可用于可用于输入字符输入字符、数值或者字数值或者字符串等符串等。 它有两个参数:它有两个参数: 第一个参数是输入格式控制字符串,第一个参数是

36、输入格式控制字符串, 第二个参数是输入项第二个参数是输入项 。 scanf( )scanf( )还有什么不可还有什么不可以输入的吗?以输入的吗? C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-742 char ch; int i; scanf(%c, &ch); scanf(%d, &i); int printf(const char *control_string, . . . ); int scanf(const char *control_string, . . . );函数参数个数可变函数参数个数可变 C C语言程序设计(语言程序设计(C99

37、C99版)版) 清华大学出版社第二章2022-3-743 基本的格式控制字符基本的格式控制字符如下:如下: %c代表字符型;代表字符型; %d代表整型;代表整型; %u代表无符号整型;代表无符号整型; %ld代表长整型;代表长整型; %f代表浮点型;代表浮点型; %s代表字符串。代表字符串。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-744 gets( )和和puts( )函数函数 char *gets(char *str); int puts(const char *str); 函数函数gets( )获取一个字符串直到回车返获取一个字符串直到回

38、车返回回 。 函数函数puts( )则将其参数则将其参数str所代表的字所代表的字符串写到显示屏上,并回车换行符串写到显示屏上,并回车换行 。 函数原型中的函数原型中的const表示不可在该函数表示不可在该函数中修改该字符串的内容中修改该字符串的内容 。putsputs自动回车自动回车 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7452.6.2 文件拷贝文件拷贝 例题例题2.6 将从键盘输入的字符显示到终将从键盘输入的字符显示到终端上(第端上(第1版)。版)。 ch = getchar( ); while (ch != EOF) putchar(

39、ch); ch = getchar( ); 为何需要该为何需要该语句?语句? C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-746例题例题2.7 将从键盘输入的字符显示到终端将从键盘输入的字符显示到终端上(第二版)。上(第二版)。 /* ch = getchar( );*/ while (ch=getchar( ) != EOF) putchar(ch); /* ch = getchar( ); */ 为何可去掉两处的为何可去掉两处的getchar( )?getchar( )? C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第

40、二章2022-3-747 (ch=getchar( ) != EOF的意义?的意义? int getchar( ) int getch(void); int getche(void); 依据运算符的优先级依据运算符的优先级解读语句的意义。解读语句的意义。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7482.6.3 字符计数字符计数 例题例题2.8 统计键盘输入的字符个数(第统计键盘输入的字符个数(第一版)一版) lCount = 0;while ( getchar( ) != EOF ) + lCount; +运算符的意义? C C语言程序设计(

41、语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-749 l1 = + lCount; l2 = lCount +; 例题例题2.9 统计键盘输入的字符个数(第二统计键盘输入的字符个数(第二版)。版)。 double dCount; for ( dCount=0; getchar( )!=EOF; +dCount) ; forfor循环实现循环实现 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7502.6.4 行计数行计数 例题例题2.10 统计从键盘输入的文本的行数统计从键盘输入的文本的行数 while (ch = getch

42、ar( ) != EOF) if (ch = n) +dCountRow; while while循环实现循环实现注意注意”=”=”并非并非”=”=” C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-751 if语句语句 单分支单分支if语句语句,它控制,它控制if后面大括弧之后面大括弧之间的语句是否执行。它分两步执行:间的语句是否执行。它分两步执行: 1. 首先求首先求if后的条件表达式的后的条件表达式的“ch = n”的值。的值。 2. 如果值为真,即条件表达式满足,如果值为真,即条件表达式满足,则执行则执行if后一对大括弧间的语句体后一对大括弧间

43、的语句体“+ dCountRow”,如果值为假,即条件表,如果值为假,即条件表达式不满足,则不予执行。达式不满足,则不予执行。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7522.6.5 单词计数单词计数 例题例题2.11 统计从键盘输入的字符个数、统计从键盘输入的字符个数、单词数和行数单词数和行数。关键是如何判断一关键是如何判断一个单词。个单词。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7532.7 函数函数 函数可以将函数的内部实现细节封装函数可以将函数的内部实现细节封装在函数内部。在函数内部

44、。 例题例题2.12 定义函数定义函数Factorial ( unsigned n)用于计算用于计算n!。 函数具有一定的封装函数具有一定的封装和隐藏性。和隐藏性。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-754 抽象成更一般的形式如下:抽象成更一般的形式如下: 函数名函数名(, .) 变量定义部分变量定义部分;可执行语句部分可执行语句部分; 一个带括弧的名字就是函数一个带括弧的名字就是函数 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-755 函数返回语句函数返回语句return的语法格式如下:的语

45、法格式如下: return (返回值返回值); /* 括弧可省括弧可省*/ 当函数不需要返回值时,可以省掉当函数不需要返回值时,可以省掉return语句。语句。 在新标准在新标准C99中,中,return语句语句必须必须带一带一个确定的返回值。个确定的返回值。 voidvoid以外的函数必带以外的函数必带returnreturn语句。语句。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7562.8 函数参数函数参数复制传值复制传值 参数的传递都通过参数的传递都通过复制传值复制传值。在调用。在调用函数时,将实参复制一份传递给对应函数时,将实参复制一份

46、传递给对应的形式参数的形式参数 。 形参和实参形参和实参各自占据不同的内存空间各自占据不同的内存空间,对形参的任何改变都不会反作用于实对形参的任何改变都不会反作用于实参,也就是说对形参的任何改变都不参,也就是说对形参的任何改变都不会影响实参。会影响实参。 实参并非形参。实参并非形参。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-757我们来研究研究我们来研究研究Pow( )函数,该函数计算函数,该函数计算xy,它有两种实,它有两种实现方式现方式 。int Pow(int x, int y) int i, p; p = 1; for (i = 1;

47、i 0; -y) p = p * x; return p;注意注意y y的作用,的作用,取消了取消了i i C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-760图图2.3 函数调用时的复制传值过程。函数调用时的复制传值过程。 Pow ( 2, i )int Pow(int x, int y) int i, p; p = 1; for (i = 1; i 0) if (length maxLen) StrCpy (longest, line); maxLen = length; 数组的定义形式数组的定义形式 C C语言程序设计(语言程序设计(C99C9

48、9版)版) 清华大学出版社第二章2022-3-763图图2.4 字符数组和指针字符数组和指针 指针指针指向指向数组数组的首的首地址地址 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-764图图2.5字符数组存放字符串常量字符数组存放字符串常量Goodn注意注意00的存在,的存在,它有用吗?它有用吗? C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-7652.9.2 字符指针字符指针 所谓指针,实际上就是所谓指针,实际上就是内存单元的地内存单元的地址。址。由于内存单元存放的数据类型不由于内存单元存放的数据类型不

49、同,因而指针的类型也有所不同。同,因而指针的类型也有所不同。 字符指针(也就是字符指针(也就是char型指针)就是型指针)就是一个一个指向字符的指针指向字符的指针,它实际上就是,它实际上就是字符变量在内存单元的地址。字符变量在内存单元的地址。 指针变量则是这样一个变量指针变量则是这样一个变量它它专专门用来存放变量的地址门用来存放变量的地址。某种类型的。某种类型的指针变量只能用于存放该种类型的指指针变量只能用于存放该种类型的指针。针。 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-766定义指针变量的方法如下:定义指针变量的方法如下:char ch; /* 定义了两个指针变量,其名字分别为定义了两个指针变量,其名字分别为p1、p2,它们可以指向,它们可以指向char型变量型变量 */char *p1, *p2; p1 = &ch;*p1 = A;p2 = p1; 指针就是地址指针就是地址 C C语言程序设计(语言程序设计(C99C99版)版) 清华大学出版社第二章2022-3-767ch=Ach=Ap1=&chp1=&chp2=p1p2=p1图图2.6 2.6 指针及其指向的对象指针及其指向的对象 p1p1和和p2p2都指

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论