C语言程序设计总复习课件_第1页
C语言程序设计总复习课件_第2页
C语言程序设计总复习课件_第3页
C语言程序设计总复习课件_第4页
C语言程序设计总复习课件_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言内容提要总复习第1页,共40页。数据类型基本数据类型整 型:2,4字节,int, unsigned int,long, unsigned long字符型:1字节,char, unsigned char实 型:4,8字节,float,double构造数据类型数 组:一组同类型数据的集合结 构:一组不同数据类型的集合指针变量的地址,每种数据类型都有对应的指针类型。第2页,共40页。字符型数据保存的是字符a, A , 0, *计算机不能存贮字符,只能用数字代替ASCII码 a 97 0 48 * 42对内存中数据的理解取决于数据类型 可以理解为字符a 和0; 可以理解为整型数据:49600;可

2、以理解为实型的一部分,甚至是指令代码。字符型数据类型的本质1100000111000000第3页,共40页。类型转换doublefloatintchar低高a+3:字符型+整型整型a+3.0:字符型+实型实型45/0.3:整型+实型实型a*3.0:字符型+实型实型自动类型转换: 不同数据类型进行混合计算时,系统按一定规则进行数据类型转换强制类型转换: 在自动类型转换的基础上,按特殊设定转换。(char)(a+3)字符型float fd;fd= a+3;实型第4页,共40页。输入/输出格式符整型:%d, %ld字符型:%c字符串型:%s实型:%f, %lf, %e左对齐:负号占位:%m.n例:p

3、rintf(%10.6e,x); 1.4e+002printf(%-11.6f,data);3.141593第5页,共40页。条件分支(一)简单条件分支:if (条件) 成立时执行 else 不成立时执行多重条件分支:if (条件1) 成立时执行 else if (条件2) 成立时执行else if (条件3) 成立时执行 else 所有条件均不成立时执行 条件分支1分支2成立不成立第6页,共40页。条件分支(二)关系表达式:,=,b=c) if (ab)=c)逻辑表达式:多个关系表达式之间的连接。与:& (当两个表达式均成立时结果为真)或:| | (两个表达式有一个成立时结果就为真)非:!

4、(当表达式结果不成立时结果为真)建议:多使用括号,不要背优先级。 例:if (ab| |ac) if (ab) | (ac)第7页,共40页。条件分支(三) switch语句:switch(表达式) case 常量1:语句1; break; case 常量2:语句2; break; case 常量3:语句3; break; default: 语句n;注意:(1). 每一个分支只能是常量或常量表达式;(2). 每一个分支之后必须有break;(3). 表达式的结果应该落在case 的范围之内。第8页,共40页。循环控制while 型:while (条件)循环体条件循环体成立不成立特点:先判断,再

5、执行;可能一次也不执行。第9页,共40页。循环控制do 型:do循环体while (条件)条件循环体成立不成立特点:先执行,再判断;至少执行一次。第10页,共40页。循环控制for 型:for (语句1;条件;语句2)循环体语句1条件循环体语句2成立不成立特点:语句1无条件执行一次,语句2是循环体的一部分。for 循环是万能循环语句,可以代替前两种类型。第11页,共40页。循环控制break可以退出任何类型的循环,主要用于多种条件循环。continue 可以在特定条件下只执行部分循环体。break 和 continue 主要是为程序书写清晰和简洁而使用,并非必须,本质上都可以通过改变循环结构而

6、取消。第12页,共40页。数组数组的本质:一组相同类型的变量的顺序集合。数组的各元素必须类型相同;数组的长度定义必须是常量或常量表达式;数组在内存中是线性存贮;数组元素具有简单变量的一切性质;不允许整体操作;数组的下标从0开始;系统不对数组操作进行越界检查。第13页,共40页。字符数组与字符串字符数组:char university20=B, U, A, A;字符串:char university =BUAA ;字符串的操作:可以像普通数组一样使用,也可以使用专为字符串开发的库函数。字符数组的使用:与普通数组的使用相同。字符串的本质:以字符0结尾的字符数组。注意:字符串的长度不包括0,但必须留

7、足够的空间。第14页,共40页。函数的定义函数是使程序可以重复使用的一种手段。函数的定义:int factorial (int x )int result, i;result=1;for ( i=1; i=x; i+)result=result*i;return (result);函数名形参表函数类型函数体返回语句形参表必须逐一变量说明;形参表各变量用逗号分隔;函数体可以没有;返回类型默认为int;第一行的结尾不要加分号;形参表函数唯一的可变部分;函数类型实际是返回值的数据类型。第15页,共40页。函数的使用int factor (int x, int y);main ()int a, b,c

8、;c=factor (a,b);int factor (int x, int y)函数的说明 必须与函数定义完全一样。函数的使用 实参和形参必须一一对应。函数的定义 局部变量封装。第16页,共40页。#include main( )int a, b,c;a=4;b=5;c=max( a, b);函数的调用过程int max (int x, int y)int z;if (xy) z=x;else z=y;return (z);x=4, y=5;c=5实参形参实参与形参一一对应: 个数相等; 类型一致; 顺序相同。参数传递的本质是单向变量拷贝: 内部变量封装,不影响到函数以外的变量。 允许存在与

