C语言程序设计课程总结学习培训模板课件.ppt

上传人(卖家):林田 文档编号:4114253 上传时间:2022-11-11 格式:PPT 页数:114 大小:639.50KB
下载 相关 举报
C语言程序设计课程总结学习培训模板课件.ppt_第1页
第1页 / 共114页
C语言程序设计课程总结学习培训模板课件.ppt_第2页
第2页 / 共114页
C语言程序设计课程总结学习培训模板课件.ppt_第3页
第3页 / 共114页
C语言程序设计课程总结学习培训模板课件.ppt_第4页
第4页 / 共114页
C语言程序设计课程总结学习培训模板课件.ppt_第5页
第5页 / 共114页
点击查看更多>>
资源描述

1、1C语言程序设计语言程序设计课程总结课程总结2课程总结v一、数据类型、变量和运算一、数据类型、变量和运算v二、结构化程序设计二、结构化程序设计v三、数组、函数与指针三、数组、函数与指针3一、数据类型、变量和运算一、数据类型、变量和运算41.1 C1.1 C语言数据类型语言数据类型单精度型float(single precision)双精度型(double precision)基本类型Basic Type构造类型conformation指针类型(Pointer)数据类型Data Type整型(integer)字符型(character)实型(浮点型)(Real)枚举类型(enumeration)

2、数组(Array)结构体类型(Structure)共用体类型(Union)在语言中,数据类型可分为:基本数据类型,构造数据类型,指针类型,空类型四大类。51.2 变量变量1.定义:定义:程序执行期间值可以改变的量。2.命名规则命名规则:变量名由标识符表示,只能由字母字母、数字数字和下划线下划线三种字符组成,且第一个字符不得为数字。例如:下列标识符中,不合法不合法的变量名有:M.D.John ,12%gf ,1add,age&5thclass,lotus-1-2-3,cd*ef,float3.变量要变量要“先定义,后使用先定义,后使用”定义格式:定义格式:类型说明符类型说明符 标识符标识符1,1

3、,标识符标识符n n;例如:int i,j,k;(每个整型变量分配 2字节bytes存储单元)float a,b,c,d;(每个单精度变量分配 4字节存储单元)double x,y,z,u,v,w;(每个双精度变量分配 8字节存储单元)3a6 1.3 整型变量的分类整型变量的分类 基本型(16位):以 intint 表示(-3276832767:-215,0,+215-1)短整型(16位):以short intshort int或shortshort表示 类型 长整型(32位):以long intlong int或longlong表示 (-2.11092.1109)无符号基本型(unsigne

4、d intunsigned int)无符号型 无符号短整型(unsigned shortunsigned short)无符号长整型(unsigned longunsigned long)一个无符号整型变量中可以存放的正数的范围比一般整型变量中正数的范围扩大一倍。unsigned int b;/*变量b的数值范围:065535 */71.41.4浮点型数据浮点型数据1.4.1浮点浮点型常量型常量表示形式有如下两种:十进制数形式十进制数形式:由数字和小数点及正负号组成。(注意:必须有小数点注意:必须有小数点)例如:23.678,0.0083,-0.75,435.36,+247.00也可能忽略小数点

5、前面或者后面的数字215.,.95,-.71,+.5,.678 23.指数形式:指数形式:由数字、小数点、字母数字、小数点、字母e或或E及正负号组成。(注(注:e或或E之前必须有数字,其后指数必须为整数)之前必须有数字,其后指数必须为整数)例如:3.5E-5(3.510-5)2e3(2103)错误:E2,3.6e3.5,.e6,e 81.4.2 实型变量实型变量实型变量可分为:单精度单精度(float型)如:float x,y;双精度型双精度型(double型)如:double a,b,c;说明:1.float 型变量用于存储单精度实数,在内存中占4个字节(bytes)或32 位(bits),

6、提供67位有效数字。2.double 型变量用于存储双精度实数,在内存中占8个字节(bytes)或64位(bits),提供1516位有效数字。91.51.5字符型数据字符型数据(Character Data)(Character Data)1.5.1字符常量字符常量(Character Constant)1.用单引号括起来的一个字符 如 T ,7 ,!2.转义字符:是一种特殊的字符常量,由反斜杠 和一个字符组成,其作用是用 将后面的字符转变为另外的意义。如 n 中的 n 不表示字母n,而表示“换行”的意思。这是一种控制字符。10例如:字符 含义 n 换行 t 横向跳格(水平制表符)b 退格v

