C语言整理版打印版



《C语言整理版打印版》由会员分享,可在线阅读,更多相关《C语言整理版打印版(46页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,*,,*,总体架构,,单词,数据类型—“桥梁〞,运算法那么—“动词〞,根本类型,,构造类型,,指针类型,,空类型,,标识符,,常量,,字符串文字量,,标点符号,,语句—“句子〞,简单句,,选择句,,循环句,,函数—“一段话〞,算法—“核心思想〞,,,字母,,,,,表达式—“短句〞,,,,,,桥梁,内存关系,,内存特点:,,加点后才有记忆,,加电后并非空白,而是乱七八糟的东西,,断电后记忆消失,,记忆可读可写,,记忆内容读取不变,写入原来消失,机器世界,,汇编世界,,内存,8bit〔位二进制〕=1By
2、te/B〔字节〕,,1KB〔千字节〕 =1024B,,1MB〔兆字节〕=1024KB,,1GB〔吉字节〕 =1024MB,,1TB〔太字节〕 =1024GB,,1PB〔拍字节〕 =1024TB,,1EB〔艾字节〕 =1024PB,数据传输是以大多是以“位〞〔bit〕为单位,一个位就代表一个0或1,,数据存储是以“字节〞〔Byte〕为单位,是最小一级的信息单位。,,计算机一次可以运算的数据长度称为“字〞,字的长度称为“字长〞,一个字可以一个字节也可以多个字节,常用字长,8bit,16bit,32bit,64bit,字节,位,字,8,1/n,8*n,补码、原码等知识,,VC++,,选择win32
3、application 图形界面,,桥梁,—,进制转换,..\各种进制转换.docx,,字母与单词,C语言的字母,,大写字母:,A-Z,,小写字母:,a-z,,数字:,0-9,,图形字符:,29,个如,~=&,,空白字符:空格、水平制表、垂直制表、换页,,85,,,C语言的单词,,常量,,字符串文字量,,标识符,,标点符号,,关键字,,预定义标识符,,用户标识符,,标识符,—,关键字,组成,字母,数字,下划线。以字母,\,下划线开头。,,分类,关键字,不可作为用户标识符,,预定义标示符,可作为用户标识符,,用户标识符,define scanf printf include,注意,
4、变量名,函数名,符号常量名全都是标识符,,关,,键,,字,Auto,,,break,,,case,,,char,,,const,,,continue,,,default,,,do,,,double,,,Else,,,enum,,,extern,,,float,,,for,,,goto,,,if,,,int,,,long,,,switch,,,register,,,return,,,short,,,signed,,,sizeof,,,static,,,struct,,,typedef,,,union,,,unsigned,,,void,,,volatile,,,while,,特定字,Define
5、,,,endif,,,ifdef,,,fndef,,,include,,,line,,,endef,,C,语言中关键字主要有以下三类: ,,类型说明符:用来定义变量、函数或其他数据结构的类型,如,unsigned char,int,long,等 ,,语句定义符:用来标示一个语句的功能,如,if,for,等 ,,预处理命令字:用来表示预处理命令的关键字,如,include,define,等,单词,—,常量,符号常量:,用一个标识符代表一个常量的符号,区别变量名全部用大写,\40 空格,,单词,—,字符串文字量,单词,—,标点符号,用“〞括起来的字符序列,只有字符串常量,没有字符串变量
6、,字符串是作为数组处理的。,实实在在原封不动的引用一段语言或文字,共48个,,[] () {} . -> ++ -- … = *= /= %= += -= >= &= ^= |= , # ##,,标识符,—,变量,—,存储类别,局部变量〔内部变量〕:在一个函数的内部定义的变量,,说明:1. 主函数中的变量也是局部变量,,2. 不同函数内的变量可以重名,,3. 形式参数也是局部变量,,4. 函数内部的复合语句中定义的局部变量只在“程序块〞中使用,,全局变量〔外部变量〕:程序编译的单位是源程序,一个源程序包含假设干函数,在函数之外定义的变量称为全局变量,有
7、效范围是定义开始到根源文件结束,,说明:1. 作用,增加函数间的数据关联,,2. 约定,全局变量的第一个字母大写,,3. 非必要情况下不要用全局变量,,1〕∵全部执行过程占用存储单元,而不是使用时才开辟,,2〕∵函数依赖外部变量,降低了程序的通用性,,4. 局部变量与全局变量重名时,优先局部变量。,3,变量名,a,变量值,存储单元,变量有两属性:数据类型,+,数据的存储类别,存储空间分为:程序区、静态存储区、动态存储区,,静态存储区:全局变量,,动态存储区:函数形式参数、自动变量(未加static的)、函数调用时的现场保护和返回值,,每次分配的地址不同,生命周期只是执行的周期。,,1. aut
8、o:自动变量,不专门声明的存放在动态存储区,,2. 用static声明局部变量:存储单元不释放,静态区,,使用其情况:1. 需要保存函数上一次调用结果,,2. 初始化后,只引用不改变其值,,3. register变量:存放器变量,将反复调用的值保存在CPU的存放器中,,说明:1. 只有局部自动变量和形式变量可以作为存放器变量,,2.计算机存放器变量数目有限,,4. 用extern声明外部变量:在函数内部改变变量为全局变量,或在多文件中声明,,5. 用static声明外部变量:声明的全局变量只在本文件中使用,标识符,—,变量,—,存储类别二,,分类原则,分类,分类,按作用域角度,局部变量,自动变
9、量,及动态局部变量(离开函数值消失),,,静态局部变量(离开函数值保留),,,寄存器变量(离开函数值消失),,,形式参数可以定义为自动变量或寄存器变量,,全局变量,静态外部变量(只限本文件引用),,,外部变量(允许全文件引用),存在时间,动态存储,自动变量(本函数内有效),,,寄存器变量(本函数内有效),,,形式参数(本函数内有效),,静态存储,静态局部变量(函数内有效),,,静态外部变量(本文件内有效),,,外部变量(其他文件也有效),按存储位置,内存中静态存储,静态局部变量,,,静态外部变量,,,外部变量,,内存中动态存储,自动变量和形式参数,,CPU,中存储,寄存器变量,数据类型,,根本
10、类型,构造类型,指针类型,空类型,-Bool类型〔本质是宏〕,数值类型,字符类型,char,1,字节,结构体,struct,共用体,union,数组,枚举类型,enum,整型,浮点型,短整型,short,2,字节,整型,int,4,字节,,单精度型,float,4,字节,,双精度型,double,8,字节,长整型,long,4,字节,C,数据类型,,,,,,,1.,整型数据,int,可以有修饰符,short,、,long,、,long long,三种,后面的,int,可省略,默认的整形数据常量为,int,。,,2.,整型和浮点型数据,可以加上,signed,和,unsigned,修饰符号,表示
11、数据是否是有符号,默认有符号,,3.,浮点型数据可以带小数,默认浮点型数据作为,double,类型来对待。,,整形常量数据前缀总结:,0,、,0X,,分别表示,8,进制和,16,进制。,,整形常量数据后缀总结:,L,、,LL,;,U,,浮点型常量数据后缀总结:,f,、,L,;,U,隐含转化,数据类型—根本型,数值类型,字符类型,char,1,字节,整型,浮点型,短整型,short,2,字节,整型,int,4,字节,,单精度型,float,4,字节,双精度型,double,8,字节,长整型,long,4,字节,,,,,根本型,类型,字节,取值范围,[signed]int,2(TC)/4(VC),
12、-32768~32767,或,-2147483648~2147483647,(,2,31,),Unsigned int,2(TC)/4(VC),0~65535,或,0~4294967295,[signed] short [int],2,-32768~32767(-2,15,~2,15,-1),Unsigned short [int],2,0~65535,long [int],4,-2147483648~2147483647,unsigned long [int],4,0~4294967295,float,4,-3.4*10,-38,~3.4*10,38,double,8,-1.7*10,-30
13、8,~1.7*10,308,long double,16,-1.2*10,-4932,~1.2*10,4932,char,1,-127~128,unsigned char,1,0~255,字符常量:单括号括起来一个字符或者\开头的转义字符,,字符变量:只能放一个字符,,字符串常量:一对双括号括起来的字符序列,无字符串变量!!如果想存放,用数组。,,“hello〞√、“$123.34〞√ char c; c=‘a’ √ c=“a〞× c=“chain〞×,,‘a’和’’a〞区别:字符串常量以\0结尾,是系统自动添加的,,字符型和数据值转换:ASCII码:48=“0〞,A=“65〞,a=“97〞
14、相差32,数据类型,—,构造类型数组,数组:用于描述问题中一组性质相同且有序的数据。是一种数据类型相同的数据对象。,,数组的元素:数组中每个数据对象叫元素,从0开始编号,使用这些称为和使用int变量一样,,,一维数组定义: 类型说明符 数组名[常量表达式];,,1〕说明数组元素的类型,,2〕说明数组元素的个数,,3〕数组名意味着一块连续的存储空间=元素个数*元素占据内存,,数组的引用: 数组名[整数类型表达式],,,一维数组的引用 数组名[下标],,,一维数组赋初值,,1〕定义时赋全值 int a[5]={0,1,2,3,4}; a[0]=0, a[1]=1, a[2]=
15、2, a[3]=3, a[4]=4,,2〕定义时赋局部值 int a[5]={0,1}; a[0]=0, a[1]=1, a[2]=0, a[3]=0, a[4]=0,,3〕不指定长度赋值 int a[ ]={0,1,2,3,4}; a[0]=0, a[1]=1, a[2]=2, a[3]=3, a[4]=4,,4〕int a[ 5]={ [1]=1,4,5};a[0]=0, a[1]=1, a[2]=4, a[3]=5, a[4]=0,,一维数组遍历,,int a[5];,,int i;,,for(i=0;i<5〔数组元素个数〕;i++),,{,,scanf
16、("%d,",,,},数据类型,—,构造类型数组,—,二维数组,二维数组定义: 类型说明符 数组名[常量表达式] [常量表达式] ;,,,二维数组的引用 数组名[下标] [下标],,,二维数组赋初值,,1〕分行赋值 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};,,2〕全部赋值 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};,,3〕局部赋值 int a[3 ][4]={{1},{5},{9}};只对第一列赋值,,int a[3 ][4]={{1},{},{9,10,11,1
17、2}};,,4〕不定长赋值 int a[][4]={{1,2,3,4,5,6,7,8,9,10,11,12}; 只可以省略行数,,int a[][4]={{0,0,0},{},{9,1,4,12}};,,,二维数组遍历,,,数据类型,—,构造类型数组,—,字符数组,字符数组,: 用来存放字符数据的数组是字符数组,,,字符数组定义,:,char c[6]; c[0]=‘I’; c[1]=‘ ’; c[2]=‘a’; c[3]=‘m’; c[4]=‘\0’; c[5]=‘\0’;,,,字符数组的引用,引用字符数组中的一个元素,得到一个字符,,,字符串和字符串结束标志,,字符串是作为数组来处理的,系
18、统对字符串常量自动加一个,’\0’,作为结束。,,,字符串处理函数:,,,,,格式,含义,puts,(字符数组);,输出字符串,gets,(字符数组);,输入字符串,strcat,(字符数组,1,,字符数组,2,);,2,串接到,1,串后面,str(n)cpy,(字符数组,1,,字符数组,2,);,2,串复制到,1,后面,strcmp,(字符串,1,,字符串,2,);,按,ASCII,码比较,1,、,2,串,strlen,(字符数组);,测试字符串长度,不包括,\0,strlwr,(字符串);,大写换小写,strupr,(字符串);,小写换大写,数据类型,—,构造类型,—,结构体,结构体:,,
19、,结构体声明:,,struct 结构体名,,{成员表列 〔 类型名 成员名〕};,,结构体定义:,,1〕先声明结构体类型再定义变量名,,2〕在声明类型的同时定义变量,,struct 结构体名,,{,,成员表列 〔 类型名 成员名〕,,};变量名表列,,3〕直接定义结构体类型变量,,struct,,{,,成员表列 〔 类型名 成员名〕,,};变量名表列,,结构体变量引用: 结构体变量名.成员名,,结构体初始化:,数据类型,—,构造类型,—,结构体数组,结构体数组,,,结构体定义:,,struct 结构体名,,{,,成员表列 〔 类型名 成员名〕,,};变量名表列,,struct
20、 变量名 数组名[],,,结构体初始化:,指向结构体类型的数据指针,,指向结构体变量的指针:,,->指向运算符,,p->n 得到p指向的结构体变量中的成员n的值,,p->n++ 得到p指向的结构体变量中的成员n的值,用完该值后+1,,++p->n得到p指向的结构体变量中的成员n 的值加1,在使用。,,三种等价形式 结构体变量.成员名 ↔〔*p〕.成员名↔p->成员名指向结构体数组的指针:,,用结构体和指向结构体的指针作为函数参数,数据类型,—,构造类型,—,共同体,共用体:,,,共用体定义: union 共用体名,,{ 成员表列,,} 变量表列;,,共用体引用:只能引用成员,不能引用
21、变量 共用体变量名.成员名,,,共用体特点:,,同一个内存短可以用来存放几种不同类型的成员,但每一时刻只能存放其中一种,,起作用的成员是最后一次放入的成员,,共同体的地址和各成员的地址是同一地址 &a=&a.i,,不能对共用体变量名赋值,也不能引用变量名得到一个值,,不能用共用体作为函数参数,也不能用函数带回共用体变量,但可以用指针〔同结构体〕,,可以出现在结构体中,也可以定义共用体数组,数据类型,—,构造类型,—,枚举、,typedef,定义类型,枚举:如果一个变量只有几种可能的值,可以用枚举变量一一列举出来。,,声明:enum {具体值1,具体值2…具体值n};,,说明:1. 在编译中
22、,枚举类型按照常量处理对不能对它们赋值。例如,不能写:sun=0;,,2. 枚举元素作为常量是有值的,按顺序为1,2,3…,,3. 枚举类型可以用来判断比较,,4. 一个整数不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。,,5.可以在声明时另行指定枚举元素的值,enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};,,例如:enum weekday,,{sun,mon,tue,wed,thu,fri,sat};,typedef,:,声明新的类型代替已有的类型名,,声明:,typedef,已有类型名 新类型名表,;,,例如:,,t
23、ypedef int natural;,,natural i1,i2;,,数据类型,—,构造类型指针,—,初识,含义:,是,C,语言的一种数据类型,,,其值表示某个内存单元的地址,其用途是完成与地址有关的计算,分类:,1.,指向数据对象的指针,,2.,指向函数的指针,,3.,指向虚无的指针,运算符:,,&,:,取地址运算符,—,获得某个变量的地址,,&,(变量,√,、数组,√,、常量,×,、表达式,×,),,,结果为一块内存(左值表达式),,*:,取值运算符,——,获得地址中存放的数据,*(指针) 间接访问变量,,,运算对象是指针,结果是指针所指向的那块内存(左值)或内存中数据的值(右
24、值),,char a,*p_a;,,a=“STIE〞,,*p_a=a;,,p_a=“STIE〞 〔值〕〔当输出格式为%p时为地址〕,,*p_a=S 〔地址指向的值〕,,&p_a=02021106 〔地址〕,数据类型—构造类型指针—指针操作〔一〕,定义:类型说明符 * 变量名,int,*,i,,,类型说明符 :表示该指针变量能且只能指向的变量的数据类型,,,*: 表示该变量为指针变量,,,变量名:表示指针变量的名称,& * p=p; 〔p任何一指针〕,,* & v=v; 〔v任何一变量〕,赋值〔初始化〕:用&让指针指向相应的地址〔内存单元〕,,指针在使用之前,
25、一定要先定义,再赋值,后使用,引用:,char Stuname,name; //定义字符变量,,char *pStu; //定义指针变量,,char *pNew;,,pStu=& Stuname; //取变量Stuname地址,并赋值给pStu,,pNew=pStu; //取指针变量pStu,赋值给pNew,,name=*pNew; //把pNew指向的内存单元的值赋给name,,赋值,引用,取值,取值:,用*间接访问指针指向的变量,数据类型—构造类型指针—指针操作〔二
26、〕,指针与整数加法:,,指针与整数的加法,主要用于数组,且注意是否超出大小。,指针与整数减法:,减法后注意不要超出第一个数组元素,指针与指针减法:,参加运算的指针必须同时指向同一个数组,数组元素值,…,12,13,14,15,…,数组元素,…,Num[0],Num[1],Num[2],Num[3],…,内存地址,2A02,2A03-2A04,2A05-2A06,2A07-2A08,2A09-2A0A,2A10-2A0B,指针指向,,,,,,,指针情况,,P_New,初值,P_New++,P_Old,p_New+2,,程序语句,,(,3,),(,4,),(,6,),(,5,),,int Num[
27、4]={12,13,14,15} ; //定义数组变量,,int *p_New,*p_Old; //定义指针变量,,p_New=Num; //指针赋值,,p_New++; //指针自加1,,p_Old=p_New+2; //指针p_New+2,,p_Old=p_New-1; //指针p_Old-1,,赋值,加法
28、,减法,数据类型,—,构造类型指针,—,指针与数组,数组:用于描述问题中一组性质相同且有序的数据。是一种数据类型相同的数据对象。,,内存中形式:int day[7]={1,2,3,4,5,6,7} char str[]={“see sky〞},元素值,…,1,2,3,4,5,6,7,…,数组元素,…,day[0],day[1],day[2],day[3],day[4],day[5],day[6],…,内存地址,2A02,2A03/4,2A05/6,2A07/8,2A09/A,2A0B/C,2A0D/E,2A0F/10,2A11,元素值,…,s,e,e,空格,s,k,y,\0,数组元素,…
29、,str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],内存地址,2A02,2A03,2A04,2A05,2A06,2A07,2A08,2A09,2A10,数组的引用方式,:下标、指针,,下标法必须通过额外的一个变量来标记,而指针不必,指针数组:一系列指向同一数据类型的指针变量的集合,元素是指针变量,,常用来访问一组字符串,要想输出字符串,需要该字符串的地址,,定义:类型说明符 *数组名[数组长度],,初始化: char *name[]={“China〞,〞Beijing〞,〞Longmai〞};,内容,“,china,”,“,Be
30、ijing,”,“,Longmai,”,指向,,,,数组元素,name[0],name[1],name[2],字符串指针:指向字符串的指针变量,定以后,指针指向字符串首地址,,定义: char *变量名 〔同指向字符的指针〕,,引用:不用赋值,定义之后就有初始值,即字符串的首地址,数据类型,—,构造类型指针,—,指针与函数,指针函数:,指针用作函数参数,传递的是变量的地址,也可以说是指针变量的值。,假设想通过形参改变实参,其实参要为变量的地址,形参为指针,指针变量作为函数参数时:实际是让形参同时指向参数指向的数据单元,数据类型,—,构造类型指针,—,函数指针,函数指针:,用来指向某个函数,一
31、个函数只有一个函数指针,且不能通过函数指针移动访问函数体内语句,定义:数据类型〔*变量名〕〔〕;,,初始化:,数据类型,—,构造类型指针,—,指针的指针,指针的指针:,存放指针的地址,定义:,数据类型 **变量名 ;,,应用:,指针的指针,=,二维数组,,a[i] = * (a+i),,a[i][j] = * (a[i]+j) = * (* (a+i)+j),运算符—“动词〞,运算符,含义,优先级,结合性,类别,[],,(),,.,,->,,++ --,,(,类型名,){,值列表,数组下标,,函数调用,,Direct selection,,指向结构体成员运算符,,(后)自增自减,
32、,(,C99,)复合字面值,16,从左到右,后缀,++ --,(前)自增自减,15,从右到左,前缀,&,,*,,+,,-,,~,,!,,Sizeof,求左值的指针,,求指针的对象,,求原值,,求负值,,求按位反值,,逻辑非,,求长度,,从右到左,一元,(类型名),转换值类型,14,从右到左,一元,* / %,乘、除、求余,13,从左到右,二元,+ -,加、减,12,从左到右,二元,>,左移、右移,11,从左到右,二元,< <=,,> >=,小于、小于等于,,大于、大于等于,10,从左到右,二元,== !=,等于 不等于,9,从左到右,二元,&,按位于,8,从左到右,二元,^,按位异或,7,
33、从左到右,二元,|,按位或,6,从左到右,二元,&&,逻辑与,5,从左到右,二元,||,逻辑或,4,从左到右,二元,?:,条件运算,3,从右到左,三元,= += -= *=,,/= %= <<=,,>>= &= ^= |=,赋值,2,从右到左,二元,,,顺序求值,1,从左到右,二元,运算符—“动词〞,1、规律发现:自增自减运算++在前先加后用,++在后先用后加〔符合运算符号位置规律〕,,2、z=〔2,3,4〕(整个是赋值表达式) 这个时候z的值为4。,,z= 2,3,4 〔整个是逗号表达式〕这个时候z的值为2。,,3、三种取整丢小数的情况:,,1〕 int a =1.6; 2〕 (in
34、t)a; 3〕1/2; 3/2;,,4、eg: 00001010&00001000=00001000,,00001010|00001000=00001010,,10^8=00001010^00001000=00000010 异或:值不相同,结果为1;值相同,结果为0。,初等运算符,()[] -> .,单目运算符,算术运算符〔先乘除后加减〕,关系运算符,逻辑运算符〔不包括!〕,条件运算符,赋值运算符,逗号运算符,,,表达式—“词组〞,初等表达式:,,变量名或函数名,,常量,,字符串文字量,左值,=,右值,算术表达式,,逻辑表达式,,字位表达式,,强制类型转换表达式 〔类
35、型运算符〕变量,,逗号表达式 表达式1,表达式2,…,表达式n,,赋值表达式,,条件表达式 逻辑表达式?表达式1:表达式2,,指针表达式,语句—“句子〞,break,:结束循环,不能与,if,连用,,break,根本不会理睬,if,语句是否存在,直接跳出最内层的循环或,switch,语句块。,,continue,:结束本次循环,接着判断是否执行下次循环,语句,—,预处理命令,预处理功能:,,宏定义 #define 标识符〔参数表〕 字符串,,1〕约定大写,以区分变量,,2〕不是C语言,不必加;号
36、,,3〕周期为#define开头到根源文件结束,用#undef 标识符 终止,,4〕宏定义可以嵌套引用,,文件包含:一个源文件可以将另外一个源文件包含进来,,#include “文件名〞 #include,,1〕区别〞〞先从当前路径,在标准库直接标准库,,2〕文件包含可以嵌套,,条件编译 在满足某条件时对某一组语句进行编译,不满足另一组,#ifdef,标识符,,,程序段,1,,#else,,,程序段,2,,#endif,#ifndef,标识符,,,程序段,1,,#else,,,程序段,2,,#endif,#if,标识符,,,程序段,1,,#else,,,程序段,2,,#endif,#
37、ifdef 如果标识符已被定义过,那么程序段1,,#ifndef 如果标识符未已被定义过,那么程序段1,,#if 如果指定的表达式为真,那么程序段1,,函数—“一段话〞,函数:,,〔语法上说〕是用于完成特定任务的一段独立的代码单元,是构成C语言源程序的根本单位。,,〔编程思想上说〕函数是组织、整理程序设计思路并使之条理化的一种技术手段,即结构化程序设计思想。,函数声明:向编译器说明标识符的含义 语法格式 函数的类型 函数名〔参量类型列表〕,,main是类型说明符,向编译器说明标识符是一个函数的名字。,,main〔int,int〕参数:说明函数的参数数据类型,逗号隔开。,,Int main〔i
38、nt,int〕说明返回函数的数据类型;,函数定义:,,语法格式 函数类型 函数名,(,形参列表,),,{,,,函数内的声明和语句,,},,形参,:不是完成任务所需要的特定参数,只是描述函数任务步骤的形式上的参数,只在紧随其后的函数体中使用,,return,表达式:与函数类型一致,把函数结果传递到函数使用处。,,函数头(有变量定义),函数体,函数调用:后缀运算,优先级16,结合性左到右,,实参:有值的表达式,用逗号间隔,,步骤:1〕计算出各个实参的值,,2〕把计算的实参值依次作为对应形参的初值,,3〕执行被调用函数的函数体局部,,4〕遇见return返回调用函数处,,5〕相应的return语
39、句返回的表达式替代调用函数,函数—“简单栗子〞,#include "stdio.h" // 声明printf函数,,#include "stdlib.h" // stdlib.h函数中有system函数,,,int accumulate(int,int) ; //函数声明:函数命名,说清需要什么量求一个什么量,用;结尾,,int main(void),,{,,printf("(2+3)*4=%d\n",accumulate(2+3,4)); //函数调用,实参与形参一一对应,,system ("Pause");
40、 //调用system函数,,return 0;,,},,,int accumulate(int a,int b) //函数头,为形参命名,结尾无;其余局部与函数声明一样,,{,,return a*b; // return语句,返回计算结果,应与函数类型一致,,},,,,,,,参数〔声明中〕、形参〔函数头中〕、实参〔函数调用中〕一一对应,步骤:1〕函数声明,,2〕函数描述,包括函数头、函数体,,3〕需要处函数调用,函数,,结构化程序设计,,自顶向下,,逐步细化,,递归!!,,函数的生命周期,,ext
41、ern,:外部函数,可供其他文件调用。省略的都为,extern,,Static,:内部函数静态函数,函数的作用域仅在本文件,修饰函数,,Inline:提高函数的执行速度,编译器对inline函数做速度优化处理。,,函数—“输入输出函数〞,使用printf和scanf函数时,要在最前面加上#include“stdio.h〞,调用printf时,float会自动转换成double,,scanf注意:,,格式控制串可控制截取用户输入的前几个字符给变量,但不能控制输入几位小数给变量,如不能写成scanf(“%4.2f〞,,,第二个参数给的是地址,即要么是,,考试时注意看题目给你写好的scanf的格式,
42、,1〕假设其格式控制串内各格式符用“,〞隔开如scanf(“%d,%c,%d〞,那输入时也要用逗号隔开,如此例输入时应:3,+,5,,2〕假设是这种格式scanf(“%d %d〞,,,3〕假设是这种格式scanf(“%d%c%d〞,那么输入时应3+5,假设写成3 + 5那么a=3,ch=‘ ’(空格),b=任意值,,4〕输入函数是,123 和1 2 3是不一样的,用空格隔开。想要完成单个输入的时候用空格间隔,输入的格式符里不要有\n,名称,格式,实例,scanf,scanf(“,格式控制串,”,,变量地址表列,);,scanf(,“,%d%c%d,”,,&a,,,&ch,,,,printf,p
43、rintf(“,格式控制串,”,,输出项表列,);,printf(,“,%8.2f,”,,x),getchar,getchar();,char c,;,c=getchar(),;只输入一个字符,putchar,putchar(,字符常量或字符变量名,),;,char c=’A’,;,putchar(,‘,A,’,),;只输出一个字符,gets,gets(,字符串变量名,);,char c=c[6],;,gets(c),;通过数组输入字符串,puts,puts(,字符串变量名,);,puts(c),;通过数组输出字符串,变量名,,类型名,,变量定义格式:,格式说明,表示内容,格式说明,表示内容,
44、,,%d,整型,int,%c,字符,char,,,%ld,长整型,long int,%s,字符串,x=017,,%f,浮点型,float,(,.,后六位),%o,八进制,17,,%lf,double,%#o,带前导的八进制,017,,%%,输出一个百分号,%x,十六进制,整数,f,,%u,按无符号输入,%#x,带前导的十六进制,0xf,,%g,,,G,用,%f%e,格式中输出宽度较短输出,,%e,,,E,指数形式输出,,%p,地址,,,,规律说明:整,d,小,f,字符,c,,串起,so8x16e,(指数),,,,,,printf,的附加格式说明符,,l,用于长整形、可加在格式符号,d,、,o,
45、、,x,、,u,前面,m,(代表一个正整数),数据最小宽度,n(,代表一个整数数,),对实数,表示输出,n,位小数,对字符串,表示截取的字符个数,-,输出的数字或字符在域内向左靠,scanf,的附加格式说明符,,l,用于输入长整形数据,以及,double,数据,h,用于输入短整型数据(可用,%hd,,,%ho,,,%hx,),宽域,指定输入数据所占宽度(列数)域宽应为正整数,*,表示本输入项在读入后不赋给相应的变量,标识符,—,变量,—,输出格式,标识符,—,变量,—,输出格式,printf,输出格式说明,,printf,(“,%2d,”,,123,);,第二部分有三位,大于指定的两位,原样输
46、出,123,printf,(“,%5d,”,,123,);,第二部分有三位,小于指定的五位,左边补两个空格,123,printf,(“,%10f,”,,1.25,);,小数要求补足,6,位的,没有六位的补,0,,。结果为,1.250000,printf,(“,%5.3f,”,,125,);,小数三位,整个五位,结果为,1.250,(,小数点算一位,),printf,(“,%3.1f,”,,1.25,);,小数一位,整个三位,结果为,1.3,(要进行四舍五入),printf,(“,%e,”,,12.3456789,);,1.23456e+001,printf,(“,%ms,”),printf("
47、%12s%d\n","hello",1);,输出字符占,m,位(含小数点),, 48、hello",1),输出占,m,位,但只取左端,n,个,这,n,个输出在,m,列的左侧,右补空格,若,n>m,,则,m,自动取,n,值,保证,n,个字符正常输出,he1231,函数,—C,库标准函数,,1. 数学函数 #include ,,函数名,函数原型,功能,返回值,abs,int abs (int x);,求整数,x,的绝对值,计算结果,asin,double asin (double x);,计算,sin,-1,(,x,)的值,计算结果,sin,double sin(double x);,计算,sinx,(,x,)的值,计算结果,sinh,,double sinh(double 49、x);,计算,x,的双曲正弦函数,计算结果,exp,double exp (double x);,求,e,x,的值,计算结果,fabs,double fabs (double x);,求,x,的绝对值,计算结果,floor,double floor (double x);,求出不大于,x,的最大整数,该整数双精度实型,fmod,double fmod (double x,double y);,求整除,x/y,的余数,该余数的双精度实型,log,double log (double x);,求,log,e,x,即,lnx,计算结果,modf,double modf (double val,dou 50、ble*iptr);,把,val,分为整数小数,整数储存到*,iptr,val,的小数部分,pow,double pow(double x,double y);,计算,x,y,的值,计算结果,rand,int rand (void);,产生,-90~32767,的随机数,随机整数,sqrt,double sqrt (double x);,计算,x,1/2,计算结果,函数,—C,库标准函数,,函数名,函数原型,功能,返回值,isalnum,int,,isalnum(int ch);,检查,ch,是否是字母,(alpha),或数字,(numeric),是返回,1,,否则,0,isalpha,int 51、,,isalpha(int ch);,检查,ch,是否是字符,是返回,1,,否则,0,iscntrl,int,,iscntrl(int ch);,检查,ch,是否是控制字符(,ASCII,在,0,和,0xlF,之间),是返回,1,,否则,0,isdigit,int,,isdigit(int ch);,检查,ch,是否是数字,是返回,1,,否则,0,isgraph,int,,isgraph(int ch);,检查,ch,是否是可打印字符,不包括空格,是返回,1,,否则,0,islower,int,,islower(int ch);,检查是否小写,是返回,1,,否则,0,isprint,int,, 52、isprint(int ch);,检查,ch,是否是可打印字符,包括空格,是返回,1,,否则,0,ispunct,int,,ispunct(int ch);,检查,ch,是否是标点符号,是返回,1,,否则,0,isspace,int,,isspace(int ch);,检查是否是空格,是返回,1,,否则,0,isupper,int,,isupper(int ch);,检查是否大写,是返回,1,,否则,0,isxdigit,int,,isxdigit(int ch);,检查是否是十六进制,是返回,1,,否则,0,2. 字符函数 #include ,,函数,—C,库标准函数,,函数名,函数原型,功 53、能,返回值,strcat,char *strcat(char *str1,char *str2);,str2,接到,str1,后面,str1,strchr,char *strchr(char *str1,int ch);,找出,str1,中第一次出现,ch,位置,返回指针位置,找不到,返空指针,strcmp,char *strcmpchar *str, int ch);,比较,str1,和,str2,小于,负数;等于,0,strcpy,char *strcpy(char *str1,char *str2);,把,str2,复制到,str1,str1,strlen,unsigned int s 54、trlen(char *str);,统计个数,不含,\0,字符个数,strstr,char *strstr(char *str1,char *str2);,找出,str2,在,str1,第一次出现位置,返回指针位置,找不到,返空指针,tolower,int tolower(int ch);,转为小写,str1,toupper,int toupper(int ch);,转为大写,str1,3. 字符串函数 #include ,,函数,—C,库函数,,4. 输入输出函数 #include ,,函数名,函数原型,功能,返回值,cleareer,void cleareer(FILE *fp);,使,f 55、p,所指文件的错误,标志和文件结束标志置,0,无,close,int close(int fp);,关闭文件,成功,0,,否则,-1,creat,int creat (char *filenam,int mode);,以,mode,所指定的方式建立文件,成功正数,否则,-1,eof,int eof(int fd);,检查文件是否结束,文件结束,1,,否则,0,cflose,int fclose(FILE *fp);,关闭,fp,所指文件,释放文件缓冲区,有错非,0,,否则,0,feof,int feof(FILE *fp);,检查文件是否结束,文件结束非,0,,否则,0,fgetc,in 56、t fgetc(FILE *fp);,从,fp,所指定文件中取得下一个字符,返回所得字符,读入错误返回,EOF,fgets,char *fgets(char *buf,int n,FILE *fp);,,,fopen,FILE *fopen(char *filenam,char* mode);,,,fprintf,int fprintf(FILE *fp,char *format ,args,…);,,,fputc,int fputc(char ch,FILE *fp);,,,fputs,int fputs(char *str,FILE *fp);,,,fread,int fread(cha 57、r *pt,unsigned size,unsigned size,FILE *fp);,,,fscanf,int fscanf(FILE *fp,char format,args,…);,,,fseek,int fseek(FILE *fp,long offset,int base);,,,函数,—C,库函数,,4. 输入输出函数 #include ,,函数名,函数原型,功能,返回值,ftell,,,,fwrite,,,,getc,,,,getchar,,,,getw,,,,open,,,,printf,int printf,(,char,*,format,,,args…,),按照,for 58、mat,输出,输出字符的个数,出错返回负数,putc,,,,putchar,,,,putw,,,,read,,,,rename,,,,rewind,,,,scanf,int scanf,(,char,*,format,,,args…,),按照,format,输入,读入数据,文件结束返回,EOF,,出错返回,0,write,,,,函数,—C,库标准函数,,5. 动态存储分配 #include .h>,,函数名,函数原型,功能,返回值,calloc,void,*,calloc(insigned n,unisign size),分配,n,个数据项的内存连续空间,没个大小为,size,分配内存单元的起 59、始地址,如不成功返,0,free,viod free(void *p),释放,p,所指的内存区,无,malloc,void *malloc(unisigned size),分配,size,字节的存储区,所分配的内存区起始地址,内存不够返,0,realloc,void *realloc(void *p,unisgned size),将,p,所指出的已分配内存区的大小改为,size,返回指向该内存的指针,system,,,,stdafx.h中没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。,,编写的任何.cpp文件都必须首先包含stdafx.h。,,预编译头文 60、件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch〞,所以编译结果文件是projectname.pch。,,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。,算法,数据结构,+,算法,=,程序,,算法的几种描述,:,,1.,自然语言,,2.,流程图,,3. N-S,图,,4.,伪代码,A,B,A,B,P,成立,不成立,当,p1,成立,,,A,,,直到,p1,成立,A,,多文件结构,文件使用方式,含义,“,r,” (只读),为输入打开一个文本文件,“,w,” (只写),为输出打开一个文本文件,“,a,” (追加),向文本文件尾添加数 61、据,“,rb,” (只读),为输入打开一个二进制文件,“,wb,” (只写),为输出打开一个二进制文件,“,ab,” (追加),向二进制文件尾添加数据,“,r+,” (读写),为读写打开一个文本文件,“,w+,” (读写),为读写新建一个文本文件,“,a+,” (读写),为读写打开一个文本文件,“,rb+,” (读写),为读写打开一个二进制文件,“,wb+,”(读写),为读写新建一个二进制文件,“,ab+,” (读写),为读写打开一个二进制文件,一个源程序可以划分为多个源文件:,,类声明文件〔.h文件〕,,类实现文件〔.cpp文件〕,,类的使用文件〔main()所在的.cpp文件〕利用工 62、程来组合各个文件。,多文件结构,分类,函数名,功能,打开文件,fopen(),打开文件,关闭文件,fclose(),关闭文件,文件定位,fseek(),改变文件位置指针的位置,,rewind(),使文件位置指针重新置于文件开头,,ftell(),返回文件位置指针的当前值,文件读写,fgetc()getc(),从指定文件取得一个字符,,fput()putc(),把字符输出到指定文件,,fgets(),从指定文件读取字符串,,fputs(),把字符串输出到指定文件,,getw(),从指定文件读取一个字(,int,型),,putw(),把一个字(,int,型)输出到指定文件,,fread(),从指定 63、文件中读取数据项,,fwrite(),把数据项写到指定文件,,fscanf(),从指定文件按格式输入数据,,fprintf(),按指定格式将数据写入到文件,文件状态,feof(),若到文件末尾,函数值为真,,ferror(),若对文件操作出错,函数值为真,,cleareer(),是,feor,()和,feeror,()值为零,算法,交换:借助第三个变量,,数按位别离及合并: % / 各位%,十位/10,百位/100,,素数:只能被1和本身整除 ,外循环遍历2~2/m,内循环%判断,,四舍五入:〔int〕〔x*100+0.5〕/100,保存两位,第三位四舍五入,,符号变换累加:1+2-3+4-5 flag=-flag sum+=flag*date,,从键盘输入假设干整数 while〔scanf〔〞%d〞,&x〕==1〕,,逆序输出:考虑符号-,printf〔〞%d〞,a%10〕 a/=10,,最大公约数,最小公倍数:辗转相除法,,while〔〔tmp=m%n〕!=0〕,,{ m=n;,,n=tmp;},,return n;,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。