9、其它函数同名的变量。第17页,共40页。几种不同的函数有返回值、有参数: main ( )A=f (n);B=f (n-3);C=f (k); 无返回值、有参数: main ( ) star (1);star (3); printf(%d,a); 有返回值、无参数: main ( )c=getchar ( ); 无返回值、无参数: main ( ) alarm_on ( );alarm_off ( ); 第18页,共40页。函数的嵌套调用main ( ) func_a ( ) func_b ( )func_a ( ) func_c ( ) func_b ( ) func_d ( ) func_

10、e ( )func_c ( ) func_d ( ) func_e ( ) 注意:函数可以嵌套调用,但不可以嵌套定义。所有函数都是平行的,即所有函数的地位都是相同的。只有主函数例外。第19页,共40页。变量的存贮类型全局变量 不在任何一个函数中定义,可以被任何函数使用。局部变量 在函数内部定义,只可以在被定义的函数内部使用。动态变量 随着函数的执行而产生,随着函数的退出而消亡。静态变量 在程序执行之前产生,在程序结束之后消亡。全局变量肯定是静态变量,静态变量不一定是全局变量。动态变量肯定是局部变量,局部变量不一定是动态变量。作用域生存期问题:变量为什么要有存贮类型之分?第20页,共40页。指针

11、本质:存贮是变量的地址。指针变量有类型,只能保存相应类型变量的地址星号的不同含义: 在定义中出现:表明该变量为指针变量,其所保存的内容为变量的地址,不可省略,但它并不是变量的一部分。int *p1;float *fp; 在使用中出现:是对指针的操作,其作用是获得指针所指向内存的值。*p1;a=*p1;第21页,共40页。a?pa& 取地址操作:pa=&a; 取内容操作:b=*pb;b?pb*&和*是一对互逆操作指针的操作问题:可以打印出指针的具体值吗?第22页,共40页。指针的运算算数运算 指针只允许加减运算,含义为指针指向的偏移。p2=p1+3; p1+; p2-;关系比较 允许有大于、小于

12、、相等、不相等的比较,含义为指针指向位置的比较。if (p1p2) ;if (p1!=p2) ; 指针不允许有其他类型的运算第23页,共40页。指针定义必须逐一说明;int *p1,p2; p2将是一个整型变量指针变量存贮的是地址,不能和普通变量/常量直接操作;int a,*p;a=66;p=1000; 不会将地址1000赋给p指针变量未初始化之前指向不确定的内容,不能直接引用;int a,*p;a=*p;a将得到一个不确定的值*p=66; 向不确定的空间写数据,后果无法预料,错误也难以发现。指针操作常见的错误第24页,共40页。swap( int *p1,int *p2);main()int

13、 a,b,*pa,*pb;a=10;b=20;pa=&a;pb=&b;printf(%d,%d,a,b);swap(pa,pb);printf(%d,%d,a,b);swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;主函数swapabpapbp1p2temp指针变量作为函数参数问题:a,b是局部变量,当程序离开main函数时它们为什么没有消亡?指针变量作为参数的目的: 突破封装,延伸函数的触角,扩大作用域。第25页,共40页。 用函数计算两个数的和与差plusmin(int a, int b, int *p1, int *p2);m

14、ain()int a,b,plus,minus,*pa,*pb;scanf(%d%d,&a,&b);pa=+pb=plusmin(a,b,pa,pb);printf(%d+%d=%dn,a,b,plus);printf(%d-%d=%dn,a,b,minus);plusmin(int a, int b, int *p1, int *p2)*p1=a+b;*p2=a-b;return(0);abplusminuspapbabp1p2mainplusmin用指针从函数带回多个结果第26页,共40页。指针与数组C语言规定:数组名代表数组第一个元素的地址。int a10, *p;p=a;*p

15、+3=6;*(p+3)=6;a3=6;第27页,共40页。用指针访问数组时易犯的错误main()int a10,i,*p;p=a;for (i=0;i10;i+) scanf(%d,p);p+;for (i=0;i10;i+)printf(%d,*p);p+;a0a9pppppp=a;pa1a2a3a4a5a6a7a8第28页,共40页。用指针访问数组时易犯的错误main()int a10,i,*p;p=a;for (i=0;i10;i+) scanf(%d,p);p+;for (i=0;i10;i+)printf(%d, *a);a+;虽然数组名也是指针,并且指向数组的第一个元素,但它是常量

16、,不能改变。C语言规定:数组名本身也是一个指针,但它不可变。第29页,共40页。利用指针向函数传递大量数据main ()int a10,b5,i;for (i=0;i10;i+) ai=2*i;for (i=0;i5;i+) bi=i*i;print_array( );print_array( );void print_array(int *data,int num)int i;printf(The array is:);for (i=0;i=21);for(i=0;i34;i+) sum=sum+_351401i.age;对结构数组的引用一般是对元素的引用,只要遵循对数组元素引用的规则和对结构体变量的引用规则就可以了。nameagegendermathenglish_3514010_3514011_3514012第38页,共40页。结构的嵌套定义与使用嵌套定义:一个结构中包含另一个结构。struct student char name20;struct birthday birth;int gender;嵌套结构体的使用:struct student st1;st1.birth.y

温馨提示

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

评论

0/150

提交评论