7、竖向跳格(垂直制表符)r 回车 f 走纸换页 a 报警声 0 空字符 反斜线 单引号”双引号111.5.2字符变量字符变量(Character Variable)定义形式:char 标识符1,标识符2,标识符n 例如:char c1,c2,c3,ch;c1=a;c2=b;c3=c;ch=d;说明:1、字符变量只能存储一个字符,在内存中占一个字节。2、在内存中,是把字符对应的ASCII码值放到存储单元中(0255)。3、字符型数据与整型数据之间可以通用。121.5.3字符串常量字符串常量(Character string constant)1.定义:括在一对双引号双引号“之内的字符序列或转义字符

8、序列称为字符串常量。例如:“How are you!“a“*abcnt“2.存储:字符串中的字符依次存储在内存中一块连续的区域内,并且把空操作字符 0自动附加到字符串的尾部作为字符串的结束标志。故字符个数为n的字符串在内存中应占n+1个字节。例:char c6=“china“;char*s=“china“;c h i n a 013数据类型的尺寸和范围类型类型type字节字节bytes位位bits有效数字有效数字取值范围取值范围char80255int16-3276832767unsigned int16065535short int8-128127long int32-2.1471092.1

9、47109float3267-3.410-383.410+38double641516-1.710-3081.710+308long double1281819-1.210-49321.210+4932141.6 各类数值型数据间的混合运算各类数值型数据间的混合运算double(8 bytes)float(4double(8 bytes)float(4 bytes)long int(4 bytes)unsigned int(2 bytes)int(2int(2 bytes)char,short(1char,short(1 bytes)形式:隐式转换 (由系统自动进行)显式转换 (强制类型转换)

10、隐式转换的转换规则:先自动转换成同类型数据,再进行运算。规则是低字长类型转换成高字长类型。15说明:()表达式应用括号括起例如:(int)(x+y);()在强制类型转换时,得到一个所需类型的中间变量,原来变量类型未发生变化。(3)用途:完成某种运算,如(int)5.5%3;在函数调用时使实参与形参一致。强制类型转换强制类型转换(Forced Forced type type transformationtransformation)形式:(类型名)(表达式)形式:(类型名)(表达式)例如:(double)(a+b)16复合赋值运算符复合赋值运算符(Compound assignment ope

11、rators)复合赋值运算符:在赋值符“=”之前加上其它运算符共有10种复合赋值运算符 +=,-=,&,=,|=(位运算)(位运算)例如:a+=3 a=a+3 x*=y+3 x=x*(y+3)x/=y-3 x=x/(y-3)171.7 1.7 逗号运算符和逗号表达式逗号运算符和逗号表达式1.逗号运算符逗号运算符:即“,”优先级优先级:为所有运算符中优先级别最低的(15级)。2.逗号表达式逗号表达式形式:表达式表达式1 1,表达式,表达式2 2,表达式,表达式n n求解过程:顺次求解表达式1,表达式2,最后求解表达式n,逗号表达式的值为表达式表达式n n的值。的值。例如:a=3a=3*5,a5,

12、a*4 4 a=3a=3*5,a5,a*4,a+54,a+5 x=(a=4%3,a+1,a*10)a=2,b=3,c=4;60201018二、结构化程序设计二、结构化程序设计2.1 C语句概述语句概述(Description of C sentence)C程序程序源程序文件源程序文件1源程序文件源程序文件2源程序文件源程序文件n 预处理命令预处理命令全局变量声明全局变量声明函数函数1函数函数n 函数首部函数首部函数体函数体局部变量声明局部变量声明执行语句执行语句2.1 C语句概述语句概述C语句分类语句分类:(Assortment)1.控制语句控制语句(Control sentences)2.函

13、数调用语句函数调用语句(function Call sentences)3.表达式语句表达式语句(Expression sentences)4.空语句空语句(Empty sentences)5.复合语句复合语句(Compound sentences)一条完整的C语句必须以“;”结束。“;”是一个语句不可缺少的一部分。1.控制语句控制语句(Control sentences)功能功能:完成一定的控制功能:完成一定的控制功能C 有9种控制语句:条件语句(Condition sentence)if(表达式)语句1 或者语句块1 else 语句2 或者语句块2 “语句块语句块”又称为复合语句,是由花括

14、号将若干条语句结合成的一个整体。for循环语句(Loop sentence)for(表达式1;表达式2;表达式3)语句 或者 语句块当型循环语句(while loop)while(表达式)语句 或者 语句块直到型循环语句(until l loop)do 语句 或者 语句块while(表达式);continue (结束本次循环语句)switch (多分支选择语句)break (中止执行switch或循环语句)goto (转向语句)return (从函数返回数值语句)2.函数调用语句函数调用语句(Calling function)由一次函数调用加一个“;”构成。如:printf(“Hello Wo

15、rld!”);y=pow(x-3,2);y=sin(x);函数调用分号3.表达式语句表达式语句(Expression sentences)表达式:用运算符和括号将运算对象(操作对象)连接起来的、符合C语法规则的式子,称为表达式。表达式语句:由表达式加上“;”构成。表达式能构成语句是C语言的一个重要特色。C程序中的大多数语句(包括程序调用语句)是表达式语句,C语言又称为“表达式语言”。如:x+4*y;算术表达式语句 4*7,4+8;逗号表达式语句 x=4*7;赋值表达式语句(赋值语句)4.空语句空语句(Empty sentences)由一个“;”构成。即:;作用:程序转向点;什么也不做的循环体。

16、while(ix2)y=x1*x1+x2;printf(y=%d,y);不能省略不能加“;”2.2 数据输入输出在语言中的实现数据输入输出在语言中的实现调用调用输入输出函数输入输出函数实现输入输出操作实现输入输出操作 语言本身不提供输入输出语句,输入和输出操作是通过调用语言函数库中输入输出函数来实现的。如:putchar函数输出字符(Character output)getchar函数输入字符(Character input)printf函数 格式输出(Data output with format)scanf函数 格式输入(Data input with format)puts 函数 输出字

17、符串(Strings output)gets 函数 输入字符串(Strings input)4.5 格式输入输出函数格式输入输出函数(Input and Output Function with Format)格式字符用于scanf的输入说明%c单个字符%d十进制整数%e单精度实数%f单精度实数%lf双精度实数%g单精度实数%u无符号整数%i十进制、十六进制或八进制整数%o,%x八进制、十六进制整数%s字符串格式字符用于printf的输出说明%c单个字符%d十进制整数%e单精度实数%f单精度实数%lf双精度实数%g单精度实数%i十进制整数%o八进制整数,无前导的0%s字符串%u无符号整数%x十

18、六进制整数,无前导的Ox要牢记v在scanf()函数的输入表列中,对基本型的变量,要使用地址运算符&。v字符串常数要使用一对双引号“”。v单个字符常数要使用一对单引号。v不要对输入给定任何精度。v当输入或输出变量的类型与格式字符不一致时,会在运行时出现错误。v不要在scanf语句的格式字符中使用逗号。v除了语法问题外,C不对格式说明的正确性进行检查。2.3 结构化程序设计结构化程序设计 (顺序结构)(选择结构)(循环结构)特点特点:程序按语句从上到下的排列顺序依次执:程序按语句从上到下的排列顺序依次执 行,每条语句必须执行且只能执行一行,每条语句必须执行且只能执行一 次,没有执行不到或执行多次

19、的语句。次,没有执行不到或执行多次的语句。2.4 关系运算符和关系表达式Relation Operators and Expressions 6 种关系运算符种关系运算符:(小于(小于less than)(小于或等于)(小于或等于)(大于(大于larger than)(大于或等于)(大于或等于)(等于(等于equal to)!(不等于(不等于not equal to)结合性结合性:自左向右:自左向右 关系运算符及其优先次序关系运算符及其优先次序优先级相同(高)优先级相同(低)2.4 关系运算符和关系表达式关系运算符及其优先次序关系运算符及其优先次序 与其它运算符优先级的比较与其它运算符优先级的

20、比较:算术运算符算术运算符关系运算符关系运算符赋值运算符赋值运算符(高)(高)(低)(低)例如:c=da+b等效于:c=(d(a+b)1.什么是关系表达式?什么是关系表达式?关系表达式关系表达式如:(ab)(bc),ay,s+fd2.关系表达式的值关系表达式的值运算结果运算结果 逻辑值逻辑值 1或非零或非零“真真”,0“假假”如:如:设设 a=3,b=2,c=1 求下面关系表达式求下面关系表达式 的值:的值:cb (a-b)=1 b+ca+b&ab等效于:c=(d(a+b)&(ab)1.()()2.!,+,-,-(负号负号),(类型类型)3.算术算术*,/,%4.算术算术+,-6.关系关系,=

21、7.关系=,!=11.逻辑&12.逻辑逻辑|14.赋值运算符赋值运算符15.逗号运算符逗号运算符1.什么是逻辑表达式?什么是逻辑表达式?逻辑表达式逻辑表达式用逻辑运算符将运算对象连结起来的式子用逻辑运算符将运算对象连结起来的式子。如:(ab)&(bb 2.逻辑表达式的值逻辑表达式的值如:如:53&2|8 y)z=x;2.if(表达式表达式)语句语句1 else 语句语句2 如如:if(xy)z=x;else z=y;执行过程:当表达式的值为“真”(非零)时,执行语句1,否则,执行语句2。如:if (grade=85)level=A;else if(grade=70)level=B;else i

22、f(grade=60)level=C;else level=D;3.if(表达式表达式1)语句语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式3)语句语句3 :else if(表达式表达式n)语句语句n else 语句语句n+1if 语句的嵌套语句的嵌套 在 if 语句中又包含一个或多个if 语句,称为 if 语句的嵌套语句的嵌套。一般形式:if(条件1)if(条件2)语句1 else 语句2else if(条件3)语句3 else 语句4内嵌if内嵌if如:if(x0)if(y0)printf(x0,y0);else printf(“x0,y0)printf(

23、“x0);else printf(“x=0,y=18)if(n=18)if(n=18)if(nb)max=a;else max=b;若若 a=3,b=8,则则 max=?如:(ab)?a:b 等效于:max=(ab)?a:b;表达式2(表达式1为真)条件表达式=表达式3(表达式1为假)C中唯一的三目运算符。目的目的 简化 if 语句。条件运算符的优先级条件运算符的优先级(13级级):算术运算符算术运算符=关系运算符关系运算符=逻辑运算符逻辑运算符(除!除!)(3、4级)级)(6、7级)级)(11、12级)级)逗号运算符逗号运算符=赋值运算符赋值运算符c&cd?a+b:d 等效于等效于:x=(a

24、+b)c)&(cd)?(a+b):d 条件运算符的结合方向条件运算符的结合方向:自右至左自右至左 如:如:ab?a:cd?c:d等效于:等效于:ab?a:(cd?c:d)2.7 2.7 switch 语句语句一般形式:一般形式:switch(表达式)(表达式)case 常量表达式常量表达式1:语句序列:语句序列1 break;case 常量表达式常量表达式2:语句序列:语句序列2 break;:case 常量表达式常量表达式n:语句序列:语句序列n break;default:语句序列:语句序列n+1/default缺省缺省 执行过程:执行过程:要牢记v不要在关系运算符=,!=,=,=的两个符

25、号之间插入空格;v注意“与”运算(&)和“或”运算(|)都是由两个相同的符号组成;v注意不要将等号运算符用于实型数,它们很少能精确地相等;v语句标号(case 常量表达式)应该是一个整型常量表达式;v不得对switch语句的两个语句标号使用相同的常量。2.8 循环结构的术语循环结构的术语 1.循环条件循环条件:是循环结构中的测试表达式。是循环结构中的测试表达式。如:while(i=10)2.循环体循环体:是在每个循环周期均要执行一次的语是在每个循环周期均要执行一次的语 句。循环体可以是任何语句,简单语句。循环体可以是任何语句,简单语句、复合语句、空语句均可以。句、复合语句、空语句均可以。如:上

26、例while语句中用花括号括起来的复合语句。3.循环控制变量循环控制变量:在循环条件中控制测试条件为在循环条件中控制测试条件为真或为假的变量。真或为假的变量。如:上例while语句中使用的变量 i。注意注意:循环条件中的表达式一般是循环条件中的表达式一般是逻辑表达式逻辑表达式或或关系关系表达式表达式,也可以是,也可以是算术表达式算术表达式(非(非0为真,为真,0为为假)。一般表达式中应含有循环控制变量。假)。一般表达式中应含有循环控制变量。while(3)while(0)虽然从程序设计的角度上说是不合理的,但却是虽然从程序设计的角度上说是不合理的,但却是合法的。合法的。while(3)语句 表

27、示无限循环while(0)语句 表示不进入循环体 要写出一个正确的循环结构,对控制变量要要写出一个正确的循环结构,对控制变量要做三方面工作:做三方面工作:控制变量赋初值控制变量赋初值;把控制变量写入正确的循环条件(测试表达式);把控制变量写入正确的循环条件(测试表达式);控制变量的更新、调整。控制变量的更新、调整。int count=1;while(count=n)/测试表达式 y=y*x;count+;2.9 while循环语句 一般形式:一般形式:while(表达式表达式)语句语句 执行过程:执行过程:先计算表达式的值先计算表达式的值;若表达式的值为真若表达式的值为真(非非0)时执行循环体

28、中的语时执行循环体中的语 句,然后重复上面步骤。句,然后重复上面步骤。若表达式的值为假若表达式的值为假(0),则结束循环。则结束循环。2.10 do-while循环语句 一般形式:一般形式:do 语句语句 while(表达式);表达式);分号不能少 执行过程:执行过程:执行循环体中的语句;执行循环体中的语句;计算表达式,测试循环计算表达式,测试循环 条件,为真条件,为真(非非0)则重复则重复 上面步骤,为假上面步骤,为假(0)结束循结束循 环。环。比较上面两个程序,虽然结构是相同的,在输比较上面两个程序,虽然结构是相同的,在输入值为有效值时结果相同,但当输入无效值时输出入值为有效值时结果相同,

29、但当输入无效值时输出结果是不同的。为什么?结果是不同的。为什么?而do-while语句先执行循环体,然后测试循环条件。不管开始的时候测试循环条件是真是假,循环体都要执行一次。while语句进入循环体之前,先测试循环条件,表达式必须为真;否则while循环不进入循环体,即循环体可能一次也不执行。while与与do-while的主要区别:的主要区别:2.11 forfor循环语句循环语句 一般形式:一般形式:for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句语句(循环体循环体)表达式1:变量初始化表达式2:循环控制条件测试表达式3:控制变量更新 前面已经说明,要正确表达循环结构应注意

30、三方面的问题:控制变量的初始化,循环条件的设置和控制变量的更新。for语句在书写形式上正好体现了这种紧密的逻辑关系。不能省略不能省略不能省略不能省略执行过程:执行过程:求出表达式求出表达式1的值,若表达式的值,若表达式1是逗号表达式,则依次计算;是逗号表达式,则依次计算;对对“表达式表达式2”进行判断,为进行判断,为真转,为假则退出循环;真转,为假则退出循环;执行循环体中语句;执行循环体中语句;执行执行“表达式表达式3”,若表达式,若表达式3是逗号表达式,则依次计算;是逗号表达式,则依次计算;转向。转向。2.12 三种循环语句的总结三种循环语句的总结 三种循环语句共同的特点是:当循环控制条件非

31、零时,执行循环体语句,否则终止循环。循环体循环体语句可以是任何语句,简单语句、复合语句、空语句均可以。for(expression 1)Setence 1;Setence 2;Setence 3;if(e1)S1;S2;else if(e2)S3;while和for语句先判断循环控制条件,所以它们的循环体可能一次也不执行;而do-while语句后判断循环控制条件,它至少执行一次循环体。在循环条件中或循环体内必须有使循环趋于结束的语句,否则会出现死循环等异常情况。三种循环可以处理同一问题,一般情况可以互相代替。但在实际应用中,我们要根据具体情况来选用不同的循环语句。选用的一般原则如下:如果循环次

32、数在执行循环体之前就已确定,一般用如果循环次数在执行循环体之前就已确定,一般用for语句;如果循环次数是根据循环体的执行情况确语句;如果循环次数是根据循环体的执行情况确定的,一般用定的,一般用while语句或者语句或者do-while语句。语句。(循环次数确定例)int i,n;long sum=1;scanf(“%d”,n);for(i=1;i=n;i+)sum=sum*i;(循环次数不确定例)char cdo c=getchar();printf(“%c”,c);while(c!=q&c!=Q);当循环体至少执行一次时,用当循环体至少执行一次时,用do-while语句;反之,语句;反之,如

33、果循环体可能一次也不执行时,用如果循环体可能一次也不执行时,用while语句。语句。(循环体至少执行一次)/*只有当用户键入q或Q,才结束循环*/char c;do c=getchar();printf(“%c”,c);while(c!=q&c!=Q);(循环体可能一次不执行)/*只有不是q或Q的字符才被打印*/char c;c=getchar();while(c!=q&c!=Q);printf(“%c”,c);c=getchar();注意:!(a&b)=!a|!b!(a|b)=!a&!b所以:c!=q&c!=Q!(c=q|c=Q)什么叫循环嵌套?什么叫循环嵌套?一个循环的循环体中套有另一个循

34、环叫循环嵌套。这种嵌套过程可以一直重复下去。一个循环外面包围一层循环称为二重循环二重循环。一个循环外面包围二层循环称为三重循环重循环。一个循环外面包围多层循环称为多重循环多重循环。while、do-while、for可以互相嵌套,自由组合。2.13 break 和和continue语句语句 一、break 语句语句一般形式:一般形式:break;功能:功能:结束当前的循环语句。结束当前的循环语句。解释:解释:break 语句一般用在循环体的条件语语句一般用在循环体的条件语 句中,其作用是当某个条件满足时用句中,其作用是当某个条件满足时用 break语语句退出句退出当前当前循环语句,不再继续执循

35、环语句,不再继续执 行剩余的几次循环。行剩余的几次循环。一般形式:一般形式:continue;功能:功能:结束本次循环,进入下一个循环周期。结束本次循环,进入下一个循环周期。解释:解释:一旦执行了一旦执行了continue语句,程序就跳语句,程序就跳过循环体中位于该语句后的所有语过循环体中位于该语句后的所有语 句,句,提前结束本次循环并开始下一次循环。提前结束本次循环并开始下一次循环。二、continue语句语句 要牢记1.勿忘在dowhile语句后使用分号;2.在for语句的头表达式中使用逗号将产生错误;3.勿忘在while和dowhile的循环体中使用增量语句;4.注意常见的用赋值运算符“

36、=”代替关系运算符“=”的错误;5.不要对实数使用相等“=”的运算;6.对于在循环体中要进行反复运算的变量,要确认在进入循环体之前,该变量已被正确地赋初值;7.尽管允许对于变量初始化和增量运算使用算术表达式,但要清楚由此带来的舍入和截尾误差;8.在循环语句编程中使用缩进编排可以增强阅读性和易理解性。64三、数组、函数与指针三、数组、函数与指针3.1 一维数组的定义和引用(One Dimension Array)一、一维数组的定义一、一维数组的定义定义一维数组的一般方式:定义一维数组的一般方式:类型说明符类型说明符 数组名数组名常量表达式常量表达式;指明数组元素指明数组元素的数据类型的数据类型指

37、明数组所含指明数组所含的元素个数的元素个数例如:例如:int a10;/*定义的整型数组定义的整型数组a含含10个元素个元素*/float b20;/*定义的实型数组定义的实型数组b含含20个元素个元素*/说明:说明:数组名的命名规则同变量名的命名规则一样;数组名的命名规则同变量名的命名规则一样;数组名后用方括号数组名后用方括号,不能用(),不能用();常量表达式必须是常量表达式必须是大于大于0的整型常量表达式的整型常量表达式,不不 能包含变量能包含变量,即其大小不依赖运行过程中变量值,即其大小不依赖运行过程中变量值;(4)定义数组时,数组的长度必须是确定的,定义数组时,数组的长度必须是确定的

38、,C语言语言 不允许对数组的大小作动态定义。不允许对数组的大小作动态定义。int a(10);例如:例如:char name0;float weight10.3;float array-100;#define size 10float asize,bsize;int a3*8+2int n=5;int an二、一维数组的初始化二、一维数组的初始化1.1.定义时初始化定义时初始化方法:将初值依次写在花括号方法:将初值依次写在花括号 内。内。如:如:int a5=2,4,6,8,10;存储形式:存储形式:存储单元说明:说明:如果定义一维数组时给出了全部元素的初值,则如果定义一维数组时给出了全部元素

39、的初值,则数组的下标允许省略。此时编译系统自动根据初始数组的下标允许省略。此时编译系统自动根据初始化数据的个数来确定数组的长度。化数据的个数来确定数组的长度。如:如:int a=2,4,6,8,10;int a;初始化的数据个数初始化的数据个数允许小于数组的长度允许小于数组的长度,但,但不不能大于数组的长度能大于数组的长度。当初始化的数据个数(至。当初始化的数据个数(至少要有一个)少于数组的长度时,未初始化部少要有一个)少于数组的长度时,未初始化部分将被编译系统自动用分将被编译系统自动用 0 赋值。赋值。如:如:int a5=2,4;相当于:相当于:a0=2,a1=4,a2=0,a3=0,a4

40、=0 int a5=1,2,3,4,5,6,7,8;2.2.使用其它方法初始化使用其它方法初始化利用输入语句初始化main()char as26;int i;for(i=0;i26;i+)scanf(%c,&asi);.利用赋值语句初始化main()char as26,ch;for(ch=A;ch=Z;ch+)asch-A=ch;.例例7.37.3:用冒泡法对:用冒泡法对n=6n=6个数排序(由小到大)。个数排序(由小到大)。冒泡法的思路是:冒泡法的思路是:将相邻两个数比较,将小的调到前头。将相邻两个数比较,将小的调到前头。9 8 8 8 8 8 8 9 5 5 5 5 5 5 9 4 4 4

41、 4 4 4 9 2 2 2 2 2 2 9 0 0 0 0 0 0 9 第一轮排序,比较了第一轮排序,比较了5次次,获得第一次结果,获得第一次结果。轮数 剩数 比较次数j=1n-1 n-j+1 n-j 1 6 5 2 5 4 3 4 3 4 3 2 5 2 1 main()int a7,i,j,t;printf(Input 6 numbers:n);for(i=1;i7;i+)scanf(%d,&ai);printf(n);for(j=1;j=5;j+)/*控制5轮排序 */for(i=1;iai+1)t=ai;ai=ai+1;ai+1=t;for(i=1;i=6;i+)printf(%d,

42、ai);main()int a6,i,j,t;printf(Input 6 numbers:n);for(i=0;i6;i+)scanf(%d,&ai);printf(n);for(j=0;j=4;j+)/*控制5轮排序 */for(i=0;iai+1)t=ai;ai=ai+1;ai+1=t;for(i=0;i=5;i+)printf(%d,ai);三、二维数组的定义三、二维数组的定义 定义二维数组的一般方式:定义二维数组的一般方式:类型说明符类型说明符 数组名数组名 常量表达式常量表达式11常量表达式常量表达式22;如:int a34;float b56;存储形式:存储形式:二维数组在内存中

43、是按行的顺序存放的,即先存放第一行的元素,再存放第二行的元素。说明:说明:二维数组除了维数比一维数组多一维外,二维数组除了维数比一维数组多一维外,其其它性质与一维数组是全部类似的。它性质与一维数组是全部类似的。看看下面写法是否正确?看看下面写法是否正确?int a03;用于定义数组长度的常量表达式的值必须是用于定义数组长度的常量表达式的值必须是大于大于0的正整数。的正整数。int i=3,j=4;int aij;定义数组元素的个数必须使用常量表达式,定义数组元素的个数必须使用常量表达式,而不能使用变量。而不能使用变量。四、二维数组的初始化四、二维数组的初始化 这里主要介绍定义时初始化,其它方法

44、初始化和一维数组类似。定义时初始化有两种方法:分行初始化分行初始化 例如:例如:int a23=1,2,3 ,4,5,6;int a34=1,2,3,4,5,6,7;123456007000 省略掉内层的花括号省略掉内层的花括号 即按数组元素在内存中排列的顺序赋初值。即按数组元素在内存中排列的顺序赋初值。例如:例如:int a23=1,2,3,4,5,6;说明:说明:对二维数组初始化时,可以只对部分数组元素初始对二维数组初始化时,可以只对部分数组元素初始化,未被初始化的数组元素将自动赋化,未被初始化的数组元素将自动赋 0。int a23=5,6,7,8;int a23=5,6,7,8;如:得到

45、的数组为:5 6 0 7 8 0得到的数组为:5 6 7 8 0 0对二维数组初始化时,如果对全部元素都赋初值,或对二维数组初始化时,如果对全部元素都赋初值,或分行赋初值分行赋初值(每行至少一个数据每行至少一个数据),则可以省略第一维数,则可以省略第一维数组长度。但是,组长度。但是,第二维数组长度不允许省略第二维数组长度不允许省略。如:int a3=1,2,3,4,5,6,7,8,9;int a4=1,2,3,4,5,6,7;系统按3行处理 int a10=1,0;float f2=1.1,2.2;3.2 字符数组和字符串 (Character Array and Strings)一、字符数组

46、一、字符数组(Character Array)当数组的元素类型为字符型时,被称为当数组的元素类型为字符型时,被称为字字符数组符数组。如:char c10;则c为字符数组。如:main()char ch5=c,h,i,n,a;for(i=0;i5;i+)printf(“%c”,chi);字符数组的定义、初始化和元素的引用与一般字符数组的定义、初始化和元素的引用与一般的数组相同。的数组相同。说明:说明:定义字符数组的类型说明符一般为定义字符数组的类型说明符一般为char,如:如:char c10;由于字符型与整型的互相通用性,由于字符型与整型的互相通用性,因此,上面定义也可改为:因此,上面定义也可

47、改为:int c10;初始化赋值的字符个数初始化赋值的字符个数允许少于字符数组的长允许少于字符数组的长度度,但,但不能多于字符数组的长度不能多于字符数组的长度。当初始化赋值。当初始化赋值的字符数(至少要有一个)少于字符数组的长度的字符数(至少要有一个)少于字符数组的长度时,未初始化部分将被编译系统自动用空字符时,未初始化部分将被编译系统自动用空字符0 赋值。赋值。如:int c8=H,e,l,l,o;则:c0=H,c1=e,c2=l,c3=l,c4=o c5=0,c6=0,c7=0二、字符串与字符数组二、字符串与字符数组 字符串常量字符串常量是用双引号括起来的一串字符,由系统自动加上一个字符串

48、结束标志0。它占内存,但不记入字符串长度。如:“china”占内存6个字节,但字符串长度是5 在在C语言中用字符数组来处理字符串,每个数语言中用字符数组来处理字符串,每个数组元素存放一个字符型数据。组元素存放一个字符型数据。字符型数组可用一般数组的初始化方式初始化外,字符型数组可用一般数组的初始化方式初始化外,还可以使用字符串常量初始化:还可以使用字符串常量初始化:如:char message=“Hello”;或 char message=“Hello”;(这时,字符数组长度是6,字符串长度是5)注意注意:用一般初始化方式:char message=H,e,l,l,o;结果:H e l l o

49、用字符串常量初始化:char message=“Hello”;H e l l o 0说明说明:字符数组本身并不要求它的最后一个元素一定是0,例如:char ch2=A,B;是合法的。为了与用字符串常量对字符数组赋初值的处理方法一致,在字符数组中也常常人为地加上一个值为0的元素。如:char message=H,e,l,l,o,0;结果:、字符串处理函数、字符串处理函数1.求字符串长度求字符串长度strlen()函数函数注意:注意:使用这些函数前,要用使用这些函数前,要用#include“string.h”2.字符串比较函数字符串比较函数strcmp()3.字符串连接字符串连接strcat()函

50、数函数 4.字符串复制字符串复制strcpy()函数函数 学习数组要注意的几个问题:学习数组要注意的几个问题:1.1.在在C C语言中数组的下标是从语言中数组的下标是从0 0开始;开始;2.C2.C语言不进行下标的越界检查,不论是在编译阶段还是语言不进行下标的越界检查,不论是在编译阶段还是 在运行阶段,这个问题交给程序员。这样就给初学者在运行阶段,这个问题交给程序员。这样就给初学者 带来一定的风险。带来一定的风险。3 3.数组名是地址,这在字符串处理中已经看到,这个我数组名是地址,这在字符串处理中已经看到,这个我 们要先强记,以后在讲指针时再详细讲。们要先强记,以后在讲指针时再详细讲。4.4.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言程序设计课程总结学习培训模板课件.ppt)为本站会员(林田)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|