




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C教案(二级)范文 主要内容 1、概述 2、基本数据类型 3、运算符与表达式 4、数据输入与输出 5、程序控制语句 6、数组与字符串重点 7、函数重点 8、预处理函数 9、指针重点 10、结构与联合 11、文件第一部分概述?C语言的特点和用途(略)?C语言程序的基本组成结构 1、C程序是由函数组成的,函数是C程序的基本单位。 2、一个函数由2部分组成1)函数的说明部分2)函数体(由变量定义和执行语句部分组成)。 C语言函数的一般格式函数存储类型和数据类型说明函数名(形参及说明)数据说明部分;执行语句部分;注其中蓝色划线部分可省略。 3、一个C程序总是从main函数开始执行的,与main函数在整个程序中的位置无关。 4、每个语句和数据定义的最后必须有一个分号。 符号常量定义和预编译命令例外。 5、C语言本身没有I/O语句,由相关的函数完成。 6、可以用/*?*/对C程序的任何部分作注释。 注意位置任意;不能嵌套;*/二者间不能有空格。 7、C语言程序习惯上使用小写英文字母。 第二部分数据类型?C语言的数据类型概述1基本数据类型整型、字符型、浮点型、双精度型和无值型。 2构造数据类型数组类型、结构类型、联合类型、枚举型。 3指针数据类型。 ?整型类型数据 一、整型常量有 八、 十、十六进制三种形式a=123;b=012;c=0x18;(其中十六进制的x、a-f可大、小写) 二、整型变量分类int shortint(short)32768-32757short long(long)unsigned int(unsigned)0-65535unsigned short(unsigned shortint)unsigned long1main()正数的原码反码和补码一致。 unsigned shortint a=-1;printf(a=%un,a);负数的补码1的原码1000000000000001结果655351的反码1111111111111110main()1的反码1111111111111111unsigned shortint a=65535;1111111111111111则表示%u65535printf(a=%dn,a);结果-165536的原码10000000000000000main()用%d表示0,此现象为“溢出”unsigned shortint a=65536;printf(a=%dn,a);/*printf(a=%un,a);*/结果065537的原码10000000000000001main()用%d表示1unsigned shortint a=65537;printf(a=%dn,a);/*printf(a=%un,a);*/结果1main()unsigned longint a=65537;printf(a=%dn,a);/*printf(a=%un,a);*/结果1main()unsigned longint a=65537;printf(a=%ldn,a);/*printf(a=%lun,a);*/结果65537?浮点类型数据 一、浮点类型常量3.141231415926.0.34563.14f和3.14F和3.14等价。 f=3.24E16;(E大小写通用) 二、浮点类型变量float a,b;7位有效数字,因此往往保留小数点后6位double c,d;16位有效数字?字符类型数据 一、字符常量用单引号括起来的一个字符aA转义字符明白n和和和ddd(8进制ACSII码)和xhh(16进制ACSII码)的意思。 char str=abn012;printf(d,strlen(str);2printf(“abrehiyboun”);的输出结果是。 二、字符变量char c; 三、字符串常量占的内存空间“China”“”(也占一个字节)“A”“a”“china”“123”“3.14”?符号常量三种定义方法#define;const;枚举法注意#define;const的区别#define PI3.14159main()s=PI*r*r;?类型转换 一、自动转换赋值时的不同类型之间的自然转化;格式输出时的,必然的转换。 练习下列程序执行后的输出结果是()main()char x=0xFFFF;printf(“%dn”,x-);1printf(“%dn”,x-);2练习main()char x=0xFFFF;printf(“%dn”,x);main()char x=0xEFFF;printf(“%dn”,x);main()char x=0xEFEF;printf(“%dn”,x); 二、强制转换注意运算符的优先级和变量的类型不变(仅值改变)。 (类型)表达式(int)9.5/4a=(int)f;第三部分运算符与表达式?基本运算和赋值运算 一、算术运算+-*/%(求余、取模,值的符号与被除数相同) 二、递增、递减运算+-*p+只能对int、char、float型的变量进行。 三、赋值运算b=a=c=5*3int b=a=c=5*3;(错误)a+=a-=a*=a=12;/*a=0*/?关系运算符和关系表达式 一、关系运算符(=)优先级高于(=!=) 二、关系表达式关系表达式的值是“真”或“假”,用1和0表示。 ?逻辑运算符和逻辑表达式 一、逻辑运算符|(或)&(与)!(非) 二、逻辑运算的值0表示假;1表示真(非0的数据均可以表示真); 三、逻辑表达式a等价于a!0!a等价于a03year%400=0|year%4=0&year%100!=0year%400=0|year%4=0&year%100while(a!=0)?位运算符及其表达式 一、按位运算位运算符有&、|、(双目)、(单目)运算分量必须为整型或字符型数据,不能为浮点型数据。 二、移位运算两个移位运算符(双目)(除于2的n次方)?逗号运算符和逗号表达式表达式1,表达式2,?,表达式n?运算符的优先级和结合性从高到低特殊运算符,所有单目运算符,算术运算符,移位运算符,关系运算符,位双目运算符,逻辑运算符,条件运算符,赋值运算符,逗号运算符。 第四部分数据输入和输出#include“stdio.h”字符输入输出函数getchar()和putchar()。 格式输出函数printf()格式出入函数scanf()第五部分程序控制语句?条件/如果/if语句 一、if语句语句格式 1、if(表达式)语句;? 2、if(表达式)语句;else语句;?注意else子句不能单独使用;“语句;”可以是任何类型的语句;复合语句(用括起来的语句)。 判断闰年的程序 二、if语句的嵌套 1、if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;?else if(表达式n)语句n;else表达式n+1; 42、if(表达式1)if(表达式2)?if(表达式n)语句n;else语句n;?else语句2;else语句1;注意else子句与if子句之间的配对问题,选择合适的书写格式。 3、条件运算符(max=a=b?a:b;)?多分支语句switch 一、语句格式试卷三的第36题switch(表达式)case a语句1;case b语句2;case常量表达式1语句1;break;?case常量表达式2语句2;break;错误在于case后面不?允许是变量名或变量表case常量表达式n语句n;break;达式。 default语句n+1;break; 二、注意事项 1、case中break;语句的功能。 2、default部分的功能。 3、若干个case所执行的内容相同时,如何办? 4、所有常量表达式的值必须互不相同;case与default的顺序可以自由书写;如果default部分位于最后,则其break语句可省略,否则一般不可少。 最后的break;可以省略。 ?转移语句goto语句(了解)goto标号;goto不能转到当前函数外。 ?循环语句(while、dowhile、for) 一、语句格式 1、while(表达式)语句;(复合语句) 2、do语句;(如多语句,也必须写成复合语句的形式)while(表达式); 3、for(表达式1;表达式2;表达式3)语句;?辅助控制语句(适用于循环语句) 1、break;语句终止(跳出)整个循环语句。 2、continue;语句结束本次循环,接着进行下次循环条件的判断。 第六部分数组与字符串?一维数组 1、定义int a45; 2、说明下标从0开始,45代表数组长度,45个数组元素a0a44。 ?数组元素的初始化5static int a45;或static char a45;没有给出值的元素的默认值为0。 int a45;或char a45;没有给出值的元素的值随机。 static intm,n,a30=1,2,3,6,7,8,0;static int a20=1,2,3,4,5,6,7,8,9,0;static char c14=I amChinese.;static char c30=I amChinese.;char c30=I amChinese.;char c30=C,h,0,n,a;?多维数组 1、int a34;a00a01a02a03a10?a20?a23 2、二维数组元素按“行”存储。 ?字符串数组static charstr420=China,Japan,Indian,America;?字符串处理函数(库函数)puts getsstrcat strcpystrcmp strlenstrlwr strupr注意数组的使用和循环语句的结合一维数组一般用一重循环;二维数组往往用双重循环。 第七部分函数?标准函数和自定义函数?函数定义和函数调用 一、函数定义 1、一般形式函数存储类型说明函数数据类型说明函数名(形式参数表及形式参数说明)说明定义部分;语句序列; 2、关于函数返回值return(表达式);圆括号可以省略;如果表达式结果的类型与函数定义的类型不同时,会自动转换成函数的类型返回给调用者。 二、函数调用(共3种形式) 1、函数调用语句;常用于不需要返回值的无值类型的函数fun1(a); 2、作为(赋值)表达式的一部分;xfun2(a)100; 3、作为外层函数调用的实参。 函数的嵌套调用fun1(fun2(a); 三、形式参数和实在参数(三个一)形参和实参的功能是数据传送。 第二套题填空第13题单向传递变量名、数组元素和表达式之间第一套第28题双向传递变量的地址、指针、数组之间,形参必须是指针变量或数组 四、函数说明调用函数在调用被调用函数之前,要对被调用函数先进行说明。 函数类型函数名(形式参数表);其中形式参数表可以是完整的;也可以是只有参数个数和类型的;甚至可省略。 ?省略函数说明的三种情况第一套第26题(省略说明) 1、被调用函数的定义出现在调用函数的上面;第二套第26题(说明和调用 2、被调用函数的类型是整型; 3、在2个函数的外面(上面)对被调用函数的一致性)06.9试卷第32题(说明)进行了说明。 6?函数的嵌套调用C语言不允许函数的嵌套定义,各函数之间是平行的,但允许嵌套调用。 ?函数的递归调用一个函数在它的函数体内调用它自身称为函数的递归调用。 准备递归公式第三套填空第12题如果是出口第四套填空第12题出去;第四套填空第15题(自看)否则递归调用?变量的作用域和存储类型关于static的题目 1、四种存储类型第二套填空第16题1)自动型或堆栈型auto(常用)第四套填空第12题2)静态型static(重点)06.9第27题(自看)3)寄存器型register4)外部参照型extern 2、变量的作用域局部变量(内部变量)、全局变量(外部变量)局部变量在函数体内或复合语句中定义说明的变量。 作用域仅限于本函数内或本复合语句中。 (各自为政)全局变量在函数体外部定义的变量,且只能定义一次。 不属于哪一个函数,属于一个源程序文件。 作用域从定义位置开始,直到文件结束。 static、extern对全局变量的影响,尤其是文件之间调用时。 例如F1.C F2.C int a,b;extern int a,b;/*引用F1.C中的全局变量a,b*/charc;charc;/*与F1.C中的c不同*/main()func(int x,y) 3、不同函数内出现的同名auto和static型变量互不相干。 06.9第42题 4、局部变量和全局变量同名时如何处理(屏蔽)。 5、在变量定义时如果不对static变量进行初始化,默认其值为0。 6、被调用函数变量定义中static变量的初始化仅执行一次。 ?main()函数的参数和返回值第四套第44题 1、命令行参数第二套第46题 2、main(int argc,char*argv)06.9第41题注意两个形参的名字也可以由用户命名。 例如main(int x,char*y)特别注意调用函数中的实参是从右向左求值的。 例如int x=1,y=2,z=3;fun(x+y+z,x+,+y);等价于fun(8,1,3);第八部分预处理程序?宏定义用一个标识符来表示一个字符串,称为“宏”。 标识符称为“宏名”。 对程序中所有出现的“宏名”,都用宏定义中的字符串去代换。 1、预处理语句句尾不用;作为结束符,每个语句占一行。 2、预处理语句主要有三种宏定义、文件包含和条件编译。 3、不带参数的宏定义语句的一般格式为1)#define PI3.141592657宏定义可以嵌套和重复定义,即前面定义的,后面可以引用和再次定义。 2)#undef标识符将已经定义的标识符解除宏定义,以便对该标识符重新进行宏定义。 3)注意事项?#最好作为一行的第一列且与define之间不要有空格。 ?可以置于函数外或内。 第一套第 35、37题?一定要注意圆括号的运用。 第五套第49题#define A2+3main()printf(%dn,A*4); 144、带有参数的宏定义的一般格式#define宏名(参数表)宏体其中宏体往往是某程序中经常使用的表达式。 #define MAX(x,y)(x)单目运算符的结合性(*p)+是等效于a+例如p&a;*p+=5;printf(“%dn”,a);a=6;*(p-1)=*(p-1)+4;printf(“%dn”,*(p-1); 三、指针运算(实际上是地址的运算) 1、赋值运算chara,*p&a,*q;qp;int a5,*p,*q;p&a2;qa;char*p;pc=c language;或char*pc=C Language; 2、算术运算p+n,p-n等效于p?n?d(d为p指向的变量所占字节数)作用把指针指向的当前位置向前或向后移动n个位置,而指针变量本身不发生任何变化。 p+,p-,+p,-p,p+=n,p-=n指针变量本身发生变化。 两个指针相减两个指针所指数组元素之间相差的元素个数。 2000xxxxxxxx200A(main) 3、指针变量关系运算p=NULL或p!=NULL p1=p2表示p1与p2指向同一元素 四、指针作为函数参数用指针变量作为函数实参和形参,仍为“值传递”方式,形参指针变量的值的改变不会影响到实参指针变量的值,但是会影响相关存储单元的值。 9.p main()char*s=”ABCDE”;A BC DE aaa(s);printf(“%sn”,&s3);DD aaa(char*t)调用时s/t*(t+4)=*(t+2)+1;返回时s tD t+;?数组与指针(重点)数组名就是一个存放地址值的指针名,是整个数组所占的连续存储单元的起始地址,也是第一个数组元素的地址。 1、数组的指针是指数组的起始地址。 2、数组元素的指针是数组元素的地址。 一、一维数组和指针inta10,*p=a等价于*p=&a0; 1、p+i和a+i是ai的地址。 2、*(p+i)和*(a+i)是数组元素ai变址取值运算符访问数据的另一种运算符形式作用访问以地址量为起点的第n个数据ai等效于*(a+i)pi等效于*(p+i)第一套第 27、 31、 34、 42、 43、45数组元素的表示有两类四种方法。 aipi*(a+i)*(p+i) 二、二维数组和指针inta34分解为三个一维数组0123a0,a0又是含有a00?a03四个元素的一维数组。 4567a1891011a2语言允许把一个二维数组分解为多个一维数组来处理。 数组及数组元素的地址表示a是二维数组名,也是二维数组0行的首地址。 a0是一维数组的数组名和首地址,也是其0号元素的首地址,也是二维数组a的0行0列元素的地址。 总结数组元素aij的地址的表示方式&aij、ai+j、*(a+i)+j、&a004*ij、a04*ij数组元素aij的表示方式aij、*(ai+j)、*(*(a+i)+j)、(*(a+i))j、*(&a004*ij) 三、数组名和指针变量作为函数参数第二套第 28、 29、 32、34题在函数调用中改变数组元素的值,实参与形参的第三套第 28、 29、 31、32题对应关系有以下种情况069第 29、31题 101、形参和实参都用数组名 2、实参用数组名,形参用指针变量 3、实参形参都用指针变量 4、实参为指针变量,形参为数组名?字符串与指针 一、字符串的表示形式第一套第28题 1、用字符数组来实现069第34题char string20=”Good morning”;069填空第14题 2、用字符指针来实现char*s=”Good morning”;等效于char*s;第一套第 43、45题s=”Good morning”;第二套第 27、43题字符指针变量中存放的是字符串第1个字符的地址。 char*China!;3;printf(,);char*hina!;int;for(;!;a)printf(s,);char*hina!;int;for(;!;)printf(,);for(;*a!=0;a+)printf(%c,*a);第一套填空第12题 二、字符串指针变量和字符数组名做函数参数第二套填空第33题?用字符数组做函数参数?指针可以作为函数的参数,也可作为函数的返回值。 一、指针作为函数的参数第三套第42题实参地址值;形参指针变量第六套第42题 二、指针作为函数的返回值(返回指针值的函数)一个函数可返回整型值、字符值、实型值等结果,也可返回指针型的数据,即地址。 定义形式05.9填空14题类型说明符*函数名(参数表)06.4填空12题11例如int*(int,int);?指向函数的指针函数指针指向函数的指针(函数在编译时被分配给一个入口地址,将一个函数名赋给一个指针,将函数的入口地址给了指针,称为函数的指针。 )类型说明符(*指针变量名)();例int(*asum)();?指针数组(高级)06.9第40题 1、指针数组一个数组其元素均为指针类型数据。 形式数据基类型*数组名数组长度nint*p5;一维指针数组说明数组p的每个元素都是基类型是int的指针。 指针数组往往用来处理二维数组,指针数组元素个数等于二维数组的行数。 初始化inta34,*p3=a0,a1,a2;赋值int*p3,a34,i,j;for(i0;i成员名boy1.sex bb-num13boy1.birthday.month(嵌套时) 2、结构变量的赋值利用输入函数或赋值语句来实现对其成员的赋值。 3、结构变量的初始化可以对全局变量或静态变量初始化赋值,不能对局部或自动变量初始化。 ?结构数组与结构指针 一、结构数组 1、结构数组的定义1)结构数组和结构数组变量同时定义struct keychar*keyword;int keycount;keytab20;2)结构数组和结构数组变量分开定义struct keychar*keyword;int keycount;struct keykeytab20; 2、结构数组的初始化struct sport_namechar*name;int count;x=“Li Ning”,0,“Lang Ping”,0,?“Zhu JianHua”,0;或struct sport_namechar*name;int count;x=“Li Ning”,0,“Lang Ping”,0,?“Zhu JianHua”,0; 3、结构数组的引用数组元素中成员的引用x3.count;数组元素的引用:x6=x3; 二、结构指针 1、结构体变量指针的定义struct stuboy1,*pa;(*pa).num等效于pa-num 2、结构体数组指针的定义struct stuboy30,*p;p=boy; 3、初始化struct stuboy1,*pa&boy1;struct stuboy30,*pboy; 4、结构指针做函数的参数1406.9第45题方法一用结构体变量的名字(单向传递)方法二用结构体变量的地址(双向传递)方法三用结构体数组(双向传递数组名、数组元素的地址或指针) 三、引用自身的结构链表 1、有关链表的几个函数calloc()、malloc()动态申请内存空间第五套第37题动态申请的内存区域在用户的程序之外,需要释放。 第四套填空8题void*calloc(n,size)按对象的个数申请内存空间05.9填空8题void*malloc(size)按字节数申请内存空间realloc()和free()void*realloc(p,size)以p为起始地址的动态内存重新分配。 如果新的区域小于原来的区域时,原来存放的数据仍存在,不自动消失。 void free(p)释放以p为起始地址的动态内存区域。 ?联合类型 一、联合定义的格式union联合名成员表列; 二、说明 1、联合类型变量的定义也有三种方式(类似结构变量) 2、联合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 4级考试题型翻译及答案
- 2025网络版微型建筑合同样本
- Amino-PEG19-amine-生命科学试剂-MCE
- 2025借款抵押担保合同范例
- 2025商业办公水电改造承包合同
- 2025水电安装合同范本()
- 写作:语言简明(导学案)-七年级语文下册同步备课系列(部编版)
- 第13课《卖油翁》第一课时(教学设计)-七年级语文下册同步备课系列(部编版)
- 人教版九年级化学“化学肥料”教学设计
- 工业设计创意与创新实践练习题集
- 2020-2021年成都市青羊区五年级(下)数学期末试卷(附答案版)
- 2024秋期国家开放大学专科《现代教师学导论》一平台在线形考(形成性考核任务一至四)+终结性考核(大作业)试题及答案
- 智能财务管理系统合同
- 奔驰购车定金合同模板
- 广东省佛山市南海区三水区2022-2023学年六年级下学期期末考试英语试卷
- (作文指导)状动人之景抒不尽之情-“沉浸式”课堂作文教学之环境描写
- 胫骨骨折课件
- Unit 1 A New Start Using languages (Basic sentence structures) 教学设计-2024-2025学年高中英语外研版(2019)必修第一册
- 四川省高职单招餐饮类《中式烹饪技艺》复习备考试题库-上(选择题)
- 钢结构厂房施工组织设计
- 幼儿园退学退费申请范文
评论
0/150
提交评论